星期五, 二月 27, 2009

使用 PHP 對所有 MySQL Database 做 Optimize / Repair 的動作

發現 Blog 的速度越來越慢, 主要原因應該是資料越來越多, Database 也開太多(資料蒐集 等等), 於是想說要來為所有 DB 做 Optimize 和 Repair 的動作.

詳可見:

簡單說就是要對所有 Table 做這兩個動作:

  • OPTIMIZE TABLE table_name;
  • REPAIR TABLE table_name;

註1: 如果都是 MyISAM 格式, 可以考慮用 myisamchk 直接做, ex:

  1. cd /var/lib/mysql/DB_NAME
  2. 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, 要的話就把此註解拿掉.

相關標籤

this is comment icon 結果真的有差嘛? [回覆]

請問效果如何

Comment by Treker (03/25/2009 17:49)

this is comment icon 回 Treker [回覆]

資料小看不出來, 量大 Optimize 會有差, 不過我主要是做 check, 稍微做做檢查, 壞掉即早發現比較好.

Comment by Tsung (03/25/2009 23:55)
Add this page to del.icio.us

發表迴響

標題

內容 (限制 1000 字)

暱稱

電子郵件

個人網頁


 authimage


PS: 若無法留言, 請先確認是否有打開 JavaScript, 造成您的困擾, 實在萬分對不起 Orz...(如果無法留言, 勞煩可以發信給我好嗎? 謝謝.)
PS2: 若您的留言被誤判, 我都會再自行看過, 不需要一直重覆張貼~