资料库引擎效能大PK记忆体充足用InnoDB资源有限用MyRocks

社会动态2021-03-01 10:04:55
最佳答案

资料库厂商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是个不错的选择。

免责声明:本文由用户上传,如有侵权请联系删除!