Dalam SQL Server, mengapa tinyint disimpan dengan 9B di baris. Untuk beberapa alasan tampaknya ada tambahan satu byte pada akhir bitmap mask NULL.
GUNAKAN tempdb; PERGILAH CREATE TABLE tbl ( SAYA TINYINT TIDAK NULL ); PERGILAH INSERT INTO tbl (i) NILAI (1); PERGILAH DBCC IND ('tempdb', 'tbl', - 1); PERGILAH DBCC TRACEON (3604); - Halaman dump akan masuk ke konsol PERGILAH HALAMAN DBCC ('tempdb', 1.168,3); PERGILAH
Hasil (Saya membalikkan byte karena DBCC PAGE menunjukkan byte paling signifikan pertama):
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!?)