MySQL 行格式压缩效果及性能影响测试

MySQL InnoDB表支持行格式压缩,压缩后的表能够显著减少磁盘空间占用,但是压缩功能也会造成一定的性能损耗,比如加重CPU的负载,降低数据库吞吐量。本文通过测试案例,来具体了解MySQL InnoDB行格式压缩的效果以及对性能的影响。

  • MySQL版本:5.7.19
  • 测试工具:sysbench,10张表,单张表1000w数据,32线程并发
  • 测试场景:read_only,write_only,read_write

行格式压缩语法:
ALTER TABLE sbtest1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;

1. 压缩效果测试

sysbench生成10张表,每张表1000w条记录,对比压缩前后,这10张表的磁盘占用大小。

压缩前:23G
压缩后:16G

压缩之后,磁盘占用降低了30%左右。

2. CPU负载测试

测试场景cpu负载cpu占用百分比
read_only(未压缩)0.4925%
read_only(压缩)1.2830%
write_only(未压缩)2.9329%
write_only(压缩)4.8772%
read_write(未压缩)1.6532%
read_write(压缩)2.4960%

从以上测试结果可以看出,压缩对cpu的影响较大,尤其是写入场景,cpu负载和cpu占用百分比增长了1倍以上。

3. 读写性能测试

测试场景tpsqpsmin(ms)agv(ms)max(ms)95%(ms)
read_only(未压缩)1221.5519544.7423.0126.19429.1028.16
read_only(压缩)1134.8118156.9623.3328.19845.7830.26
write_only(未压缩)2688.2616129.568.2311.90415.4619.29
write_only(压缩)1166.506998.9910.4627.43629.4044.98
read_write(未压缩)892.6817853.5328.7135.84439.4746.63
read_write(压缩)634.7812695.6532.8750.41876.7964.47

从以上测试结果可以看出,压缩对数据库tps,qps和响应时间产生较大影响,尤其是写入场景,tps,qps 降低明显,而对于只读场景,影响较小。

4. 总结:

  1. 行格式压缩能够明显减少磁盘空间占用,从测试结果来看,降低了30%左右,而在实际业务场景中,如果业务表含有大量字符串字段,那么压缩效果将会更加显著。
  2. 数据压缩在减少磁盘空间占用的同时,也会带来一些负作用,使得cpu负载和cpu使用率明显增加。
  3. 压缩功能会影响数据库性能,从测试结果上来看,对于写入场景的影响要明显大于只读场景。

文章评论

0条评论