Anuncios

Bienvenidos sean a este post, hoy hablaremos sobre la compresion en este motor de almacenamiento.

Anuncios

Como mencionamos en un algun momento InnoDB soporta comprension y tenemos dos razones principalmente para utilizarlo:

  • Ahorro de espacio en el disco
  • Reduccion de E/S
Anuncios
Anuncios

La primera razon esta pensada para los discos SSD porque muchos accesos de E/S pueden reducir la vida del disco, otro motivo son las cargas de trabajo dado que las constantes lecturas de E/S en el disco pueden convertirse en un cuello de botella, por lo tanto al reducir el tamaño se reduce la cantidad de datos a mover entre los buffers y el disco, sin embargo esto tiene un costo, las paginas leidas del disco necesitan ser descomprimidas antes de ser insertadas en el pool de buffers, y los cambios en el pool de buffer y buffer de cambio deben ser comprimidos antes de ser enviados al disco, lo cual sobrecarga al CPU provocando una baja performance.

Anuncios
Anuncios

Es tambien importante considerar cuanto de una tabla puede ser comprimido, para este calculo InnoDB utiliza el algoritmo LZ77 la cual reemplaza datos largos repetidos por cadenas mas cortas, esta tecnica trabaja muy bien con textos pero no tanto con numeros, las columnas TEXT, BLOB y VARCHAR son almacenadas en paginas separadas cuando es necesario, si una fila no encaja en su pagina sus columnas mas largas son movidas a unas paginas especiales llamadas paginas de desbordamiento (overflow pages), esto frena un poco todas las operaciones que envuelven tales columnas pero si la comprension de tabla reduce el numero de paginas de desbordamiento usado por una tabla muy probablemente mejorara la performance.

Anuncios

Con esta breve introduccion sobre lo que es la compresion pasemos a ver los requerimientos, para poder habilitarlo debemos alcanzar a estos dos requerimientos:

  • Cada tabla comprimida debe ser almacenada en un archivo separado
  • El formato de archivo Barracuda debe ser usado
Anuncios

Anteriormente a la version 10.2.2 el formato de archivo Barracuda solo era soportado si estableciamos a la variable innodb_file_per_table con el valor ON, en cambio a partir de la version antes mencionado ya se establecio como estandar y se desecho la anterior.

Anuncios
Anuncios

El formato anterior no tuvo un nombre oficial pero en los ultimos tiempos se lo denomino como Antilope (Antelope), este es el formato original de InnoDB, soporta los formatos de linea COMPACT y REDUNDANT pero no los formatos DYNAMIC o COMPRESSED, en cambio Barracuda (Barracude) al ser nuevo formato no solamente soporta los cuatro formatos (COMPACT, REDUNDANT, DYNAMIC y COMPRESSED) sino que tambien permite a las tablas con columnas de tipo TEXT o BLOB muy grandes se beneficien con el formato DYNAMIC, por lo tanto tengan en cuenta el segundo punto en versiones de mariadb inferiores a 10.2.2.

Anuncios

En resumen, hoy hemos visto la comprension en InnoDB, conceptos basicos, sus pros, sus contras, como trabaja y cuales son los requerimientos para utilizarlo, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50

Anuncio publicitario