Die PAGE-Komprimierung in SQL Server wirkt sich auf das Ausführen von Abfragen aus

7

Ich plane, die PAGE-Komprimierung auf einige der großen Tabellen in meiner Datenbank anzuwenden (genauer gesagt DW). Diese Tabellen sind mit über 15 Milliarden Zeilen ziemlich groß. Als ich die Komprimierung in der Testumgebung angewendet habe, dauerte der gesamte Vorgang ungefähr 22 Stunden. Auf diese Tabellen wird täglich mit ziemlich langen Abfragen zugegriffen. Meine Fragen sind

  1. Gibt es während der Komprimierung Auswirkungen auf die ausgeführten Abfragen? Gibt es ein Schloss usw., auf das ich achten sollte?
  2. Gibt es einen gestaffelten Ansatz für die Anwendung der Komprimierung?

3. Haben Sie noch andere Anregungen / Rückmeldungen?

Danke vielmals

Sean

Seank
quelle
1
Ist das SQL Server oder SSAS? Wenn erstere, warum nicht SSAS?
Podiluska
Oben befindet sich eine SSAS-Schicht. Dies hängt jedoch hauptsächlich mit der Einsparung von Speicherplatz und hoffentlich der Beschleunigung der SSAS-Verarbeitung zusammen. Vielen Dank, dass Sie sich bei dba.se gemeldet haben.
1
Ist die Tabelle partitioniert?
Brian

Antworten:

5

Offline ALTER ... REBUILD nimmt eine große Sperre für die Änderung des Fettschemas für die Tabelle mit absolut 0 Parallelität (nicht einmal schmutzige Lesevorgänge können die Tabelle scannen). Online ALTER ... REBUILD ermöglicht, wie der Name schon sagt, jede gleichzeitige Abfrage oder DML-Operation. Der MSDN-Artikel Funktionsweise von Online-Indexoperationen beschreibt die drei Phasen (Vorbereiten, Erstellen und Finalisieren) und die in jeder Phase erforderlichen Objektsperren (IS, IS, SCH-M). Der Builder arbeitet stapelweise und erwirbt Datensperren, wenn er Fortschritte macht, aber er wird sich bei Konflikten zurückziehen, und es gibt eine spezielle Sauce für den Umgang mit Deadlocks mit dem Builder:

Deadlocks zwischen der Index Builder-Transaktion, die die Batch-Transaktionssperren enthält, und DML-Anweisungen sind möglich, werden jedoch intern behandelt, sodass weder die DML-Operation noch die Index Builder-Transaktion während der Build-Phase aufgrund eines Deadlocks beendet werden sollten.

Weitere Informationen finden Sie im Whitepaper Online-Indizierungsvorgänge in SQL Server 2005 , einschließlich der Funktionsweise von Antimaterie.

Nun, für eine DW-Tabelle mit 15B Zeilen können Columnstore-Indizes die beste Option sein .

Remus Rusanu
quelle
4

Ich habe das Szenario durch Ausführen getestet

ALTER TABLE test_tbl REBUILD WITH (DATA_COMPRESSION=PAGE,ONLINE=ON)

Bei einer Transaktion werden exklusive Sperren für die Seiten vorgenommen, sodass zwar ein Blockierungspotential besteht. Bei einer großen Tabelle ist dies jedoch sehr viel weniger, da sie Seite für Seite komprimiert wird, sodass nur große Scan-Auswahlen für vollständige Tabellen möglich sind blockiert, keine Einfügungen oder Aktualisierungen, daher lauten die Antworten:

  1. Ja, es kann große Abfragen blockieren. Der Prozess sperrt exklusiv die Seite, die komprimiert wird
  2. Ein gestaffelter Ansatz ist möglich, wenn Sie Partitionen verwenden. Dies hilft Ihnen jedoch nicht viel, wenn Sie aggregierte Abfragen ohne Filter für die partitionierte Spalte verwenden. Wenn Sie trotzdem die gesamte Tabelle auswählen, spielt es keine Rolle, welche Partition Sie komprimieren
  3. Zusätzlich zum Speicherplatz profitieren Sie auch von Leistungsvorteilen, da Sie mehr von der Tabelle in den Speicher einfügen können. Sie können dies testen, indem Sie die Lebenserwartung der Seite vor und nach der Komprimierung beobachten
Knitterfrei
quelle