thepg_buffercache모듈 제공 a 공유 버퍼 캐시에서 무슨 일이 일어나고 있는지 검사하는 수단 실시간으로.
모듈은 C 함수를 제공합니다pg_buffercache_pages
세트를 반환합니다
레코드, 뷰pg_buffercachethat wraps the function for convenient use.
기본적으로 공개 액세스는 두 가지 모두에서 취소됩니다. 보안 문제가 숨어있는 경우.
보기에 노출 된 열의 정의는 다음과 같습니다.
표 F-17.pg_buffercache열
이름 | type | 참조 | 설명 |
---|---|---|---|
Bufferid | 정수 | ID, 1.shared_buffers | |
relfilenode | OID | pg_class.relfilenode | 관계의 Relfilenode |
reltablespace | OID | pg_tablespace.oid | 관계의 테이블 스페이스 OID |
Reldatabase | OID | pg_database.oid | 관계의 데이터베이스 OID |
RelBlockNumber | bigint | 관계 내 페이지 번호 | |
iSdirty | 부울 | 페이지가 더럽습니까? | |
UsageCount | smallint | 페이지 LRU 카운트 |
공유 캐시에 각 버퍼마다 하나의 행이 있습니다. 사용되지 않았습니다 버퍼는 모든 필드로 표시됩니다.Bufferid12594_12665
캐시가 모든 데이터베이스에서 공유되므로 일반적으로 현재에 속하지 않는 관계의 페이지가됩니다. 데이터 베이스. 이것은 결합 행이 일치하지 않을 수 있음을 의미합니다. 안에PG_CLASS일부 행의 경우 잘못된 조인도있을 수 있습니다. 가입하려는 경우 에 맞서PG_CLASS, 좋은 생각입니다 가입을 행으로 제한하려면Reldatabase현재 데이터베이스와 동일합니다 OID 또는 ZERO.
언제pg_buffercache보기입니다 액세스 된 내부 버퍼 관리자 잠금 장치는 오랫동안 사용됩니다 보기가있는 모든 버퍼 상태 데이터를 복사하기에 충분합니다. 표시하다. 이를 통해보기가 일관된 세트를 생성합니다 결과적으로, 정상적인 버퍼 활동을 더 오래 차단하지는 않지만 필요한 것보다. 그럼에도 불구하고 약간의 영향이있을 수 있습니다 이보기가 자주 읽는 경우 데이터베이스 성능.
회귀 =# c.relname, count (*)를 버퍼로 선택하십시오 pg_buffercache b에서 내부 결합 pg_class c b.relfilenode = c.relfilenode 및 B. relatabase in (0, PG_DATABASE에서 OID를 선택하십시오 여기서 datname = current_database ())) c.relname에 의해 그룹 2 DESC 한계 10에 의해 주문; Relname | 버퍼 --------------------------------------------------- Tenk2 | 345 Tenk1 | 141 pg_proc | 46 pg_class | 45 PG_ATTRIBUT | 43 pg_class_relname_nsp_index | 30 pg_proc_proname_args_nsp_index | 28 pg_attribute_relid_attnam_index | 26 pg_depende | 22 pg_depend_reference_index | 20 (10 줄)
Mark Kirkwood<markir@paradise.net.nz
디자인 제안 : Neil Conway<neilc@samurai.com
디버깅 조언 : Tom Lane<tgl@sss.pgh.pa.us