Sei sulla pagina 1di 6

1.3.

4 PARTICIONES
Una particin es una divisin de una base de datos lgica o sus elementos
constituyentes en partes independientes. La particin de bases de datos se hace
normalmente por razones de mantenimiento, rendimiento o manejo.
Una aplicacin popular y favorable es en un Sistema de Administracin de Base de
Datos Distribuida. Cada particin puede ser extendida hasta mltiples nodos, y los
usuarios en el nodo pueden hacer transacciones locales en la particin. Esto aumenta
el rendimiento en sitios que tienen transacciones regularmente involucrando ciertas
vistas de datos, y manteniendo la disponibilidad y la seguridad.
Esta particin puede hacerse creando bases de datos ms pequeas separadas (cada
una con sus propias tablas, ndices, y registros de transacciones) o dividiendo
elementos seleccionados, por ejemplo, solo una tabla.
Particin horizontal consiste en poner diferentes filas en diferentes tablas. Por
ejemplo, clientes con cdigos postales menores que 50000 estn almacenados en la
tabla ClientesEste, mientras que los clientes con cdigos postales mayores o iguales a
50000 estn almacenados en la tabla ClientesOeste. Las dos tablas de particin son
entonces ClientesEste y ClientesOeste, mientras que una vista con una unin podra
ser creada con las dos tablas para poder dar una vista completa de todos los clientes.
Particin vertical consiste en crear miles de tablas con miles de columnas y crear
tablas para poner las columnas restantes.
Se puede particionar una tabla de 5 maneras diferentes:
Por rango: para construir nuestras particiones especificamos rangos de valores. Por
ejemplo, podramos segmentar los datos en 12 particiones: una para los contratos de
1950 a 1960, otra para los aos 60, los 70, 80, 90, la dcada del 2000 y la dcada
actual
ALTER TABLE contratos
PARTITION BY RANGE(YEAR(fechaInicio)) (
PARTITION partDecada50 VALUES LESS THAN (1960),
PARTITION partDecada60 VALUES LESS THAN (1970),
PARTITION partDecada70 VALUES LESS THAN (1980),
PARTITION partDecada80 VALUES LESS THAN (1990),
PARTITION partDecada90 VALUES LESS THAN (2000),
PARTITION partDecada00 VALUES LESS THAN (2010),
PARTITION partDecada10 VALUES LESS THAN MAXVALUE
);
Por listas: para construir nuestras particiones especificamos listas de valores
concretos.
ALTER TABLE contratos
PARTITION BY LIST(YEAR(fechaInicio)) (
PARTITION partDecada50 VALUES IN (1950, 1951, 1952, 1953, 1954, 1955, 1956,
1957, 1958, 1959),
PARTITION partDecada60 VALUES IN (1960, 1961, 1962, 1963, 1964, 1965, 1966,
1967, 1968, 1969),
PARTITION partDecada70 VALUES IN (1970, 1971, 1972, 1973, 1974, 1975, 1976,
1977, 1978, 1979),
PARTITION partDecada80 VALUES IN (1980, 1981, 1982, 1983, 1984, 1985, 1986,
1987, 1988, 1989),
PARTITION partDecada90 VALUES IN (1990, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 1999),
PARTITION partDecada00 VALUES IN (2000, 2001, 2002, 2003, 2004, 2005, 2006,
2007, 2008, 2009),
PARTITION partDecada10 VALUES IN (2010, 2011, 2012, 2013, 2014, 2015, 2016,
2017, 2018, 2019)
);


Por hash: MySQL se encarga de distribuir las tuplas automticamente usando una
operacin de mdulo. Slo hay que pasarle una columna o expresin que resulte en un
entero (el hash) y el nmero de particiones que queramos crear.
ALTER TABLE contratos
PARTITION BY HASH(YEAR(fechaInicio))
PARTITIONS 7;

Por clave: similar a la particin por hash, pero en este caso no necesitamos pasarle
un entero; MySQL utilizar su propia funcin de hash para generarlo. Si no se indica
ninguna columna a partir de la que generar el hash, se utiliza la clave primaria por
defecto.
ALTER TABLE contratos
PARTITION BY KEY()
PARTITIONS 7;

Compuesta: podemos combinar los distintos mtodos de particionado y crear
particiones de particiones
Por ltimo, un pequeo ejemplo de cmo afectara el particionado a una consulta
sencilla como obtener el nmero total de tuplas que cumplen una condicin. Estas son
las estadsticas de la consulta sin particionado (ni ndices)
EXPLAIN SELECT COUNT(*)
FROM contratos
WHERE fechaInicio BETWEEN '1950-01-01' AND '1955-12-31'

select_type table type key rows Extra
SIMPLE contratos ALL

239796 Using where
Y este el resultado de aadir las particiones (ntese la palabra clave PARTITIONS para
que nos muestre tambin la informacin relativa a las particiones)
EXPLAIN PARTITIONS SELECT COUNT(*)
FROM contratos
WHERE fechaInicio BETWEEN '1950-01-01' AND '1955-12-31'
select_type table partitions type key rows Extra
SIMPLE contratos partDecada50 ALL

8640 Using where
El nmero de tuplas que MySQL tiene que comprobar se ve disminuido en 2 rdenes
de magnitud.

Particiones en MySQL
Particionar tablas en MySQL nos permite rotar la informacin de nuestras tablas en diferentes
particiones, consiguiendo as realizar consultas ms rpidas y recuperar espacio en disco al borrar
los registros. El uso ms comn de particionado es segn fecha (date).
Para ver si nuestra base de datos soporta particionado simplemente ejecutamos:
SHOW VARIABLES LIKE '%partition%';

A continuacin veremos un ejemplo de cmo particionar una tabla por mes y posteriormente
borrar o modificar su informacin.
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)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

Como se puede ver hemos aadido 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
);


La ltima particin (pDefault) tendr todos los registros que no entren en las particiones
anteriores. De esta manera nos aseguramos que la informacin nunca dejar de insertarse en la
tabla.
Borrar particiones
Lo bueno de trabajar con particiones es que podemos borrar rpidamente registros sin tener que
recorrer toda la tabla e inmediatamente recuperar el espacio en disco utilizado por la tabla.
Por ejemplo si queremos borrar la particin ms antigua simplemente ejecutamos:
ALTER TABLE reports DROP PARTITION p201111;

Aadir particiones
En el ejemplo anterior las 2 ltimas particiones creadas han sido:
PARTITION p201205 VALUES LESS THAN (TO_DAYS("2012-06-01")),
PARTITION pDefault VALUES LESS THAN MAXVALUE

El problema es que todos los INSERTs que se hagan despus de mayo de 2012 se insertarn
en pDefault. La solucin sera aadir particiones nuevas para cubrir los prximos meses:
ALTER TABLE reports REORGANIZE PARTITION pDefault INTO (
PARTITION p201206 VALUES LESS THAN (TO_DAYS("2012-07-01")),
PARTITION pDefault VALUES LESS THAN MAXVALUE);


En el caso que no tuvieramos una particin del tipo pDefault simplemente ejecutamos:
ALTER TABLE reports ADD PARTITION (PARTITION p201206 VALUES LESS THAN (TO_DAYS("2012-07-
01")));
Consultar particiones
Para consultar informacin de particiones creadas en una tabla as como tambin los registros
que contiene cada una ejecutamos:
SELECT PARTITION_NAME,TABLE_ROWS FROM information_schema.PARTITIONS WHERE
TABLE_NAME='reports';



1.3.5 ESPACIOS PRIVADOS
Un espacio privado permite que los administradores y redactores gestionen el
conjunto de datos del sitio. Algunas bases de datos tienen estos espacios privados
llamados comnmente paneles de control, que son formularios que aparecen al abrir la
base de datos.
Los paneles de control sirven de "puerta principal" o "recibidor" de una base de datos
en el sentido de que dirigen a las personas hacia determinadas tareas, como introducir
o buscar datos. Sirven tambin para mantener alejados a los usuarios de las tablas
que contienen los datos en tiempo real.
Cuando reciba una base de datos, debe adentrarse ms all del panel de control para
averiguar cmo estn estructurados los datos, pero merece la pena echar un vistazo
inicial al panel de control. Le puede ofrecer algn indicio sobre las tareas que el
diseador de la base de datos consider que realizaran los usuarios habitualmente con
los datos.
Puede hacer clic en los vnculos del panel de control para ver qu objetos, como
formularios e informes, abren.





1.3.6 ESPACIOS PARA OBJETOS
os DBMS se basan en archivos para almacenar datos, y estos archivos, o conjuntos de
datos, residen en medios de almacenamiento, o dispositivos. Una buena parte del
trabajo del DBA implicar la planificacin para el almacenamiento real de la base de
datos.
Algunas tecnologas de almacenamiento son ms adecuadas que otras. Sin embargo,
la naturaleza mecnica de la unidad de disco los hace ms vulnerables al fracaso de los
componentes de otro equipo. Adems, las formas en que las unidades de disco son
utilizados por las bases de datos pueden hacer que la gestin del almacenamiento
impredecibles, como la barra lateral "Modern DBMS de uso de disco Puede usarse
RAID para mejorar la seguridad de los datos.
Para aplicaciones de misin crtica la integridad de los datos puede ser ms importante
que la disponibilidad de datos. Si el soporte es poco fiable y un fallo de las causas de
corrupcin de datos, los datos perdidos puede ser ms de un problema que el tiempo
de inactividad. Es imperativo, por tanto, que las soluciones de almacenamiento de
base de datos para protegerlos a toda costa. La recuperacin de datos desde medios
de almacenamiento lleva mucho ms tiempo en completarse que la recuperacin de
datos desde la memoria cach o la memoria.
El rendimiento de la base de datos depende de la entrada y salida a disco. La cantidad
de datos almacenados es mayor que nunca antes, y los datos se almacenados por ms
tiempo.
Algunos DBMS permiten al tamao de los archivos temporales de expandirse y
contraerse de forma automtica. Dependiendo del tipo y la naturaleza de las
operaciones de base de datos en proceso, esta fluctuacin puede provocar picos de uso
del disco
El crecimiento de la capacidad de almacenamiento aumenta an ms la complejidad de
la gestin de datos y bases de datos. Muchas organizaciones estn implementando
nuevas tecnologas de almacenamiento, tales como almacenamiento en red (NAS) y
redes de rea de almacenamiento (SAN), para ayudar a controlar la cantidad cada vez
mayor de almacenamiento necesario para los usos modernos. La gestin del
almacenamiento en el entorno dinmico de hoy es una tarea difcil DBA.
Hay muchos problemas de almacenamiento que deben ser resueltos antes de que un
DBA pueda crear una base de datos. Uno de los temas ms importantes es la cantidad
de espacio para permitir la base de datos.
El clculo espacial debe tener en cuenta no slo tablas, ndices, sino tambin, y
dependiendo del DBMS, el registro de transacciones. Cada una de estas entidades
probablemente requerir un archivo separado o conjunto de datos, para el
almacenamiento persistente.
El DBA debe separar en diferentes discos a los archivos para:

Potrebbero piacerti anche