Ich stöberte in SSMS herum und bemerkte, dass die "Größe" meiner INT
Spalten 4 Bytes betrug (erwartet), aber ich war ein bisschen schockiert, als ich sah, dass meine BIT
Spalten ein ganzes Byte waren.
Habe ich falsch verstanden, was ich sah?
sql-server
datatypes
Nate
quelle
quelle
Antworten:
Wie viele Bitspalten haben Sie in der Tabelle definiert? Ich fand dieses auf MSDN, es sagt, dass 8 oder weniger Bitspalten als ein Byte gespeichert werden.
http://msdn.microsoft.com/en-us/library/ms177603.aspx
quelle
Ja.
Wenn Sie nur eine
bit
Spalte in der Tabelle haben, verwendet der Speicher a, es könnenbyte
jedoch bis zu 8bit
Spalten in demselben Byte gespeichert werden, sodass die nächsten 7 in dieser Hinsicht "frei" sind.Es gibt auch einen Speicherbedarf von 1 Bit pro Spalte für das
NULL_BITMAP
(wieder aufgerundet auf das nächste Byte). Auf den Datenseiten enthält dies einbit
für alle Spalten, unabhängig davon, ob sie zulässig sind oder nichtNULL
(mit Ausnahme der später als Metadaten hinzugefügten nullwertfähigen Spalten, die sich nur ändern,ALTER TABLE
wenn die Zeile noch nicht aktualisiert wurde).quelle
BIT
verwendet ein Byte pro Zeile, aber Sie können bis zu 8BIT
Felder in diesen Ein-Byte-Speicher packen .Das erste Feld kostet also ein Byte, die nächsten sieben sind frei !
quelle