IT技术博客大学习 共学习 共进步

InnoDB引擎数据表压缩特性测试

MySQL 中文网 - 2012-08-30 23:59:33 浏览 1,922 次

     一、前言

     Innodb Plugin引擎开始引入多种格式的行存储机制,目前支持:Antelope、Barracuda两种。其中Barracuda兼容Antelope格式。

     另外,Innodb plugin还支持行数据压缩特性,不过前提是采用Barracuda行存储格式。

     表空间启用压缩的前提是innodb表空间文件存储格式修改成:Barracuda,需要修改2个选项:

     innodb_file_format = "Barracuda"

     innodb_file_format_max = "Barracuda"

    下面是对比测试结果

     二、表空间压缩比

     1. 某项目数据表压缩比

     2.1 数据表tabA

     压缩之前

     -rw-rw---- 1 mysql mysql 19038208 Mar 21 13:59 tabA.ibd(18.1G)

     压缩之后

     -rw-rw---- 1 mysql mysql 9.2G Mar 21 19:11 tabA.ibd

     相差:12414976 ~= 12124 MB ~= 11.83 Gb,节约49.32%

     2.2 数据表tabB

     压缩前

     -rw-rw---- 1 mysql mysql 1.1G Mar 21 13:51 tabB.ibd

     压缩后

     -rw-rw---- 1 mysql mysql 404M Mar 28 09:59 tabB.ibd

     相差:1.1G - 404Mb ~= 696MB,节约63.27%

    2.3 数据表tabC

     压缩前

     -rw-rw---- 1 mysql mysql 16195584 Mar 21 14:25 tabC.ibd(15.4G)

     压缩后

     -rw-rw---- 1 mysql mysql 8130560 Mar 28 10:49 tabC.ibd(7.7G)

     相差:16195584-8130560 = 8065024 ~= 7G,节约49.79%

    2. tpcc测试库

数据表      压缩前(单位:字节)    压缩后(单位:字节)    减少字节数    节约比
warehoused  192                   128                   64             33.33%
districtd   9216                  5120                  4096           44.44%
itemd       17408                 11264                 6144           35.29%
new_ordersd 397312                155648                241664         60.82%
ordersd     2957312               786432                2170880        73.41%
historyd    4694016               1347584               3346432        71.29%
customerd   20619264              12881920              7737344        37.52%
stockd      35737600              23801856              11935744       33.40%
order_lined 43991040              15740928              28250112       64.22%
全库        109603176             59028260              50574916       46.14%

     三、tpcc对比测试

1. 非压缩表
                 4212.650 TpmC
                 4203.600 TpmC
2. 压缩表
                 428.983 TpmC
                 663.017 TpmC
                 707.883 TpmC
                 707.183 TpmC

     四、测试导出

     1. 非压缩

time mysqldump tpcc1000 | gzip > tpcc1000.sql.gz
real    148m22.614s
user    148m56.915s
sys     3m33.802s

     2. 压缩表

time mysqldump tpcc1000_compress | gzip > tpcc1000_compress.sql.gz
real    129m42.541s
user    149m12.407s
sys     3m44.835s

     五、测试导入

     1. 非压缩表

     1.1 并发导入

开始:2012-04-01 23:43:03.777173866 +0800
结束:2012-04-02 03:21:05.003590866 +0800
耗时:03:38:02

     2. 压缩表

     1.1 并发导入

开始: 2012-04-01 23:40:34.289173866 +0800
结束:2012-04-03 11:06:44.740992866 +0800
耗时:35:26:10

     六、结论

     从测试结果来看,InnoDB引擎的压缩特色效果不错,压缩完后快和MyISAM引擎差不多了。

     不过压缩后事务并发性能下降非常严重,从这个角度来看,它适合用于对压缩比较高、但对并发事务要求不高的场景,例如一些CPU性能较高,同时又需要读大量数据的场景,适用范围有限。

建议继续学习

  1. windows下压缩包在linux解压乱码的解决办法 (阅读 5,304)
  2. php的echo为什么这么慢 (阅读 5,223)
  3. 使用系统命令实现文件的压缩与加密 (阅读 5,185)
  4. 启用memcached压缩注意事项 (阅读 5,124)
  5. Android设计中的.9.png (阅读 4,904)
  6. MySQL从压缩文件恢复数据 (阅读 4,682)
  7. 前端性能优化之Html压缩 (阅读 4,644)
  8. 项目中对模板和js,css文件进行压缩的处理类 (阅读 4,523)
  9. 开源压缩算法Zopfli介绍 (阅读 4,464)
  10. mod_gzip:Apache的HTTP压缩优化 (阅读 4,383)