pg_buffercache
モジュールは、共有バッファキャッシュで何が起きているかをリアルタイムに確認する方法を提供します。
《機械翻訳》このモジュールは、pg_buffercache_pages()
関数(pg_buffercache
ビューにラップされています)、pg_buffercache_summary()
関数、およびpg_buffercache_usage_counts()
関数を提供します。
《マッチ度[55.263158]》このモジュールはレコード集合を返すpg_buffercache_pages
C関数と、簡単に利用できるようにこの関数を隠蔽するpg_buffercache
ビューを提供します。
《機械翻訳》pg_buffercache_pages()
関数は、各行が1つの共有バッファエントリの状態を記述するレコードのセットを返します。
pg_buffercache
ビューは、この関数を便利に使用できるようにラップしています。
《機械翻訳》pg_buffercache_summary()
関数は、共有バッファキャッシュの状態を要約した1行を返します。
《機械翻訳》pg_buffercache_usage_counts()
関数は、各行が指定された使用カウントを持つバッファの数を記述するレコードのセットを返します。
デフォルトでは、使用はスーパーユーザとpg_monitor
ロールの権限を持つロールに限定されています。
GRANT
を使って他人にアクセス権を付与できます。
pg_buffercache
ビュー #ビューによって公開されている列の定義を表 F.15に示します。
表F.15 pg_buffercache
の列
列 型 説明 |
---|
1から |
リレーションのファイルノード番号 |
リレーションのテーブル空間OID |
リレーションのデータベースOID |
リレーション内のフォーク番号。 |
リレーション内のページ番号 |
ダーティページかどうか |
Clock-sweepアクセスカウント |
このバッファをピン留めしているバックエンドの数 |
共有キャッシュ内の各バッファに対して、1行が存在します。
未使用のバッファは、bufferid
を除き、すべてのフィールドがNULLになります。
共有システムカタログは、OIDがゼロのデータベースに属するものとして表示されます。
キャッシュはすべてのデータベースで共有されているため、現在のデータベースに属さないリレーションのページも表示されます。
これは、一部の行に対して一致するpg_class
の結合行が存在しない、間違った結合をしてしまう可能性すらあることを意味します。
pg_class
に対して結合しようとする場合、現在のデータベースのOIDまたは0と等しいreldatabase
を持つ行に限定して結合することをお勧めします。
ビューが表示するバッファ状態データのコピーのために、バッファマネージャのロックを取得しません。このため、pg_buffercache
ビューへのアクセスは、通常のバッファ処理への影響がより小さくなりますが、バッファすべてに渡る矛盾のない結果を提供しません。
しかしながら、各バッファの情報に自己矛盾がないことは保証されます。
pg_buffercache_summary()
Function #《マッチ度[84.482759]》ビューによって公開されている列の定義を表 F.15に示します。 《機械翻訳》関数によって公開される列の定義は表 F.16に示されています。
表F.16 pg_buffercache_summary()
Output Columns
列 型 説明 |
---|
《機械翻訳》使用済み共有バッファ数 |
《機械翻訳》未使用の共有バッファの数 |
《機械翻訳》ダーティー共有バッファの数 |
《機械翻訳》固定共有バッファの数 |
《機械翻訳》使用済み共有バッファの平均使用数 |
《機械翻訳》pg_buffercache_summary()
関数は、すべての共有バッファの状態を要約した単一の行を返します。
同様の、より詳細な情報はpg_buffercache
ビューによって提供されますが、pg_buffercache_summary()
はかなり安価です。
《機械翻訳》pg_buffercache
ビューと同様に、pg_buffercache_summary()
はバッファマネージャのロックを取得しません。
そのため、同時アクティビティによって結果に小さな不正確さが生じる可能性があります。
pg_buffercache_usage_counts()
Function #《マッチ度[80.991736]》ビューによって公開されている列の定義を表 F.17に示します。 《機械翻訳》関数によって公開される列の定義は表 F.17に示されています。
表F.17 pg_buffercache_usage_counts()
Output Columns
列 型 説明 |
---|
《機械翻訳》バッファ使用可能数 |
《機械翻訳》使用カウントのあるバッファの数 |
《機械翻訳》使用カウントのあるダーティ・バッファの数 |
《機械翻訳》使用カウントを持つピンされたバッファの数 |
《機械翻訳》pg_buffercache_usage_counts()
関数は、すべての共有バッファの状態を要約した行の集合を返します。
これは、使用可能なカウント値に基づいて集計されます。
同様の、より詳細な情報はpg_buffercache
ビューによって提供されますが、pg_buffercache_usage_counts()
はかなり安価です。
《機械翻訳》pg_buffercache
ビューと同様に、pg_buffercache_usage_counts()
はバッファマネージャのロックを取得しません。
そのため、同時アクティビティによって結果に小さな不正確さが生じる可能性があります。
regression=# SELECT n.nspname, c.relname, count(*) AS buffers FROM pg_buffercache b JOIN pg_class c ON b.relfilenode = pg_relation_filenode(c.oid) AND b.reldatabase IN (0, (SELECT oid FROM pg_database WHERE datname = current_database())) JOIN pg_namespace n ON n.oid = c.relnamespace GROUP BY n.nspname, c.relname ORDER BY 3 DESC LIMIT 10; nspname | relname | buffers ------------+------------------------+--------- public | delete_test_table | 593 public | delete_test_table_pkey | 494 pg_catalog | pg_attribute | 472 public | quad_poly_tbl | 353 public | tenk2 | 349 public | tenk1 | 349 public | gin_test_idx | 306 pg_catalog | pg_largeobject | 206 public | gin_test_tbl | 188 public | spgist_text_tbl | 182 (10 rows) regression=# SELECT * FROM pg_buffercache_summary(); buffers_used | buffers_unused | buffers_dirty | buffers_pinned | usagecount_avg --------------+----------------+---------------+----------------+---------------- 248 | 2096904 | 39 | 0 | 3.141129 (1 row) regression=# SELECT * FROM pg_buffercache_usage_counts(); usage_count | buffers | dirty | pinned -------------+---------+-------+-------- 0 | 14650 | 0 | 0 1 | 1436 | 671 | 0 2 | 102 | 88 | 0 3 | 23 | 21 | 0 4 | 9 | 7 | 0 5 | 164 | 106 | 0 (6 rows)
Mark Kirkwood <markir@paradise.net.nz>
設計協力: Neil Conway <neilc@samurai.com>
デバッグのアドバイス: Tom Lane <tgl@sss.pgh.pa.us>