토토 캔Inspect
모듈은 데이터베이스 페이지의 내용을 낮은 레벨에서 검사 할 수있는 기능을 제공하며, 이는 디버깅 목적으로 유용합니다. 이러한 모든 기능은 슈퍼업자에 의해서만 사용될 수 있습니다.
get_raw_토토 캔 (relname 텍스트, 포크 텍스트, blkno int) bytea를 반환합니다
get_raw_토토 캔
지명 된 관계의 지정된 블록을 읽고 사본을 A로 반환합니다BYTEA
값. 이를 통해 블록의 단일 일관된 사본을 얻을 수 있습니다.포크
'main'
기본 데이터 포크의 경우'FSM'
여유 공간지도의 경우'vm'
가시성 맵 또는'init'
초기화 포크의 경우
get_raw_토토 캔 (relname 텍스트, 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 | 체크섬 | 깃발 | 더 낮은 | 상단 | 스페셜 | Pagesize | 버전 | prune_xid -----------+----------+--------+------------------------------------------------------------------------------------------------------ 0/24A1B50 | 0 | 1 | 232 | 368 | 8192 | 8192 | 4 | 0
반환 된 열은의 필드에 해당합니다.토토 캔HeaderData
struct. 보다src/include/storage/buf토토 캔.h
자세한 내용.
theChecksum
필드는 페이지에 저장된 체크섬이며, 페이지가 어떻게 든 손상되면 부정확 할 수 있습니다. 이 인스턴스에 대한 데이터 체크섬이 활성화되지 않으면 저장된 값은 의미가 없습니다.
토토 캔_checksum (토토 캔 Bytea, blkno int4)을 반환
토토 캔_checksum
주어진 블록에있는 것처럼 페이지의 체크섬을 계산합니다.
획득 한 페이지 이미지get_raw_토토 캔
인수로 통과해야합니다. 예를 들어:
test =# select 토토 캔_checksum (get_raw_토토 캔 ( 'pg_class', 0), 0); 토토 캔_checksum ----------------- 13443
체크섬은 블록 번호에 따라 달라 지므로 일치하는 블록 번호를 전달해야합니다 (밀교 디버깅을 수행 할 때 제외)..
이 함수로 계산 된 체크섬은와 비교할 수 있습니다.CheckSum
함수의 결과 필드토토 캔_header
. 이 인스턴스에 대한 데이터 체크섬이 활성화되면 두 값이 같아야합니다.
FSM_토토 캔_CONTENTS (PAGE BYTEA) 텍스트를 반환
FSM_토토 캔_CONTENTS
FSM 페이지의 내부 노드 구조를 보여줍니다. 예를 들어:
test =# 선택 fsm_page_contents (get_raw_토토 캔 ( 'pg_class', 'fsm', 0));
출력은 멀티 라인 문자열이며 페이지 내 바이너리 트리의 노드 당 하나의 줄이 있습니다. 0이 아닌 노드 만 인쇄됩니다. 페이지에서 반환 할 다음 슬롯을 가리키는 소위 "다음"포인터도 인쇄됩니다.
참조SRC/백엔드/스토리지/프리 스페이스/readme
FSM 페이지의 구조에 대한 자세한 내용은
heap_토토 캔_items (토토 캔 bytea) 레코드를 반환
heap_토토 캔_items
힙 페이지에 모든 줄 포인터가 표시됩니다. 사용중인 라인 포인터의 경우 튜플 헤더 및 튜플 원시 데이터도 표시됩니다. 튜플이 원시 페이지를 복사 할 때 MVCC 스냅 샷으로 보이는지 여부에 관계없이 모든 튜플이 표시됩니다.
획득 한 힙 페이지 이미지get_raw_토토 캔
인수로 통과해야합니다. 예를 들어:
test =# select * from heap_토토 캔_items (get_raw_토토 캔 ( 'pg_class', 0));
참조src/include/stoage/itemid.h
andsrc/include/access/htup_details.h
필드에 대한 설명이 반환되었습니다.
tuple_data_split (rel_oid oid, t_data bytea, t_infomask integer, t_infomask2 integer, t_bits 텍스트 [, do_detoast bool]) bytea []를 반환합니다.
tuple_data_split
백엔드 내부와 같은 방식으로 튜플 데이터를 속성으로 분할합니다.
test =# 선택 tuple_data_split ( 'pg_class':: regclass, t_data, t_infomask, t_infomask2, t_bits)에서 heap_토토 캔_items (get_raw_토토 캔 ( 'pg_class', 0));;
이 함수는의 반환 속성과 동일한 인수와 함께 호출되어야합니다.heap_토토 캔_items
.
ifdo_detoast
istrue
, 필요에 따라 속성이 고발됩니다. 기본값은거짓
.
heap_토토 캔_item_attrs (페이지 bytea, rel_oid regclass [, do_detoast bool]) setof record를 반환합니다
heap_토토 캔_item_attrs
heap_토토 캔_items
튜플 원시 데이터를 선택적으로 고용 할 수있는 속성 배열로 튜플 데이터를 반환한다는 점을 제외하고do_detoast
false
기본적으로.
획득 한 힙 페이지 이미지get_raw_토토 캔
인수로 통과해야합니다. 예를 들어:
test =# heap_토토 캔_item_attrs에서 * 선택 * 선택 *
BT_METAP (RELNAME TEXT) 레코드를 반환
BT_METAP
B-Tree Index의 메타지에 대한 정보를 반환합니다. 예를 들어:
test =# select * from bt_metap ( 'pg_cast_oid_index'); -[레코드 1] ----- 마술 | 340322 버전 | 2 루트 | 1 레벨 | 0 Fastroot | 1 FastLevel | 0
BT_토토 캔_STATS (Relname Text, Blkno int) 레코드를 반환
BT_토토 캔_STATS
B- 트리 색인의 단일 페이지에 대한 요약 정보를 반환합니다. 예를 들어:
test =# select * from bt_토토 캔_stats ( 'pg_cast_oid_index', 1); -[레코드 1]-+---- Blkno | 1 유형 | 엘 live_items | 256 dead_items | 0 avg_item_size | 12 토토 캔_size | 8192 free_size | 4056 btpo_prev | 0 btpo_next | 0 btpo | 0 btpo_flags | 3
bt_토토 캔_items (Relname 텍스트, blkno int) setof record를 반환합니다
bt_토토 캔_items
B-Tree Index 페이지의 모든 항목에 대한 자세한 정보를 반환합니다. 예를 들어:
test =# select * from bt_토토 캔_items ( 'pg_cast_oid_index', 1); ItemOffset | ctid | ItemLen | 널스 | vars | 데이터 ------------+--------+---------+-------+------+----------- 1 | (0,1) | 12 | f | f | 23 27 00 00 2 | (0,2) | 12 | f | f | 24 27 00 00 3 | (0,3) | 12 | f | f | 25 27 00 00 4 | (0,4) | 12 | f | f | 26 27 00 00 5 | (0,5) | 12 | f | f | 27 27 00 00 6 | (0,6) | 12 | f | f | 28 27 00 00 7 | (0,7) | 12 | f | f | 29 27 00 00 8 | (0,8) | 12 | f | f | 2A 27 00 00
B- 트리 리프 페이지에서CTID
힙 튜플을 가리 킵니다. 내부 페이지에서 블록 번호 부분CTID
인덱스 자체의 다른 페이지를 가리키고 오프셋 부분 (두 번째 숫자)은 무시되고 일반적으로 1입니다.
가장 오른쪽이 아닌 페이지의 첫 번째 항목 (0에 0이 아닌 모든 페이지btpo_next
필드)는 페이지입니다“높은 키”, 그 의미데이터
페이지에 나타나는 모든 항목의 상한 역할을하는 동안CTID
필드는 의미가 없습니다. 또한 잎이 아닌 페이지에서 첫 번째 실제 데이터 항목 (키가 아닌 첫 번째 항목)은 A입니다.“마이너스 인피니티”항목, 실제 가치가없는 항목데이터
필드. 이러한 항목은 유효한 다운 링크가 있습니다.CTID
필드.
bt_토토 캔_items (page bytea) 레코드를 반환
페이지를 전달할 수도 있습니다bt_토토 캔_items
asBYTEA
값. 와 함께 얻은 페이지 이미지get_raw_토토 캔
인수로 통과해야합니다. 마지막 예제는 다음과 같이 다시 작성할 수 있습니다.
test =# select * from bt_토토 캔_items (get_raw_토토 캔 ( 'pg_cast_oid_index', 1)); ItemOffset | ctid | ItemLen | 널스 | vars | 데이터 ------------+--------+---------+-------+------+----------- 1 | (0,1) | 12 | f | f | 23 27 00 00 2 | (0,2) | 12 | f | f | 24 27 00 00 3 | (0,3) | 12 | f | f | 25 27 00 00 4 | (0,4) | 12 | f | f | 26 27 00 00 5 | (0,5) | 12 | f | f | 27 27 00 00 6 | (0,6) | 12 | f | f | 28 27 00 00 7 | (0,7) | 12 | f | f | 29 27 00 00 8 | (0,8) | 12 | f | f | 2A 27 00 00
다른 모든 세부 사항은 이전 항목에서 설명한 것과 동일합니다.
brin_토토 캔_type (토토 캔 bytea) 텍스트를 반환
brin_토토 캔_type
주어진 페이지 유형을 반환브린인덱스 페이지 또는 페이지가 유효하지 않은 경우 오류를 버립니다브린페이지. 예를 들어:
test =# select brin_토토 캔_type (get_raw_토토 캔 ( 'brinidx', 0)); brin_토토 캔_type --------------- 메타
brin_meta토토 캔_info (토토 캔 Bytea) 레코드를 반환
brin_meta토토 캔_info
A에 대한 다양한 정보를 반환합니다브린인덱스 메타지. 예를 들어:
test =# select * from brin_meta토토 캔_info (get_raw_토토 캔 ( 'brinidx', 0)); 마술 | 버전 | PagesperRange | lastevmappage ------------+---------+---------------------------------- 0xa8109cfa | 1 | 4 | 2
brin_revmap_data (토토 캔 Bytea)는 tid를 설정합니다
brin_revmap_data
A에서 튜플 식별자 목록을 반환합니다브린인덱스 범위 맵 페이지. 예를 들어:
test =# select * from brin_revmap_data (get_raw_토토 캔 ( 'brinidx', 2)) 한계 5; 페이지 ------- (6,137) (6,138) (6,139) (6,140) (6,141)
brin_토토 캔_items (토토 캔 Bytea, Index OID) 레코드를 반환
brin_토토 캔_items
에 저장된 데이터를 반환합니다브린데이터 페이지. 예를 들어:
test =# select * from brin_토토 캔_items (get_raw_토토 캔 ( 'brinidx', 5), 'brinidx') Blknum, Attnum Limit 6에 의한 주문; ItemOffset | Blknum | Attnum | allnulls | Hasnulls | 자리 표시 자 | 값 -------------+--------+-------+-------------------------------------------------------------- 137 | 0 | 1 | t | f | f | 137 | 0 | 2 | f | f | f | 1 .. 88 138 | 4 | 1 | t | f | f | 138 | 4 | 2 | f | f | f | 89 .. 176 139 | 8 | 1 | t | f | f | 139 | 8 | 2 | f | f | f | 177 .. 264
반환 된 열은의 필드에 해당합니다.BrinMemtuple
andBrinValues
structs. 보다src/include/access/brin_tuple.h
자세한 내용.
gin_meta토토 캔_info (토토 캔 Bytea) 레코드를 반환
gin_meta토토 캔_info
A에 대한 정보를 반환합니다gin인덱스 메타지. 예를 들어:
test =# select * from gin_meta토토 캔_info (get_raw_토토 캔 ( 'gin_index', 0)); -[레코드 1] ----+----------- ending_head | 4294967295 pending_tail | 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_entries | 693 버전 | 2
gin_page_opaque_info (Page Bytea) 레코드를 반환
gin_page_opaque_info
A에 대한 정보를 반환합니다진페이지 유형과 같은 색인 불투명 영역. 예를 들어:
test =# select * from gin_page_opaque_info (get_raw_토토 캔 ( 'gin_index', 2)); 오른쪽 링크 | Maxoff | 깃발 -----------+-------+---------------------------- 5 | 0 | 데이터, 잎, 압축
gin_leafpage_items (page bytea) 레코드를 반환
gin_leafpage_items
a에 저장된 데이터에 대한 정보를 반환합니다진잎 페이지. 예를 들어:
test =# first_tid, nbytes, tids [0 : 5]를 some_tids로 선택하십시오 gin_leafpage_items에서 (get_raw_토토 캔 ( 'gin_test_idx', 2)); First_tid | nbytes | 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)"
hash_page_type (page bytea) 텍스트를 반환
hash_page_type
주어진 페이지 유형을 반환Hash색인 페이지. 예를 들어:
test =# select hash_page_type (get_raw_토토 캔 ( 'con_hash_index', 0)); hash_page_type --------------- 전달
hash_page_stats (page bytea) 레코드를 반환
hash_page_stats
a 버킷 또는 오버플로 페이지에 대한 정보를 반환합니다Hash색인. 예를 들어:
test =# select * from hash_page_stats (get_raw_토토 캔 ( 'con_hash_index', 1)); -[레코드 1] ---+---------- live_items | 407 dead_items | 0 page_size | 8192 free_size | 8 hasho_prevblkno | 4096 hasho_nextblkno | 8474 Hasho_bucket | 0 hasho_flag | 66 hasho_page_id | 65408
hash_page_items (page bytea) 레코드를 반환
hash_page_items
a 버킷 또는 오버플로 페이지에 저장된 데이터에 대한 정보를 반환합니다hash색인 페이지. 예를 들어:
test =# select * from hash_page_items (get_raw_토토 캔 ( 'con_hash_index', 1)) 한계 5; ItemOffset | ctid | 데이터 ------------+----------+------------ 1 | (899,77) | 1053474816 2 | (897,29) | 1053474816 3 | (894,207) | 1053474816 4 | (892,159) | 1053474816 5 | (890,111) | 1053474816
hash_bitmap_info (색인 OID, Blkno int) 레코드를 반환
hash_bitmap_info
특정 오버플로 페이지에 대한 비트 맵 페이지에 약간의 상태가Hash색인. 예를 들어:
test =# select * from hash_bitmap_info ( 'con_hash_index', 2052); Bitmapblkno | Bitmapbit | Bitstatus ------------+----------+------------ 65 | 3 | 티
hash_metapage_info (Page Bytea) 레코드를 반환
hash_metapage_info
a 메타 페이지에 저장된 정보를 반환합니다.Hash색인. 예를 들어:
test =# Magic, 버전 선택, ntuples, ffactor, bsize, bmsize, bmshift, 테스트-# Maxbucket, Highmask, Lowmask, Ovflpoint, Firstfree, NMAPS, Procid, 테스트-# regexp_replace (spares :: text, '(, 0)*', '')). test-# regexp_replace (mapp :: text, '(, 0)*', ''))) hash_metapage_info에서 test-# (get_raw_토토 캔 ( 'con_hash_index', 0)); -[레코드 1] ------------------------------------------------------------------------------------------ 마술 | 105121344 버전 | 4 ntuples | 500500 ffactor | 40 bsize | 8152 bmsize | 4096 bmshift | 15 Maxbucket | 12512 하이 마스크 | 16383 로우 마스크 | 8191 ovflpoint | 28 1 피리 | 1204 nmaps | 1 Procid | 450 스페어 | 0,0,0,0,0,1,1,1,1,1,1,1,1,4,4,4,45,55,58,59,508,567,628,704,1193,1202,1204