我有一个相当大的 mysql 数据库表,其中一个字段是长文本,我希望在这个字段上使用压缩,这会导致磁盘空间减少吗?或者是否已经分配了存储空间,并且不会导致任何空间减少。存储引擎是innodb。
问问题
2024 次
1 回答
4
InnoDB 压缩行格式有一些先决条件:
innodb_file_format=Barracuda
在您的 my.cnf 文件中。innodb_file_per_table
在您的 my.cnf 文件中。压缩不适用于存储在中央表空间 (ibdata1) 中的表。更改表格以使用压缩格式。
ALTER TABLE MyTable ROW_FORMAT=COMPRESSED
那么表应该以压缩格式存储,它会占用更少的空间。
压缩率取决于您的数据。
注意:如果您有一个表存储在 ibdata1 中央表空间中,并且您将该表重组为 file-per-table,则 ibdata1 不会缩小! 缩小 ibdata1 的唯一方法是转储所有InnoDB 数据,关闭 MySQL,rm 表空间,重新启动 MySQL,然后重新加载数据。
回复您的评论:
不,它不应该改变您进行查询的方式。
是的,这将需要很长时间。多长时间取决于您的系统。我建议先用一张小桌子试一试,这样你就可以感受一下了。
写的时候压缩,读的时候解压,需要消耗一些CPU资源。数据库服务器拥有额外的 CPU 资源是很常见的——数据库通常受 I/O 的限制。但是速度可能会成为瓶颈。同样,这取决于您的系统、数据和使用情况。我鼓励您仔细测试,看看它是否是净赢。
于 2013-02-11T23:48:14.110 回答