[SQL] 얼마나 많은 디스크 공간은 PostgreSQL의 DB를 사용하여 NULL 값을 저장하는 데 필요한?
SQL얼마나 많은 디스크 공간은 PostgreSQL의 DB를 사용하여 NULL 값을 저장하는 데 필요한?
하자 내가 내 테이블에 열이 다음과 같은 정의가 있다고 가정 :
"MyColumn" smallint NULL
0, 1 또는 뭔가 다른 같은 값을 저장하면 2 바이트 (1)가 필요합니다. 내가 NULL에 "MyColumn"로 설정한다면 얼마나 많은 공간은 필요합니까? 그것은 0 바이트를해야합니까?
모든 열 / 행에 대한 관리 목적이나 그러한 것들에 대한 몇 가지 추가 필요 바이트가 있습니까?
(1) http://www.postgresql.org/docs/9.0/interactive/datatype-numeric.html
해결법
-
==============================
1.널 열은 저장되지 않습니다. 행은 시작시 맵 및 널 또는 비 - 널되는 것들을 나타내는 컬럼 당 하나 개의 비트를 갖는다. 모든 열은 행에 비 - 널 인 경우 비트 맵을 생략 할 수있다. 따라서, 하나 이상의 널 (null)과 특정 행에 대해, 그 첨가 사이즈가 비트 맵의 것 (AN N 열 테이블의 N 비트를 반올림).
널 열은 저장되지 않습니다. 행은 시작시 맵 및 널 또는 비 - 널되는 것들을 나타내는 컬럼 당 하나 개의 비트를 갖는다. 모든 열은 행에 비 - 널 인 경우 비트 맵을 생략 할 수있다. 따라서, 하나 이상의 널 (null)과 특정 행에 대해, 그 첨가 사이즈가 비트 맵의 것 (AN N 열 테이블의 N 비트를 반올림).
깊이 토론에 더 여기에 문서에서
-
==============================
2.라라는 비트 맵에 대한 권리 및 그 설명서에있는 바로 이곳에 연결합니다. 그러나이 거의이지만, 아주 정확하지 :
라라는 비트 맵에 대한 권리 및 그 설명서에있는 바로 이곳에 연결합니다. 그러나이 거의이지만, 아주 정확하지 :
하나는 데이터 정렬 요인이있다. (행당)를 HeapTupleHeader 긴 23 바이트가, 실제 열 데이터가 항상 MAXALIGN (일반적으로 8 바이트)의 배수에서 시작한다. 널 비트 맵에 의해 이용 될 수있는 패딩의 잎 한 바이트. 실제로 NULL 저장 8 열까지 테이블에 대한 무료입니다.
그 후, 다른 MAXALIGN (일반적 8) 바이트는 다음 MAXALIGN * 8 (일반적으로 64) 열에 할당된다. 사용자 컬럼의 총 수에 대한 등 항상 (모 아니면도). 그러나 경우에만 행에 적어도 하나 개의 실제 NULL 값이 있습니다.
나는이 모든 것을 확인하기 위해 광범위한 테스트를 실행했습니다. 자세한 내용은:
-
==============================
3.그것은에있는 데이터의 합보다 더 많은 공간이 필요합니다 (행을 추가처럼) 뭔가를 변경 될 수 있습니다이 하나 개의 값을 추가, 그러나 그것은 공간의 대부분을 구성하는 테이블의 구조의 1 바이트 (× 00)가 필요합니다.
그것은에있는 데이터의 합보다 더 많은 공간이 필요합니다 (행을 추가처럼) 뭔가를 변경 될 수 있습니다이 하나 개의 값을 추가, 그러나 그것은 공간의 대부분을 구성하는 테이블의 구조의 1 바이트 (× 00)가 필요합니다.
편집 : 라라는 나보다 널 (null)에 대해 더 모르는 것 같다 :)
from https://stackoverflow.com/questions/4229805/how-much-disk-space-is-needed-to-store-a-null-value-using-postgresql-db by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL이 아닌 단일 그룹의 그룹 기능 (0) | 2020.05.12 |
---|---|
[SQL] 내부 대 하위 쿼리는 SQL 서버에 참여 (0) | 2020.05.12 |
[SQL] SQL ORDER BY 날짜 문제 (0) | 2020.05.12 |
[SQL] PostgreSQL의에서 작은 따옴표와 큰 따옴표의 차이점은 무엇입니까? (0) | 2020.05.12 |
[SQL] SQL 명령 텍스트에서 데이터 집합에 직접 방법 (0) | 2020.05.11 |