Grzebałem w SSMS i zauważyłem, że „rozmiar” moich INT
kolumn to 4 bajty (oczekiwane), ale byłem trochę zszokowany widząc, że moje BIT
kolumny to cały bajt.
Czy źle zrozumiałem, na co patrzyłem?
sql-server
datatypes
Nate
źródło
źródło
Odpowiedzi:
Ile kolumn bitowych zdefiniowałeś w tabeli? Znalazłem to w MSDN, mówi 8 lub mniej kolumn bitowych są przechowywane jako jeden bajt.
http://msdn.microsoft.com/en-us/library/ms177603.aspx
źródło
Tak.
Jeśli masz tylko jedną
bit
kolumnę w tabeli, wówczas pamięć używabyte
maksymalnie 8bit
kolumn, które mogą być przechowywane w tym samym bajcie, więc kolejne 7 jest pod tym względem „wolne”.Istnieje również potrzeba 1 bitu na kolumnę pamięci
NULL_BITMAP
(ponownie zaokrąglanej w górę do następnego bajtu). Na stronach danych zawiera tobit
dla wszystkich kolumn, niezależnie od tego, czy zezwalająNULL
(z wyjątkiem kolumn zerowych dodawanych później, ponieważ metadane zmieniają się tylko wALTER TABLE
przypadku, gdy wiersz nie został jeszcze zaktualizowany)źródło
BIT
używa jednego bajtu na wiersz, ale można zapakować do 8BIT
pól w tym jednym bajcie.Pierwsze pole kosztuje więc jeden bajt, ale kolejne siedem jest bezpłatne !
źródło