>데이터 베이스 >MySQL 튜토리얼 >PostgreSQL에서 NULL 값이 실제로 사용하는 디스크 공간은 얼마나 됩니까?

PostgreSQL에서 NULL 값이 실제로 사용하는 디스크 공간은 얼마나 됩니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-26 10:53:14418검색

How Much Disk Space Do NULL Values Actually Use in PostgreSQL?

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인 테이블의 경우 열:

    • 널 비트맵의 경우 1바이트
  • 64개 이상의 열이 있는 테이블의 경우:

    • 여러 추가 바이트 MAXALIGN

광범위한 테스트를 통해 이러한 스토리지 요구 사항이 모든 테이블에 대해 일관되는 ​​것으로 나타났습니다. 작은 테이블(열 9개 미만)에 NULL 값을 저장하여 디스크 공간 사용량을 최적화하는 것이 유리하지만 큰 테이블에서는 중요성이 떨어집니다.

위 내용은 PostgreSQL에서 NULL 값이 실제로 사용하는 디스크 공간은 얼마나 됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.