如何在光盘上压缩InnoDB表?

时间:2011-08-06 22:59:12

标签: mysql

我最初使用以下脚本创建了一个表'text':

CREATE TABLE IF NOT EXISTS `text` (
  `old_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `old_text` mediumblob NOT NULL,
  `old_flags` tinyblob NOT NULL,
  PRIMARY KEY (`old_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 MAX_ROWS=10000000 AVG_ROW_LENGTH=10240 AUTO_INCREMENT=8500 ;

我想压缩它。 我为此尝试了以下脚本:

ALTER TABLE text ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;

但是在我运行它之后,该表需要相同的磁盘空间(我使用innodb_file_per_table)。

在使用archived压缩表的备份后,最初的想法出现了 - 压缩大小是原始大小的2%。

如何对InnoDB表进行压缩,以减少所需的光盘大小?

感谢。

1 个答案:

答案 0 :(得分:3)

压缩不会影响已经使用的空间,因此减少所有数据大小的最佳方法是删除数据库服务器数据,使用ROW_FORMAT = COMPRESSED再次创建表并从备份中加载数据。

我可以证明这些作品已经过我自己的测试。

此处列出了所有必要的步骤: http://code.openark.org/blog/mysql/upgrading-to-barracuda-getting-rid-of-huge-ibdata1-file