Systemleistung bei speicheroptimierten temporalen Tabellen mit Systemversionsverwaltung
Gilt für: SQL Server 2016 (13.x) und höher Azure SQL-Datenbank Azure SQL Managed Instance
Dieser Artikel behandelt einige Überlegungen zur Systemleistung bei der Verwendung von speicheroptimierten Tabellen mit Systemversionsverwaltung.
Wenn Sie einer vorhandenen, nicht-temporalen Tabelle Systemversionsverwaltung hinzufügen, ergeben sich Leistungsauswirkungen auf Aktualisierungs- und Löschvorgänge, da die Verlaufstabelle automatisch aktualisiert wird.
Überlegungen zur Leistung
Jede Aktualisierung und Löschung wird in einer internen speicheroptimierten Verlaufstabelle verzeichnet. Es kann zu unerwartetem Arbeitsspeicherverbrauch kommen, wenn Ihre Workload diese beiden Vorgänge in großem Umfang verwendet. Aus diesem Grund legen wir Ihnen die folgenden Überlegungen nahe:
Führen Sie in einem Schritt keine umfangreichen Löschvorgänge aus der aktuellen Tabelle durch. Ziehen Sie in Betracht, die Daten in mehreren Batches zu löschen und zwischendurch die Datenleerung mithilfe von sp_xtp_flush_temporal_history oder bei
SYSTEM_VERSIONING = OFF
manuell zu veranlassen.Führen Sie keine großen Tabellenaktualisierungen auf einmal durch, dies kann zu einem Speicherverbrauch führen, der doppelt so hoch wie für die Aktualisierung einer nicht-temporalen, speicheroptimierten Tabelle ist. Dieser Doppelter Speicherverbrauch ist temporär, da der Datenleerungstask regelmäßig ausgeführt wird, um den Speicherverbrauch interner Stagingtabellen in projizierten Grenzen in stabilen Zustand zu halten. Die Grenze beträgt 10 Prozent des Speicherverbrauchs der aktuellen temporalen Tabelle. Sie sollten massive Aktualisierungen in mehreren Batches durchführen, oder während
SYSTEM_VERSIONING = OFF
, wie bei der Verwendung von Aktualisierungen zum Festlegen der Standardwerte für neu hinzugefügte Spalten.
Der Zeitraum der Aktivierung der Datenleerung ist nicht konfigurierbar, Sie können aber sp_xtp_flush_temporal_history bei Bedarf manuell ausführen.
Sie sollten als Speicheroption für datenträgerbasierte Verlaufstabellen einen gruppierten Columnstore verwenden, insbesondere dann, wenn Sie beabsichtigen, Analyseabfragen für Verlaufsdaten auszuführen, die Aggregat- oder Windowingfunktionen verwenden. In diesem Fall ist ein gruppierter Columnstore-Index eine optimale Wahl für Ihre Verlaufstabelle. Gruppierte Columnstore-Indizes bieten eine gute Datenkomprimierung und verhalten sich einfügefreundlich, ausgerichtet an der Art der Generierung von Verlaufsdaten.
Zugehöriger Inhalt
- Temporale Tabellen mit Systemversionsverwaltung für speicheroptimierte Tabellen
- Erstellen einer speicheroptimierten temporalen Tabelle mit Systemversionsverwaltung
- Arbeiten mit speicheroptimierten temporalen Tabellen mit Systemversionsverwaltung
- Überwachen von speicheroptimierten temporalen Tabellen mit Systemversionsverwaltung
- Temporale Tabellen
- Systemkonsistenzprüfungen von temporalen Tabellen
- Verwalten der Beibehaltung von Verlaufsdaten in temporalen Tabellen mit Systemversionsverwaltung
- Metadatenansichten und Funktionen für temporale Tabellen