Implementazione della compressione Unicode

In SQL Server viene utilizzata 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). 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 in righe. Tuttavia, questo tipo di dati può ancora sfruttare i vantaggi della compressione di pagina.

Aggiornamento da versioni precedenti di SQL Server

Quando un database SQL Server viene aggiornato a SQL Server 2008 R2, le modifiche legate alla compressione Unicode non vengono apportate a nessun oggetto di database, compresso o non compresso. 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%