이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 65.6. 스포츠 토토 토토 베이 레이아웃버전 또는 위에 나열된 다른 지원되는 버전 중 하나입니다.

50.3. 스포츠 토토 페이지 레이아웃

이 섹션은 사용 된 페이지 형식의 개요를 제공합니다. 이내에postgresql테이블 및 인덱스.[1]시퀀스 및토스트테이블이 형식화되었습니다 일반 테이블처럼.

다음 설명에서 abyte는 8 비트를 포함한다고 가정합니다. 또한 용어항목개별 데이터 값을 나타냅니다 페이지에 저장됩니다. 테이블에서 항목은 행입니다. 색인에서 항목은 색인 항목입니다.

모든 테이블과 인덱스는 배열로 저장됩니다pages고정 크기 (보통 8KB, a 서버를 컴파일 할 때 다른 페이지 크기를 선택할 수 있습니다). 테이블에서 모든 페이지는 논리적으로 동일하므로 특정 항목 (행)은 모든 페이지에 저장할 수 있습니다. 인덱스에서 첫 번째 페이지는 일반적으로 A로 예약됩니다.Metapage제어 정보 유지 및 거기 인덱스 내에서 다른 유형의 페이지 일 수 있습니다. 인덱스 액세스 방법.

표 50-2페이지의 전체 레이아웃이 표시됩니다. 각각에는 5 개의 부분이 있습니다 페이지.

표 50-2. 전체 페이지 레이아웃

항목 설명
PageHeaderData 20 바이트 길이. 에 대한 일반 정보가 포함되어 있습니다 여유 공간 포인터를 포함한 페이지.
itemiddata 실제 (오프셋, 길이) 쌍의 배열은 실제를 가리 킵니다 항목. 항목 당 4 바이트.
여유 공간 할당되지 않은 공간. 새로운 아이템 포인터입니다 이 영역의 시작 부분에서 할당, 새 항목은 끝.
항목 실제 항목 자체.
특별 공간 색인 액세스 방법 특정 스포츠 토토. 다른 방법 다른 스포츠 토토를 저장하십시오. 평범한 테이블에서 비어 있습니다.

각 페이지의 처음 20 바이트는 페이지 헤더로 구성됩니다. (PageHeaderData). 형식은에 자세히 설명되어 있습니다.표 50-3. 처음 두 필드는 가장 최근의 WAL 항목을 추적합니다. 이 페이지. 그 뒤에 3 개의 2 바이트 정수 필드가 뒤 따릅니다 (PD_LOWER, pd_upperpd_special). 여기에는 바이트 오프셋이 포함되어 있습니다 페이지는 할당되지 않은 공간의 시작부터 시작하여 끝까지 시작합니다. 할당되지 않은 공간과 특별한 공간의 시작. 그만큼 페이지 헤더의 마지막 2 바이트,pd_pagesize_version, 페이지 크기를 모두 저장하십시오 및 버전 표시기. 부터 시작PostgreSQL8.1 버전 번호는 3;PostgreSQL8.0 중고 버전 2 번;PostgreSQL7.3 및 7.4 중고 버전 번호 1; 사전 릴리스 사용 중고 버전 번호 0 ( 기본 페이지 레이아웃 및 헤더 형식이 변경되지 않았습니다. 버전이지만 힙 행 헤더의 레이아웃이 있습니다.) 페이지 크기 기본적으로 단지 크로스 확인으로만 존재합니다. 지원이 없습니다 설치에 한 페이지 이상의 페이지 크기가 있습니다.

표 50-3. PageHeaderData 레이아웃

필드 타입 길이 설명
PD_LSN xlogrecptr 8 바이트 LSN : Xlog 레코드의 마지막 바이트 후 다음 바이트 이 페이지의 마지막 변경
pd_tli TimelineId 4 바이트 마지막 변경의 TLI
PD_LOWER LocationIndex 2 바이트 여유 공간의 시작으로 오프셋
pd_upper LocationIndex 2 바이트 여유 공간 끝으로 오프셋
pd_special LocationIndex 2 바이트 특별 공간의 시작으로 오프셋
pd_pagesize_version UINT16 2 바이트 페이지 크기 및 레이아웃 버전 번호 정보

모든 세부 사항은에서 찾을 수 있습니다.src/include/storage/bufpage.h.

페이지 헤더 다음은 항목 식별자입니다 (itemiddata), 각각 4 바이트가 필요합니다. 항목 식별자는 항목의 시작에 바이트 오프셋을 포함합니다. 바이트의 길이 및 그 영향에 영향을 미치는 몇 가지 속성 비트 해석. 새로운 항목 식별자는 필요에 따라 할당됩니다 할당되지 않은 공간의 시작. 항목 수 존재하는 식별자는 보면 결정할 수 있습니다PD_LOWER, 새로운 것을 할당하기 위해 증가합니다 식별자. 항목 식별자가 그 때까지 이동하지 않기 때문에 해방 된 지수는 장기적으로 사용하여 항목 자체가 페이지에서 이동하는 경우에도 소형 여유 공간. 사실, 항목에 대한 모든 포인터 (ItemPointer, 또한CTID) 생성PostgreSQL페이지 번호와 항목 식별자의 색인.

항목 자체는 뒤로 할당 된 공간에 저장됩니다 할당되지 않은 공간의 끝에서. 정확한 구조는 다릅니다 테이블이 포함되어야하는 것에 따라. 테이블 및 시퀀스 둘 다 이름이 지정된 구조를 사용합니다HeappupleHeaderData, 아래 설명.

마지막 섹션은입니다."스페셜 부분"액세스 방법이 포함될 수 있습니다 저장하고 싶습니다. 예를 들어, B-Tree Indexes 저장 링크 Page의 왼쪽 및 오른쪽 형제 및 기타 스포츠 토토 인덱스 구조와 관련이 있습니다. 일반 테이블은 사용하지 않습니다 전혀 특수 섹션 (설정으로 표시PD_SPECIAL페이지 크기와 동일).

모든 테이블 행은 같은 방식으로 구성됩니다. A가 있습니다 고정 크기 헤더 (대부분의 기계에서 27 바이트를 차지함) 선택적 NULL 비트 맵, 선택적 객체 ID 필드 및 사용자 데이터. 헤더는에 자세히 설명되어 있습니다.테이블 50-4. 실제 사용자 스포츠 토토 (행의 열)는 로 표시된 오프셋t_hoff항상 Maxalign 거리의 배수 여야합니다. 플랫폼. NULL 비트 맵은 만있는 경우에만 존재합니다.Heap_hasnull비트가 설정되었습니다T_INFOMASK. 그것이 존재한다면 그것은 단지 시작됩니다 고정 헤더 후에 한 비트를 가질 수있는 충분한 바이트를 차지한 후 스포츠 토토 열 당 (즉,t_natts비트 모두). 이 비트 목록에서 1 비트가 나타납니다 널이 아니라 0 비트는 널입니다. 비트 맵이 없을 때 모두 열은 널이 아닌 것으로 가정합니다. 객체 ID는 경우에만 존재합니다 그만큼heap_hasoid비트가 설정되었습니다T_INFOMASK. 존재한다면, 직전에 나타납니다 그만큼t_hoff경계. 모든 패딩 만들어야t_hoffMaxalign 널 비트 맵과 객체 ID 사이에 여러 가지가 나타납니다. (이것은 객체 ID가 적절하게 정렬.)

표 50-4. HeptupleHeaderData 레이아웃

필드 타입 길이 설명
t_xmin TransactionId 4 바이트 XID 스탬프 삽입
t_cmin CommandId 4 바이트 CID 스탬프 삽입
t_xmax TransactionId 4 바이트 XID 스탬프 삭제
T_CMAX CommandId 4 바이트 CID 스탬프 삭제 (T_XVAC 오버레이)
T_XVAC TransactionId 4 바이트 진공 조작을위한 xid 행 버전 이동
T_CTID ItemPointerData 6 바이트 현재 또는 새로운 행 버전의 현재 시간
t_natts int16 2 바이트 속성 수
T_INFOMASK UINT16 2 바이트 다양한 플래그 비트
t_hoff uint8 1 바이트 사용자 스포츠 토토 오프셋

모든 세부 사항은에서 찾을 수 있습니다.src/include/access/htup.h.

실제 스포츠 토토 해석은 정보로만 수행 할 수 있습니다. 다른 테이블에서 획득, 대부분pg_attribute. 식별하는 데 필요한 주요 값 필드 위치는attlenandattalign. 방법이 없습니다 만있는 경우를 제외하고는 특정 속성을 직접 얻습니다. 고정 너비 필드 및 널 값이 없습니다. 이 모든 속임수입니다 함수로 마무리heap_getattr, FastgetAttrandheap_getsysattr.

데이터를 읽으려면 각 속성을 차례로 검사해야합니다. 먼저 널에 따라 필드가 무효인지 확인하십시오. 비트 맵. 그렇다면 다음으로 이동하십시오. 그런 다음 당신이 가지고 있는지 확인하십시오 올바른 정렬. 필드가 고정 너비 필드 인 경우 바이트는 간단하게 배치됩니다. 가변 길이 필드 인 경우 (attlen = -1) 그럼 조금 더 복잡합니다. 모두 가변 길이 데이터 유형은 공통 헤더 구조를 공유합니다varattrib, 여기에는 총 길이가 포함됩니다 저장된 값과 일부 플래그 비트. 깃발에 따라 데이터는 인라인 또는 A 일 수 있습니다.토스트테이블; 압축 될 수 있습니다 (참조섹션 50.2).

노트

[1]

실제로 인덱스 액세스 방법은이 페이지를 사용할 필요가 없습니다 체재. 모든 기존 색인 메소드는이 기본을 사용합니다 형식이지만 인덱스 메타지에 보관 된 데이터는 일반적으로 항목 레이아웃 규칙을 따르십시오.