Py学习  »  DATABASE

比较RDS for SqlServer、Aurora for MySQL、Auro for postgreSQL的性能

webmote33 • 2 年前 • 257 次点击  
阅读 131

比较RDS for SqlServer、Aurora for MySQL、Auro for postgreSQL的性能

这是我参与8月更文挑战的第28天,活动详情查看:8月更文挑战

  • 📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!
  • 📢本文作者:由webmote 原创,首发于 【掘金】
  • 📢作者格言: 生活在于折腾,当你不折腾生活时,生活就开始折腾你,让我们一起加油!💪💪💪

1. 比较数据库性能

数据库的性能BenchaMark测试,在很久以前,各大公司热衷于做各种读写测试,好像最好都测不过Oracle的性能,然后慢慢的大家都沉寂下来,特别是最近几年,鲜有人直接做数据库的性能测试了。

也许随着分布式应用的普及,可能大家都对单机的数据库性能测试不感兴趣了。

据搜索,在2010年之前,有个老外做过SqlServer和MySQL的性能测试,据测试报告说,SQL Server的性能是MySQL的10倍以上,不过这样的性能差,并不影响MySQL成为全球最流行的数据库之一。

看看DB流行度,MySQL排在第二名,SQL server排在第三名,其他的数据库都在下面。

image.png

因此,可以得出一个简答的结论,单独的看数据库的性能,没有意义。

2. 怎么测试数据库性能

不管数据库的性能是不是能决定架构选型,那既然公司比较看重性能的比对,那我们还是需要在一定的基准下测试下数据库的性能。

对于Aurora,AWS生成其比同类型的MySQL快5倍,比PosgreSQL快3倍,AWS怎么测试,都是为了卖它的Aurora,因此其实并不是很科学。当然业界也没有更科学的方案,因此SysBench在此方面就是唯一的选择。

那么我们就使用SysBench来测试各个数据库的性能吧。

对于SqlServer,我并没有看到支撑SqlServer测试的脚本,而对于MySQL和PostgreSQL都有写好的lua脚本,因此我们就不用再考虑脚本的问题了。

3.准备环境

我们需要一个标准的测试环境,从硬件配置上应该各个数据库基本保持一致。

  • 3台EC2 测试环境,作为客户端发起读写操作
  • 3台服务器,每个数据库一台服务器,配置均为4核32G,SSD硬盘标配。

每台EC2虚拟机安装 sysbench测试环境。

连接到各个数据库,开始灌入测试数据。

sudo sysbench --db-driver=mysql --oltp-table-size=100000 --oltp-tables-count=24 --threads=1 --mysql-host=aaa.amazonaws.com --net=host --mysql-port=3306 --mysql-user=admin --mysql-password=12345678  --mysql-db=db1 /usr/share/sysbench/tests/include/oltp_legacy/parallel_prepare.lua prepare

复制代码

然后进行读写操作测试,并记录TPS和QPS,就这样,测试完成了,仅仅做单表的测试应该是不够的,不过又有什么关系呢,这仅仅是个粗略的测试,各个数据库的优势不同,非要拿一个尺子丈量,估计是各有优缺吧,因此我们笃定一个标准。


sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --mysql-host=aaa.amazonaws.com  --mysql-user=admin --mysql-password="12345678" --mysql-port=3306  --mysql-db=db1 --max-requests=0 --oltp-simple-ranges=0 --oltp-distxinct-ranges=0 --oltp-sum-ranges=0 --oltp-order-ranges=0 --time=300 --oltp-read-only=on --threads=1000 --report-interval=10 run

复制代码

4.比较测试结果

为了测试的公正性,我们需要保持每个数据库服务器的cpu利用均达到一个高负载的情况。

image.png

这里晒下AWS的测试结果:

image.png

嗯,就是这个味道。

一切环境都已就绪,本想今天区公司加班呢,结果睡到了11:00,算了,工作日继续测试吧,我就先总结下,mysql和postgreSQL可预见的顺利,而SQLserver可能需要编写lua测试脚本了。

不过没关系,脚本难不倒小小架构师,就期待我的测试结果吧!

5. 小结

postgreSQL具有丰富的功能,但应用并不广,很多三方组件并没有postgreSQL的支持;因此我还是比较侧重于选项MySQL的,掘友们教教我,怎么说服公司放弃postgreSQL,而选用MySQL?

例行小结,理性看待!

结的是啥啊,结的是我想你点赞而不可得的寂寞。😳😳😳

👓都看到这了,还在乎点个赞吗?

👓都点赞了,还在乎一个收藏吗?

👓都收藏了,还在乎一个评论吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/119204
 
257 次点击