IBM Software Group Compresión y Optimización de Almacenamiento en IDS 11.50 Mariano Berruezo IM Premium Support [email protected] © 2010 IBM Corporation IBM Software Group ¿Qué es Compresión? La capacidad de almacenar registros en disco en un formato comprimido Permite reducir hasta un 90% de espacio de almacenamiento para datos Permite estimar el porcentaje de compresión posible Permite almacenar más datos en una página Permite contener más datos en el buffer pool Reduce el uso de logical logs Reduce el tamaño y la duración de los backups 2 © 2010 IBM Corporation IBM Software Group ¿Qué es Optimización de Almacenamiento? La capacidad de consolidar espacio libre al final de una tabla o fragmento La capacidad de retornar ese espacio libre al dbspace El espacio retornado puede ser usado por cualquier tabla del dbspace 3 © 2010 IBM Corporation IBM Software Group Conceptos de Compresión Basada en el algortimo de Lempel-Ziv (LZ) – diccionario estático, construido por muestreo aleatorio Se reemplazan los patrones repetitivos con símbolos numéricos de 12 bits Cualquier byte que no coincida con un patrón también es reemplazado con un símbolo numérico de 12 bits Los patrones pueden ser de hasta 15 bytes de longitud Máxima compresión possible = 90% (se reemplazan 15 bytes con solo 1.5 bytes = 12 bits) 4 © 2010 IBM Corporation IBM Software Group Símbolos de Compresión 12 bits permiten representar 4,096 símbolos – 256 símbolos reservados para bytes que no coinciden con ningún patrón – 3,840 símbolos para patrones repetitivos Patrones de más de 7 bytes usan hasta 2 símbolos numéricos Por lo tanto, no todos los patrones pueden ser comprimidos Se trata de capturar en el Diccionario los “mejores” patrones (por frecuencia y longitud) Los bytes que no coinciden con patrones pueden crecer hasta un 50% (8 bits se reemplazan por 12 bits) 5 © 2010 IBM Corporation IBM Software Group Los datos influyen en la Compresión Los datos con patrones repetitivos frecuentes y de mayor longitud tienen una mejor tasa de compresión – Las secuencias de 0 o blancos son muy comprimibles Los datos tipo “ruido” prácticamente no se pueden comprimir: – Datos Encriptados – Datos comprimidos por otro algortimo – Datos sin patrones repetitivos Se debe evitar tener columnas con datos tipo “ruido” entre columnas que sí tengan patrones repetitivos, ya que esto limita la posibilidad de definir patrones a través de columnas 6 © 2010 IBM Corporation IBM Software Group Ejemplo de Compresión 7 © 2010 IBM Corporation IBM Software Group Compresión: Impacto en la performance Cargas de trabajo orientadas a I/O: – La compresión puede mejorar la performance al reducir el I/O (tanto de datos como de logical logs) – Entran más datos en una página y por ende más datos en el Buffer Pool – Se reduce el tamaño de los registros de Log (o sea menos logging) Cargas de trabajo orientadas a CPU: – Se usa CPU adicional para comprimir y expandir los registros – Aunque no debería ser un impacto muy significativo 8 © 2010 IBM Corporation 9 0 TP S C imp H - o le TP rd C er H s TP T -l in C PC ei E H te -c m -p as ar h_ t tra sup ns p TP ac C E tio -s n et tle m TP en C t E -t ra de -h TP is to C C ry TP -o C C rd er -o s rd er _l TP in e C C -i TP te m TP CC C -s C t - c ock us to m er TP C C Percent Compressed IBM Software Group Tasas de Compresión (Compression Ratios) Compression Ratio 80 70 60 50 40 30 20 10 Table Description © 2010 IBM Corporation IBM Software Group Compresión en el Benchmark TPCC TPCC Performance TPCC & Compression 10W/5U 20W/5U 40W/6U 60W/7U 80W/8U 100W/9U 120W/10U # of warehouses / # of users Uncompressed 10 Compressed © 2010 IBM Corporation IBM Software Group Compresión y escalabilidad Uncompressed Database Size 11 Compressed Database Size Uncompressed Total I/Os Compressed Total Uncompressed I/Os Compressed I/Os / I/Os / Txn Txn Uncompressed Response Time Compressed Response Time © 2010 IBM Corporation IBM Software Group HDR, ER, CDC y Compresión Todas estas formas de replicación están soportadas sobre tablas comprimidas HDR – Las tablas se comprimirán en el secundario, si están comprimidas en el primario ER – El status de compresión de las tablas es independiente entre el source y el target, lo especifica el usuario CDC (DataMirror) – La compresión en los targets depende de lo que soporte la base de datos remota y lo que especifique el usuario 12 © 2010 IBM Corporation IBM Software Group OAT (Open Admin Tool) Tanto la compresión como la optimización de almacenamiento se pueden manejar y administrar desde la interface gráfica del OAT (ver slides a continuación …) 13 © 2010 IBM Corporation IBM Software Group Comprimiendo un Fragmento (Parte 1) 14 © 2010 IBM Corporation IBM Software Group Comprimiento un Fragmento (Parte 2) 15 © 2010 IBM Corporation IBM Software Group Comprimiento un Fragmento (Parte 3) 16 © 2010 IBM Corporation IBM Software Group Elementos que no pueden ser Comprimidos Datos fuera del row (ejemplo: blobs) Índices Tablas de Catálogo Tablas Temporales Partition tables (Tablespace Tablespace) Tablas de Diccionario Tablas en las siguientes bases de datos: sysuser, sysmaster, sysutils, syscdr, syscdcv1 17 © 2010 IBM Corporation IBM Software Group Almacenamiento del Diccionario de Compresión Cada tabla comprimida (no fragmentada) o fragmento tiene su propio diccionario de compresión El diccionario consume entre ~75K y 100K por tabla o fragmento Por lo tanto no se recomienda comprimir tablas pequeñas Todos los diccionarios para tablas y/o fragmentos en una determinada dbspace se almacenan en una tabla especial de diccionarios que se encuentra oculta en dicho dbspace La unión de todas las tablas de diccionario se puede ver desde sysmater: – Tabla syscompdicts_full: incluye el diccionario en binario; acceso restringido al usuario “informix” – Vista syscompdicts view: accesible por todos los usuarios; por seguridad, omite el diccionario en binario 18 © 2010 IBM Corporation IBM Software Group Operaciones de Compresión create_dictionary – Crea el diccionario de compresión – Cualquier row insertada o modificada a continuación, será comprimida – Las rows preexistentes no serán comprimidas compress – Ejecuta el create_dictionary si no existe el diccionario – Comprime todas las rows preexistentes – La table puede ser accedida por otros usuarios estimate_compression – Estima la tasa de compresión que podría lograrse (creando el diccionario) – Si ya está comprimida, estima la tasa actual (o 0 si no aplica) – También muestra el estimado de compresión que daría un nuevo diccionario (diferencia entre las dos estimaciones anteriores) 19 © 2010 IBM Corporation IBM Software Group Operaciones de Compresión (cont.) uncompress, uncompress_offline – Descomprime cada row en la tabla o fragmento – Desactiva el diccionario de compresión – “uncompress”: la tabla puede ser accedida – “uncompress_offline”: se pone un XLOCK en la tabla, no se permiten otros accesos purge_dictionary – Borra los viejos diccionarios inactivos – Es un comando separado porque ER y CDC (DataMirror) pueden necesitar los viejos diccionarios 20 © 2010 IBM Corporation IBM Software Group Operaciones de Optimización de Almacenamiento repack, repack_offline – Mueve las rows dentro de la tabla o fragmento para consolidad el espacio libre al final de la misma – “repack”: la tabla puede ser accedida – “repack_offline”: se pone un XLOCK en la tabla, no se permiten otros accesos shrink – Retorna cualquier espacio libre al final de la tabla o fragmento al dbspace – Se hace normalmente después de un repack 21 © 2010 IBM Corporation IBM Software Group Admin API Interface Todas las operaciones de compresión y optimización de almacenamiento se invocan a través del IDS Admin API construida con las siguientes UDRs: – execute function task(…); – execute function admin(…); Ejemplo: – execute function task(“table compress repack shrink”, “table_name”, “database_name”, “owner_name”); Esto permite utilizar la interface gráfica del OAT Permite ejecución remota (el DBA no necesita estar loggueado en la máquina de destino) 22 © 2010 IBM Corporation IBM Software Group Ejemplos reales – Caso 1 Cliente: Cadena de Supermercados Regional (RETAIL) Tabla: Cubo del DW (SAP Business Warehouse) Estado inicial (sin comprimir): < < < Number of pages allocated Number of pages used Number of data pages 435200 433934 433826 Estado final (comprimido): > > > Number of pages allocated Number of pages used Number of data pages 307200 307200 61813 Tasa de compresión: 85.75%!!! Mejora potencial: Ahorro de 44 GB de espacio en disco!! 23 © 2010 IBM Corporation IBM Software Group Ejemplos reales – Caso 2 Cliente: Distrib. Provincial de Agua Corriente (UTILITIES) Tabla: Facturas (Sistema Comercial) Estado inicial (sin comprimir): > > > Number of pages allocated Number of pages used Number of data pages 93800 93798 93774 Estado final (comprimido): < < < Number of pages allocated Number of pages used Number of data pages 32809 32809 32800 Tasa de compresión: 65%!! Mejora potencial: Ahorro de 5 GB de espacio en disco 24 © 2010 IBM Corporation IBM Software Group Conclusiones La Compresión y la Optimización de Almacenamiento permiten reducir espacio en disco y por ende minimizar los costos de HW Para cargas de trabajo orientadas a I/O es posible obtener también una mejora de performance La Compresión reduce el logging, los tiempos de backup y restore y el tamaño del backup Con Compresión se logra tener más datos en el buffer pool La Optimización de Almacenamiento permite que el espacio en disco recuperado por Compresión pueda ser reutilizado por otras tablas o fragmentos 25 © 2010 IBM Corporation IBM Software Group ¡Muchas gracias! Compresión y Optimización de Almacenamiento en IDS 11.50 Mariano Berruezo ([email protected]) Information Management Premium Support IBM Argentina 26 © 2010 IBM Corporation