2010-12-28 5 views
13

가능한 중복 : 저장 공간의 측면에서 더 효율적 무엇
Space used by nulls in databasenull 값이 저장 공간을 절약합니까?

?

  • nullable int 열이 널입니다.
  • int 열이 가득 찼습니다.

nullable 열은 Null 상태를 저장하기 위해 추가로 1 비트의 정보를 사용하지만 Null 값을 사용하여 데이터베이스에서 null 인 int에 대해 32 비트를 할당하지 않도록 할 수 있습니까? 필요한 저장 공간에 상관없이 값이 널인지의 여부를 항상 동일한하는 int

널 같은 고정 폭 필드

+0

2008 R2와 함께 작업하고 있지만 다른 버전이 다르게 작동하는 경우 알아두면 좋을 것입니다. –

+0

D' oh, "null storage"는 검색했지만 "null space"는 검색하지 않았습니다. 중복에 대한 동의, 거기에 대한 답변은이 질문에 대한 답변입니다. –

답변

14

(NULL 의미 및 널의 의미는이 질문에 대한 중요하지 않다).

가변 너비가 허용되는 필드의 경우 'NULL'값은 0 바이트의 저장 공간을 사용합니다 (값이 널 (null)인지 여부를 저장하는 비트는 무시함).

+0

이것에 대한 참조가 있습니까? 아니면 실험적 증거로 알고 있습니까? –

+7

거의 매주이 질문을하기 때문에 알고 있습니다. ;-) –

+0

아마도 열 * (또는 실제로 행)에 대한 공간이 SQL Server에 의해 예약되었을 때 * 실제로 이해할 수는 없지만 실제로는 null 허용 열을 거대한 데이터베이스에 추가하는 것이 실제로 순간적이며 doesn 어떤 할당 (예 : 기본값으로 NOT NULL을 지정하면 발생)과 관련이있는 것 같습니다. 이 값을 포함하는 행을 처음 작성하려고하면 SQL Server가이 새 열에 대해 많은 공간을 할당합니까? – Groo

4

SQL Server 2008을 사용하고 있고 열에 많은 수의 NULL 값이있을 것으로 예상되는 경우 investigate Sparse Columns을 제안합니다. 그들은 NULL 값을 저장하기 위해 최적화되어 있습니다.

3

SQL Server 2008은 기본적으로 NULL 인 열에 대해 Sparse columns을 도입했습니다.

NULL의 행에 대한 SPARSE 열은 0 비트의 저장소를 사용합니다. 그러나 값이 있으면 4 바이트 벌점을 지불합니다.

3

0은 null이 아닙니다. 필드에 대한 가치가 없다면 거기에 0을 붙이지 마십시오! 프로덕션 데이터베이스의 0이 실제 0인지 거짓 인지를 알 수 없기 때문에 필자는 본질적으로 수정할 수없는 버그를 몇 번이나 발견했는지 말할 수 없습니다. 포옹 nulls - 네, 그들은 더 많은 코딩이 필요하지만 어쨌든 그들을 받아들입니다.

+1

이 경우 필드는 응용 프로그램 플래그 일 뿐이며 0 또는 null에 대한 점검은 동일하므로 스토리지 고려 사항 만 있습니다. –

관련 문제