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

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

Linda Hamilton
Linda Hamilton원래의
2024-12-28 21:52:12655검색

How Much Disk Space Does a NULL Value Actually Consume in PostgreSQL?

PostgreSQL 데이터베이스의 Null 값 저장소 이해

데이터베이스 작업 시 효율적인 성능을 위해 저장소 공간을 최적화하는 것이 중요합니다. NULL 값을 처리할 때 한 가지 일반적인 질문이 발생합니다. NULL 값을 저장하는 데 얼마나 많은 디스크 공간이 필요한가요?

PostgreSQL에서 NULL 값의 저장은 상황에 따라 다릅니다. "MyColumn" 열이 "smallint NULL"로 정의된 예를 살펴보겠습니다. 이 경우 0 또는 1과 같은 값을 저장하려면 일반적으로 2바이트가 필요합니다.

NULL 값 저장

"MyColumn"이 NULL로 설정된 경우 저장 요구 사항 더욱 미묘해집니다. 직관과는 달리 NULL 값은 0바이트를 차지하지 않습니다. 대신 PostgreSQL은 비트맵 인덱싱이라는 기술을 사용하여 null을 추적합니다. 테이블의 각 행에 대해 어떤 열에 NULL 값이 포함되어 있는지 표시하기 위해 비트맵이 생성됩니다.

이제 이 접근 방식이 저장에 미치는 영향을 자세히 살펴보겠습니다.

  • 테이블 8개 미만의 열 포함: 최대 8개의 열이 포함된 테이블의 경우 null 비트맵은 행의 헤더에 저장되며, 그렇지 않으면 사용되지 않은 바이트를 활용합니다. 패딩. 따라서 이러한 테이블에 NULL 값을 저장하면 추가 공간 오버헤드가 거의 없습니다.
  • 8개 이상의 열이 있는 테이블: 8개 이상의 열이 있는 테이블의 경우 null 비트맵에는 MAXALIGN의 추가 공간이 필요합니다. 바이트(보통 8바이트)입니다. 이 공간은 열에 NULL 값이 포함되어 있는지 여부에 관계없이 모든 행에 할당됩니다.

추가 고려 사항

  • 정렬: 행 데이터는 메모리 액세스를 최적화하기 위해 특정 경계에 맞춰 정렬되어야 합니다. Null 비트맵이 나머지 패딩 공간에 맞지 않으면 추가 정렬 바이트가 추가되어 잠재적으로 저장 요구 사항이 증가할 수 있습니다.
  • 삭제된 열: 테이블의 정의는 여전히 널 비트맵에 반영되어 약간의 공간을 차지할 수 있습니다. VACUUM FULL은 이 공간을 제거할 수 없으므로 이를 회수하려면 덤프/복원 주기가 필요합니다.

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

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