Condividi tramite


Implementazione della compressione Unicode

SQL Server utilizza 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 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 2012, le modifiche legate alla compressione Unicode non vengono apportate ad alcun oggetto di 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%

Vedere anche

Riferimento

sp_estimate_data_compression_savings (Transact-SQL)

sys.dm_db_persisted_sku_features (Transact-SQL)

Concetti

Compressione dei dati

Implementazione della compressione di pagina