mysql压缩文本字段会减少当前数据库的磁盘空间吗?

时间:2013-02-11 23:36:09

标签: mysql compression innodb longtext

我有一个相当大的mysql数据库表,其中一个字段是longtext,我希望在这个字段上使用compress,这会导致磁盘空间减少吗?或者是已经分配的存储空间,它不会导致空间减少。存储引擎是innodb。

1 个答案:

答案 0 :(得分:3)

InnoDB压缩行格式有一些先决条件:

    my.cnf文件中的
  1. innodb_file_format=Barracuda

  2. my.cnf文件中的
  3. innodb_file_per_table。压缩不适用于存储在中央表空间(ibdata1)中的表。

  4. 更改表格以使用压缩格式。

    ALTER TABLE MyTable ROW_FORMAT=COMPRESSED
    
  5. 然后表格应以压缩格式存储,并且占用的空间更少 压缩率取决于您的数据。

    注意:如果您在ibdata1中央表空间中存储了一个表,并将表重组为每个表的文件, ibdata1将不会缩小!唯一收缩ibdata1的方法是转储所有你的InnoDB数据,关闭MySQL,关闭表空间,重新启动MySQL,然后重新加载你的数据。


    重新评论:

    不,它不应该改变您查询的方式。

    是的,这需要很长时间。多长时间取决于您的系统。我建议先用较小的桌子尝试一下,这样你就能感受到它。

    在编写时需要花费一些CPU资源进行压缩,在阅读时需要解压缩。数据库服务器通常具有额外的CPU资源 - 数据库通常受I / O的限制。但速度可能成为瓶颈。同样,这取决于您的系统,数据和使用情况。我鼓励你仔细测试,看看它是否是一场净胜利。