Bir SQL Server bit sütunu gerçekten bir bayt değerinde boşluk kullanıyor mu?


20

SSMS etrafında alay ve benim INTsütun "boyutu" 4 bayt (beklenen) olduğunu fark ettim ama benim BITsütun bütün bir bayt olduğunu görmek için biraz şok oldu .

Neye baktığımı yanlış anladım mı?


1
BIT sütunlarının bir kelime sınırı yerine bir bayt sınırına hizalandığı için şanslıyım.
Mike Sherrill 'Cat Recall'

Yanıtlar:



14

Evet.

bitTabloda yalnızca bir sütun varsa depolama alanı aynı baytta byte8'e kadar bitsütun kullanır , bu nedenle sonraki 7 bu açıdan "ücretsiz" olur.

Sütun depolama gereksinimi için 1 bit NULL_BITMAPdaha vardır (yine bir sonraki bayta yuvarlanır). Veri sayfalarında, bitizin verip vermediklerine bakılmaksızın tüm sütunlar için bir içerir NULL( daha sonra bir meta veri olarak eklenmiş nullable sütunlar hariç , yalnızca ALTER TABLEsatırın henüz güncellenmediği yerde değişir )


9

BITher satırda bir bayt kullanır, ancak BITbu bir bayt depolama alanına en fazla 8 alan paketleyebilirsiniz .

İlk alanın bir bayt maliyeti vardır, ancak sonraki yedi alan ücretsizdir !

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.