Eu estava mexendo no SSMS e percebi que o "tamanho" das minhas INTcolunas era de 4 bytes (esperado), mas fiquei um pouco chocado ao ver que minhas BITcolunas eram um byte inteiro.
Eu entendi mal o que estava vendo?
Eu estava mexendo no SSMS e percebi que o "tamanho" das minhas INTcolunas era de 4 bytes (esperado), mas fiquei um pouco chocado ao ver que minhas BITcolunas 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 bitcoluna na tabela, o armazenamento usará, bytemas até 8 bitcolunas 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 bitpara 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 TABLEonde a linha ainda não foi atualizada)