Requisitos: En la base de datos SQL Server hay una tabla (por ejemplo, tabla de log, tabla de log de solicitudes) que ocupa un espacio en disco muy grande, quizá cientos de GB, ¿cómo reducir el uso de espacio en tablas? La compresión de datos (ahorro de espacio) puede activarse para textos muy repetitivos (por ejemplo, HTML, JSON, logs).
Compresión ROW
La compresión cambiará el almacenamiento físico de los datos, pero no la estructura lógica de los mismos. El proceso de compresión de línea:
Identifica el tipo de dato de cada columna y conviértelo a una longitud variable Finalmente, la cantidad de solicitudes de espacio de almacenamiento se reduce a la demanda real Tras la compresión, la cantidad de datos almacenados en cada página aumenta Después de la compresión, reduce la cantidad de metadatos Por ejemplo, si el tipo de dato de una columna es smallint, el sistema asigna 2 bytes por defecto Pero en realidad, solo se utiliza 1 byte de espacio, y si se activa la compresión en la tabla, se puede asignar bajo demanda
Compresión PAGE
La compresión de páginas realiza operaciones adicionales para mejorar la compresión de filas Operaciones principales: compresión de línea, compresión de prefijos, compresión de diccionario
Consumo de CPU: compresión PAGE > compresión de fila
Prueba
Crea una nueva tabla Users1 y Users2, insertan ambas 100.000 piezas de datos, y el script sql es el siguiente:
Para ver la ocupación de espacio en la tabla, todos ellos de 3,27 MB, el comando es el siguiente:
Como se muestra a continuación:
Para ver el estado de compresión de la tabla Users2, el comando es el siguiente:
Como se muestra a continuación:
sp_estimate_data_compression_savingsEstima los ahorros que pueden producirse cuando activas tablas o particiones para filas, páginas, almacenes de columnas, archivos de almacén de columnas o compresión XML. El comando es el siguiente:
La salida es la siguiente:
object_name schema_name index_id partition_number size_with_current_compression_setting(KB) size_with_requested_compression_setting(KB) sample_size_with_current_compression_setting(KB) sample_size_with_requested_compression_setting(KB) Usuarios2 dbo 1 1 3368 1296 3448 1328
size_with_current_compression_setting (KB) 3368 KB El índice ocupa ≈ 3,29 MB con los ajustes de compresión actuales size_with_requested_compression_setting (KB) 1296 KB Huella estimada ≈ 1,27 MB si activas el nuevo método de compresión que solicitas, como PAGE o ROW Para ejecutar compresión de página, el comando es el siguiente:
Comparación de efectos:La tabla Users2 es de 3,27 MB antes de la compresión y 1,23 MB después de la compresión, como se muestra en la figura siguiente:
La visualización es la siguiente:
Referencia:
El inicio de sesión del hipervínculo es visible.
El inicio de sesión del hipervínculo es visible.
El inicio de sesión del hipervínculo es visible. |