Unicode-komprimeringsimplementering

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

SQL Server använder en implementering av SCSU-algoritmen (Standard Compression Scheme for Unicode) för att komprimera Unicode-värden som lagras i rad- eller sidkomprimerade objekt. För dessa komprimerade objekt är Unicode-komprimering automatiskt för kolumnerna nchar(n) och nvarchar(n). Databasmotorn lagrar Unicode-data som 2 byte, oavsett språkvariant. Detta kallas UCS-2-kodning. För vissa nationella inställningar kan implementeringen av SCSU-komprimering i SQL Server spara upp till 50 procent i lagringsutrymme.

Datatyper som stöds

Unicode-komprimering stöder datatyperna nchar(n) och nvarchar(n) med fast längd. Datavärden som lagras utanför rad eller i nvarchar(max) -kolumner komprimeras inte.

Anmärkning

Unicode-komprimering stöds inte för nvarchar(max) data även om de lagras på rad. Den här datatypen kan dock fortfarande dra nytta av sidkomprimering.

Uppgradera från tidigare versioner av SQL Server

När en SQL Server-databas uppgraderas till SQL Server görs inte Unicode-komprimeringsrelaterade ändringar i något databasobjekt, komprimerade eller okomprimerade. När databasen har uppgraderats påverkas objekten på följande sätt:

  • Om objektet inte komprimeras görs inga ändringar och objektet fortsätter att fungera som det gjorde tidigare.

  • Rad- eller sidkomprimerade objekt fortsätter att fungera som tidigare. Okomprimerade data förblir i okomprimerad form tills dess värde uppdateras.

  • Nya rader som infogas i en rad- eller sidkomprimerad tabell komprimeras med Unicode-komprimering.

    Anmärkning

    Om du vill dra full nytta av fördelarna med Unicode-komprimering återskapar du objektet med sid- eller radkomprimering.

Hur Unicode-komprimering påverkar datalagring

När ett index skapas eller återskapas eller när ett värde ändras i en tabell som komprimerades med rad- eller sidkomprimering, lagras det berörda indexet eller värdet endast komprimerat om dess komprimerade storlek är mindre än dess aktuella storlek. Detta förhindrar att rader i en tabell eller ett index ökar i storlek på grund av Unicode-komprimering.

Det lagringsutrymme som komprimering sparar beror på egenskaperna för de data som komprimeras och lokaliseringen av data. I följande tabell visas de utrymmesbesparingar som kan uppnås för flera språk eller regioninställningar.

Lokal Komprimeringsprocent
Engelska 50 %
Tyska 50 %
Hindi 50 %
Turkiska 48%
Vietnamesiska 39%
Japanska 15 %

Nästa steg