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?
sql-server
datatypes
Nate
fonte
fonte
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.
http://msdn.microsoft.com/en-us/library/ms177603.aspx
fonte
Sim.
Se você tiver apenas uma
bit
coluna na tabela, o armazenamento usará,byte
mas até 8bit
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 umbit
para todas as colunas, independentemente de permitirem ou nãoNULL
(com exceção das colunas anuláveis adicionadas posteriormente como metadados, apenas são alteradas porALTER TABLE
onde a linha ainda não foi atualizada)fonte
BIT
usa um byte por linha, mas você pode compactar até 8BIT
campos no armazenamento de um byte.Portanto, o primeiro campo custa um byte, mas os próximos sete são gratuitos !
fonte