データベースを最適化してMovableTypeの再構築プロセスを高速化できるかも?

Posted by
ぴろり
Posted at
2007/04/06 19:22
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
MovableType カテゴリ

 Postgreite では VACUUM 文, My では OPTIMIZE TABLE 構文を用いて データベースのテーブルを最適化することができます。 特にデータストレージにデータベースを使用しているシステムでは, を削除したり一つのエントリを何度も編集したりと, どうしてもデータベースが断片化し易い環境にあります。
 このデータベースの断片化が進むと目的のデータに高速にアクセスできなくなり, 特に では再構築時のパフォーマンスに影響が出ると考えられます。 そこでデータベースの最適化によって の再構築プロセスが どの程度高速化できるのか試してみました。

この記事をはてなブックマークに追加する この記事のはてなブックマーク数 | この記事をlivedoorクリップに追加する この記事のlivedoorクリップ数 | この記事をYahooブックマークに追加する この記事のYahoo!ブックマーク数 | この記事をdel.icio.usに追加する

結果発表

 いきなりですが,実は私の環境(My)ではほとんど効果が確認できませんでした(´・ω・`)  CAPTCHA や JavaScript を利用したスパム対策の効果もあってか, 今までの被害は数える程度で, 今回問題としているデータベースの断片化が進んでいなかったのかもしれません。 つまり,そもそも最適化する必要が無かった,と。
 を頻繁に削除するようなサイトでは効果が期待できるかもしれませんが, それでも個人の規模でエントリが数百件程度,も数千件程度では, そもそもデータベースの断片化がパフォーマンスに影響を与えるレベルではないかもしれません。 もし目に見えて効果があった時には是非で記事にして頂くか,欄まで一言頂けると幸いです。

方法

 MTStopWatch プラグインを使って(実はこの記事への前振りでした) 全てのエントリアーカイブ,全てのカテゴリアーカイブ,マスタアーカイブインデックスの 夫々の再構築に要する時間を計測してみました。 再構築に要した時間は MTStopWatch によって,構築されたページ中に記録されます。

  1. 再構築を行なう
    1. 全てのエントリアーカイブ
    2. 全てのカテゴリアーカイブ
    3. マスタアーカイブインデックス
  2. 再構築に要した時間を集計する
  3. 上記を 3 回繰り返す
  4. VACUUMまたはOPTMIZE TABLEでデータベースを最適化する
  5. 再構築を行なう
    1. 全てのエントリアーカイブ
    2. 全てのカテゴリアーカイブ
    3. マスタアーカイブインデックス
  6. 再構築に要した時間を集計する
  7. 上記を 3 回繰り返す

 当サイトが収容されているでは My を使用しているので, データベースの最適化は以下の 文を使用しました。

 また,生成されたから MTStopWatch によって計測された計測結果を集計するための Perl スクリプトを作成しましたので参考に。

計測結果

表1. 1 ページあたりの再構築時間
計測 エントリアーカイブ カテゴリアーカイブ マスタアーカイブ
LA最小平均中央最大 LA最小平均中央最大 LA-
1 0.1042.7125.8107.3497.2 0.36140.2224.1189.1459.4 0.432527.7
2 0.4844.9135.5113.0467.4 0.52132.7176.7185.9217.5 0.452548.7
3 0.1642.5118.0103.7402.2 0.81146.1184.1172.2253.1 0.371575.2
データベースを最適化
4 0.2043.2120.0101.2375.7 0.35122.0172.5167.4230.6 0.331705.4
5 0.2240.1119.0107.2367.1 0.05136.8185.7182.8254.9 0.101778.4
6 0.1642.0114.599.7349.2 0.03136.8213.0178.0440.5 0.072046.6
記事数= 264 件,カテゴリ数= 11 件,単位=ミリ秒
LA:再構築前に uptime を実行して得られた直近 1 分の Load Average 値

参考


この記事を読んだ人はこんな記事も読んでいます ?

その他の関連する記事


関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 (必須/公開)
 (必須/非公開)
 
 (必須)
コメントスパム防止のため投稿前に ランダムな数字 ? を入力してから投稿してください。お手数ですがご協力のほど宜しくお願いいたします。