資料庫廠商Percona公布,資料庫引擎MyRocks以及InnoDB用TPC-C效能量測的結果比較,結果顯示,當資料集大小和可用記憶體容量懸殊時,MyRocks可以得到較好的效能表現,但是在實驗中,可用記憶體60GB是個轉捩點,隨著記憶體增加,InnoDB的吞吐量得到了更大的提升,而MyRocks表現則不再有太大上升。

MyRocks是一個開源軟體,當初由臉書開發,為的是以RocksDB實做出MySQL的功能,MyRocks的特點是儲存效能表現,不只空間利用率較InnoDB佳,讀寫也更加有效率。當初基於甲骨文的MySQL 5.6版本開發,而Percona提供MyRocks企業級服務。MySQL的孿生姊妹資料庫MariaDB則從10.3.4開始將MyRocks作為測試版的資料庫引擎。

MyRocks現在為Percona Server for MySQL 5.7的資料庫引擎,Percona公布其在高階伺服器和SSD儲存裝置的測試表現。Percona使用含有10個表格的100個TPC-C倉儲,載入至資料引擎中的資料量約90GB,相當於1,000個倉儲的資料量。

系統設定條件上,MyRocks使用LZ4的預設磁碟壓縮功能,壓縮前的資料量為70GB,而壓縮過後為21GB。在這個測試中不使用FOREIGN KEYS,因為MyRocks目前還不支援,另外,該實驗還啟用了二進位日誌功能,Percona表示,所有的產品階段資料庫都會使用二進位日誌功能,而且不使用二進位日誌將會讓MyRocks失去交易協調的優勢。

實驗一開始Percona測試了MyRocks與InnoDB的吞吐量,實驗共3,600秒,但是統計不採用前2,000秒熱機的資料,只取後面1,600秒的數據。其結果顯示,MyRocks無論在可用記憶體5GB或是100GB,其平均表現都差不多,吞吐量每秒約在5,000左右,隨著可用記憶體增加,吞吐量有些微上升,不過缺點是吞吐量的變異量很大。

InnoDB的吞吐量則與可用記憶體的大小有明顯的正相關,在5GB的時候,每秒吞吐量平均為849次,但是在可用記憶體60GB時,每秒吞吐量超過MyRocks,在80GB達到吞吐量的高峰6,000次,整體數據變異相較MyRocks小很多。

Percona分析MyRocks在可用記憶體100GB的情況下,吞吐量每秒會暴跌一次,而這情況造成數據的變異增加,Percona表示,他們現在無法知道是什麼原因造成這樣的情況發生。

InnoDB在可用記憶體增加的情況下,獲得的好處大於MyRocks,InnoDB在資料集大小與可用記憶體容量約略相當時,效能表現最好,但是MyRocks好處是可以在有限或是小記憶體容量條件下維持高效能執行。

至於在I/O表現上,由於MyRocks是款寫入最佳化的引擎,因此比起InnoDB表現好很多。在記憶體5GB的情況下,InnoDB每秒寫入接近25萬次,而MyRocks卻只有8.7萬次,在100GB情況下,InnoDB每秒寫入超過18萬次,MyRocks維持在9.7萬次。

讀取的表現MyRocks沒有維持一定的優勢,在5GB時MyRocks的17萬次略贏InnoDB的22萬次,但是到了可用記憶體超過70GB時,InnoDB的讀取次數大幅下降,在100GB的情況下,InnoDB讀取只有2千次,但是MyRocks仍維持在6.3萬次。

Percona表示,InnoDB整體來說吃重I/O,而MyRocks吃重CPU資源。雖然InnoDB在系統資源充足的情況下表現較好,但Percona表示,當企業想要節省雲端運算的成本,MyRocks是個不錯的選擇。

熱門新聞

Advertisement