PostgreSQL pg_buffercache

2021-09-16 16:07 更新
F.24.1. pg_buffercache視圖
F.24.2. 樣例輸出

pg_buffercache模塊提供了一種方法實時檢查共享緩沖區(qū)。

該模塊提供了一個 C 函數(shù)pg_buffercache_pages,它返回一個記錄的集合,外加一個包裝了該函數(shù)以便于使用的視圖pg_buffercache。

默認情況下,使用僅限于超級用戶和pg_monitor 角色的成員??梢允褂?code class="command">GRANT給其他人授予訪問權限。

F.24.1. pg_buffercache視圖

視圖顯示的列的定義如表 F.15所示。

表 F.15. pg_buffercache

列類型

描述

bufferid integer

ID,在范圍 1..shared_buffers

relfilenode oid (references pg_class.relfilenode)

關系的文件結點編號

reltablespace oid (references pg_tablespace.oid)

關系的表空間 OID

reldatabase oid (references pg_database.oid)

關系的數(shù)據(jù)庫 OID

relforknumber smallint

關系內(nèi)的分叉數(shù),見include/common/relpath.h

relblocknumber bigint

關系內(nèi)的頁面數(shù)

isdirty boolean

頁面是否為臟?

usagecount smallint

Clock-sweep 訪問計數(shù)

pinning_backends integer

對這個緩沖區(qū)加 pin 的后端數(shù)量


共享緩存中的每一個緩沖區(qū)都有一行。沒有使用的緩沖區(qū)的行中只有bufferid為非空。共享的系統(tǒng)目錄被顯示為屬于數(shù)據(jù)庫零。

因為緩沖是所有數(shù)據(jù)庫共享的,通常會有不屬于當前數(shù)據(jù)庫的關系的頁面。這意味著對于一些行在pg_class中可能不會有匹配的連接行,或者甚至有錯誤的連接。如果你試圖與pg_class連接,將連接限制于reldatabase等于當前數(shù)據(jù)庫 OID 或零的行是一個好主意。

由于緩沖區(qū)管理器鎖不會用于復制視圖將顯示的緩沖區(qū)狀態(tài)數(shù)據(jù),因此訪問pg_buffercache視圖對正常緩沖區(qū)活動的影響較小,但它不會在所有緩沖區(qū)中提供一致的結果集。但是,我們確保每個緩沖區(qū)的信息是自洽的。

F.24.2. 樣例輸出

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)

 


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號