집 >데이터 베이스 >MySQL 튜토리얼 >PostgreSQL에서 NULL 값이 실제로 사용하는 디스크 공간은 얼마나 됩니까?
PostgreSQL의 NULL 값에 대한 디스크 공간 요구 사항
데이터베이스 테이블을 생성할 때 해당 열의 저장 요구 사항을 고려하는 것이 중요합니다. 특히 null 허용 값을 처리할 때. NULL 값이 저장되는 방식을 이해하면 디스크 공간 사용량을 최적화할 수 있습니다.
NULL 값 저장
PostgreSQL에서 NULL 값은 널 비트맵이라는 비트마스크를 사용하여 표현됩니다. . 비트맵의 각 비트는 테이블의 열에 해당합니다. 비트가 1로 설정되면 해당 열이 NULL임을 나타냅니다.
NULL 비트맵이 차지하는 디스크 공간
널 비트맵의 크기는 해당 열에 따라 다릅니다. 테이블의 열 수. 열이 8개 이하인 테이블의 경우 비트맵은 1바이트를 차지합니다. 9~64개의 열이 있는 테이블의 경우 2바이트를 차지합니다. 그러나 데이터 정렬로 인해 하나 이상의 NULL 값을 포함하는 행에 대한 최소 저장 요구 사항은 열 수에 관계없이 1바이트입니다.
NULL 열에 대한 오버헤드
Null 비트맵 외에 NULL 열을 관리하는 데 필요한 추가 바이트는 없습니다. 그러나 시스템 카탈로그 pg_attribute에서 "dropped"로 표시된 삭제된 열은 여전히 null 비트맵에서 1비트를 차지합니다. 이 오버헤드는 덤프/복원 주기가 수행될 때까지 지속될 수 있습니다.
예 및 테스트 결과
다음 열 정의가 있는 테이블을 고려해 보세요.
"MyColumn" smallint NULL
이 열에 0 또는 1 값을 저장하려면 2바이트가 필요합니다. NULL 값의 경우 다음 저장소 요구 사항이 적용됩니다.
열이 8개 이하인 테이블의 경우:
9~64인 테이블의 경우 열:
64개 이상의 열이 있는 테이블의 경우:
광범위한 테스트를 통해 이러한 스토리지 요구 사항이 모든 테이블에 대해 일관되는 것으로 나타났습니다. 작은 테이블(열 9개 미만)에 NULL 값을 저장하여 디스크 공간 사용량을 최적화하는 것이 유리하지만 큰 테이블에서는 중요성이 떨어집니다.
위 내용은 PostgreSQL에서 NULL 값이 실제로 사용하는 디스크 공간은 얼마나 됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!