MySQL有一个OPTIMIZE TABLE命令,可以用来回收MySQL安装中的未使用空间。 是否有办法(内置命令或普通存储过程)为数据库和/或服务器安装中的每张表运行这种优化,或者这是你必须自己编写的东西?
你可以使用mysqlcheck
在命令行上做这件事。
一个数据库。
mysqlcheck -o <db_schema_name>
所有数据库。
mysqlcheck -o --all-databases
下面这个例子的php脚本可以帮助你优化你的数据库中的所有表
<?php
dbConnect();
$alltables = mysql_query("SHOW TABLES");
while ($table = mysql_fetch_assoc($alltables))
{
foreach ($table as $db => $tablename)
{
mysql_query("OPTIMIZE TABLE '".$tablename."'")
or die(mysql_error());
}
}
?>
MySQL管理员
(MySQL GUI工具的一部分)可以在数据库层面上为你做这件事。
只要选择你的模式并按右下角的 "维护 "按钮。
由于GUI工具已经达到终结状态,所以在mysql页面上很难找到它们。通过谷歌找到它们:http://dev.mysql.com/downloads/gui-tools/5.0.html
我不知道新的MySQL Workbench是否也能做到这一点。
你可以使用mysqlcheck
命令行工具,它也应该能够做到这一点。