MySQLには、インストールされたMySQLで使用されていないスペースを確保するために使用できる、OPTIMIZE TABLEコマンドがあります。 データベースやサーバのすべてのテーブルに対してこの最適化を実行する方法(ビルトインコマンドや一般的なストアドプロシージャ)はありますか。それとも自分でスクリプトを作成しなければならないのでしょうか。
コマンドラインでこれを行うには、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 Administrator`(MySQL GUI Toolsの一部)は、データベースレベルでそれを行うことができます。
スキーマを選択して、右下にある「メンテナンス」ボタンを押すだけです。
このGUIツールはすでに製造中止となっているため、mysqlのページでは見つけにくいです。Google で見つけました: http://dev.mysql.com/downloads/gui-tools/5.0.html
新しいMySQL Workbenchでもこれができるかどうかはわかりません。
また、mysqlcheck
コマンドラインツールを使えば、それも可能なはずです。