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

図22:クエリキャッシュベンチマーク環境
1つのプログラムからfor文で1万回ループさせて順次処理しているため、データベースを直接検索した場合とキャッシュを利用した場合の経過時間が 近い値になっています。この構成だと、1クライアントからの連続アクセスを行っているのと同じなり、キャッシュを利用しているケースにとっては不利な条件 になります。ここではキャッシュミスの影響がわかりやすいように、あえてキャッシュの効果が表れにくい条件でベンチマークしてみます。結果は、表2のとお りです。
| 下3桁をランダムに生成し検索した場合 | |
| データベースを直接検索 | 25秒 |
| キャッシュを利用 | 20秒 |
| 下4桁をランダムに生成し検索した場合 | |
| データベースを直接検索 | 25秒 |
| キャッシュを利用 | 32秒 |
下3桁から下4桁へと、キャッシュしなければならないデータ量が増えると、キャッシュを使用している方が遅くなることがわかりました。キャッシュミスによるペナルティにより、キャッシュを利用している方が遅くなったと考えられます。
実際にはキャッシュミスの効果がすぐわかるように、キャッシュに利用するメモリを少なく(8MB)してテストを実施したため、10000オブジェク トでもメモリ内のキャッシュにはヒットしない状態になっています。ディスクにはより大きいキャッシュを設定(100MB)していたので、ディスクキャッ シュにはヒットし、データベースにはほとんどアクセスがない状態です。この結果から、データベースへの負荷を軽減するために利用するキャッシュとしては、 実行速度のみの計測では不十分であること、キャッシュサーバーには大きなメモリと速いハードディスクが必要であることがわかります。
出力キャッシュのベンチマーク環境
スクリプトでなんらかの処理を行った場合は、その負荷もかかります。HTMLやXMLの出力にはデータベースへの問い合わせやループ処理などが必要となり、比較的多くの処理時間が必要になります。出力キャッシュのベンチマークの環境は、図23のとおりです。

図23:出力キャッシュベンチマーク環境
バックナンバー
この記事の筆者
University of Denver卒。同校にてコンピュータサイエンスとビジネスを学ぶ。株式会社シーエーシーを経て、エレクトロニック・サービス・イニシアチブ有限会社を設立。Linuxはバージョン0.9xの黎明期から利用してるが、オープンソースシステム開発やコミュニティへの参加はエレクトロニック・サービス・イニシアチブ設立後から。PHPプロジェクトのPostgreSQLモジュールのメンテナ、日本PostgreSQLユーザ会の四国地域での活動等を担当している。
筆者の人気記事
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。