Implementazione della compressione UnicodeUnicode Compression Implementation

QUESTO ARGOMENTO SI APPLICA A: sìSQL Server (a partire dalla versione 2016)sìDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL 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. uses an implementation of the Standard Compression Scheme for Unicode (SCSU) algorithm to compress Unicode values that are stored in row or page compressed objects. Per questi oggetti compressi, la compressione Unicode è automatica per le colonne nchar(n) e nvarchar(n) .For these compressed objects, Unicode compression is automatic for nchar(n) and nvarchar(n) columns. Motore di databaseDatabase Engine archivia i dati Unicode come 2 byte, indipendentemente dalle impostazioni locali.The Motore di databaseDatabase Engine stores Unicode data as 2 bytes, regardless of locale. Questa funzionalità è nota come codifica UCS-2.This is known as UCS-2 encoding. Per alcune impostazioni locali, l'implementazione della compressione SCSU in SQL Server consente di risparmiare fino al 50 percento di spazio di archiviazione.For some locales, the implementation of SCSU compression in SQL Server can save up to 50 percent in storage space.

Tipi di dati supportatiSupported Data Types

La compressione Unicode supporta i tipi di dati a lunghezza fissa nchar(n) e nvarchar(n) .Unicode compression supports the fixed-length nchar(n) and nvarchar(n) data types. I valori di dati archiviati all'esterno di righe o in colonne nvarchar(max) non sono compressi.Data values that are stored off row or in nvarchar(max) columns are not compressed.

Nota

La compressione Unicode non è supportata per i dati nvarchar(max) anche se archiviati nella riga.Unicode compression is not supported for nvarchar(max) data even if it is stored in row. Questo tipo di dati, tuttavia, può ancora trarre vantaggio dalla compressione pagina.However, this data type can still benefit from page compression.

Aggiornamento da versioni precedenti di SQL ServerUpgrading from Earlier Versions of SQL Server

Quando un database SQL ServerSQL Server viene aggiornato a SQL Server 2017SQL Server 2017, le modifiche legate alla compressione Unicode non vengono apportate ad alcun oggetto di database, compresso o meno.When a SQL ServerSQL Server database is upgraded to SQL Server 2017SQL Server 2017, Unicode compression–related changes are not made to any database object, compressed or uncompressed. Una volta aggiornato il database, gli effetti sugli oggetti sono i seguenti:After the database is upgraded, objects are affected as follows:

  • Se l'oggetto non è compresso, non viene apportata alcuna modifica e l'oggetto continua a funzionare come in precedenza.If the object is not compressed, no changes are made and the object continues to function as it did previously.

  • Gli oggetti sui quali è stata applicata la compressione di riga o di pagina continuano a funzionare come in precedenza.Row- or page-compressed objects continue to function as they did previously. I dati non compressi restano in formato non compresso finché non viene aggiornato il loro valore.Uncompressed data remains in uncompressed form until its value is updated.

  • 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.New rows that are inserted into a row- or page-compressed table are compressed using Unicode compression.

    Nota

    Per sfruttare a pieno i vantaggi della compressione Unicode, l'oggetto deve essere ricompilato con la compressione di pagina o di riga.To take full advantage of the benefits of Unicode compression, the object must be rebuilt with page or row compression.

Influenza della compressione Unicode sull'archiviazione dei datiHow Unicode Compression Affects Data Storage

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.When an index is created or rebuilt or when a value is changed in a table that was compressed with row or page compression, the affected index or value is stored compressed only if its compressed size is less than its current size. Ciò impedisce che le dimensioni delle righe in una tabella o in un indice aumentino a causa della compressione Unicode.This prevents rows in a table or index from increasing in size because of Unicode compression.

Lo spazio di archiviazione risparmiato grazie alla compressione dipende dalle caratteristiche dei dati che si stanno comprimendo e dalle impostazioni locali dei dati.The storage space that compression saves depends on the characteristics of the data that is being compressed and the locale of the data. La seguente tabella elenca i risparmi possibili in termini di spazio per diverse impostazioni locali.The following table lists the space savings that can be achieved for several locales.

Impostazioni localiLocale Percentuale di compressioneCompression percent
IngleseEnglish 50%50%
TedescoGerman 50%50%
HindiHindi 50%50%
TurcoTurkish 48%48%
VietnamitaVietnamese 39%39%
GiapponeseJapanese 15%15%

Vedere ancheSee Also

Compressione dei dati Data Compression
sp_estimate_data_compression_savings (Transact-SQL) sp_estimate_data_compression_savings (Transact-SQL)
Implementazione della compressione di pagina Page Compression Implementation
sys.dm_db_persisted_sku_features (Transact-SQL) sys.dm_db_persisted_sku_features (Transact-SQL)