商用データベースに匹敵するWebシステム構築手法 7

クエリキャッシュの効果

クエリキャッシュの効果

   「クエリキャッシュ」のサンプルコードと同様の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:出力キャッシュベンチマーク環境

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る