劇的ビフォーアフター

3月上旬から激しく放置中だった自分のブログに久しぶりにアクセスしてみると・・・何も表示されませんでした。(汗

個別エントリなら「遅い」レベルながら一応表示されるものの、インデックスは全くもってムリ。1分待っても404も500も出ず、ひたすら「読み込み中」のまま。管理ページもエントリ一覧も同じでした。

そういえば、先々月辺りにさくらインターネットから「あなたのphpプログラムがDBに過負荷を与えています」というメールが来てたんですよね。
一応、名指しされてたfalbum.phpを削除。念のためその他プラグイン、トラバ、コメントやらも無効にしておいたのですが、あの頃からかなり遅くなってたなぁ・・・

wordpress側の問題かと思って、ME2.0.9からME2.2.1にアップデートしてみたものの状況は全く変わらず。

MySQLAdminからデータベースを見てみると・・・wp_postmetaが100MB超えてました。犯人はお前か。
Vi-1
いくらんでも投稿記事(テキストデータ)が100MBなんてことはないはず。
データ内容を見てみると、ultimate tag warrierやら今では使ってないプラグインのレコードが700ほど見つかったので、かつて習ったSQL構文を思い出しつつdelete from ‘wp_postmeta’ where meta_key = “_utw_tags_0″てな感じで、さくっと削除。
他にも不必要なレコードを消しまくった後、レコードの最適化を実行。

すると・・・なんてことでしょう。
100MBから一挙に2MBにまで小さくなりました。
ほとんどゴミデータの塊だったようす。

インデックスも管理ページもありえないほど速く表示できるようになりました♪
気分もすっきり♪

#ダンプしておいたwp_postmetaをテキストエディタでのぞいてみましたが、UTWとSBMの関連レコード(800行弱)だけでした。
となると、なぜファイルサイズが(101.5MBもあるのか・・・0データで埋まっているのかな。それが最適化で削除されて実データだけ残ったのかな?・・・ま、ええか。

#miやTextEditだと重すぎて開けなかったんですが、Terminal上のviで試したら、一瞬で開けました。さすがUNIX文化。レスポンスが違いますな。

※12日追記
MySQLのデータベースが肥大化してしまうことでWordPressが異様に重くなっていた件ですが、原因が判明しました。

原因はオーバーヘッドの蓄積。
ググったらすぐに出てきました(汗

オーバーヘッドってのは、MySQLでINSERT/DELETE/UPDATE処理を行ううちにできてくるゴミ(未使用領域)だそうです。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1155748
先ほどの件でいうと、101.5MBのほとんどがオーバーヘッドで占められていたという訳です。(最終的には10KBにまで小さくなりました。

Overhead2

オーバーヘッドを削除するには、phpMyAdminで最適化を行えばいいとのこと。
wp_commentなど他のテーブルで最適化をしてみると、確かにオーバーヘッド分、サイズが小さくなりました。

WordPressでブログ運営中の方は、phpMyAdminでオーバーヘッドの有無を見てると幸せになれますよ

コメントをどうぞ