测试负载场景
配置信息
128G 缓冲池
64G 缓冲池
32G缓冲池
总结
附录
my.cnf
15.6.4 Doublewrite Buffer
原文链接:http://dimitrik.free.fr/blog/posts/mysql-80-perf-new-dblwr.html
作者:Dimitri
译者:孟维克
新的 MySQL 8.0.20版本重新设计了InnoDB Double Write(DBLWR),确实是一个大的历史烦人的事情。为什么在过去这么痛苦,让我们付出了这么多精力,我无法更好地解释,因为从2018年开始,我已经在下面一篇关于MySQL基于IO负载的文章中说过了。这个故事并不完整,因为它缺少2019年的那一篇(稍后再讲),但是如果你(重新)读过上面的这篇文章提到的内容,您会更好理解接下来的内容。
但至少现在这篇文章是关于好消息的——新的DBLWR以及它如何帮助解决历史上MySQL性能问题!由于一张图片胜过百万字,我将尽量节省三百万字(因为本文中有三张图片)
我会跳过所有的新的设计细节(我认为Sunny会更好的第一手解释所有的)——我只会提到以下内容:
DBLWR不再是“系统表空间”的一部分,可以被放置在任何地方(如果您有可能使用不同的存储存放DBLWR文件,您完全可以摆脱DBLWR对您主存储的影响),但默认情况下,DBLWR和您的数据存储在相同的目录下。
您可以配置想要使用多少个DBLWR文件
以及每个DBLWR文件有多少页(这也与最终的DBLWR文件大小直接相关)
更多配置选项的详细内容,您可以参阅 MySQL 8.0 doc about DBLWR ,这里做了详细的解释。
废话不多说,让我们看以下测试结果
测试负载场景
这里使用简单的Sysbench OLTP_RW测试用例
8张表,每张表五千万行数据(大约100G数据)
InnoDB Buffer Pool大小从
128G(纯内存负载)
到64G (部分IO限制)
到32G (重IO限制)
并发从1,2,4….1024
在MySQL8.0.19和8.0.20做相同测试
配置信息
服务器:48cores-HT Intel(R) Xeon(R) Platinum 8268 CPU @ 2.90GHz, 192GB RAM
存储:Intel Optane NVMe, XFS 文件系统
OS:OL7.6, kernel-4.14.35-1902.301.1.el7uek.x86_64
MySQL配置文件:完整的my.cnf
在文章末尾
注意:DBLWR文件是默认配置,