thepg_buffercache모듈 제공 a 공유 버퍼 캐시에서 무슨 일이 일어나고 있는지 검사하는 수단 실시간으로.
모듈은 C 함수를 제공합니다pg_buffercache_pages
세트를 반환합니다
레코드, 뷰pg_buffercache편리한 용도로 기능을 감싸십시오.
기본적으로 공개 액세스는 두 가지 모두에서 취소됩니다. 보안 문제가 숨어있는 경우.
보기에 노출 된 열의 정의가 표시됩니다. 안에테이블 F-17.
표 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 | 관계 내 페이지 번호 | |
RelforkNumber | smallint | 관계 내 포크 번호 | |
iSdirty | 부울 | 페이지가 더럽습니까? | |
UsageCount | smallint | 페이지 LRU 카운트 |
공유 캐시에 각 버퍼마다 하나의 행이 있습니다. 사용되지 않았습니다 버퍼는 모든 필드로 표시됩니다.Bufferid. 공유 시스템 카탈로그가 표시됩니다 데이터베이스 제로에 속한다.
캐시가 모든 데이터베이스에서 공유되므로 일반적으로 현재에 속하지 않는 관계의 페이지가됩니다. 데이터 베이스. 이것은 결합 행이 일치하지 않을 수 있음을 의미합니다. 안에pg_class일부 행의 경우 잘못된 조인도있을 수 있습니다. 가입하려는 경우 에 맞서pg_class, 좋은 생각입니다 가입을 행으로 제한하려면Reldatabase현재 데이터베이스와 동일합니다 OID 또는 ZERO.
언제pg_buffercache보기입니다 액세스 된 내부 버퍼 관리자 잠금 장치는 오랫동안 사용됩니다 보기가있는 모든 버퍼 상태 데이터를 복사하기에 충분합니다. 표시하다. 이를 통해보기가 일관된 세트를 생성합니다 결과적으로, 정상적인 버퍼 활동을 더 오래 차단하지는 않지만 필요한 것보다. 그럼에도 불구하고 약간의 영향이있을 수 있습니다 이보기가 자주 읽는 경우 데이터베이스 성능.
regression =# 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