스포츠 토토 베트맨 9.3.25 문서 | ||||
---|---|---|---|---|
PostgreSQL : 문서 : 9.3 : 윈 토토 파일 레이아웃 | PostgreSQL : 문서 : 9.3 : 스포츠 토토 결과 물리적 스토리지 | 58 장. 데이터베이스 물리적 스토리지 | 범퍼카 토토 : 문서 : 9.3 : 여유 공간 맵 |
이 섹션은에 대한 개요를 제공합니다.스포츠 토토 베트맨(대형 부여 저장 기술).
스포츠 토토 베트맨고정 페이지를 사용합니다 크기 (일반적으로 8 kb), 튜플이 다중에 걸쳐 있지 않도록합니다. 페이지. 따라서 매우 큰 필드를 저장할 수 없습니다. 직접 가치. 이 제한을 극복하기 위해 큰 필드 값 압축 및/또는 여러 물리적 행으로 나뉩니다. 이것 대부분의 영향을 미치면 사용자에게 투명하게 발생합니다. 백엔드 코드의. 이 기술은 애정 적으로로 알려져 있습니다.스포츠 토토 베트맨(또는"얇게 썬 빵 이후 가장 좋은 것").
특정 데이터 유형 만 지원스포츠 토토 베트맨- 오버 헤드를 부과 할 필요가 없습니다
큰 필드 값을 생성 할 수없는 데이터 유형. 지원하려면스포츠 토토 베트맨, 데이터 유형에는 a가 있어야합니다
가변 길이 (Varlena) 표현,
저장된 값의 처음 32 비트 단어에는
바이트의 값의 총 길이 (자체 포함).스포츠 토토 베트맨나머지 표현. A를 지원하는 모든 C 레벨 기능스포츠 토토 베트맨-가능한 데이터 유형이 있어야합니다
조심해야스포츠 토토 베트맨ed 입력
값. (이것은 일반적으로 호출하여 수행됩니다pg_detoast_datum
입력 값이지만 경우에 따라 더 효율적인 접근 방식은
가능한.)
스포츠 토토 베트맨두 비트의 비트 varlena 길이 단어 (빅 엔디 언 기계의 고차 비트, 리틀 엔디안 기계의 저차 비트)를 제한합니다 A 값의 논리적 크기스포츠 토토 베트맨-가능한 데이터 유형에서 1GB (230- 1 바이트). 두 비트가 모두 0이면 값은 평범합니다. un-스포츠 토토 베트맨데이터 값 유형 및 길이 단어의 나머지 비트는 전체를 제공합니다. 바이트의 데이텀 크기 (길이 단어 포함). 가장 높은 순위 또는 가장 낮은 주문 비트가 설정되어 있으며 값은 단일 바이트 헤더 만 있습니다. 일반적인 4 바이트 헤더 대신에 나머지 비트는 바이트의 총 데이텀 크기 (길이 바이트 포함). 특별한 사람으로 케이스, 나머지 비트가 모두 0 인 경우 (불가능할 것입니다. 자기 포괄적 인 길이의 경우), 값은 줄 외부에 대한 포인터입니다. 별도의 스포츠 토토 베트맨 테이블에 저장된 데이터. (스포츠 토토 베트맨 포인터의 크기 Datum의 두 번째 바이트에서 제공됩니다.) 단일 바이트로 값 헤더는 특정 경계에도 정렬되지 않습니다. 마지막으로, 가장 높은 주문 또는 가장 낮은 비트가 명확하지만 인접한 비트가 설정되어 있으며 데이텀의 내용이 압축되었습니다. 사용하기 전에 압축을 압축해야합니다. 이 경우 나머지 길이 단어의 비트는 압축의 총 크기를 제공합니다. 원래 데이터가 아닌 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_idandchunk_seq값을 빠르게 검색합니다. 외부를 나타내는 포인터 데이텀스포츠 토토 베트맨ED 값은 OID를 저장해야합니다 의스포츠 토토 베트맨테이블 모양과 특정 값의 Oid (itschunk_id). 편의를 위해 포인터 기준도 있습니다 논리적 기준 크기를 저장하십시오 (원래 비 압축 데이터 길이) 실제 저장된 크기 (압축이 적용되는 경우). varlena 헤더 바이트를 허용, 총 크기스포츠 토토 베트맨그러므로 포인터 데이텀이 있습니다 표현 된 실제 크기에 관계없이 18 바이트 값.
the스포츠 토토 베트맨코드가 트리거됩니다 테이블에 저장 될 행 값이보다 넓은 경우에만TOAST_TUPLE_THRESHOLD바이트 (일반적으로 2 KB). 그만큼스포츠 토토 베트맨코드가 있습니다 행 값이 될 때까지 필드 값을 압축 및/또는 이동하십시오. 보다 짧습니다.TOAST_TUPLE_TARGET바이트 (일반적으로 2 kb) 또는 더 이상 이익을 얻을 수 없습니다. 업데이트 중 작동하지 않은 필드의 값은 일반적으로 as-is가 보존됩니다. 따라서 외부 값이있는 행을 업데이트하면 NO가 발생합니다.스포츠 토토 베트맨외부 가치 변경.
the스포츠 토토 베트맨코드가 인식됩니다 저장을위한 4 가지 전략스포츠 토토 베트맨-가능한 열 :
일반압축 또는 외부 저장소; 또한 단일 바이트 사용을 비활성화합니다 Varlena 유형의 헤더. 이것이 유일한 전략입니다 비의 열스포츠 토토 베트맨-가능한 데이터 유형.
확장압축과 모두 허용합니다 외부 저장소. 이것은 대부분의 기본입니다스포츠 토토 베트맨-가능한 데이터 유형. 압축이 될 것입니다 먼저 시도한 다음 행이 아직도없는 경우 외부 저장소 큰.
외부외부 스토리지를 허용하지만 압축이 아닙니다. 사용외부와이드의 하위 문자열 작업텍스트및BYTEA열이 더 빠릅니다 (페널티에서 저장 공간 증가) 이러한 작업은 최적화 되었기 때문입니다 외부 값의 필요한 부분 만 가져 오면 압축되지 않습니다.
Main압축은 허용하지만 그렇지 않습니다 외부 저장소. (실제로는 외부 스토리지가 여전히있을 것입니다 그러한 칼럼에 대해 수행되었지만있을 때 최후의 수단으로 만 수행 페이지에 맞게 줄을 작게 만들 수있는 다른 방법은 없습니다.)
각스포츠 토토 베트맨-가능 데이터 유형 해당 데이터 유형의 열에 대한 기본 전략을 지정하지만 주어진 테이블 열에 대한 전략은로 변경 될 수 있습니다.Alter Table Set Storage.
이 체계는 더 많은 것과 비교하여 여러 가지 장점이 있습니다. 행 값이 페이지에 걸쳐 허용하는 것과 같은 간단한 접근 방식. 쿼리가 일반적으로 비교에 의해 자격이 있다고 가정합니다 비교적 작은 핵심 값, 집행자의 대부분의 작업은 메인 행 항목을 사용하여 수행해야합니다. 의 큰 가치스포츠 토토 베트맨ed 속성은 꺼내는 것만 꺼집니다 (if 전혀 선택) 당시 결과 세트가 클라이언트로 전송됩니다. 따라서 메인 테이블은 훨씬 작고 더 많은 행에 적합합니다. 공유 버퍼 캐시는 외부 저장소. 정렬 세트도 줄어들고 정렬이 더 많아집니다 종종 기억에 전적으로 이루어집니다. 약간의 테스트에서 테이블이 나타났습니다 일반적인 HTML 페이지와 해당 URL이 포함되어 있습니다. 를 포함한 원시 데이터 크기의 절반스포츠 토토 베트맨테이블 및 메인 테이블에 포함되어 있습니다 전체 데이터의 약 10% (URL 및 일부 작은 HTML 페이지). AN에 비해 실행 시간 차이가 없었습니다 un-스포츠 토토 베트맨ed 비교 테이블, in 모든 HTML 페이지가 7kb로 잘라진 곳.
이전 | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | 다음 |
데이터베이스 파일 레이아웃 | PostgreSQL : 문서 : 9.3 : 스포츠 토토 결과 물리적 스토리지 | 여유 공간지도 |