近日在两个物品记录表中分别制造了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;
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 to ALTER TABLE
.
上面是说要求我们在启动的时候指定--skip-new或者--safe-mode选项来支持optimize功能
我就是没有指定这些选项遇到了上面的问题,按照上面的要求重新启动后就好了^_^
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9183234/viewspace-1028031/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9183234/viewspace-1028031/