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