MySQL刪除資料時並不會釋放出磁碟空間的情形下,當刪除很多資料時這種多餘的空間會很多,可能會造成資料的錯誤,我們可以用 OPTIMIZE TABLE 來最佳化資料表,但如果需要最佳化的資料表很多,我們必須寫個 Shell Script 來達到一次全部最佳化。當然也可以使用 mysqlcheck 這個工具。
而且 mysqlcheck 這個工具可以讓我們在不關閉 MySQL 服務的情形下,要對資料庫做最佳化。
用法如下:
mysqlcheck [options] 資料庫名稱 [資料表名稱]
mysqlcheck [options] --databases 資料庫名稱1 [資料庫名稱2 資料庫名稱3...]
mysqlcheck [options] --all-databases
options部分舉一些常用的:
-a = Analyse given tables.
-c = Check table for errors
-o = Optimise table
-r = Can fix almost anything except unique keys that aren't unique
-u = The MySQL username to use when connecting to the server
例:mysqlcheck -a -c -o -r --all-databases
如果需要定期自動做資料庫最佳化,寫個 Shell Script 並將最佳化結果自動 Email 到管理者信箱,再用 cron 自動於特定時間執行。寫入 Shell Script 自動執行的話必須要再加上 password 的 option,畢竟讓伺服器在三更半夜停下來等管理者輸入密碼是很奇怪的。
--password = The password to use when connecting to the server
例:mysqlcheck -a -c -o -r --all-databases -u root --password '管理者密碼'
而且 mysqlcheck 這個工具可以讓我們在不關閉 MySQL 服務的情形下,要對資料庫做最佳化。
用法如下:
mysqlcheck [options] 資料庫名稱 [資料表名稱]
mysqlcheck [options] --databases 資料庫名稱1 [資料庫名稱2 資料庫名稱3...]
mysqlcheck [options] --all-databases
options部分舉一些常用的:
-a = Analyse given tables.
-c = Check table for errors
-o = Optimise table
-r = Can fix almost anything except unique keys that aren't unique
-u = The MySQL username to use when connecting to the server
例:mysqlcheck -a -c -o -r --all-databases
如果需要定期自動做資料庫最佳化,寫個 Shell Script 並將最佳化結果自動 Email 到管理者信箱,再用 cron 自動於特定時間執行。寫入 Shell Script 自動執行的話必須要再加上 password 的 option,畢竟讓伺服器在三更半夜停下來等管理者輸入密碼是很奇怪的。
--password = The password to use when connecting to the server
例:mysqlcheck -a -c -o -r --all-databases -u root --password '管理者密碼'
留言