且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

MySQL 8.0 InnoDB压缩行格式性能测试(2)

更新时间:2022-09-09 15:32:02

2.2 数据量超过内存ibp容量

sysbench参数调整ROWS,其余不变。

ROWS=5000000 #每个表500万行数据

2.2.1 数据压缩率

未压缩格式(KB) 压缩格式(KB) 压缩率(1-压缩格式/未压缩格式)
59596904 40210556 34.03%

2.2.2 TPS相差值


MySQL 8.0 InnoDB压缩行格式性能测试(2)


2.2.3 平均延迟差值 avg Latency (ms)


MySQL 8.0 InnoDB压缩行格式性能测试(2)


2.2.4 99%延迟差值 99th percentile Latency (ms)


MySQL 8.0 InnoDB压缩行格式性能测试(2)


根据测试结果的几点结论:

a) 当数据无法全部放在buffer pool中的时候,如果是读多写少的业务场景,则用Compressed行格式性能更高。

b) 当数据无法全部放在buffer pool中的时候,如果是写多读少的业务场景,则用Dynamic行格式性能更高。

综上,当数据量比较小的时候,并且读多写少的业务场景中,可以考虑使用压缩行格式。



3. 总结

根据上面的测试结果来看,如果是下面几种业务场景,则可以考虑使用InnoDB表想要使用compressed行格式:

a) 对压缩比需求不是特别高,本案中,只压缩了 25% ~ 34% 数据量,优势不大。

b) 数据量无法全部加载到buffer pool中的时候,读多写少的业务场景。

本案中,测试条件存在几点不足:

a) 服务器配置不算高。

b) 测试持续时长不够,只有15分钟。

c) 测试表和实际业务预计相差比较大,实际业务环境中,可能文本类型列会多一些,这样压缩比也会高一些。

综合来看,类似下面的业务场景,可以考虑使用compressed格式:

a) 数据量较大,且文本数据较多。

b) 磁盘比较紧张。

c) 读多写少。

最后,***还是自己再亲自测试下比较靠谱哈。

延伸阅读

enjoy MySQL :)

全文完。