ホーム > コンピュータ > [MT4.2] 再構築時にデータベースへの問い合わせにかかる時間

[MT4.2] 再構築時にデータベースへの問い合わせにかかる時間

2009 年 7 月 20 日 コメントをどうぞ コメント

MovableTypeではページの生成に非常に時間がかかる。

mod_perlやFastCGIを導入すればバイトコンパイルにかかる時間分を短縮できるが、再構築は分単位で時間がかかる処理のため、バイトコンパイルにかかる時間は無視できる程度になってあまり効果が出ないと思われる。

MTからデータベースへのクエリの発行回数を減らす (mt-search.cgiを例にとって)。』ではデータベースへの問い合わせ回数を減らすことでページの生成時間を減らそうとしているが、アムダールの法則で、問い合わせにかかる時間が全体のうちに占める割合で効果が限定される。

自分の環境ではどうだろうかと思ってデータベースへの問い合わせにかかる時間を計ってみることにした。

環境は

CPU Celeron 2.0GHz
chip set i865G
memory PC2700 768MB
OS FreeBSD 7.2
DBMS MySQL 5.0.77_1
MovableType 4.2.61

という感じで、ウェブサーバと同じマシンでmysqldを動かしている。

index_page.log
インデックスページのみを再構築したときのクエリログは上のようになった。

全体で449クエリ。そのうちSELECTが437クエリ、UPDATEが4クエリ、SETが8クエリ。

次にこのログを元にインデックスページ再構築時と同じクエリ列(query.txt)を作って

% time mysql -u root -ppasswd databese < query.txt > /dev/null

のようにして問い合わせ時間を計測した。

結果

0.086u 0.053s 0:02.13 6.1%      125+1371k 0+0io 0pf+0w
0.100u 0.046s 0:02.19 6.3%      87+977k 0+0io 0pf+0w
0.106u 0.034s 0:02.22 5.8%      130+1432k 0+0io 0pf+0w
0.115u 0.023s 0:02.20 5.9%      88+1001k 0+0io 0pf+0w
0.067u 0.074s 0:02.23 5.8%      109+1236k 0+0io 0pf+0w

となって5回平均で2.19秒かかっていることになる。

再構築時間が最短で13秒かかっているので、オーバーヘッドを含めずに17%程度がデータベースへの問い合わせにかかっている。

オンデマンドに問い合わせているだろうから、データベースサーバを置くマシンを別にしても大差ないだろう。

問い合わせ時間が0秒になっても10秒以上かかっていて、今のところ影響は少ないけど2割を超えてくると注意する必要があるかもしれない。

  1. コメントはまだありません。
  1. トラックバックはまだありません。