IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

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

MySQL 中文网 - 2012-08-30 23:59:33 累计浏览 1,975 次
本机暂存

     一、前言

     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. 使用deepseek进行Oracle恢复,引起重大故障 (2026-06-22 10:56:00)
  2. 接手一个只差临门一脚的数据库恢复 (2026-06-18 00:13:09)
  3. 我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险 (2026-06-15 01:00:00)

查看更多 数据库 文章 →

建议继续学习

  1. 深入浅出INNODB MVCC机制与原理 (累计阅读 9,691)
  2. Innodb IO优化-配置优化 (累计阅读 7,721)
  3. Innodb分表太多或者表分区太多,会导致内存耗尽而宕机 (累计阅读 7,716)
  4. 由浅入深理解索引的实现(2) (累计阅读 7,705)
  5. MySQL中like语句及相关优化器tips (累计阅读 6,277)
  6. Innodb 表和索引结构 (累计阅读 6,221)
  7. InnODB和MyISAM索引统计集合 (累计阅读 6,230)
  8. 从load data引发的死锁说起 (累计阅读 6,139)
  9. 一次神奇的MySQL优化 (累计阅读 6,080)
  10. InnoDB线程并发检查机制 (累计阅读 5,793)