TOP書籍連動> クエリキャッシュの効果
まるごと PostgreSQL!
商用データベースに匹敵するWebシステム構築手法

第7回:クエリキャッシュとキャッシュの効果

著者:大垣靖男(OHGAKI, Yasuo)   2005/5/11
前のページ  1  2   3  次のページ
クエリキャッシュの効果

   「クエリキャッシュ」のサンプルコードと同様のPHPスクリプトで、郵便番号データベースを郵便番号をキーにforループで1万回検索しました(図22)。
クエリキャッシュベンチマーク環境
図22:クエリキャッシュベンチマーク環境


   1つのプログラムからfor文で1万回ループさせて順次処理しているため、データベースを直接検索した場合とキャッシュを利用した場合の経過時間が近い値になっています。この構成だと、1クライアントからの連続アクセスを行っているのと同じなり、キャッシュを利用しているケースにとっては不利な条件になります。ここではキャッシュミスの影響がわかりやすいように、あえてキャッシュの効果が表れにくい条件でベンチマークしてみます。結果は、表2のとおりです。

下3桁をランダムに生成し検索した場合
データベースを直接検索 25秒
キャッシュを利用 20秒
下4桁をランダムに生成し検索した場合
データベースを直接検索 25秒
キャッシュを利用 32秒

表2:クエリキャッシュベンチマークの結果


   下3桁から下4桁へと、キャッシュしなければならないデータ量が増えると、キャッシュを使用している方が遅くなることがわかりました。キャッシュミスによるペナルティにより、キャッシュを利用している方が遅くなったと考えられます。

   実際にはキャッシュミスの効果がすぐわかるように、キャッシュに利用するメモリを少なく(8MB)してテストを実施したため、10000オブジェクトでもメモリ内のキャッシュにはヒットしない状態になっています。ディスクにはより大きいキャッシュを設定(100MB)していたので、ディスクキャッシュにはヒットし、データベースにはほとんどアクセスがない状態です。この結果から、データベースへの負荷を軽減するために利用するキャッシュとしては、実行速度のみの計測では不十分であること、キャッシュサーバーには大きなメモリと速いハードディスクが必要であることがわかります。


出力キャッシュのベンチマーク環境

   スクリプトでなんらかの処理を行った場合は、その負荷もかかります。HTMLやXMLの出力にはデータベースへの問い合わせやループ処理などが必要となり、比較的多くの処理時間が必要になります。出力キャッシュのベンチマークの環境は、図23のとおりです。

出力キャッシュベンチマーク環境
図23:出力キャッシュベンチマーク環境


前のページ  1  2   3  次のページ


大垣 靖男
著者プロフィール
大垣靖男(OHGAKI, Yasuo)
University of Denver卒。同校にてコンピュータサイエンスとビジネスを学ぶ。株式会社シーエーシーを経て、エレクトロニック・サービス・イニシアチブ有限会社を設立。Linuxはバージョン0.9xの黎明期から利用してるが、オープンソースシステム開発やコミュニティへの参加はエレクトロニック・サービス・イニシアチブ設立後から。PHPプロジェクトのPostgreSQLモジュールのメンテナ、日本PostgreSQLユーザ会の四国地域での活動等を担当している。


INDEX
第7回:クエリキャッシュとキャッシュの効果
  クエリキャッシュ
クエリキャッシュの効果
  出力キャッシュの効果