我有一个相当大的mysql数据库表,其中一个字段是longtext,我希望在这个字段上使用compress,这会导致磁盘空间减少吗?或者是已经分配的存储空间,它不会导致空间减少。存储引擎是innodb。
答案 0 :(得分:3)
InnoDB压缩行格式有一些先决条件:
innodb_file_format=Barracuda
。
innodb_file_per_table
。压缩不适用于存储在中央表空间(ibdata1)中的表。
更改表格以使用压缩格式。
ALTER TABLE MyTable ROW_FORMAT=COMPRESSED
然后表格应以压缩格式存储,并且占用的空间更少 压缩率取决于您的数据。
注意:如果您在ibdata1中央表空间中存储了一个表,并将表重组为每个表的文件, ibdata1将不会缩小!唯一收缩ibdata1的方法是转储所有你的InnoDB数据,关闭MySQL,关闭表空间,重新启动MySQL,然后重新加载你的数据。
重新评论:
不,它不应该改变您查询的方式。
是的,这需要很长时间。多长时间取决于您的系统。我建议先用较小的桌子尝试一下,这样你就能感受到它。
在编写时需要花费一些CPU资源进行压缩,在阅读时需要解压缩。数据库服务器通常具有额外的CPU资源 - 数据库通常受I / O的限制。但速度可能成为瓶颈。同样,这取决于您的系统,数据和使用情况。我鼓励你仔细测试,看看它是否是一场净胜利。