Mamboのサイトがとても遅い

去年から取り組んでいるサイト移行。ようやく東京のサーバで本格稼働開始。ところが、試験で使っていたときにはあまり感じなかったのですが、mamboがプロバイドしているサイトの表示がとても遅い。クリックしてから1分以上かかったり、Mamboのエラーが表示されたり。
コンテンツはMySQLへ入っていて、クエリで取り出して表示しているはず。ログ出力を有効にして調査してみる。

まず時間がかかっているクエリを調査

my.cnf中の[mysqld]セクション中にこんなディレクティブを入れる。

long_query_time=3
log-slow-queries=/tmp/slow.log

これで答えを返すまでに3秒以上かかったクエリがログにでる。

結果参照

こんなのがいっぱいでていました。

# Time: 110126 17:18:59
# User@Host: root[root] @ localhost []
# Query_time: 175.163659  Lock_time: 157.735721 Rows_sent: 0  Rows_examined: 0
SET timestamp=1296029939;
UPDATE mos_core_log_items SET hits=(hits+1)
WHERE time_stamp='2011-01-26' AND item_table='#__content' AND item_id='668';

mos_core_log_itemsってのをupdateしようとしてそれにやたら時間がかかっているみたい。175秒って。

このテーブルってなに?

Googleで検索しても大した情報はないなあ。中身をみると、日付とコンテンツ、それと表示された回数がストアされているテーブルみたい。hits=(hits+1)ってのでインクリメントしているんですね。
2005年からのデータがはいっていてやたら件数が多い。そりゃおそくなるよ。

indexを作って上げよう

いっそ全部消しちゃおうかなとおもったんですが、グッとこらえてindexを作ることで我慢。

mysql> create index mos_core_log_items_index on mos_core_log_items (time_stamp,item_table,item_id) ;

これでなんとか普通に表示できるようになりました。
このテーブルのデータ消していいのかなぁ、どうだろう。