Bienvenidos sean a este post, hablemos sobre uno de los tipos de particion.
Este tipo de particion asigna un rango diferente de valores para cada particion, por cada particion asignamos un limite superior, el primer valor sera NULL el cual es el menor valor posible, los siguientes rangos comienzan con el valor que inmediatamente sigue al limite superior de la particion previa, veamos el siguiente ejemplo:
CREATE TABLE article (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
date DATE NOT NULL,
author VARCHAR(100),
language TINYINT UNSIGNED,
text TEXT,
PRIMARY KEY (id, date)
)
ENGINE = InnoDB
PARTITION BY RANGE (YEAR(date)) (
PARTITION p0 VALUES LESS THAN (1990),
PARTITION p1 VALUES LESS THAN (2000),
PARTITION p3 VALUES LESS THAN (2010),
PARTITION current VALUES LESS THAN (2030)
);
La ultima particion contiene valores que sean menor a 2030, esto no sera un problema mientras los años sean menor a este (este blog fue creado en 2022) pero que sucede cuando superemos o alcancemos ese año? Cuando intentemos insertar una nueva fila para la cual la expresion de particionamiento devuelve un valor fuera del rango, nos mostrara un aviso como el siguiente:
ERROR 1292 (22007): Incorrect date value: '2030' for column 'date' at row 1
Si bien podemos suprimir el error con IGNORE que lo transformara en un aviso pero la fila no sera ingresada, sin embargo la siguiente sintaxis puede ser usada para permitir valores que son valores demasiado alto para almacenar valores en las previas particiones:
PARTITION nombre_p VALUES LESS THAN (MAXVALUE)
Nota: Los parentesis son opcionales
En el ejemplo tenemos una tabla que contiene articulos, la tabla puede volverse muy grande y nosotros necesitamos particionarla para procesar queries usuales mas rapido, como contiene articulos muy viejos por medio de RANGE nos es una buena opcion de particionamiento para usar por las siguientes razones:
- El tipo YEAR(date) es un expresion de particionamiento eficiente
- Los queries usuales se involucran a una sola particion
- Algunos queries historicos podrian envolver solo una particion o solo un conjunto de estas
- En el futuro podemos necesitar borrar la informacion muy vieja, para este caso lo podemos hacer de una manera muy efectiva simplemente usando un DROP en las tablas mas viejas
En resumen, hoy hemos visto el tipo RANGE, que es, como trabaja, como la establecemos, cuales son los beneficios que podemos obtener con el uso de la misma, 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.


Donación
Es para mantenimento del sitio, gracias!
$1.50
