Introducción: SQLServer2005SP2 nos trae la función vardecimal. Esta función permite que los datos decimales de longitud fija originales se almacenen en un formato de longitud variable en el archivo de datos. Se dice que esta función puede ahorrar espacio para el almacén de datos, y SQLServer2008 lo es. En base a esto, se ha mejorado la función de compresión de datos.
La función de compresión de datos en SQL Server se inició por primera vez en SQL Server 2005. Se agregó un nuevo formato de almacenamiento llamado vardecimal a las ediciones empresarial y de desarrollo. Esta función puede afectar los campos decimales y numéricos. Si las tablas de la base de datos contienen datos de tipo decimal y numérico, los usuarios pueden utilizar el formato de almacenamiento vardecimal para reducir el tamaño de la base de datos. Vale la pena señalar que la cantidad de espacio que se puede ahorrar depende de cuántas columnas de datos decimales o numéricos contenga la base de datos, la distribución de los datos y el tamaño de la tabla.
Usar compresión de datos
Es esta función de compresión de datos la que se ha convertido en otra característica nueva de SQL Server 2008: la compresión de datos. Con esta característica, puede reducir el tamaño de los subconjuntos de tablas de datos, índices y particiones. Pero, ¿por qué debería mejorarse esta función que existía anteriormente en SQL Server 2005 en la versión de nueva generación del sistema? En un entorno de mercado donde los costos de almacenamiento disminuyen constantemente, ¿qué beneficios puede aportar la tecnología de compresión de datos a las empresas?
Aunque los costos de almacenamiento ya no son un factor sensible al que las empresas prestan atención, esto no significa que el tamaño de la base de datos no tendrá un impacto en la eficiencia de las operaciones empresariales, porque además de afectar los costos de almacenamiento, el tamaño de la base de datos también está muy relacionado con la gestión. costos y problemas de rendimiento.
En primer lugar, debido a que es necesario realizar una copia de seguridad de la base de datos, cuanto mayor sea el tamaño de la base de datos, mayor será el tiempo de copia de seguridad y aumentará el costo del hardware de copia de seguridad. Otro costo de gestión es el costo de mantenimiento de la base de datos. En términos de rendimiento, cuando SQL Server escanea el disco para leer datos, lee datos en unidades de páginas de datos. Por lo tanto, si una página de datos contiene más filas de datos, SQL Server obtendrá más datos en una página de datos IO. ser más, lo que también traerá mejoras de rendimiento.
En comparación con los datos comprimidos vardecimal en SQL Server2005SP2, los datos de prueba publicados actualmente por SQLServer2008 utilizan una nueva tecnología de compresión de datos para lograr una mayor velocidad de almacenamiento, junto con un mayor espacio de almacenamiento para la recuperación ante desastres de las empresas. Todo esto es SQLServer2008. esta nueva característica.
Página 2: Dos modos de compresión
Después de comprender los beneficios reales de la compresión de datos, podrá sentir la penetración del concepto. Con la ayuda de la compresión de datos, se reducen los costos de almacenamiento, se mejora el rendimiento de las consultas, se reduce la E/S y se aumentan las tasas de clics en el buffer. Se puede ver que esta función sigue siendo muy efectiva en el proceso de aplicación. Hay dos métodos de aplicación para la compresión de datos en SQL Server 2008, a saber, la compresión de filas y la compresión de páginas. A continuación se muestra una breve comparación de estos dos tipos de compresión de datos.
Seleccionar el tipo de compresión durante el Asistente de compresión de datos
Compresión de filas. La compresión de filas puede almacenar tipos de longitud fija como tipos de almacenamiento de longitud variable. Por ejemplo, una columna char(100) almacenada en un formato de almacenamiento de longitud variable solo utilizará los datos definidos por la cantidad de almacenamiento. El "SQLServer2008" almacenado solo necesita almacenar 15 caracteres después de la compresión en lugar de los 100 caracteres, lo que ahorra un 85% de espacio de almacenamiento. Esta es una extensión de la idea del formato de almacenamiento vardecimal proporcionada en SQLServer2005ServicePack2. También cabe destacar que este modo de compresión optimizará los valores NULL y 0 de todos los tipos de datos para que no ocupen ningún byte.
Aunque la compresión de datos de SQLServer2008 amplía esta funcionalidad, se procesan todos los tipos de datos de longitud fija, incluidos enteros, caracteres y flotantes. Ahora los datos no se almacenan en bytes de tamaño fijo, sino en los bytes mínimos requeridos, lo que se puede realizar simplemente habilitando la compresión de filas. Sin embargo, la compresión de filas no puede manejar tipos de datos XML, BLOB y MAX.
Modo de compresión de página. Esta característica de compresión, basada en la compresión de filas, minimiza los datos redundantes almacenados al almacenar solo una vez los mismos bytes de eventos en una página. Las tablas y los índices se comprimen mediante la compresión de páginas, además de la compresión de filas, también se utilizan la compresión de prefijos y la compresión de diccionario.
La compresión de datos reducirá el tamaño de su tabla o métricas de índice; es mejor evaluar primero el ahorro de espacio después de la compresión. Cada página se comprime individualmente y los prefijos y diccionarios también se almacenan dentro de la página. Dado que una página es la unidad atómica de asignación de almacenamiento, no tiene sentido comprimir media página en un cuarto de página. Por lo tanto, el proceso de compresión solo comenzará cuando el contenido de la página esté casi lleno.
También existe una compensación en el rendimiento cuando se utiliza la compresión de filas y páginas, ya que el uso de la CPU aumentará, pero el uso de E/S y la huella de memoria disminuirán. Pero todas las opciones de compresión pueden convertirse en opciones exclusivas para SQLServer2008 Enterprise Edition.
Página 3: Cómo utilizar la compresión de datos
Apéndice (cómo utilizar la compresión de datos):
(1) Habilitar la compresión de filas
Si queremos habilitar la compresión de filas en una tabla específica, podemos ejecutar la siguiente declaración:
CREAR TABLA Alfa(col1 int,col2 char(1000))
CON (COMPRESIÓN_DATOS = FILA)
(2) Habilitar la compresión de páginas
Si queremos habilitar la compresión en una partición específica, podemos ejecutar la siguiente declaración:
CREAR TABLA Alpha_Partition(col1 int,col2 char(1000))
ONPartitionScheme(col 1)
CON
(COMPRESIÓN_DATOS = PÁGINA EN)
PARTICIONES(1-3)
(3)Modificar la compresión
Si desea modificar un índice existente para usar compresión, ejecute la siguiente instrucción:
ALTERAR EL ÍNDICE Collndx EN Alpha RECONSTRUIR
CON (DATA_C0MPRESSION=PÁGINA)
ALTERAR EL ÍNDICE Collndx EN Alpha RECONSTRUIR
partición=2
CON (COMPRESIÓN_DATOS=PÁGINA)
Las opciones de compresión en SQL Server 2008 se pueden configurar mediante Opción al crear una tabla o índice, por ejemplo:
CREAR TABLA TestTable (col1 int,col2varchar(200))CON(DATA_COMPRESSION = FILA);
Si necesita cambiar las opciones de compresión de una partición, puede utilizar la siguiente declaración:
ALTERAR TABLA TestTable RECONSTRUIR PARTICIÓN = 1 CON(DATACOMPRESSION=PAGE);
Si necesita configurar diferentes opciones de compresión para cada partición de la tabla particionada, puede usar la siguiente declaración: (SQLServer2008 puede usar diferentes opciones de compresión para diferentes particiones. Esto es muy importante para las aplicaciones de almacenamiento de datos porque la tabla de hechos del almacén de datos Generalmente hay una o varias particiones activas y los datos en estas particiones a menudo necesitan actualizarse. Para evitar que la compresión de datos genere una carga de procesamiento adicional para las actualizaciones de datos en estas particiones, puede desactivar la opción de compresión para estas particiones.
CREAR TABLA Tabla particionada (col1 int, col2varchar(200))
EN PS1 (col1)
CON (DATA_COMPRESSION = FILA EN PARTICIONES(1),
DATA_COMPRESSION = PÁGINA EN PARTICIÓN (2 A 4));
Si está configurando opciones de compresión para un índice, puede usar:
CREAR ÍNDICE IX_TestTable_Col1 ONTestTable(Col1)CON(DATA_COMPRESSION = FILA);
Si desea modificar las opciones de compresión de un índice, puede utilizar:
ALTER INDEX IX_TestTable_Col1 ONTestTableREBUILDWITH(DATA_COMPRESSION = FILA);