SQL Server 비트 열은 실제로 전체 바이트 가치의 공간을 사용합니까?


20

나는 SSMS 주위를 파고 INT있었고 내 열의 "크기" 가 4 바이트 (예상) 임을 알았지 만 BIT열이 전체 바이트 임을 알았을 때 약간 충격을 받았습니다 .

내가보고있는 것을 오해 했습니까?


1
BIT 열이 단어 경계 대신 바이트 경계에 정렬되어 있다는 점이 운이 좋았습니다.
Mike Sherrill 'Cat Recall'2

답변:



14

예.

bit테이블에 하나의 열만있는 경우 스토리지는 byte최대 8 개의 bit열을 동일한 바이트에 저장할 수 있으므로 다음 7 개는 "자유"입니다.

또한 열당 1 비트 스토리지 요구 사항이 있습니다 NULL_BITMAP(다시 바이트는 다음 바이트로 반올림). 데이터 페이지에 포함 이것은 bit모든 컬럼들이 허용되는지 여부에 관계없이 NULL(와 예외 통해서만 변경 메타 후술 첨가 널 열의 ALTER TABLE행은 아직 업데이트되지 않은 경우)


9

BIT행당 1 바이트를 사용하지만 BIT1 바이트 저장소에 최대 8 개의 필드를 묶을 수 있습니다.

따라서 첫 번째 필드는 1 바이트이지만 다음 7 개는 무료입니다 !

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.