SQL Server에서 왜 tinyint가 9B 행에 저장되어 있습니까? 어떤 이유로 NULL 비트 맵 마스크의 끝에 1 바이트가 더있는 것 같습니다.
tempdb 사용;
가다
테이블 작성 tbl
(
TINYINT NOT NULL
);
가다
tbl에 삽입 (i)
값 (1);
가다
DBCC IND ( 'tempdb', 'tbl',-1);
가다
DBCC TRACEON (3604); -페이지 덤프가 콘솔로 이동합니다
가다
DBCC 페이지 ( 'tempdb', 1,168,3);
가다
결과 (DBCC PAGE의 최하위 바이트가 먼저 표시되어 바이트를 반전 시켰습니다).
Record Size = 9B
10000500 01010000 00
TagA = 0x10 = 1B
TagB = 0x00 = 1B
Null Bitmap Offset = 0x0005 = 2B
Our integer column = 0x01 = 1B
Column Count = 0x0001 = 2B
NULL Bitmap = 0x0000 = 2B (what!?)