如何在MySQL中压缩列?

时间:2015-06-18 08:51:41

标签: mysql compression innodb

我有一张存储电子邮件通信的表格。每次有人 回复,整个路径也被包括并保存 数据库(我需要它,因为应用程序的数量 纠正水平的变化太高了。)

mail文字列的尺寸为10000。但是,我在存储文本方面遇到了麻烦。由于我不确定,可以发生多少次通信,我不知道该列的数字是多少。

引擎为InnoDB。我可以在MySQL中使用某种柱状压缩技术来避免增加列的大小吗?

而且,如果我继续将varchar列增加到20000,该怎么办呢。该表有大约200万条记录。这会是一件好事吗?

4 个答案:

答案 0 :(得分:3)

您可能正在寻找MySQL COMPRESS()UNCOMPRESS()函数来分别压缩数据以进行存储和检索。

另请参阅InnoDB Compression Usage

答案 1 :(得分:1)

只要数据不需要编辑,就可以使用存档引擎。

答案 2 :(得分:0)

此答案特定于Percona

Percona不久前引入了压缩列格式。您可以在CREATE或ALTER上使用的

CREATE TABLE test_compressed (
    id INT NOT NULL PRIMARY KEY,
    value MEDIUMTEXT COLUMN_FORMAT COMPRESSED
 );

参考:https://www.percona.com/doc/percona-server/5.7/flexibility/compressed_columns.html

答案 3 :(得分:0)

对我来说,使用文本数据压缩的最佳方法是使用 Percona 压缩列格式。

ALTER TABLE `tableName` MODIFY `mail` TEXT COLUMN_FORMAT COMPRESSED NOT NULL;

我已经对用作缓存的表进行了压缩测试,主要存储HTML数据,大小从620 MB减小到110.6MB。

我认为您应该考虑使用TEXT类型而不是长VARCHAR。 数据字段与innodb聚集索引分开存储,它可以影响并可能改善数据库的性能。