|
|
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
日本での市場シェア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ユーザ会の四国地域での活動等を担当している。
|
|
|
|