Benutzer mit den meisten Antworten
Partitionierung und Page Compression

Frage
-
Hallo,
ich verwende SQL Server 2012 (SP3, CU6, Enterprise Edition) und habe eine Tabelle mit aktivierter Page Compression. Das Schema ist wie folgt:
CREATE TABLE [DETAILED_ARCHIVE] ( [DEVICE_ID] [uniqueidentifier] NOT NULL, [LOG_DATETIME] [datetime2](2) NOT NULL, [MEASURE_ID] [uniqueidentifier] NOT NULL, [MEASURE_VALUE] [bigint] NULL, CONSTRAINT [PK_DETAILED_ARCHIVE] PRIMARY KEY CLUSTERED ( [DEVICE_ID] ASC, [LOG_DATETIME] ASC, [MEASURE_ID] ASC ) WITH (DATA_COMPRESSION = PAGE) )
Für diese Tabelle soll nun Partitionierung auf monatlicher Basis eingerichtet werden. Für jede Partition habe ich eine Filegroup erstellt und eine entsprechende Partition-Function (auf Basis datetime2(2)) sowie ein Partition-Schema angelegt.
Versuche ich nun den Clustered-Index auf dem Partition-Schema neu anzulegen (mit DROP_EXISTING), womit die Tabelle partitioniert werden sollte, dann explodiert der Speicherplatzbedarf in den neuen Filegroups für die Partitionen, obwohl ich für alle Partitionen weiterhin DATA_COMPRESSION = PAGE angebe.
Folgenden Befehl verwende ich:
CREATE UNIQUE CLUSTERED INDEX [PK_DETAILED_ARCHIVE] ON [DETAILED_ARCHIVE] ( [DEVICE_ID] ASC, [LOG_DATETIME] ASC, [MEASURE_ID] ASC ) WITH (DROP_EXISTING = ON, ONLINE = OFF, PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100, DATA_COMPRESSION = PAGE) ON [PS_DateTime_Monthly_Detailed]([LOG_DATETIME])
Die ursprüngliche Tabelle hat eine Größe von 160GB, die Größe der neuen Filegroups für die Partitionen ist inzwischen auf 590GB angewachsen und der Vorgang trotzdem noch nicht abgeschlossen.
Kann es sein, dass der neue partitionierte Clustered Index zunächst unkomprimiert angelegt wird und dann erst im Nachhinein oder durch einen Rebuild die Komprimierung angewendet würde? Ich werde mir das wohl nächste Woche mit einem kleineren Testdatensatz nochmal genauer ansehen, aber vielleicht hat hier ja auch schon jemand eine Idee oder einen Hinweis.
Vielen Dank!
Antworten
-
Hallo Christian
Deine Beobachtung ist ganz richtig.
Und als Abhilfe: Versuch's doch mal mit "
...SORT_IN_TEMPDB = ON,...
viel Erfolg
Andreas Wolter (Blog | Twitter)
MCSM: Microsoft Certified Solutions Master Data Platform/SQL Server 2012
MCM SQL Server 2008
MVP Data Platform
www.SarpedonQualityLab.com | www.andreas-wolter.com- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 6. Februar 2017 13:40
- Als Antwort markiert Christian Andersen Montag, 6. Februar 2017 16:35
Alle Antworten
-
Update: Nachdem die Erzeugung des neuen Clustered Index auf dem Partitionierungschema nun abgeschlossen ist, ist auch der Speicherplatzbedarf wieder in Ordnung. Effektiv genutzt sind nun 160GB. Leider wurden die Dateien der Filegroups offenbar temporär massiv vergrößert, so dass die Dateien 725GB für effektiv 160GB Daten belegen.
Hat jemand eine Idee, wie ich dies vermeiden kann?
Mein Problem ist hier, dass es noch eine zweite Tabelle mit 872GB Daten gibt, welche partitioniert werden soll. Hier würde diese temporär benötige Dateigröße den verfügbaren Platz überschreiten (für die 872GB würden analog hochgerechnet ca. 4TB benötigt werden).
-
Hallo Christian
Deine Beobachtung ist ganz richtig.
Und als Abhilfe: Versuch's doch mal mit "
...SORT_IN_TEMPDB = ON,...
viel Erfolg
Andreas Wolter (Blog | Twitter)
MCSM: Microsoft Certified Solutions Master Data Platform/SQL Server 2012
MCM SQL Server 2008
MVP Data Platform
www.SarpedonQualityLab.com | www.andreas-wolter.com- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 6. Februar 2017 13:40
- Als Antwort markiert Christian Andersen Montag, 6. Februar 2017 16:35