执行OPTIMIZE TABLE后,为什么ibdata1文件大小并没有改变?
在对几个大表做delete之后,想收缩数据库的空间,主要是收缩ibdata1文件大小
但是执行了下面命令后,文件大小没有任何变化,为什么呢?
OPTIMIZE TABLE table1
OPTIMIZE TABLE table2
OPTIMIZE TABLE table3

解决方案 »

  1.   

    For InnoDB tables, OPTIMIZE TABLE is mapped to ALTER TABLE, which rebuilds the table to update index statistics and free unused space in the clustered index.所以不会直接来减少ibdata的文件尺寸。
    减少ibdata的方法如下
    - 1. 用mysqldump等工具导出数据
    - 2. 停止 mysqld
    - 3. 删除ibdata*, ib_logfile* 文件
    - 4. 重新启动 mysqld(这时mysqld就会自动创建 idbdata*, ib_logfile* 文件)
    - 5. 将到出来的数据导回去,体积才会减小。
      

  2.   

    ibdata 本来就是固定好大小的表空间。