Estaba hurgando en SSMS y noté que el "tamaño" de mis INT
columnas era de 4 bytes (esperado) pero me sorprendió un poco ver que mis BIT
columnas eran un byte completo.
¿Entendí mal lo que estaba mirando?
Estaba hurgando en SSMS y noté que el "tamaño" de mis INT
columnas era de 4 bytes (esperado) pero me sorprendió un poco ver que mis BIT
columnas eran un byte completo.
¿Entendí mal lo que estaba mirando?
Respuestas:
¿Cuántas columnas de bits ha definido en la tabla? Encontré esto en MSDN, dice que las columnas de 8 bits o menos se almacenan como un byte.
Sí.
Si solo tiene una bit
columna en la tabla, entonces el almacenamiento utiliza un byte
pero bit
se pueden almacenar hasta 8 columnas en el mismo byte, por lo que las siguientes 7 son "libres" a ese respecto.
También hay una necesidad de almacenamiento de 1 bit por columna para NULL_BITMAP
(nuevamente redondeado al siguiente byte). En las páginas de datos, esto contiene un bit
para todas las columnas, independientemente de si lo permiten o no NULL
(con la excepción de las columnas anulables que se agregan más tarde ya que los metadatos solo cambian a través de ALTER TABLE
donde la fila aún no se ha actualizado)