由于 某个 千万级别的表,要分表,分表出来后,将原表里的数据会删除一部分,为了释放空间,每次delete 后 会 optimize table ,然后这样出现这种提示error  optimize table the table '#sql-4bb_1cde9c' is full要怎么处理。表类型是innodb

解决方案 »

  1.   

    mysql help:
    You can makeOPTIMIZE TABLE work on other storage engines by starting mysqld with the –skip-new or –safe-mode option. Inthis case, OPTIMIZE TABLE is just mapped to ALTER TABLE.上面是说要求我们在启动的时候指定–-skip-new或者–-safe-mode选项来支持optimize功能。
      

  2.   

    1  百分之99的情况都不用分表
    2  optimize table并不能释放空间  只有导出再重建表导入 可以释放空间
    3  临时表大小需要调整  max_heap_table_size和tmp_table_size调大
      

  3.   

    如果要减小体积:
    1. 用mysqldump等工具导出数据
    2. 停止 mysqld
    3. 删除ibdata*, ib_logfile* 文件
    4. 重新启动 mysqld(这时mysqld就会自动创建 idbdata*, ib_logfile* 文件)
    5. 将到出来的数据导回去,体积才会减小。