이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.Postgresql: Tài liệu: 17: F.23. PageInsPect-Kiểm tra cấp độ thấp của các tra롤 토토 cơ sở dữ liệu버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

F.23. 페이지 검사

페이지검사모듈은 디버깅 목적에 유용한 낮은 수준에서 데이터베이스 페이지의 내용을 검사할 수 있는 기능을 제공합니다. 이 모든 기능은 슈퍼유저만 사용할 수 있습니다.

F.23.1. 일반 기능

get_raw_토토 캔(relname 텍스트, 포크 텍스트, blkno int)는 bytea를 반환합니다.

get_raw_토토 캔명명된 관계의 지정된 블록을 읽고 복사본을 다음과 같이 반환합니다.바이테아값. 이를 통해 시간이 일치하는 단일 블록 복사본을 얻을 수 있습니다.포크해야 합니다'메인'메인 데이터 포크의 경우,'fsm'여유 공간 지도의 경우'vm'가시성 지도의 경우, 또는'초기화'초기화 포크용.

get_raw_토토 캔(relname text, blkno int)는 bytea를 반환합니다.

의 단축 버전get_raw_토토 캔, 메인 포크에서 읽기 위한 것입니다. 에 해당함get_raw_토토 캔(relname, 'main', blkno)

토토 캔_header(토토 캔 bytea)가 레코드를 반환함

토토 캔_header모두에게 공통적인 필드를 표시합니다PostgreSQL힙 및 인덱스 페이지.

다음으로 얻은 페이지 이미지get_raw_토토 캔인수로 전달되어야 합니다. 예를 들어:

test=# SELECT * FROM 토토 캔_header(get_raw_토토 캔('pg_class', 0));
    lsn | 체크섬 | 플래그 | 낮은 | 상단 | 특별한 | 페이지 크기 | 버전 | prune_xid
---------+----------+-------+-------+-------+---------+---------+---------+---------+----------
 0/24A1B50 |        0 |      1 |   232 |   368 |    8192 |     8192 |       4 |         0

반환된 열은 다음의 필드에 해당합니다.페이지헤더데이터구조체. 보다src/include/storage/buf토토 캔.h자세한 내용은.

체크섬필드는 페이지에 저장된 체크섬입니다. 페이지가 손상된 경우 올바르지 않을 수 있습니다. 이 인스턴스에 대해 데이터 체크섬이 활성화되지 않으면 저장된 값은 의미가 없습니다.

토토 캔_checksum(토토 캔 bytea, blkno int4)은 smallint를 반환합니다.

토토 캔_checksum페이지가 주어진 블록에 있는 것처럼 페이지의 체크섬을 계산합니다.

다음으로 얻은 페이지 이미지get_raw_토토 캔인수로 전달되어야 합니다. 예를 들어:

테스트=# SELECT 토토 캔_checksum(get_raw_토토 캔('pg_class', 0), 0);
 페이지_체크섬
---------------
         13443

체크섬은 블록 번호에 따라 다르므로 일치하는 블록 번호가 전달되어야 합니다(난해한 디버깅을 수행하는 경우 제외).

이 함수로 계산된 체크섬은 다음과 비교할 수 있습니다.체크섬함수의 결과 필드토토 캔_header. 이 인스턴스에 대해 데이터 체크섬이 활성화된 경우 두 값은 동일해야 합니다.

fsm_토토 캔_contents(토토 캔 bytea)가 텍스트를 반환함

fsm_토토 캔_contentsFSM 페이지의 내부 노드 구조를 보여줍니다. 예를 들어:

테스트=# SELECT fsm_토토 캔_contents(get_raw_토토 캔('pg_class', 'fsm', 0));

출력은 페이지 내 바이너리 트리의 노드당 한 줄이 있는 여러 줄 문자열입니다. 0이 아닌 노드만 인쇄됩니다. 페이지에서 반환될 다음 슬롯을 가리키는 소위 "다음" 포인터도 인쇄됩니다.

참조src/backend/storage/freespace/READMEFSM 페이지 구조에 대한 자세한 내용은.

F.23.2. 힙 함수

heap_토토 캔_items(토토 캔 bytea)가 레코드 세트를 반환합니다.

heap_토토 캔_items힙 페이지의 모든 라인 포인터를 표시합니다. 사용 중인 라인 포인터의 경우 튜플 헤더와 튜플 원시 데이터도 표시됩니다. 원시 페이지가 복사될 때 MVCC 스냅샷에 튜플이 표시되었는지 여부에 관계없이 모든 튜플이 표시됩니다.

다음으로 얻은 힙 페이지 이미지get_raw_토토 캔인수로 전달되어야 합니다. 예를 들어:

테스트=# SELECT * FROM heap_토토 캔_items(get_raw_토토 캔('pg_class', 0));

참조src/include/storage/itemid.h그리고src/include/access/htup_details.h반환된 필드에 대한 설명.

tuple_data_split(rel_oid oid, t_data bytea, t_infomask 정수, t_infomask2 정수, t_bits 텍스트 [, do_detoast bool])은 bytea[]를 반환합니다.

tuple_data_split백엔드 내부와 동일한 방식으로 튜플 데이터를 속성으로 분할합니다.

test=# SELECT tuple_data_split('pg_class'::regclass, t_data, t_infomask, t_infomask2, t_bits) FROM heap_토토 캔_items(get_raw_토토 캔('pg_class', 0));

이 함수는 반환 속성과 동일한 인수로 호출되어야 합니다.heap_토토 캔_items.

만약do_detoastis, 필요에 따라 속성이 삭제됩니다. 기본값은거짓.

heap_토토 캔_item_attrs(page bytea, rel_oid regclass [, do_detoast bool])는 레코드 세트를 반환합니다.

heap_토토 캔_item_attrs다음과 동일함heap_토토 캔_items단, 선택적으로 폐기할 수 있는 속성 배열로 튜플 원시 데이터를 반환한다는 점은 제외do_detoast이것은거짓기본적으로.

다음으로 얻은 힙 페이지 이미지get_raw_토토 캔인수로 전달되어야 합니다. 예를 들어:

test=# SELECT * FROM heap_토토 캔_item_attrs(get_raw_토토 캔('pg_class', 0), 'pg_class'::regclass);

F.23.3. B-트리 함수

bt_metap(relname text)이 레코드를 반환함

bt_metapB-트리 인덱스의 메타페이지에 대한 정보를 반환합니다. 예를 들어:

test=# SELECT * FROM bt_metap('pg_cast_oid_index');
-[ 기록 1 ]----
마술 | 340322
버전 | 2
루트 | 1
수준 | 0
빠른 뿌리 | 1
빠른 수준 | 0
bt_토토 캔_stats(relname text, blkno int)는 레코드를 반환합니다.

bt_토토 캔_statsB-트리 인덱스의 단일 페이지에 대한 요약 정보를 반환합니다. 예를 들어:

test=# SELECT * FROM bt_토토 캔_stats('pg_cast_oid_index', 1);
-[ 기록 1 ]-+-----
블크노 | 1
유형 | 엘
라이브_아이템 | 256
죽은 아이템 | 0
평균_항목_크기 | 12
페이지 크기 | 8192
free_size | 4056
btpo_prev | 0
btpo_next | 0
BTPO | 0
btpo_flags | 3
bt_토토 캔_items(relname text, blkno int)는 레코드 세트를 반환합니다.

bt_토토 캔_itemsB-트리 인덱스 페이지의 모든 항목에 대한 자세한 정보를 반환합니다. 예를 들어:

test=# SELECT * FROM bt_토토 캔_items('pg_cast_oid_index', 1);
 항목 오프셋 |  CTID | 아이템렌 | 널 | 바르스 |    데이터
------------+---------+---------+-------+------+-------------
          1 | (0,1) |      12 | 에프 | 에프 | 23 27 00 00
          2 | (0,2) |      12 | 에프 | 에프 | 24 27 00 00
          3 | (0,3) |      12 | 에프 | 에프 | 25 27 00 00
          4 | (0,4) |      12 | 에프 | 에프 | 26 27 00 00
          5 | (0,5) |      12 | 에프 | 에프 | 27 27 00 00
          6 | (0,6) |      12 | 에프 | 에프 | 28 27 00 00
          7 | (0,7) |      12 | 에프 | 에프 | 29 27 00 00
          8 | (0,8) |      12 | 에프 | 에프 | 2a 27 00 00

B-트리 리프 페이지에서,ctid힙 튜플을 가리킵니다. 내부 페이지에서 블록 번호 부분은ctid인덱스 자체의 다른 페이지를 가리키며 오프셋 부분(두 번째 숫자)은 무시되며 일반적으로 1입니다.

가장 오른쪽이 아닌 페이지(0이 아닌 값을 가진 모든 페이지)의 첫 번째 항목에 유의하세요.btpo_next필드)는 페이지의입니다.하이 키, 의미는데이터페이지에 나타나는 모든 항목의 상한선 역할을 하지만, 그ctid필드는 의미가 없습니다. 또한 리프가 아닌 페이지에서 첫 번째 실제 데이터 항목(하이 키가 아닌 첫 번째 항목)은마이너스 무한대항목, 실제 값이 없음데이터필드. 이러한 항목에는 해당 항목에 유효한 다운링크가 있습니다.ctid필드이지만.

bt_토토 캔_items(page bytea)가 레코드 세트를 반환합니다.

페이지를 다음으로 전달할 수도 있습니다.bt_토토 캔_items으로바이테아값. 다음으로 얻은 페이지 이미지get_raw_토토 캔인수로 전달되어야 합니다. 따라서 마지막 예는 다음과 같이 다시 작성할 수도 있습니다.

test=# SELECT * FROM bt_토토 캔_items(get_raw_토토 캔('pg_cast_oid_index', 1));
 항목 오프셋 |  CTID | 아이템렌 | 널 | 바르스 |    데이터
------------+---------+---------+-------+------+-------------
          1 | (0,1) |      12 | 에프 | 에프 | 23 27 00 00
          2 | (0,2) |      12 | 에프 | 에프 | 24 27 00 00
          3 | (0,3) |      12 | 에프 | 에프 | 25 27 00 00
          4 | (0,4) |      12 | 에프 | 에프 | 26 27 00 00
          5 | (0,5) |      12 | 에프 | 에프 | 27 27 00 00
          6 | (0,6) |      12 | 에프 | 에프 | 28 27 00 00
          7 | (0,7) |      12 | 에프 | 에프 | 29 27 00 00
          8 | (0,8) |      12 | 에프 | 에프 | 2a 27 00 00

그 외 모든 사항은 이전 항목에서 설명한 것과 동일합니다.

F.23.4. 브린 기능

brin_토토 캔_type(토토 캔 bytea)이 텍스트를 반환함

brin_토토 캔_type주어진 페이지 유형을 반환합니다.브린색인 페이지 또는 페이지가 유효하지 않은 경우 오류 발생브린페이지. 예를 들어:

test=# SELECT brin_토토 캔_type(get_raw_토토 캔('brinidx', 0));
 brin_토토 캔_type 
----------------
 메타
brin_meta토토 캔_info(토토 캔 bytea)가 기록을 반환합니다.

brin_meta토토 캔_infoa에 대한 다양한 정보를 반환합니다.브린인덱스 메타페이지. 예를 들어:

test=# SELECT * FROM brin_meta토토 캔_info(get_raw_토토 캔('brinidx', 0));
   마술 | 버전 | 페이지스페레인지 | 마지막 버전 매핑 페이지 
------------+---------+---------------+---
 0xA8109CFA |       1 |             4 |              2
brin_revmap_data(토토 캔 bytea)가 tid 집합을 반환함

brin_revmap_dataa의 튜플 식별자 목록을 반환합니다.브린색인 범위 65 페이지입니다. 예를 들어:

test=# SELECT * FROM brin_revmap_data(get_raw_토토 캔('brinidx', 2)) LIMIT 5;
  페이지  
---------
 (6,137)
 (6,138)
 (6,139)
 (6,140)
 (6,141)
brin_토토 캔_items(토토 캔 bytea, index oid)가 레코드 세트를 반환합니다.

brin_토토 캔_items에 저장된 데이터를 반환합니다.브린데이터 페이지. 예를 들어:

테스트=# SELECT * FROM brin_토토 캔_items(get_raw_토토 캔('brinidx', 5),
                                     '브리니드엑스')
       ORDER BY blknum, attnum LIMIT 6;
 항목 오프셋 | 공백 | attnum | 모두널 | 널이 없어 | 자리표시자 |    값     
------------+---------+---------+----------+----------+------------+---------------
        137 |      0 |      1 | 티 | 에프 | 에프 | 
        137 |      0 |      2 | 에프 | 에프 | 에프 | 1 .. 88
        138 |      4 |      1 | 티 | 에프 | 에프 | 
        138 |      4 |      2 | 에프 | 에프 | 에프 | 89 .. 176
        139 |      8 |      1 | 티 | 에프 | 에프 | 
        139 |      8 |      2 | 에프 | 에프 | 에프 | 177 .. 264

반환된 열은 다음의 필드에 해당합니다.BrinMemTuple그리고브린값구조체. 보다src/include/access/brin_tuple.h자세한 내용은.

F.23.5. 진 함수

gin_meta토토 캔_info(토토 캔 bytea)가 레코드를 반환합니다.

gin_meta토토 캔_infoa에 대한 정보를 반환합니다.인덱스 메타페이지. 예를 들어:

test=# SELECT * FROM gin_meta토토 캔_info(get_raw_토토 캔('gin_index', 0));
-[ 기록 1 ]----+------------
보류 중인 헤드 | 4294967295
보류 중_꼬리 | 4294967295
tail_free_size | 0
n_pending_pages | 0
n_pending_tuples | 0
n_total_pages | 7
n_entry_pages | 6
n_data_pages | 0
n_항목 | 693
버전 | 2
gin_토토 캔_opaque_info(토토 캔 bytea)가 레코드를 반환합니다.

gin_토토 캔_opaque_infoa에 대한 정보를 반환합니다.페이지 유형과 같은 색인 불투명 영역. 예를 들어:

test=# SELECT * FROM gin_토토 캔_opaque_info(get_raw_토토 캔('gin_index', 2));
 오른쪽링크 | 최대오프 |         깃발
---------+---------+-----------
         5 |      0 | 데이터,리프,압축
gin_leaf토토 캔_items(페이지 바이트)가 레코드 세트를 반환합니다.

gin_leaf토토 캔_itemsa에 저장된 데이터에 대한 정보를 반환합니다.리프 페이지. 예를 들어:

test=# SELECT first_tid, nbytes, tids[0:5] AS some_tids
        FROM gin_leaf토토 캔_items(get_raw_토토 캔('gin_test_idx', 2));
 첫 번째_시간 | n바이트 |                        some_tids
---------+---------+-----------------------------------------------
 (8,41) |    244 | "(8,41)","(8,43)","(8,44)","(8,45)","(8,46)"
 (10,45) |    248 | "(10,45)","(10,46)","(10,47)","(10,48)","(10,49)"
 (12,52) |    248 | "(12,52)","(12,53)","(12,54)","(12,55)","(12,56)"
 (14,59) |    320 | "(14,59)","(14,60)","(14,61)","(14,62)","(14,63)"
 (167,16) |    376 | "(167,16)","(167,17)","(167,18)","(167,19)","(167,20)"
 (170,30) |    376 | "(170,30)","(170,31)","(170,32)","(170,33)","(170,34)"
 (173,44) |    197 | "(173,44)","(173,45)","(173,46)","(173,47)","(173,48)"

F.23.6. 해시 함수

hash_토토 캔_type(토토 캔 bytea)이 텍스트를 반환함

hash_토토 캔_type주어진 페이지 유형을 반환합니다.해시인덱스 페이지. 예를 들어:

test=# SELECT hash_토토 캔_type(get_raw_토토 캔('con_hash_index', 0));
 hash_토토 캔_type 
----------------
 메타페이지
hash_토토 캔_stats(토토 캔 bytea)가 레코드 세트를 반환합니다.

hash_토토 캔_stats버킷 또는 오버플로 페이지에 대한 정보를 반환합니다.해시색인. 예를 들어:

test=# SELECT * FROM hash_토토 캔_stats(get_raw_토토 캔('con_hash_index', 1));
-[ 기록 1 ]---+------------
라이브_아이템 | 407
죽은 아이템 | 0
페이지 크기 | 8192
free_size | 8
hasho_prevblkno | 4096
hasho_nextblkno | 8474
hasho_bucket | 0
해시_플래그 | 66
hasho_page_id | 65408
hash_토토 캔_items(페이지 바이트)가 레코드 세트를 반환합니다.

hash_토토 캔_items버킷 또는 오버플로 페이지에 저장된 데이터에 대한 정보를 반환합니다.해시색인 페이지. 예를 들어:

test=# SELECT * FROM hash_토토 캔_items(get_raw_토토 캔('con_hash_index', 1)) LIMIT 5;
 항목 오프셋 |   CTID |    데이터    
------------+------------+------------
          1 | (899,77) | 1053474816
          2 | (897,29) | 1053474816
          3 | (894,207) | 1053474816
          4 | (892,159) | 1053474816
          5 | (890,111) | 1053474816
hash_bitmap_info(index oid, blkno int)가 레코드를 반환함

hash_bitmap_info특정 오버플로 페이지에 대한 비트65 페이지의 비트 상태를 표시합니다.해시색인. 예를 들어:

test=# SELECT * FROM hash_bitmap_info('con_hash_index', 2052);
 비트65블록노 | 비트65비트 | 비트상태 
------------+------------+------------
          65 |         3 | 티
hash_meta토토 캔_info(토토 캔 bytea)가 레코드를 반환합니다.

hash_meta토토 캔_infoa의 메타페이지에 저장된 정보를 반환합니다.해시색인. 예를 들어:

test=# SELECT 매직, 버전, ntuples, ffactor, bsize, bmsize, bmshift,
테스트-# maxbucket, highmask, lowmask, ovflpoint, firstfree, nmaps, procid,
test-# regexp_replace(spares::text, '(,0)*', '') 예비용,
test-# regexp_replace(mapp::text, '(,0)*', '') as mapp
테스트-# FROM hash_meta토토 캔_info(get_raw_토토 캔('con_hash_index', 0));
-[ 기록 1 ]------------------------------------------------------------------
마술 | 105121344
버전 | 4
튜플 | 500500
인자 | 40
크기 | 8152
bm크기 | 4096
비엠시프트 | 15
최대 버킷 | 12512
하이마스크 | 16383
로우마스크 | 8191
OVFL포인트 | 28
최초무료 | 1204
nmap | 1
프로시드 | 450
예비품 | 0,0,0,0,0,0,1,1,1,1,1,1,1,1,3,4,4,4,45,55,58,59,508,567,628,704,1193,1202,1204