Informix compression

11/05/2016

Compression

Definición: Capacidad de almacenar filas de datos en formato comprimido.

Ventajas:

  1. Ahorro de hasta un 90% de almacenamiento en disco.
  2. Una página puede contener más información. Menos operaciones de I/O
  3. El bufferPool puede contener más información. Más información en memoria.
  4. Reducción de uso del logical log.
  5. Posibilidad de liberar el espacio libre que ha dejado la compresión.
  6. Backups y restores más rápidos.

Posibilidad de estimación del ahorro de espacio en disco sin tener que ejecutar formalmente la compression.

EXECUTE FUNCTION task(“table estimate_compression”,”home”,

“insurance”,”fgomez”);

 

Posibilidad de comprimir datos de tipo Byte/Text cuando están almacenados en el mismo tablespace que las filas de datos.

Capacidad de comprimir tablas e índices en paralelo.

EXECUTE FUNCTION task(“table compress rows parallel”,”dental”);

El optimizador puede escoger caminos diferentes después de la compresión.

En un cluster HA las tablas comprimidas en el primario también están comprimidas en los secundarios. No ocurre lo mismo con ER.

Compresión de índices:

  • Sólo de pueden comprimir índices de tipo Btree de tipo detached.
  • Se puede comprimir, empaquetar (repack) y liberar espacio (shrink) de un índice existente.
  • Se puede crear un índice comprimido. (opción COMPRESSED de CREATE INDEX)
  • No se puede descomprimir un índice comprimido.
  • Sólo se comprimen los nodos hoja del árbol.
  • Ventajas:
    1. Ahorro de espacio en disco.
    2. Ahorro de operaciones I/O.

Auto-Compression

  • Es una nueva característica de la versión 11.70 que permite comprimir ciertas tablas y/o fragmentos que cumplen determinadas condiciones.
  • Esta operación está deshabilitada por defecto. Para activarla actualice la columna tk_enable a ‘t’ de la fila tk_name = ‘auto_crsd’ de la tabla sysadmin:ph_task:

DATABASE sysadmin;

UPDATE ph_task SET tk_enable = ‘t’ WHERE tk_name = ‘auto_crsd’

  • Las condiciones que deben cumplir las tablas para ser automáticamente comprimidas se definen en la tabla ph_threshold y están basadas en el número de filas.

DATABASE sysadmin;

UPDATE ph_threshold SET value = ‘t’ WHERE name =’AUTOCOMPRESS_ENABLED’;

DATABASE sysadmin;

UPDATE ph_threshold SET value = ‘10000’ WHERE name =’AUTOCOMPRESS_ROWS’;

  • De esta forma se crea automáticamente un diccionario de compresión para la tabla cuando el número de filas alcanza el umbral configurado.
  • Todas las filas se comprimen y las nuevas se cargan también comprimidas.
  • El número mínimo de filas que deben existir en la tabla para qye pueda ser auto-comprimida es 2000.
  • La auto-compression no está disponible para índices.