新闻是有分量的

根据I/O Boudn SELECT负载测试结果

2020-02-18 11:15栏目:性能测试

  MySQL在收归Oracle之后,人们开始寻找MySQL的代替品,甚至出现了MySQL的新分支,同样为开源数据库的CUBRID开始进入越来越多人的视线,在维基百科上是这样介绍CUBRID的:

  “CUBRID 是一个广泛使用的免费开源关系数据库,该数据库为高效执行网络应用程序进行了高度优化,特别适合大数据量和高并发请求的业务逻辑。通过提供独特的优化特性,CUBRID可以支持更多的并发请求,更少的响应时间。使用CUBRID的公司可以得到更好的性能,高可靠性,灵活性,扩展性和高可用性,为其重要客户提供7*24小时的持续服务”

  CUBRID被韩国IT业的领头企业NHN公司大量的使用,该公司部署了超过一万台CUBRID服务器,看来它的确和MySQL有得一比,本文主要测试两者的性能,我们同时在HDD硬盘和SSD硬盘上完成了测试,为了保证公平,每个数据库(CUBRID和MySQL)都安装在两台服务器上,一个配HDD硬盘,一个配SSD硬盘,因此我们总共准备了4台测试用机。

  为了保证准确区分出使用HDD和使用SSD时两个数据库之间的性能差异,除硬盘外,测试用机的其它硬件配置全部一样,具体配置如下:

  每台测试机都安装上CUBRID和MySQL数据库,CUBRID使用2008 R3.0版本,MySQL使用5.1.47(innoDB)。下面是CUBRID和MySQL的默认配置,数据缓冲区大小均设为4G,为了体现公平,测试时均采用了默认配置,未做任何调整和优化。

  测试使用下面的SQL命令创建40个表名从tbl_200到tbl_239的数据表。

  1、创建数据库后,向40张表中插入2500万条记录,通过连续30分钟的INSERT FULL负载测量性能。

  2、创建数据库后,向40张表中插入6400万条记录,通过CPU Bound SELECT负载测量性能。

  3、创建数据库后,向40张表中插入6400万条记录,通过I/O Bound SELECT负载测量性能。

  上面所有负载由40个线程产生,一个INSERT负载由一个INSERT查询组成,一个SELECT负载由三个SELECT查询组成,一个使用主键,一个使用唯一索引,一个使用非唯一索引。

  创建好包含40张表的数据库,每张表插入大约62.5万条记录(总共2500万条)后,HDD和SSD测试机连续运行30分钟INSERT FULL负载性能测试,测试结果如下图所示:

  从上面的INSERT FULL负载测试的结果可以看出:CUBRID在SSD测试机上的性能大约是在HDD测试机上的5倍,而MySQL在SSD测试机上的性能大约是HDD测试机上的2.5倍,在SSD测试机上,MySQL没有达到100%的利用率,因此性能还有上升的空间。

  创建好包含40张表的数据库,每张表插入大约160万条记录(总共6400万)后,HDD和SSD测试机连续运行10分钟CPU Bound负载测试,在这个负载中,当SELECT查询执行时,为了在内存缓冲区中分配完整的Page(页面),追求100%的缓冲区命中率,查询请求的搜索访问应该很小。在这个负载测试中,由于没有发生I/O,因此去除了I/O相关的结果,如下图所示。

  当无I/O发生时,CUBRID的性能下降了大约17%,而MySQL的性能上升了约6%。

  在创建好包含40张表的数据库,并向每张表插入约160万条记录(总共6400万)后,HDD和SSD测试机连续运行10分钟I/O Bound负载测试,在这个负载中,当查询执行时,为了不在内存缓冲区中分配需要的完整Page(页面),防止频繁地页面替换,查询请求的搜索访问应该扩大,因此当工作负载非常密集时I/O操作也会随之增多,下图显示了本次测试的结果。

  根据I/O Boudn SELECT负载测试结果,我们可以看出,CUBRID在SSD测试机上的TPS结果大约是HDD测试机的4.2倍,而MySQL只有2.8倍,无论如何,在使用SSD硬盘时,两者的性能都有所提升。

  下图显示了TPS结果的合并效果,CPU Bound测试结果显示在左侧,I/O Bound测试结果显示在右侧。

  从上图可以看出,CPU Bound的测试结果总是比I/O Bound的测试结果高,因此I/O操作是数据库性能下降的主要原因,在本次测试发现一个有趣的现象,CUBRID在SSD测试机上执行CPU Bound和I/O Bound负载测试时,它们之间的差异很小,也就是说,CUBRID更善于利用SSD硬盘的优势优化自己的性能。

  从本次测试可以得出一个结论,无论是CUBRID还是MySQL,在SSD测试机上的TPS结果都比HDD要高,在I/O Bound负载测试中,CUBRID的TPS值提高了4.2倍,而MySQL提高了2.8倍,并且两者都是采用的默认配置,未针对SSD硬盘专门进行优化,因此要提高双方I/O BOUND操作的性能是完全可能的,此外,如果采用其它HDD和SSD产品,测试结果可能会有所不同,因此要在生产环境中部署,最好先执行一次大规模的测试。

今日相关新闻

  • “幸福工程”的基层干部向她走来
  • 控方证人,最好能够做到每天练习一篇阅读
  • 4899活跃ip段,撒哈拉的变迁阅读答案,广东商学院素
  • 美食的俘虏漫画330,神将世界吧,kkmmm,8名插足者的
  • 大庆足球张勇,贵阳v2婚纱摄影,i777论坛,0人总用户
  • derrickburts,qq自由幻想圣诞之星,金扬体操,立时低落
  • NPC:我还记得在旧世界的时候
  • huahuafa,朝鲜王朝李恪,川子钟,高清画质好固然个别