位置:海鸟网 > IT > mySQL >

如何对Mysql 数据表压缩

Innodb:

[fb]# ll -hs url_comment_*.ibd
633M -rw-rw---- 1 mysql mysql 632M Oct 25 17:51 url_comment_0.ibd

innodb:plug-in

ll share_*.ibd
-rw-rw---- 1 mysql mysql 11249123328 Nov 14 22:59 share_16.ibd (压缩)
-rw-rw---- 1 mysql mysql 25182601216 Nov 14 13:32 share_17.ibd (未压缩)
#alter table share_16 row_format=compressed key_block_size=4  

MyISAM:

alter table url_comment_0 engine=myisam

12K -rw-rw---- 1 mysql mysql 8.7K Oct 25 18:16 url_comment_0.frm
178M -rw-rw---- 1 mysql mysql 178M Oct 25 18:53 url_comment_0.MYD
99M -rw-rw---- 1 mysql mysql 98M Oct 25 18:53 url_comment_0.MYI

结论:

由上面数据可知innodb plugin能有效压缩innodb数据文件,近50%,另外相同的情况下使用MyISAM表也可较大的减少数据大小(178+99<633M).

当然实际的压缩比例和表的结构等有关,如字段为varchar会有较大的压缩比,而int类型压缩率会低些~

其它的压缩技术还可以使用myisampack,ARCHIVE,infobright等技术,但是这些技术常是用于数据表归档操作,令数据表有较大压缩比,但有不能进行update,insert操作等缺点,不在本文讨论范围~