如果您对我之前发布的帖子中Mysql的稳定性表示惊讶,那么接下来,我将想你展示Percona Server能带来的效果。
该最初的测试程序在此帖中有所描述,你能够在此贴中看到MySQL 5.5.20分别在4张表(45GB数据量)和16张表(184GB数据量)的条件下的测试结果。
那我们在Percona Server中是如何应对上述数据的呢?以下是我们所做的一些改善:
- 大型日志文件
- Tuned flushing algorithm
- Disable flushing of neighbor pages
以下对SSD的设置将带来更好的体验:
[codesyntax lang=”text”]
innodb_flush_neighbor_pages = 0 innodb_adaptive_flushing_method = keep_average innodb_log_block_size = 4096 innodb_log_file_size = 4G
[/codesyntax]
服务器版本:MySQL 5.5.20, Percona Server 5.5.19
使用以上配置,我们得到以下结果:
如你所见,Percona Server拥有平稳的可预期的线条。
接下来如何对比这两组数据呢?
见如下盒状图:
让我们比较一整个小时内的平均值(盒子内中线),也许Percona Server的平均吞吐量很糟糕,因为处理16张表的平均值如下:
- MySQL: 3658 tps
- Percona Server: 3487 tps
如果现在列一个柱状图,也许你能看到这些:
看了这个图表,有人可能会得出这样的结论:哇,Percona Server的表现尽然有所衰退
但如果我们去掉前1800秒的结果,排除预热阶段,平均值将变得不同:
- MySQL: 3746 tps
- Percona Server: 3704 tps
4张表的平局吞吐量比较如下:
- MySQL: 3882 tps
- Percona Server: 6735 tps
Percona Server仍然较慢,但是你更倾向稳定的吞吐量还是零星的飙升呢?此外,有一种方式能够提高Percona Server的吞吐量:增大 innodb_log_file_size。
下面是Percona Server调整innodb_log_file_size=8GB稳定时间轴图表:
整合了各种结果,提供了如下最终的数字与抖动(1800秒预热之后)
总的来说,在适当的调整后,Percona Server/XtraDB 更胜MySQL,并且它带来了更加稳定的吞吐。