PostgreSQL のINFORMATION_SCHEMAについて

Permalink2008/08/21 19:14:53
カテゴリ: モデル, データベース, PostgreSQL

CakePHP1.2 RC2

開発中に debug の設定を 2 などにしておくとページを表示させる為に利用している SQL を出力してくれて大変便利です。
PostgreSQL を利用している場合、その SQL の一番上に表示される

SELECT table_name as name FROM INFORMATION_SCHEMA.tables WHERE table_schema = 'public';

などのスキーマに関する SQL の処理時間が結構かかります。

本番に導入した際にこんなに時間を取られては困るという場合は、debug を 0 にすれば解決します。
(本番環境では debug を 0 にするのは当然ですね)


この仕組みについてです。

スキーマ情報は app/tmp/cache/models/ 配下にキャッシュされるのですが、cake/libs/model/datasources/datasource.php を見てみると、

function __cacheDescription($object, $data = null) {
	if ($this->cacheSources === false) {
		return null;
	}
	if (Configure::read() > 0) {
		$expires = "+15 seconds";
	} else {
		$expires = "+999 days";
	}
	if ($data !== null) {
		$this->__descriptions[$object] =& $data;
	}

	$key = ConnectionManager::getSourceName($this) . '_' . $object;
	$cache = Cache::read($key, '_cake_model_');

	if (empty($cache)) {
		$cache = $data;
		Cache::write($key, $cache, array('duration' => $expires, 'config' => '_cake_model_'));
	}

	return $cache;
}

デバック情報が 0 でない場合は、キャッシュの有効期間が15秒とあります。
これの影響で、ページを表示する度にスキーマの SQL が呼ばれていたという訳です。

一方、デバック情報を 0 とした場合、有効期間が999日になっているので、毎回スキーマの SQL が呼ばれなくなります。

これで安心して本番導入できます。

#本番環境ではスキーマ情報が保持され続けるので、テーブルの構造を途中で変えたような時は、このキャッシュを削除しないと反映されないので注意しましょう。


関連記事


    この記事へのトラックバック アドレス

    コメント, トラックバック:

    この投稿への コメント/トラックバック はまだありません...

    コメントを残す:

    頂いたメールアドレスはこのサイト上には表示されません
    頂いたURLは表示されます。

    許可される XHTML タグ: <p, ul, ol, li, dl, dt, dd, address, blockquote, ins, del, span, bdo, br, em, strong, dfn, code, samp, kdb, var, cite, abbr, acronym, q, sub, sup, tt, i, b, big, small>
    (改行が自動で <br /> になります)
    (名前、メールアドレス、URLを記憶する Cookie を発行します)
    (ユーザがメッセージ・フォームを通してあなたに連絡することを許可します (あなたのメール・アドレスは表示されません))

    プロフィール
    岐阜県中津川市加子母在住のあつ@株式会社一六社(いちろくしゃ)スタッフ

    あつへのメッセージはSkypeを使ってテキストメッセージでどうぞ
    あつ

    CakePHPに関する情報をまとめていきます。

    開発スピードがアップできればうれしいです。

    >>連絡はこちらへどうぞ

    CakePHPを中心とした勉強会を無料で開催していますので、これからCakePHPを始めるという方でもぜひお越しください。
    >>詳しくはこちらへ(高蔵寺SE勉強会)


    CakePHP関連のブックマーク


    CakePHP最新版
    CakePHP 1.2.3.8166


    CakePHPの書籍

    CakePHPによる実践Webアプリケーション開発

    CakePHP1.2で作成する人にオススメ。
    とても参考になります。

    まるごとPHP!(vol.2)

    安藤さんの解説が載っています。
    AmazonのPagination部分は参考になります。

    CakePHPによるWebアプリケーション開発

    まだ読んだことありません

    CakePHPポケットリファレンス
    CakePHPポケットリファレンス
    CakePHP1.2 でやるなら、これがあると何かと便利♪

    CakePHP徹底入門
    CakePHP徹底入門
    CakePHP1.2 を今から始めるならここから

    Fast CakePHP
    Fast CakePHP
    シンプルでわかりやすい CakePHP の入門書

    CakePHPガイドブック
    CakePHPガイドブック
    CakePHP1.1 ではとても参考にした CakePHP 最初の入門書

    アーカイブ

     RSS2.0

    powered by
    b2evolution
    ブログ一六社

    Geo Visitors Map