Implementación de la compresión Unicode
SQL Server usa una implementación del algoritmo del esquema de compresión estándar para Unicode(SCSU) para comprimir los valores Unicode que están almacenados en objetos comprimidos de fila o página. Para estos objetos comprimidos, la compresión Unicode es automática para columnas nchar(n) y nvarchar(n). Motor de base de datos almacena los datos Unicode como 2 bytes, independientemente de la configuración regional. Esto se denomina codificación UCS-2. Para algunas configuraciones regionales, la implementación de la compresión SCSU en SQL Server puede ahorrar hasta el 50% de espacio de almacenamiento.
Tipos de datos compatibles
La compresión Unicode admite los tipos de datos nchar(n) y nvarchar(n) de longitud fija. Los valores de datos que no están almacenados de forma consecutiva o en columnas nvarchar(max) no se comprimen.
[!NOTA]
La compresión Unicode no se admite para los datos de nvarchar(max) aunque estén almacenados de forma consecutiva. Sin embargo, este tipo de datos puede seguir beneficiándose de la compresión de página.
Actualizar de versiones anteriores de SQL Server
Cuando una base de datos de SQL Server se actualiza a SQL Server 2012, los cambios relacionados con la compresión Unicode no se llevan a cabo en ningún objeto de base de datos, tanto si está comprimido como si no lo está. Una vez actualizada la base de datos, los objetos se ven afectados de la siguiente forma:
Si el objeto no está comprimido, no se realiza ningún cambio y sigue funcionando como lo hacía anteriormente.
Los objetos comprimidos de fila o página siguen funcionando como lo hacían anteriormente. Los datos sin comprimir permanecen sin comprimir hasta que se actualiza su valor.
Las nuevas filas que se insertan en una tabla comprimida de fila o página se comprimen con la compresión Unicode.
[!NOTA]
Para aprovechar al máximo las ventajas de la compresión Unicode, el objeto se debe regenerar con la compresión de página o fila.
Cómo afecta la compresión Unicode al almacenamiento de datos
Cuando un índice se crea o regenera, o bien cuando un valor se cambia en una tabla que se comprimió con compresión de fila o página, el índice o el valor afectado se almacena comprimido solo si su tamaño comprimido es menor que su tamaño actual. De este modo se evita que las filas de una tabla o índice aumenten de tamaño debido a la compresión Unicode.
El espacio de almacenamiento que la compresión ahorra depende de las características de los datos que se vayan a comprimir y la configuración regional de dichos datos. En la tabla siguiente se enumeran los ahorros de espacio que se pueden conseguir para diferentes configuraciones regionales.
Configuración regional |
Porcentaje de compresión |
---|---|
Inglés |
50% |
Alemán |
50% |
Hindi |
50% |
Turco |
48% |
Vietnamita |
39% |
Japonés |
15% |
Vea también
Referencia
sp_estimate_data_compression_savings (Transact-SQL)
sys.dm_db_persisted_sku_features (Transact-SQL)