这是我参与8月更文挑战的第28天,活动详情查看:8月更文挑战
- 📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!
- 📢本文作者:由webmote 原创,首发于 【掘金】
- 📢作者格言: 生活在于折腾,当你不折腾生活时,生活就开始折腾你,让我们一起加油!💪💪💪
1. 比较数据库性能
数据库的性能BenchaMark测试,在很久以前,各大公司热衷于做各种读写测试,好像最好都测不过Oracle的性能,然后慢慢的大家都沉寂下来,特别是最近几年,鲜有人直接做数据库的性能测试了。
也许随着分布式应用的普及,可能大家都对单机的数据库性能测试不感兴趣了。
据搜索,在2010年之前,有个老外做过SqlServer和MySQL的性能测试,据测试报告说,SQL Server的性能是MySQL的10倍以上,不过这样的性能差,并不影响MySQL成为全球最流行的数据库之一。
看看DB流行度,MySQL排在第二名,SQL server排在第三名,其他的数据库都在下面。
因此,可以得出一个简答的结论,单独的看数据库的性能,没有意义。
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利用均达到一个高负载的情况。
这里晒下AWS的测试结果:
嗯,就是这个味道。
一切环境都已就绪,本想今天区公司加班呢,结果睡到了11:00,算了,工作日继续测试吧,我就先总结下,mysql和postgreSQL可预见的顺利,而SQLserver可能需要编写lua测试脚本了。
不过没关系,脚本难不倒小小架构师,就期待我的测试结果吧!
5. 小结
postgreSQL具有丰富的功能,但应用并不广,很多三方组件并没有postgreSQL的支持;因此我还是比较侧重于选项MySQL的,掘友们教教我,怎么说服公司放弃postgreSQL,而选用MySQL?
例行小结,理性看待!
结的是啥啊,结的是我想你点赞而不可得的寂寞。😳😳😳
👓都看到这了,还在乎点个赞吗?
👓都点赞了,还在乎一个收藏吗?
👓都收藏了,还在乎一个评论吗?