Implementierung von Unicode-Komprimierung

Anwendungsbereich: JaSQL Server (alle unterstützten Versionen) JaAzure SQL-Datenbank

SQL Server verwendet eine Implementierung des Algorithmus „Standardkomprimierungsschema für Unicode (SCSU)“, um Unicode-Werte zu komprimieren, die in zeilen- oder seitenkomprimierten Objekten gespeichert werden. Für diese komprimierten Objekte erfolgt die Unicode-Komprimierung für nchar(n) - und nvarchar(n) -Spalten automatisch. Datenbank-Engine speichert Unicode-Daten als 2 Bytes, unabhängig vom Gebietsschema. Dies wird UCS-2-Codierung genannt. Bei einigen Gebietsschemas kann durch die Implementierung der SCSU-Komprimierung in SQL Server bis zu 50 Prozent des Speicherplatzes eingespart werden.

Unterstützte Datentypen

Unicode-Komprimierung unterstützt den nchar(n) -Datentyp mit fester Länge und den nvarchar(n) -Datentyp. Datenwerte, die außerhalb von Zeilen oder in nvarchar(max) -Spalten gespeichert werden, werden nicht komprimiert.

Hinweis

Unicode-Komprimierung wird nicht für nvarchar(max) -Daten unterstützt, auch wenn sie in Zeile gespeichert wird. Dieser Datentyp kann immer noch jedoch von der Seitenkomprimierung profitieren.

Aktualisieren von früheren Versionen von SQL Server

Wenn eine SQL Server-Datenbank auf SQL Server aktualisiert wird, werden keine Änderungen im Zusammenhang mit Unicode-Komprimierung für die Datenbankobjekte durchgeführt – unabhängig davon, ob diese komprimiert oder nicht komprimiert sind. Das Datenbankupgrade wirkt sich wie folgt auf Objekte aus:

  • Wenn das Objekt nicht komprimiert ist, werden keine Änderungen durchgeführt, und das Objekt funktioniert wie bisher.

  • Zeilen- oder seitenkomprimierte Objekte funktionieren wie bisher. Unkomprimierte Daten liegen in unkomprimierter Form vor, bis ihr Wert aktualisiert wird.

  • Neue Zeilen, die in eine zeilen- oder seitenkomprimierte Tabelle eingefügt werden, werden mittels Unicode-Komprimierung komprimiert.

    Hinweis

    Um die Vorteile der Unicode-Komprimierung in vollem Umfang zu nutzen, muss das Objekt mit Seiten- oder Zeilenkomprimierung neu erstellt werden.

Auswirkungen der Unicode-Komprimierung auf Datenspeicher

Wenn ein Index erstellt wird oder neu erstellt wird oder wenn ein Wert in einer Tabelle geändert wird, die mit Zeilen- oder Seitenkomprimierung komprimiert wurde, wird der betroffene Index oder Wert nur dann komprimiert gespeichert, wenn die komprimierte Größe kleiner als die aktuelle Größe ist. Dies verhindert, dass Zeilen in einer Tabelle oder in einem Index aufgrund der Unicode-Komprimierung an Größe zunehmen.

Der Speicherplatz, der durch die Komprimierung eingespart wird, ist von den Eigenschaften der Daten abhängig, die komprimiert werden, und vom Gebietsschema der Daten. In der folgenden Tabelle werden die Speicherplatzeinsparungen aufgelistet, die für verschiedene Gebietsschemas erreicht werden können.

Gebietsschema Komprimierung in Prozent
Englisch 50%
Deutsch 50%
Hindi 50%
Türkisch 48 %
Vietnamesisch 39%
Japanisch 15 %

Weitere Informationen

Datenkomprimierung
sp_estimate_data_compression_savings (Transact-SQL)
Implementierung von Seitenkomprimierung
sys.dm_db_persisted_sku_features (Transact-SQL)