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

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

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

   ページ全体やページの一部をキャッシュすることが適切でない場合もあります。このような場合も、クエリをキャッシュすることによりパフォーマンスを大幅に向上することが可能です。ここでもSquidを使用すると、高性能なクエリキャッシュシステムを簡単に構築できます(図21)。キャッシュヒット率が高いデータをキャッシュさせると、高い効果が期待できます。
クエリキャッシュ
図21:クエリキャッシュ


   PHPについては、リモートファイルの読み込みをサポートしているため、リスト9、リスト10のようなスクリプトを用意します。

リスト9:サーバー側PHPスクリプトの例(出力はSquidにキャッシュ)
<?php
// query_result.php
// 600秒間キャッシュを許可
header('Cache-Control: public, max-age=600');
$db = pg_connect('dbname=foo');
$rec = pg_select($db, 'somedb', $_GET);
// PHPがスクリプトとして読み込み可能な
// 形式でレコード変数を出力
echo '<?php $rec = ';
var_export($rec);
echo '?>';
?>

リスト10:クライアント側PHPスクリプトの例
<?php
include(‘http://some_db_cache _server/query_result.php?id=1234');
var_dump($rec); // query_ result.phpで設定された変数をダンプ
?>
キャッシュの効果

   これまで紹介してきたキャッシュがどの程度の効果があるか、簡単なベンチマークを行ってみます。テストに利用したのは次のスペックのPCです。データベースサーバー、Webサーバー、キャッシュサーバー、クライアントとして使用しました。

  • 環境 … PC3台
  • CPU … Pentium 4 2.4GHz
  • メモリ … 1GB
  • HDD … UATA 133/7200rpm
  • NIC … 100Mbps(スイッチングHUBへ接続)

   データベースのデータには、日本郵政公社が公開している郵便番号情報(http://www.post.japanpost.jp/zipcode/download.html)を、PostgreSQLに登録して使用しました。データ件数は約12万件あります。

   テストには、自作したPHPスクリプトおよびab(Apache Bench)コマンドを使用しました。abコマンドを使用したテストでは、コマンドは外部の別のPCから実行し、「ab -c 100 -n 10000 <URL>」として、同時接続100で10000リクエストを送信しました。

1   2  3  次のページ

書籍紹介
まるごと PostgreSQL! Vol.1
まるごと PostgreSQL! Vol.1 日本での市場シェアNo.1(オープンソースRDBMS部門)データベースソフトPostgreSQLの最新情報を、開発メンバーを含む豪華執筆陣が多面的かつ詳細に解説します。PostgreSQL用クラスタリング/レプリケーションソフト、PostgreSQL⇔Oracle移行、PostgreSQLによる大規模サイト構築法、新バージョンPostgreSQL 8.0先行レビュー、PostgreSQL用.NETデータプロバイダ等々、他では読めない貴重な記事が満載です。
発売日:2004/12/08発売
定価:\1,890(本体 \1,800+税)
大垣 靖男
著者プロフィール
大垣靖男(OHGAKI, Yasuo)
University of Denver卒。同校にてコンピュータサイエンスとビジネスを学ぶ。株式会社シーエーシーを経て、エレクトロニック・サービス・イニシアチブ有限会社を設立。Linuxはバージョン0.9xの黎明期から利用してるが、オープンソースシステム開発やコミュニティへの参加はエレクトロニック・サービス・イニシアチブ設立後から。PHPプロジェクトのPostgreSQLモジュールのメンテナ、日本PostgreSQLユーザ会の四国地域での活動等を担当している。


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