Ich habe eine große Tabelle in SQL Server 2005, die etwa 3,5 GB Speicherplatz (nach sp_spaceused) benötigt. Es hat 10 Millionen Datensätze und mehrere Indizes.SQL Server 2005: Speicherplatz durch abgelegte Spalten
Ich habe gerade eine Reihe von Spalten daraus gelöscht, so dass die Rekordlänge auf die Hälfte reduziert wurde, und zu meiner Überraschung brauchte es null Zeit, um das zu tun. Offensichtlich hat sp_spaceused immer noch den gleichen belegten Speicherplatz gemeldet, der SQL Server hat beim Löschen der Spalten nicht wirklich etwas getan, außer dass er sie als "gelöscht" markiert hat.
Also habe ich alle Daten aus dieser Tabelle in eine andere neue Tabelle verschoben, abgeschnitten und alle Daten zurück verschoben, so dass alles rekonstruiert wurde.
Nun, die Daten nehmen 2,8 GB, das ist weniger als zuvor, aber ich habe einen größeren Rückgang erwartet.
Ist es möglich, dass die Tatsache, dass diese Tabelle ursprünglich diese Spalten enthielt, immer noch etwas zurücklässt?
Wurde abgeschnitten es nicht genug? Soll ich es fallen lassen und mit dem kleineren Spaltensatz neu anlegen?
Oder nehmen die Daten wirklich 2,8 GB?
Danke!
Und wenn man davon ausgeht, dass es sich um eine 3.5GB-Tabelle handelt, wäre dieser Vorgang in Ordnung, wenn das System läuft? – marquito
@marquito: es wird eine Ausfallzeit benötigen, um diesen Vorgang abzuschließen - natürlich - umsonst. –
danke, @marc_s. Da ich mit der gleichen Situation konfrontiert bin, ist es gut zu wissen, dass ich warten muss, um die Prozedur auszuführen oder die Konsequenzen zu tragen. :) – marquito