Implementazione della compressione Unicode

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di Azure

SQL Server usa un'implementazione dell'algoritmo SCSU (Standard Compression Scheme for Unicode) per comprimere i valori Unicode archiviati in oggetti compressi di riga o pagina. Per questi oggetti compressi, la compressione Unicode è automatica per le colonne nchar(n) e nvarchar(n). Il motore di database archivia i dati Unicode come 2 byte, indipendentemente dalle impostazioni locali. Questa funzionalità è nota come codifica UCS-2. Per alcune impostazioni locali, l'implementazione della compressione SCSU in SQL Server consente di risparmiare fino al 50 percento di spazio di archiviazione.

Tipi di dati supportati

La compressione Unicode supporta i tipi di dati a lunghezza fissa nchar(n) e nvarchar(n). I valori di dati archiviati all'esterno di righe o in colonne nvarchar(max) non sono compressi.

Nota

La compressione Unicode non è supportata per i dati nvarchar(max) anche se archiviati nella riga. Questo tipo di dati, tuttavia, può ancora trarre vantaggio dalla compressione pagina.

Aggiornamento da versioni precedenti di SQL Server

Quando un database SQL Server viene aggiornato a SQL Server, le modifiche legate alla compressione Unicode non vengono apportate ad alcun oggetto database, compresso o meno. Una volta aggiornato il database, gli effetti sugli oggetti sono i seguenti:

  • Se l'oggetto non è compresso, non viene apportata alcuna modifica e l'oggetto continua a funzionare come in precedenza.

  • Gli oggetti sui quali è stata applicata la compressione di riga o di pagina continuano a funzionare come in precedenza. I dati non compressi restano in formato non compresso finché non viene aggiornato il loro valore.

  • Le nuove righe inserite in una tabella sulla quale sia stata applicata la compressione di riga o di pagina vengono compresse utilizzando la compressione Unicode.

    Nota

    Per sfruttare a pieno i vantaggi della compressione Unicode, l'oggetto deve essere ricompilato con la compressione di pagina o di riga.

Influenza della compressione Unicode sull'archiviazione dei dati

Quando un indice viene creato o ricompilato, oppure quando un valore viene modificato in una tabella compressa con compressione di riga o di pagina, l'indice o il valore interessato viene archiviato compresso solo se la sua dimensione compressa è inferiore alla dimensione corrente. Ciò impedisce che le dimensioni delle righe in una tabella o in un indice aumentino a causa della compressione Unicode.

Lo spazio di archiviazione risparmiato grazie alla compressione dipende dalle caratteristiche dei dati che si stanno comprimendo e dalle impostazioni locali dei dati. La seguente tabella elenca i risparmi possibili in termini di spazio per diverse impostazioni locali.

Impostazioni locali Percentuale di compressione
Inglese 50%
Tedesco 50%
Hindi 50%
Turco 48%
Vietnamita 39%
Giapponese 15%

Passaggi successivi