標題: MySQL 自動最佳化資料表 (optimize) [打印本頁]
作者: yi-lan 時間: 2012-6-28 22:43 標題: MySQL 自動最佳化資料表 (optimize)
在 Mysql 5 以上就有提供這樣功能的程式可以用 ~~ 用法入下複製內容到剪貼板
代碼:
mysqlcheck --all-databases --optimize --auto-repair
那我們將它放到 Crontab 裡排程, 這樣就可以讓他自動執行囉 ~~
設定每天早上 1:05 執行複製內容到剪貼板
代碼:
5 1 * * * /usr/bin/mysqlcheck --all-databases --optimize --auto-repai
那沒有提供 mysqlcheck 的 Mysql 版本可以用以下的 php 程式來 Run複製內容到剪貼板
代碼:
<?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());
}
}
}
?>
把這個程式碼存成 optimize.php, 設定 Crontab 在早上 1:50 執行複製內容到剪貼板
代碼:
50 1 * * * /usr/bin/php /var/www/html/kiss/optimize.php
這樣, DB 每天都是最佳化的資料表囉, 當資料小的時候沒感覺, 大的時候, 整體會快很多喔 ~~
歡迎光臨 ihao論壇 (https://ihao.org/dz5/) |
Powered by Discuz! 6.0.0 |