PostgreSQL + QueryCache

last update: 16 Dec 2005

home |next

QueryCacheの実装



PostgreSQLにQueryCache(クエリーキャッシュ)を実装してみた。

結果はネガティブだったが、他の人のHackの手助けになるかもしれないので、書き殴ったコードを晒す。


    1. QueryCacheの実装
    2. 本題
      2.1.QueryCache(クエリーキャッシュ)とは
      2.2.動機
      2.3.結果
      2.4.実行例
      2.5.実行環境
        2.5.1.ソース+パッチ
        2.5.2.postgresql.conf
        2.5.3.ベンチマーク
    3. アルゴリズム + データ構造 = プログラム
      3.1.アルゴリズム
        3.1.1.アルゴリズムの概略
          3.1.1.1.LOCKについて
        3.1.2.src/backend/tcop/postgres.c の改造ポイント
        3.1.3.src/backend/parser/parse_clause.c の改造ポイント
        3.1.4.src/backend/libpq/pqcomm.c の改造ポイント
          3.1.4.1.データの保存
          3.1.4.2.キャッシュデータの送信
      3.2.データ構造
        3.2.1.postmasterが生成する共有メモリ上のデータ構造
          3.2.1.1.ヘッダー
          3.2.1.2.OID情報の保存
          3.2.1.3.クエリと結果保存
        3.2.2.各postgresが持つデータ構造
    4. プログラム改造のヒント
      4.1.実行パラメータの追加
        4.1.1.guc.c
        4.1.2.guc.h
      4.2.共有メモリでの領域確保
        4.2.1.下準備
        4.2.2.メモリ領域の確保
        4.2.3.共有メモリ領域へのアクセス
      4.3.メモリコンテキスト
        4.3.1.独自のメモリコンテキスト生成
        4.3.2.CurTransactionContextを使った例
    5. プログラム検証
      5.1.プログラム検証
      5.2.モデル化
      5.3.spinによる検証
        5.3.1.Promelaによるモデルの実装
        5.3.2.xspinによる検証
        5.3.3.




home |next


since 04/Oct/2004