Anuncios

Bienvenidos sean a este post, hoy veremos las distintas operaciones para modificar las particiones del titulo.

Anuncios

Antes de comenzar a ver como modificar las particiones vamos a crear la siguiente tabla en alguna base que dispongan:

MariaDB [base1]> create table articulos (
    -> id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    -> fecha DATE NOT NULL,
    -> autor VARCHAR(100),
    -> idioma TINYINT UNSIGNED,
    -> texto TEXT,
    -> PRIMARY KEY(id, fecha)
    -> )
    -> engine = InnoDB
    -> partition by RANGE(YEAR(fecha)) (
    -> partition p0 values less than (1990),
    -> partition p1 values less than (2000),
    -> partition p2 values less than (2010), 
    -> partition p3 values less than (2020)
    -> );
Anuncios

Como pueden ver es una tabla donde tendremos articulos con algunos datos para facilitarnos su identificacion y busqueda tambien establecimos un particionamiento por medio de RANGE y en segmentos de decadas, con esto comentado comencemos con las modificaciones.

Anuncios

Con los tipos RANGE y LIST tenemos permitidos cuatro tipo de operaciones para modificarlas:

  • Eliminar una particion
  • Agregando una nueva particion
  • Reorganizar una o mas particiones
  • Remover todas las particiones
Anuncios

Comencemos con la primera operacion, si eliminamos una particion ya sea de RANGE o LIST se eliminaran todos los registros de dicha particion, veamos un ejemplo de como eliminar una particion:

MariaDB [base1]> alter table articulos drop partition p0;
Anuncios

En este caso le dijimos que elimine la particion p0 por lo tanto todos los articulos anteriores a 1990 se perdieron, tambien se puede usar el IF EXISTS para evitar errores en caso de intentar borrar una particion que no existe o pasamos el nombre incorrecto, veamos un ejemplo de que sucede en ambos casos:

MariaDB [base1]> alter table articulos drop partition p0;
ERROR 1507 (HY000): Error in list of partitions to DROP
MariaDB [base1]> alter table articulos drop partition if exists p0;
Query OK, 0 rows affected, 1 warning (0.002 sec)
Records: 0  Duplicates: 0  Warnings: 1

MariaDB [base1]>
Anuncios

En el primer caso vemos que sucede si queremos eliminar nuevamente la particion eliminada pero si agregamos el IF EXISTS convertimos el error en un simple aviso.

Anuncios
Anuncios

La siguiente operacion se puede agregar con una simple instruccion, sin embargo esta operacion tiene una limitacion: la nueva particion solo puede contener valores que no esten almacenados en otras particiones, con el tipo RANGE significa que las nuevas particiones solo pueden agregarse al final, un detalle a tener en cuenta que esto podra hacerse siempre y cuando la ultima particion no posea a MAXVALUE para recolectar los datos tal como lo vimos en este post, veamos un ejemplo de agregado de particion:

MariaDB [base1]> alter table articulos add partition (
    -> partition p4 values less than (2030));
Anuncios
Nota: 
Al igual que en antes tambien se puede usar a IF EXISTS para transformar errores en avisos pero no se realizara la operacion.
Anuncios
Anuncios

La tercer operacion se realiza a traves de la instruccion REORGANIZE la cual nos permite dividir o renombrar las particiones, nos permite reemplazar una o mas particiones con una o mas particiones definidas por la instruccion, su limitacion mas importante es que no se puede modificar los rangos de las particiones, excepto por la ultima que se puede ampliar, esto hace que las operaciones complejas de union y division sean imposibles, tales como dividir dos particiones en tres o unir dos particiones en una, veamos un ejemplo de division de particion:

MariaDB [base1]> alter table articulos reorganize partition p1 into(
    -> partition p0 values less than (1990),
    -> partition p1 values less than (2000));
Anuncios

En este caso tomamos la particion y la dividimos en la particion que eliminamos anteriormente y mantenemos a la que dividimos, con esto volvimos a como era el principio pero sin la informacion que habia en ella, vamos a ver un ejemplo de como unir dos particiones:

MariaDB [base1]> alter table articulos reorganize partition p0, p1 into(
    -> partition p1 values less than (2000));
Anuncios

Como pueden ver pasamos las dos tablas que creamos anteriormente y como solo informamos un destino la instruccion entiende que debe fusionarlos, por ultimo veamos un ejemplo de cambio de nombre:

MariaDB [base1]> alter table articulos reorganize partition p4 into(
    -> partition actual values less than (2030));
Anuncios

En este caso modificamos la particion que agregamos por un nombre que nos sirve para identificar mejor donde estan los ultimos datos ingresados.

Anuncios

Para la ultima operacion se utiliza la instruccion REMOVE PARTITIONING la cual removera todas las particiones pero sin eliminar los datos, veamos su sintaxis:

MariaDB [base1]> alter table articulos remove partitioning;
Anuncios

En resumen, hoy hemos visto como modificar particiones de RANGE y LIST, las operaciones que podemos realizar, en este caso lo vimos con una particion RANGE, y cada una de las instrucciones que podemos usar, 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
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50

Anuncio publicitario