触发更新查询时ibdata1会增加

时间:2015-01-15 14:03:50

标签: mysql

我已经阅读了很多帖子,这些帖子解释了阻止不断增长的ibdata1文件增长的唯一解决方案是:

  1. 转储所有数据库
  2. 在my.cnf的innodb_file_per_table部分设置mysqld
  3. 清理数据目录(mysql除外)
  4. 重启MySQL服务器并使用mysqldump加载转储。
  5. 然而,一旦我完成了所有这些步骤,我的问题便开始了。我仍然看到ibdata1文件大小增加的情况。该场景解释如下:

    我使用干净的数据目录启动MySQL Server 5.5(仅存在mysql目录),ibdata1文件的大小为18 MB。接下来的步骤如下:

    1. 我已经在my.cnf的mysqld部分下面提到了innodb_file_per_table条目。
    2. 现在我使用mysqldump从mysql转储文件加载一些表(所有这些表都指定了InnoDB存储引擎)。我观察到ibdata1大小没有改变,并且根据innodb_file_per_table设置
    3. 创建了单独的ibd文件
    4. 我在表格中添加了一个新列ColumnA (int, NOT NULL, UNSIGNED, DEFAULT 0),比如表A.存储引擎是InnoDB,包含900万条记录。到目前为止,ibdata1文件的大小保持不变(18 MB)
    5. 我现在使用以下查询更新ColumnA中的值:update TableA set ColumnA = crc32(someothervarcharcolumnfromthistable);
    6. 我发现在更新过程中,ibdata1的大小不断增长,并且增长超过300 MB。
    7. 为什么会这样?这是否意味着我必须每隔'x'个月开始提到清理 - 重启 - 恢复活动,或者我错过了什么?

0 个答案:

没有答案