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% |