Narzut wielkości wiersza
Mam udostępnioną bazę danych MS SQL Server 2008 na współdzielonym hostingu i muszę maksymalnie zmniejszyć wykorzystaną przestrzeń pamięci. Moja największa tabela ma następującą definicję:
CREATE TABLE [stage](
[station_id] [smallint] NOT NULL,
[time_utc] [smalldatetime] NOT NULL,
[stage_mm] [smallint] NOT NULL,
CONSTRAINT [PK_stage] PRIMARY KEY CLUSTERED ([station_id] ASC,[time_utc] ASC)
Próbowałem znaleźć średnią liczbę bajtów na rekord w mojej tabeli. Zgodnie z teorią rozmiar powinien wynosić: 4B (nagłówek wiersza) + 2B (smallint) + 4B (smalldatetime) + 2B (smallint), który wynosi 12 bajtów.
Jednak po uruchomieniu polecenia:
dbcc showcontig ('stage') with tableresults
Pokazuje: MinimumRecordSize = 15, MaximumRecordSize = 15 Tak więc według SQL Server bajty na rekord wynoszą 15, a nie 12 Liczba 15 bajtów na rekord wydaje się również poprawna, gdy patrzę na całkowitą przestrzeń dyskową zajmowaną przez tabelę i dzielę ją Liczba rzędów.
Co zajmuje 3 dodatkowe bajty ??