Я копался в SSMS и заметил, что «размер» моих INT
столбцов составлял 4 байта (ожидаемый), но я был немного шокирован, увидев, что мои BIT
столбцы были целым байтом.
Я неправильно понял то, на что я смотрел?
Я копался в SSMS и заметил, что «размер» моих INT
столбцов составлял 4 байта (ожидаемый), но я был немного шокирован, увидев, что мои BIT
столбцы были целым байтом.
Я неправильно понял то, на что я смотрел?
Ответы:
Сколько битовых столбцов вы определили в таблице? Я нашел это на MSDN, он говорит, что 8 или менее битовых столбцов хранятся как один байт.
Да.
Если bit
в таблице только один столбец, то в хранилище используется byte
до 8 bit
столбцов, которые могут быть сохранены в одном байте, поэтому следующие 7 являются «свободными» в этом отношении.
Для хранения столбца также требуется 1 бит NULL_BITMAP
(снова округляется до следующего байта). На страницах данных это содержит bit
для всех столбцов, независимо от того, разрешают они или нет NULL
( за исключением столбцов, допускающих значение NULL, добавленных позже, поскольку метаданные изменяются только в том ALTER TABLE
случае, если строка еще не обновлена)