Implementierung von Unicode-Komprimierung

In SQL Server wird eine Implementierung des Algorithmus "Standardkomprimierungsschema für Unicode (SCSU)" verwendet, 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. Database Engine (Datenbankmodul) 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.

HinweisHinweis

Die Unicode-Komprimierung wird nicht für nvarchar(max)-Daten unterstützt, auch wenn sie in Zeilen gespeichert sind. Für diesen Datentyp kann dennoch die Seitenkomprimierung verwendet werden.

Aktualisieren von früheren Versionen von SQL Server

Wenn eine SQL Server-Datenbank auf SQL Server 2008 R2 aktualisiert wird, werden keine Änderungen im Zusammenhang mit Unicode-Komprimierung für die Datenbankobjekte durchgeführt – unabhängig davon, ob diese komprimiert oder unkomprimiert 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.

    HinweisHinweis

    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%