Anforderungen: In einer SQL-Server-Datenbank gibt es eine Tabelle (z. B. Log-Tabelle, Anfrage-Log-Tabelle), die einen sehr großen Speicherplatz einnimmt, vielleicht Hunderte von GB. Wie kann man den Tabellenspeicher reduzieren? Datenkompression (Speicherplatzsparung) kann für stark repetitive Texte (z. B. HTML, JSON, Logs) aktiviert werden.
ROW-Kompression
Kompression verändert die physische Speicherung der Daten, aber nicht die logische Struktur der Daten. Der Prozess der Linienkompression:
Identifizieren Sie den Datentyp jeder Spalte und konvertieren Sie ihn in eine variable Länge Schließlich wird die Anzahl der Speicherplatzanfragen auf den tatsächlichen Bedarf reduziert Nach der Kompression wird die Speichermenge auf jeder Seite erhöht Nach der Kompression reduzieren Sie die Menge an Metadaten Wenn zum Beispiel der Datentyp einer Spalte smallint ist, weist das System standardmäßig 2 Bytes zu. In Wirklichkeit wird jedoch nur 1 Byte Speicherplatz verwendet, und wenn die Kompression in der Tabelle aktiviert ist, kann er bei Bedarf zugewiesen werden
PAGE-Kompression
Die Seitenkompression führt zusätzliche Operationen aus, um die Zeilenkompression zu verbessern Hauptoperationen: Zeilenkompression, Präfixkompression, Wörterbuchkompression
CPU-Verbrauch: PAGE-Kompression > Zeilenkompression
Test
Erstellen Sie neue Users1- und Users2-Tabellen, beide fügen 100.000 Datenstücke ein, und das SQL-Skript ist wie folgt:
Um die Tabellenbelegung anzuzeigen, die alle 3,27 MB betragen, lautet der Befehl wie folgt:
Wie unten gezeigt:
Um den Kompressionsstatus der Users2-Tabelle anzuzeigen, lautet der Befehl wie folgt:
Wie unten gezeigt:
sp_estimate_data_compression_savingsSchätzen Sie die Einsparungen, die entstehen können, wenn Sie Tabellen oder Partitionen für Zeilen, Seiten, Spaltenspeicher, Spaltenspeicherarchive oder XML-Kompression aktivieren. Der Befehl lautet wie folgt:
Die Ausgabe ist wie folgt:
object_name schema_name index_id partition_number size_with_current_compression_setting(KB) size_with_requested_compression_setting(KB) sample_size_with_current_compression_setting(KB) sample_size_with_requested_compression_setting(KB) Users2 dbo 1 1 3368 1296 3448 1328
size_with_current_compression_setting (KB) 3368 KB Der Index nimmt mit den aktuellen Kompressionseinstellungen ≈ 3,29 MB ein. size_with_requested_compression_setting (KB) 1296 KB Geschätzter Footprint ≈ 1,27 MB, wenn Sie die von Ihnen angeforderte neue Kompressionsmethode wie PAGE oder ROW aktivieren Zur Ausführung der Seitenkompression lautet der Befehl wie folgt:
Vergleich der Effekte:Die Users2-Tabelle beträgt 3,27 MB vor der Kompression und 1,23 MB nach der Kompression, wie in der untenstehenden Abbildung dargestellt:
Die Visualisierung ist wie folgt:
Referenz:
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar. |