Você está na página 1de 6

UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS ANDES – UNIANDES – PUYO

INGENIERÍA EN SISTEMAS

Asignatura Distribución de datos Estudiante Nelson Maldonado


Práctica Elaborar una guía de observación Docente Ing. Bernabé Ortega
Fecha 14/11/18 Tarea N° 004

Informe desarrollado por: Nelson Maldonado.

MARCO TEÓRICO

PARTICIONES EN MYSQL

Cuando alguna de las tablas de tu base de datos llega a crecer tanto que el rendimiento

empieza a ser un problema, es hora de empezar a leer algo sobre optimización. Índices,

el comando EXPLAIN, el registro de consultas lentas, … estas son herramientas básicas

que todo el mundo debería conocer. Una característica algo menos conocida, aunque

se introdujo en la versión 5.1 de MySQL, son las particiones.

Tomado de: (mysqlnet/archivos/2012/03/09/particiones-en-mysql/)

Particiones en MySQL

Particionar tablas en MySQL nos permite rotar la información de nuestras tablas en

diferentes particiones, consiguiendo así realizar consultas más rápidas y recuperar

espacio en disco al borrar los registros. El uso más común de particionado es según fecha

(date).

Tomado de: (http://dan1456bd.blogspot.com/p/particiones-en-mysql-y-oracle.html)

¿Cómo crear particiones?

1.- Creamos la tabla reports:

CREATE TABLE reports (

id int(10) NOT NULL AUTO_INCREMENT,

date datetime NOT NULL,

report TEXT,

PRIMARY KEY (id,date)


UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS ANDES – UNIANDES – PUYO

INGENIERÍA EN SISTEMAS

) ENGINE=InnoDB DEFAULT CHARSET=utf8

Como se puede ver hemos añadido como índice de tabla el campo date, esto es

necesario si luego queremos particionar por fecha.

2.- Ahora que tenemos la tabla creada vamos a particionar por mes:

ALTER TABLE reports PARTITION BY RANGE(TO_DAYS(date))(

PARTITION p201111 VALUES LESS THAN (TO_DAYS("2011-12-01")),

PARTITION p201112 VALUES LESS THAN (TO_DAYS("2012-01-01")),

PARTITION p201201 VALUES LESS THAN (TO_DAYS("2012-02-01")),

PARTITION p201202 VALUES LESS THAN (TO_DAYS("2012-03-01")),

PARTITION p201203 VALUES LESS THAN (TO_DAYS("2012-04-01")),

PARTITION p201204 VALUES LESS THAN (TO_DAYS("2012-05-01")),

PARTITION p201205 VALUES LESS THAN (TO_DAYS("2012-06-01")),

PARTITION pDefault VALUES LESS THAN MAXVALUE

);

EJEMPLO REALIZADO EN MYSQL POR NELSON MALDONADO.


UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS ANDES – UNIANDES – PUYO

INGENIERÍA EN SISTEMAS

PARTICIONADO HASH

Los registros de la tabla tienen su localización física determinada aplicando un valor

hash a la columna del partition key. La función hash devuelve un valor automático que

determina a que partición irá el registro. Es una forma automática de balancear el

particionado. Hay varias formas de construir este particionado. En el ejemplo siguiente

vemos una definición sin indicar los nombres de las particiones (solo el número de

particiones):

CREATE TABLE dept (deptno NUMBER, deptname VARCHAR(32))

PARTITION BY HASH(deptno) PARTITIONS 16;

Igualmente, se pueden indicar los nombres de cada particion individual o los

tablespaces donde se localizaran cada una de ellas:

CREATE TABLE dept (deptno NUMBER, deptname VARCHAR(32))

STORAGE (INITIAL 10K)

PARTITION BY HASH(deptno)

(PARTITION p1 TABLESPACE ts1, PARTITION p2 TABLESPACE ts2,

PARTITION p3 TABLESPACE ts1, PARTITION p4 TABLESPACE ts3);


UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS ANDES – UNIANDES – PUYO

INGENIERÍA EN SISTEMAS

EJEMPLO REALIZADO EN MYSQL POR NELSON MALDONADO.

PARTICIONADO LIST

Este tipo de particionado fue añadido por Oracle en la versión 9, permitiendo

determinar el particionado según una lista de valores definidos sobre el valor de una

columna especifica.

CREATE TABLE sales_list (salesman_id NUMBER(5), salesman_name

VARCHAR2(30),

sales_state VARCHAR2(20),

sales_amount NUMBER(10),

sales_date DATE)

PARTITION BY LIST(sales_state)

PARTITION sales_west VALUES('California', 'Hawaii'),


UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS ANDES – UNIANDES – PUYO

INGENIERÍA EN SISTEMAS

PARTITION sales_east VALUES ('New York', 'Virginia', 'Florida'),

PARTITION sales_central VALUES('Texas', 'Illinois')

PARTITION sales_other VALUES(DEFAULT)

);

Este particionado tiene algunas limitaciones, como que no soporta múltiples columnas

en la clave de particionado (como en los otros tipos), los valores literales deben ser

únicos en la lista, permitiendo el uso del valor NULL (aunque no el valor MAXVALUE,

que si puede ser utilizado en particiones del tipo Range). El valor DEFAULT sirve para

definir la partición donde iran el resto de registros que no cumplen ninguna condición

de las diferentes particiones.

CONCLUSIONES

Se entiende que el particionamiento nos permite realizar una consulta mas detallada la cual
nos permitirá obtener una información mas rápida. Podemos evidenciar la eficacia de realizar
una consulta de una tabla normal que con una tabla particionada. Ver Fig01.

Fig 01
UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS ANDES – UNIANDES – PUYO

INGENIERÍA EN SISTEMAS

Otro ejemplo de uso de particionamiento vendría a ser cuando realizamos la consulta


Online de nuestra cuenta bancaria.

BIBLIOGRAFÍA
https://www.redalyc.org/html/3604/360433560015/
http://dan1456bd.blogspot.com/p/particiones-en-mysql-y-oracle.html
mysqlnet/archivos/2012/03/09/particiones-en-mysql/

Informe desarrollado por: Nelson Maldonado.

Você também pode gostar