Implementación de la compresión Unicode

SQL Server usa una implementación del algoritmo SCSU (esquema de compresión estándar para Unicode) para comprimir los valores Unicode 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 datos nvarchar(max) aunque se almacenen en una fila. Sin embargo, este tipo de datos se puede seguir beneficiando 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 2008 R2, 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 sólo 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%