星期五, 二月 27, 2009
使用 PHP 對所有 MySQL Database 做 Optimize / Repair 的動作
發現 Blog 的速度越來越慢, 主要原因應該是資料越來越多, Database 也開太多(資料蒐集 等等), 於是想說要來為所有 DB 做 Optimize 和 Repair 的動作.
詳可見:
- MySQL Reference Manual :: OPTIMIZE TABLE Syntax
- MySQL Reference Manual :: REPAIR TABLE Syntax
- myisamchk — MyISAM Table-Maintenance Utility
簡單說就是要對所有 Table 做這兩個動作:
- OPTIMIZE TABLE table_name;
- REPAIR TABLE table_name;
註1: 如果都是 MyISAM 格式, 可以考慮用 myisamchk 直接做, ex:
- cd /var/lib/mysql/DB_NAME
- myisamchk --quick --check-only-changed --sort-index --analyze *.MYI
註2: /usr/bin/mysqlcheck -u root -p --all-database # 可以做全部 database 的 check
DB 少 或 Table 少的話, 還可以考慮手動做, 但是當 DB 一頁拉不完時, 還是乖乖寫程式來解決~
此程式註解部份, 有需掉時再自行打開, 下述是註解部份的說明:
- information_schema: 舊的 MySQL 這個 DB 第一次可能會有錯誤, 所以可以先略過第一次(全部 REPAIR 一次), 之後就可以跑了. (意思是, 若執行時有錯誤, 就把這個註解拿掉, 略過檢查 information_schema 這個 Database)
- Collation: 要看每個 Table 的編碼, 順便看還有哪些是 latin1 編碼的, 以後有空再把他轉成 utf8.
- REPAIR: 順便做 REPAIR TABLE table_nmae, 要的話就把此註解拿掉.
相關標籤
結果真的有差嘛?
請問效果如何
Comment by
Treker
(03/25/2009 17:49)
回 Treker
資料小看不出來, 量大 Optimize 會有差, 不過我主要是做 check, 稍微做做檢查, 壞掉即早發現比較好.
Comment by
Tsung
(03/25/2009 23:55)
發表迴響
PS: 若無法留言, 請先確認是否有打開 JavaScript, 造成您的困擾, 實在萬分對不起 Orz...(如果無法留言, 勞煩可以發信給我好嗎? 謝謝.)
PS2: 若您的留言被誤判, 我都會再自行看過, 不需要一直重覆張貼~
PS2: 若您的留言被誤判, 我都會再自行看過, 不需要一直重覆張貼~




