DBAplus社群译者:高强 原标题:Millions of Queries per Second: PostgreSQL and MySQL's Peaceful Battle at Today's Demanding Workloads 作者:Anastasia Raspopina 和 Sveta Smirnova 地址:https://www.percona.com/blog/2017/01/06/millions-queries-per-second-postgresql-and-mysql-peaceful-battle-at-modern-demanding-workloads/ Anastasia:开源数据库能应付每秒数百万次的查询吗?许多开源倡导者会回答“是的”,但是,断言是不够有理有据的证明。这就是为什么在这篇文章中,我们将分享Alexander Korotkov(CEO,Postgres专家)和Sveta Smirnova(首席技术服务工程师,Percona)的基准测试结果。而且,PostgreSQL 9.6和MySQL 5.7的性能对比研究对于多数据库环境特别有价值。 剧透:我们离最终的结果还很远,这只是一个系列文章的开始。 开源数据库在Big Machine上 系列1:“很相近...” Postgres专家使用Freematiq提供的两个新型号,为测试提供了强大的机器。 硬件配置: 处理器:数量=4,核数=72,虚拟核数=144,超线程已开启 我也使用了一台较小的Percona服务器。 硬件配置: 注意,部署MySQL的设备中,使用配备CPU核数较少并且硬盘更快的服务器比配备CPU核数高的服务器更普遍。 首先我们需要对使用哪种工具达成共识,公平地比较只有在工作负载尽可能接近时才更有意义。 标准的PostgreSQL性能测试工具是pgbench,在MySQL中用SysBench。SysBench支持多种数据库驱动和Lua编程语言脚本测试,所以我们决定使用SysBench作为两种数据库的测试工具。 我把pgbench测试转换成了SysBench语法,并把测试上传到了一个开源数据库测试的GitHub知识库中。 Percona服务器: Freematiq服务器: 我开始研究,Percona的机器比Freematiq要好的唯一之处在于磁盘速度,所以我开始运行pgbench只读测试,这跟SysBench测试的内存中全表扫描的结果一致,但这一次SysBench使用了可用CPU资源50%: Alexander,相应的,遇到了SysBench的问题,在使用准备好的语句时无法创造出PostgreSQL上的高负荷: 我们联系了SysBench的作者Alexey Kopytov,他修正了MySQL的问题。解决办法是:
PostgreSQL的修正方案在准备中。现在,Alexander将一个标准的SysBench测试转换成了pgbench格式,并且我们坚持做下来了。没有太多对于MySQL方面的调整,但至少我们有一个比较的基线。 相同的参数同样也对PostgreSQL的性能更好。Alexander同样设置了他的机器。
但是我们可以使用这些测试作为基线。由Alexander完成工作后,我们坚持做了标准的SysBench测试。我把它们转换成使用事先准备好的语句,Alexander将其转化为pgbench格式。 应该注意的是,我不能得到和Dimitri做的只读和point select选择测试相同的结果。它们接近,但稍微有点慢。我们需要调查这是由于硬件不同而导致的结果,还是我缺乏性能测试能力的结果。从读写测试返回的结果是相似的。
OLTP RO OLTP RW Sync commit是PostgreSQL的一个功能,类似于InnoDB中的innodb_flush_log_at_trx_commit = 1,async commit类似innodb_flush_log_at_trx_commit = 2。 Point SELECT and OLTP RO OLTP RW当参数innodb_flush_log_at_trx_commit分别设置为1和2时 收到这些结果后,我们做了一些特定功能的测试,将涵盖在单独的博客帖子中。 MySQL选项OLTP RO和Point SELECE试验: MySQL OLTP RW的配置参数: MySQL SysBench的参数: PostgreSQL pgbench配置参数: MySQL 5.7中很多功能模块的性能明显提升了。 InnoDB:事务列表优化
InnoDB:减少lock_sys_t::mutex争用
InnoDB:解决index- |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|