查看完整版本: MySQL 自動最佳化資料表 (optimize)

yi-lan 2012-6-28 22:43

MySQL 自動最佳化資料表 (optimize)

在 Mysql 5 以上就有提供這樣功能的程式可以用 ~~ 用法入下[code]mysqlcheck --all-databases --optimize --auto-repair[/code]那我們將它放到 Crontab 裡排程, 這樣就可以讓他自動執行囉 ~~
設定每天早上 1:05 執行[code]5 1 * * * /usr/bin/mysqlcheck --all-databases --optimize --auto-repai[/code]那沒有提供 mysqlcheck 的 Mysql 版本可以用以下的 php 程式來 Run[code]<?php
$dbh = mysql_connect('DB_SERVER_IP', 'DB_ROOT_ID', 'DB_ROOT_PASS');
$resource = mysql_query('SHOW DATABASES', $dbh);
//echo 'Found ' . mysql_num_rows($resource) . " databases.</br>";
while ($db_t = mysql_fetch_assoc($resource)) {
$db_name = $db_t['Database'];
// echo "<font color="#FF0000">Database : $db_name</font></br>";
mysql_select_db($db_name, $dbh);
$r = mysql_query('SHOW TABLE STATUS', $dbh);
while ($t = mysql_fetch_assoc($r)) {
// echo $t['Name']."
";
if ($t['Data_free'] > 0) {
// echo $t['Name'] . " optimization.n";
mysql_query('OPTIMIZE TABLE ' . $t['Name'], $dbh) or die(mysql_error());
}
}
}
?>[/code]把這個程式碼存成 optimize.php, 設定 Crontab 在早上 1:50 執行[code]50 1 * * * /usr/bin/php /var/www/html/kiss/optimize.php[/code]這樣, DB 每天都是最佳化的資料表囉, 當資料小的時候沒感覺, 大的時候, 整體會快很多喔 ~~
頁: [1]
查看完整版本: MySQL 自動最佳化資料表 (optimize)