Eu estava mexendo no SSMS e percebi que o "tamanho" das minhas INT
colunas era de 4 bytes (esperado), mas fiquei um pouco chocado ao ver que minhas BIT
colunas eram um byte inteiro.
Eu entendi mal o que estava vendo?
Eu estava mexendo no SSMS e percebi que o "tamanho" das minhas INT
colunas era de 4 bytes (esperado), mas fiquei um pouco chocado ao ver que minhas BIT
colunas eram um byte inteiro.
Eu entendi mal o que estava vendo?
Respostas:
Quantas colunas de bits você definiu na tabela? Eu encontrei isso no MSDN, ele diz que colunas de 8 bits ou menos são armazenadas como um byte.
Sim.
Se você tiver apenas uma bit
coluna na tabela, o armazenamento usará, byte
mas até 8 bit
colunas poderão ser armazenadas no mesmo byte, para que os próximos 7 estejam "livres" nesse sentido.
Também há uma necessidade de armazenamento de 1 bit por coluna para o NULL_BITMAP
(novamente arredondado para o próximo byte). Nas páginas de dados, ele contém um bit
para todas as colunas, independentemente de permitirem ou não NULL
(com exceção das colunas anuláveis adicionadas posteriormente como metadados, apenas são alteradas por ALTER TABLE
onde a linha ainda não foi atualizada)