|
磁盤隨機 IO 性能常常是數(shù)據(jù)庫性能的決定因素,即使是 15000RPM 的 SAS 盤,單盤也很難超過 300IOPS ,對于傳統(tǒng)關(guān)系數(shù)據(jù)庫,磁盤隨機 IO 是個多年的老大難問題,目前尚無令人滿意的解決方案,數(shù)據(jù)庫如何抵抗隨機IO的問題、方法與現(xiàn)實一文中提到了一些關(guān)于此問題進展。 與傳統(tǒng)磁盤相比, SSD 固態(tài)盤提供了非常好的隨機讀性能,單盤可達 35000IOPS (4KB) 甚至更高,并提供 512MB/s 或以上的讀出帶寬。但通常 SSD 盤的隨機寫性能甚至比一般磁盤更差,這是因為,盡管 SSD 的讀和寫都以 4KB 頁 (page) 為單位,但 SSD 寫入前需要先擦除已有內(nèi)容,而擦除以塊 (block) 為單位,一個塊 (block) 通常是 128 個連續(xù)的頁 (page) ,即 512KB 。假如寫入的頁 (page) 內(nèi)有內(nèi)容,即使是寫入一個字節(jié), SSD 也需要把整個 128 頁 (512KB) 內(nèi)容先讀到內(nèi)存,與要寫入的內(nèi)容融合,擦除這 128 頁所在的塊 (block) ,然后再重新寫入整個 512KB 數(shù)據(jù),這就是 SSD 盤的寫入放到效應(yīng)。 “ SSD 的寫入放大 - Write amplification ” 假設(shè)每次隨機寫入 1KB ,即便 SSD 能夠提供 1K 次 / 秒的隨機寫入能力,根據(jù)上面的分析,對應(yīng)的寫入放大將把 SSD 的 512MB/s 的讀出帶寬全部消耗掉,也就是說,這種情況下, SSD 已經(jīng)無法提供讀服務(wù)。因此,在傳統(tǒng)關(guān)系數(shù)據(jù)庫中,普通 SSD 難以獲得令人滿意的性能。 淘寶海量數(shù)據(jù)庫 OceanBase 采用與經(jīng)典關(guān)系數(shù)據(jù)庫不同的設(shè)計: OceanBase既 實現(xiàn)了增刪改在內(nèi)的跨行跨表寫事務(wù),又完全摒棄了隨機寫,除了操作日志 (commit log) 總是順序追加寫入到普通 SAS 盤上,剩下的寫請求就是對響應(yīng)時間要求不是很高的批量順序?qū)懀?SSD 盤完全可以輕松應(yīng)對,而許多響應(yīng)查詢請求的隨機讀,更可以充分發(fā)揮 SSD 良好的隨機讀性能 。 從測試結(jié)果來看, OceanBase 在一臺裝有多塊 SSD 盤的服務(wù)器上獲得了數(shù)萬 QPS 的查詢性能 ( 大約是所有 SSD 盤的聚合 QPS 的 40% 左右,因此還有提升空間 ) ,這使得一臺裝備 SSD 盤的服務(wù)器可以提供 5-10 臺同樣配置但裝備 15000RPM SAS 盤的服務(wù)器。盡管 SSD 盤大約是同樣容量的 SAS 盤價格的 3~4 倍,在 OceanBase 數(shù)據(jù)庫環(huán)境下,由于機器數(shù)量的大幅度減少,不僅機器采購成本降低了,機架、網(wǎng)絡(luò)帶寬等運維費用更是大幅度降低,總體成本也降低很多。 此外,由于 SSD 盤的功耗 ( 約 0.06W-3.5W) 明顯低于 SAS 盤 (12W-15W , 3.5”) ,因此能源消耗的降低更多。 |
|
|