Anuncios

Bienvenidos sean a este post, hoy comenzaremos a hablar sobre particionamiento.

Anuncios

Cuando una tabla se vuelve demasiado grande los queries sobre esta pueden volverse demasiado lentos, para este tema entra en accion el particionamiento de tablas haciendo que cada archivo contenga una parte de la tabla y esto lo vuelve mas rapido, tanto la accion de lectura como de escritura se veran beneficiadas con el acceso a las particiones individuales.

Anuncios

Todas las versiones de mariadb soportan el fraccionamiento, aunque existen dos casos donde la particion no estara disponible:

  • Si se compila a mariadb sin el soporte de particionamiento, mientras todas las distribuciones tiene este soporte este no viene compilado por defecto, si lo compilamos desde las fuentes debemos usar el argumento -DWITH_PARTITION_STORAGE_ENGINE para activarlo
  • Si iniciamos a mariadb con la opcion –skip-partition, aunque esta puede deshabilitarse simplemente reiniciando el servidor sin esta opcion
Anuncios

Para averiguar si nuestro servidor soporta el particionamiento es muy simple, como el particionamiento es implementado como un plug-in solamente necesitamos hacer un query en la tabla PLUGINS de la base information_schema, veamos un ejemplo:

MariaDB [(none)]> SELECT * FROM information_schema.PLUGINS WHERE PLUGIN_NAME = 'partition'\G
*************************** 1. row ***************************
           PLUGIN_NAME: partition
        PLUGIN_VERSION: 1.0
         PLUGIN_STATUS: ACTIVE
           PLUGIN_TYPE: STORAGE ENGINE
   PLUGIN_TYPE_VERSION: 100329.0
        PLUGIN_LIBRARY: NULL
PLUGIN_LIBRARY_VERSION: NULL
         PLUGIN_AUTHOR: Mikael Ronstrom, MySQL AB
    PLUGIN_DESCRIPTION: Partition Storage Engine Helper
        PLUGIN_LICENSE: GPL
           LOAD_OPTION: ON
       PLUGIN_MATURITY: Stable
   PLUGIN_AUTH_VERSION: 1.0
1 row in set (0.003 sec)

MariaDB [(none)]>
Anuncios

Si obtienen una respuesta significa que el plug-in de particion esta instalado, en caso contrario no devolvera ningun resultado, en cambio si esta instalado pero iniciamos el servidor con la opcion desactivada en el campo PLUGIN_STATUS aparecera el valor de DISABLED, como el particionamiento es implementada en el nivel del motor no todos estos lo soportan, veamos los motores que lo soportan:

  • InnoDB
  • TokuDB
  • MEMORY
  • Aria
  • MyIsam
  • ARCHIVE
  • BLACKHOLE
Anuncios

En el caso de BLACKHOLE el soporte para el particionamiento consiste en la preservacion de la definicion de las particiones, es decir que cuando una tabla particionada es convertida a BLACKHOLE y luego convertida a InnoDB esta permanecera particionada, esta caracteristica no es obvia porque el mismo procedimiento no preserva las claves externas (foreign keys) y no se le permite a las tablas poseer columnas virtuales, veamos cuales no soportan:

  • CONNECT
  • CSV
  • FederatedX
Anuncios

Si bien estos motores no soportan el particionamiento si podemos enlazarlas con tablas remotas que estan particionadas, ahora si intentamos particionar una tabla con un motor que no lo soporta nos devolvera el siguiente mensaje de error:

ERROR 1572 (HY000): Engine cannot be used in partitioned tables
Anuncios

En resumen, hoy hemos visto una breve introduccion al particionamiento, que es, para que sirve, como nos beneficia, los motores que lo soportan, cuales no, y el error que nos devuelve, espero les haya sido util 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