이 문서는 지원되지 않는 버전의 토토 커뮤니티을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 65.2. 토범퍼카버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

59.2. 토토 커뮤니티

이 섹션은에 대한 개요를 제공합니다.토토 커뮤니티(대형 부여 저장 기술).

토토 커뮤니티고정 페이지 크기 (일반적으로 8kb)를 사용하며 튜플이 여러 페이지에 걸쳐 있지 않습니다. 따라서 매우 큰 필드 값을 직접 저장할 수 없습니다. 이 제한을 극복하기 위해 큰 필드 값은 압축 및/또는 여러 물리적 행으로 나뉩니다. 이는 대부분의 백엔드 코드에 약간의 영향을 미치면서 사용자에게 투명하게 발생합니다. 이 기술은 애정 적으로로 알려져 있습니다.토토 커뮤니티(또는"얇게 썬 빵 이후 가장 좋은 것").

특정 데이터 유형 만 지원토토 커뮤니티- 큰 필드 값을 생성 할 수없는 데이터 유형에 오버 헤드를 부과 할 필요가 없습니다. 지원하려면토토 커뮤니티, 데이터 유형에는 가변 길이가 있어야합니다 (Varlena) 표현, 저장된 값의 첫 32 비트 단어에는 바이트 (자체 포함)의 값의 총 길이가 포함됩니다..토토 커뮤니티나머지 표현을 제한하지 않습니다. A를 지원하는 모든 C 레벨 기능토토 커뮤니티-가능한 데이터 유형은주의해야합니다토토 커뮤니티ed 입력 값. (이것은 일반적으로 호출하여 수행됩니다PG_DETOAST_DATUM입력 값으로 무엇이든하기 전에, 어떤 경우에는 더 효율적인 접근 방식이 가능합니다.)

토토 커뮤니티varlena 길이 단어의 두 비트 (빅 엔디 언 머신의 고차 비트, 작은 엔디 언 기계의 저차 비트)의 두 비트,의 논리적 크기를 제한합니다토토 커뮤니티-가능한 데이터 유형에서 1GB (230-1 바이트). 두 비트가 모두 0이면 값은 평범한 un-입니다.토토 커뮤니티데이터 유형의 ED 값 및 길이 단어의 나머지 비트는 총 데이텀 크기 (길이 단어 포함)를 바이트로 제공합니다. 가장 높은 주문 또는 가장 낮은 비트가 설정되면 값은 일반 4 바이트 헤더 대신 단일 바이트 헤더 만 가지며 나머지 비트는 총 기준 크기 (길이 바이트 포함)를 바이트로 제공합니다. 특별한 경우, 나머지 비트가 모두 0 인 경우 (자체 포함 길이에서는 불가능) 값은 별도의 토토 커뮤니티 테이블에 저장된 외부 데이터에 대한 포인터입니다. (토토 커뮤니티 포인터의 크기는 Datum의 두 번째 바이트에 나와 있습니다.) 단일 바이트 헤더가있는 값은 특정 경계에서도 정렬되지 않습니다. 마지막으로, 가장 높은 주문 또는 가장 낮은 비트가 명확하지만 인접한 비트가 설정되면, 데이텀의 내용이 압축되어 사용하기 전에 압축을 압축해야합니다. 이 경우 길이 단어의 나머지 비트는 원래 데이터가 아니라 압축 된 데이텀의 총 크기를 제공합니다. 압축 외 데이터의 경우 압축이 가능하지만 Varlena 헤더는 그것이 발생했는지 여부를 알려주지 않습니다. 토토 커뮤니티 포인터의 내용은 대신 그 말을합니다..

테이블의 열이있는 경우토토 커뮤니티-가능, 테이블에는 관련토토 커뮤니티테이블, OID가 테이블에 저장되어 있습니다PG_CLASS.reltoastrelid입력. 외부토토 커뮤니티ed 값은에 보관됩니다.토토 커뮤니티테이블, 아래에 자세히 설명 된대로.

사용 된 압축 기술은 LZ 제품군의 압축 기술의 상당히 간단하고 매우 빠른 구성원입니다. 보다src/backend/utils/adt/pg_lzcompress.c세부 사항은

외부 값이 나뉘어져 있습니다 (사용하면 압축 후) 최대 청크로TOAST_MAX_CHUNK_SIZE바이트 (기본적 으로이 값은 페이지에 4 개의 청크 행이 맞도록 선택되어 약 2000 바이트가됩니다). 각 청크는에 별도의 행으로 저장됩니다.토토 커뮤니티소유 테이블의 테이블. 모든토토 커뮤니티테이블은 열이 있습니다chunk_id(특정 식별토토 커뮤니티ed value),chunk_seq(값 내에서 청크의 시퀀스 번호) 및chunk_data(청크의 실제 데이터). 독특한 색인chunk_idchunk_seq값을 빠르게 검색합니다. 외부를 나타내는 포인터 데이텀토토 커뮤니티ed 값은의 OID를 저장해야합니다.토토 커뮤니티특정 값의 외관 및 OID 테이블 (ITSchunk_id). 편의를 위해 포인터 데이텀은 논리적 데이텀 크기 (원래 압축되지 않은 데이터 길이)와 실제 저장된 크기 (압축이 적용되는 경우)도 저장합니다. varlena 헤더 바이트를 허용, 총 크기토토 커뮤니티Pointer Datum은 대표 값의 실제 크기에 관계없이 18 바이트입니다.

the토토 커뮤니티코드는 테이블에 저장 될 행 값이보다 넓은 경우에만 트리거됩니다TOAST_TUPLE_THRESHOLD바이트 (일반적으로 2 kb). 그만큼토토 커뮤니티코드는 행 값이 |TOAST_TUPLE_TARGET바이트 (일반적으로 2 kb) 또는 더 이상 이익을 얻을 수 없습니다. 업데이트 작업 중에 변경되지 않은 필드의 값은 일반적으로 AS-IS로 보존됩니다. 따라서 외부 값이있는 행을 업데이트하면 NO가 발생합니다.토토 커뮤니티불가능한 값이 변경되지 않으면 비용.

the토토 커뮤니티코드 저장을위한 4 가지 전략을 인식토토 커뮤니티-가능한 열 :

  • 일반압축 또는 외부 스토리지를 방지합니다. 또한 Varlena 유형에는 단일 바이트 헤더 사용을 비활성화합니다. 이것은 비의 열에 대한 유일한 전략입니다.토토 커뮤니티-가능한 데이터 유형.

  • 확장압축 및 외부 저장 공간을 모두 허용합니다. 이것은 대부분의 기본입니다토토 커뮤니티-가능한 데이터 유형. 압축이 먼저 시도되고 행이 너무 커지면 외부 저장소가 있습니다.

  • 외부외부 저장소는 허용하지만 압축은 허용되지 않습니다. 사용외부wide에서 하위 문자열 작업을 할 것입니다텍스트andBYTEA열이 더 빠르며 (저장 공간의 페널티에서) 이러한 작업은 압축되지 않은 경우 외부 값의 필요한 부분 만 가져 오도록 최적화되기 때문에 (.

  • Main압축은 허용하지만 외부 저장 공간은 허용되지 않습니다. (실제로, 외부 스토리지는 그 열에 대해 여전히 수행 될 것이지만, 페이지에 맞게 행을 작게 만들 수있는 다른 방법이없는 경우에만 최후의 수단으로 만 수행됩니다.)

토토 커뮤니티-가능한 데이터 유형 해당 데이터 유형의 열에 대한 기본 전략을 지정하지만 주어진 테이블 열에 대한 전략은로 변경 될 수 있습니다.Alter Table Set Storage.

이 체계에는 행 값이 페이지에 걸쳐있는 등의보다 간단한 접근 방식과 비교하여 여러 가지 장점이 있습니다. 쿼리가 일반적으로 비교적 작은 키 값과 비교하여 자격이 있다고 가정하면, 유언 집행자의 대부분의 작업은 메인 행 항목을 사용하여 수행됩니다. 의 큰 가치토토 커뮤니티ED 속성은 결과 세트가 클라이언트로 전송 될 때 (선택된 경우) 만 꺼집니다 (전혀 선택한 경우). 따라서 메인 테이블은 훨씬 작으며 공유 버퍼 캐시에 적합한 줄이없는 저장소가없는 경우보다 더 많은 행이 공유 버퍼 캐시에 적합합니다. 정렬 세트가 줄어들고 정렬은 더 자주 메모리에서 더 자주 수행됩니다. 약간의 테스트에 따르면 일반적인 HTML 페이지와 해당 URL이 포함 된 테이블은를 포함하여 원시 데이터 크기의 약 절반에 저장되었습니다.토토 커뮤니티테이블 및 메인 테이블에는 전체 데이터의 약 10% (URL 및 일부 작은 HTML 페이지)가 포함되어 있습니다. UN-에 비해 실행 시간 차이가 없었습니다.토토 커뮤니티Ed 비교 테이블, 모든 HTML 페이지가 7kb로 잘라진 것입니다.