Optimize InnoDB Table遇到的问题

来源:互联网 发布:2017网络大电影票房 编辑:程序博客网 时间:2024/06/06 08:44

近日在两个物品记录表中分别制造了10亿的数据(不要问我什么业务会有这么多数据^_^),每个表分别有9个字段,基本是int。之前估算过表的大小,但没有计算磁盘占用情况,这次测试主要就是想了解下磁盘占用情况。


/data总容量200GB,10亿数据很快就写满了,于是又开始删数据,但发现InnoDB存储引擎在删除数据后并不自动释放磁盘空间。在老叶的博客上我们学习到可以通过optimize table语法alter table TableName engine=innodb来实现空间的释放。


我的MySQL版本是5.1.38,在optimize执行了很久之后系统提示

Table does not support optimize, doing recreate + analyze instead

……好无语啊,消耗了时间不说,结果还没有执行成功


在网上搜索了下看到MySQL管网对optimize语法有详细的说明,参见http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html

其中关键在这里

mysql> OPTIMIZE TABLE foo;

+----------+----------+----------+-------------------------------------------------------------------+| Table    | Op       | Msg_type | Msg_text                                                          |+----------+----------+----------+-------------------------------------------------------------------+| test.foo | optimize | note     | Table does not support optimize, doing recreate + analyze instead || test.foo | optimize | status   | OK                                                                |+----------+----------+----------+-------------------------------------------------------------------+

You can makeOPTIMIZE TABLE work on other storage engines by starting mysqld with the --skip-new or --safe-mode option. In this case, OPTIMIZE TABLE is just mapped toALTER TABLE.

上面是说要求我们在启动的时候指定--skip-new或者--safe-mode选项来支持optimize功能


我就是没有指定这些选项遇到了上面的问题,按照上面的要求重新启动后就好了

原创粉丝点击