MySQLの保守

Date 2006-08-18 04:54:20 | Category: XOOPS

ふと思い立って、 /var/log/mysql_slow_queries をチェックしたら、

DELETE FROM xp_session WHERE sess_updated < 1151347298;

この手のクエリがずらっと並んでいました。

確かにXOOPSにおいて、sessionテーブルはゲストアクセスでも常に書き換えられているのですから、テーブルデータとしてのフラグメンテーション(セクタ/クラスタのフラグメンテーションではない)も相当なはずです。

というわけで、mysqlcheck -o --all-databases をかけてみたらビックリ。
Optimizeをかける前は、628932byteだったMYDファイルが174648byteまで減りました。
当然中身は同じデータなわけで、いかにスカスカで、アクセスしづらい状況だったか、ということです。

ついでに、インデックス情報の更新 mysqlcheck -a --all-databases もやってみたら、XOOPSのsessionテーブルはどれも"already up to date"ではありませんでした。

どういう理由で、sessionテーブルのindex情報が最新状態でなくなっているのかは判りませんが、session処理がXOOPSにとって重い処理であることは間違いないので、このあたりを改善できれば速度向上に役立つ気がします。

とりあえず、サーバ管理者権限をお持ちなら、cronに、index情報の更新と、テーブルオプティマイズを仕掛けるべきでしょう。(自分への戒めも含め)

30 6 * * * /usr/bin/mysqlcheck -a --all-databases > /dev/null 2>&1
45 6 * * 0 /usr/bin/mysqlcheck -o --all-databases > /dev/null 2>&1






You can read more news at PEAK XOOPS.
http://xoops.peak.ne.jp

The URL for this story is:
http://xoops.peak.ne.jp/md/news/index.php?page=article&storyid=350