Ich habe eine MS SQL Server 2008-Datenbank auf einem Shared Hosting und ich muss den verwendeten Speicherplatz so viel wie möglich reduzieren. Meine größte Tabelle hat die folgende Definition:Zeile Größe Overhead
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)
Ich habe versucht, die durchschnittliche Anzahl von Bytes pro Datensatz in meinem Tisch, um herauszufinden. Nach der Theorie sollte die Größe: 4B (Zeilenkopf) + 2B (smallint) + 4B (smalldatetime) + 2B (smallint), was 12 Bytes ist.
Allerdings, wenn ich den Befehl lautete:
dbcc showcontig ('stage') with tableresults
Es zeigt: MinimumRecordSize = 15, MaximumRecordSize = 15 So nach SQL Server, die Bytes pro Datensatz ist 15 und nicht 12 Die Zahl 15 Bytes pro Datensatz scheint auch korrekt zu sein, wenn ich mir den gesamten Speicherplatz anschaue, den die Tabelle einnimmt, und sie nach der Anzahl der Zeilen dividiere.
Was nimmt die 3 zusätzlichen Bytes ???
Vielen Dank für die Erklärung. So scheint es, dass es in meinem Fall unmöglich ist, den Zeilenaufwand in SQL Server 2008 auf weniger als 7 Byte zu reduzieren. – jirikadlec2