Hybrid Columnar Compression - Exadata | ExpoDBA

Hybrid Columnar Compression - Exadata

Hybrid Columnar Compression - Exadata

 
Si uno tiene la suerte de poder estar en contacto con un Oracle Exadata tendrá la chance de conocer y disfrutar algunas ventajas que éste ofrece exclusivamente. Una de ellas es un nuevo método de compresión llamado "Hybrid Columnar Compression"

En este artículo encontrarás un resumen introductorio a esta característica propia del Exadata. Si quieres profundizar sobre el tema, te recomiendo dirigirte a las fuentes citadas al pie del mismo.


Primero conozcamos la parte conceptual...

Compression Unit - HCC Hybrid Columnar Compression

¿Qué es el HCC?

Es una característica incluida dentro de los "Exadata Storage Server". Esta funcionalidad provee un alto nivel de compresión de datos en objetos de una base de datos Oracle y tiene la posibilidad de personalizar el nivel de compresión dependiendo si el ambiente es de tipo OLTP (escrituras y lecturas frecuentes hacia datos no secuenciales) o del tipo "Datawarehousing" (consultas frecuentes hacia grandes cantidades de datos).

Esta característica permite a la base de datos reducir el número de lecturas y escrituras físicas requeridas para analizar una tabla, de esta manera grandes cantidades de información pueden ser procesadas rápidamente sin caer en altas tasas de I/O.

 

Es posible utilizar "Exadata Hybrid Columnar Compression" en varios niveles:

  • Nivel de tabla
  • Nivel de partición
  • Nivel de Tablespace

Existen dos tipos de "Exadata Hybrid Columnar Compression":

  1. Warehouse Compression
    • Optimiza el rendimiento de consultas.
    • Adecuado para datos de aplicaciones del tipo "Warehouse".
    • Existen dos opciones: Query High y Query Low.
  2. Online Archival Compression
    • Se enfoca en obtener una máxima compresión de los datos.
    • Adecuado para datos que no cambian frecuentemente.
    • Existen dos opciones: Archive High y Archive Low

Conclusiones Generales:

  • Esta característica se relaciona al nuevo mecanismo de compresión y a las unidades lógicas de almacenamiento que se generan a raíz de la agrupación de columnas para un grupo de filas, esto hace que la compresión sea más eficiente.
  • Todo esto aplica para tablas en donde los datos no son modificados… o mejor dicho, la tasa de update es muy baja, dado que con las DMLs (update) se pasa de una compresión HCC a una compresión OLTP, además de generar encadenamiento de filas.
  • Cuando se hace la actualización de una fila, en vez de bloquear sólo la fila se bloquea toda la Unidad de Compresión (CU) que almacena la fila, esto puede redundar en bloqueos de hasta 64Kb, que es la medida de un CU.
  • La compresión HCC puede ser definida a nivel de partición en una tabla y no hay problemas con los respaldos de una tabla HCC , pero el respaldo final pesa casi lo mismo que una tabla normal, dado que Oracle descomprime la tabla antes de respaldarla. 

Y ahora pasemos a la parte más linda... la práctica:

 

Query Compression:

CREATE TABLE emp (…) COMPRESS FOR QUERY [LOW | HIGH];

Archive Compression:

CREATE TABLE emp (…) COMPRESS FOR ARCHIVE [LOW | HIGH];

En caso de que la tabla a comprimir ya exista, se puede utilizar uno de los siguientes métodos:

Utilizando el paquete DBMS_REDEFINITION
ALTER TABLE <NOMBRE TABLA> MOVE COMPRESS FOR <TIPO COMPRESION>;

Fuentes:

http://www.oracleyyo.com/media/blogs/oracleyyo/ArchivosBlog/Pdf/Compresion%20HCC%20en%20Exadata.pdf
http://www.oracle.com/technetwork/es/articles/database-performance/exadata-hybrid-columnar-compression-2098797-esa.html

 

 

 


Espero que les guste y les sirva en algún momento de sus vidas...

 

Eso es todo. Saludos.

Facundo E. Grande

Lanús - Buenos Aires - Argentina


"Hay poca educación, hay muchos cartuchos. Cuando se lee poco, se dipara mucho" (La Bala - Calle 13)