En MySQL 5.0, se pueden usar particiones de dispositivos en bruto como ficheros de datos del espacio de tablas.
Cuando se crea un nuevo fichero de datos, se debe colocar la palabra clave
newraw
inmediatamente a continuación del tamaño del fichero de datos en innodb_data_file_path
. La partición deberá ser al menos tan grande como el tamaño que se haya especificado. Nótese que 1MB en InnoDB
significa 1024 * 1024 bytes, en tanto que 1MB, en las especificaciones de los discos, generalmente significa 1.000.000 de bytes. [mysqld] innodb_data_home_dir= innodb_data_file_path=/dev/hdd1:3Gnewraw;/dev/hdd2:2Gnewraw
La próxima vez que se inicie el servidor,
InnoDB
advertirá la palabra clave newraw
e inicializará la nueva partición.
En Windows puede asignarse una partición de disco como fichero de datos de este modo:
[mysqld] innodb_data_home_dir= innodb_data_file_path=//./D::10Gnewraw
Ejemplo:
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=utf8Como 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);La última partición (pDefault) tendrá todos los registros que no entren en las particiones anteriores. De esta manera nos aseguramos que la información nunca dejará de insertarse en la tabla.
Creación de particiones en Oracle:
Basicamente, el particionado se realiza utilizando una clave de particionado (partitioning key), que determina en que partición de las existentes en la tabla van a residir los datos que se insertan. Oracle también permite realizar el particionado de indices y de tablas organizadas por indices. Cada partición ademas puede tener sus propias propiedades de almacenamiento. Las tablas particionadas aparecen en el sistema como una única tabla, realizando el sistema la gestión automatica de lectura y escritura en cada una de las particiones (excepto para el caso de la partición de Sistema introducida en la versión 11g). La definición de las particiones se indica en la sentencia de creación de las tablas, con la sintaxis oportuna para cada uno de los tipos.
- Particionado Range: la clave de particionado viene determinada por un rango de valores, que determina la partición donde se almacenara un valor.
- Particionado Hash: la clave de particionado es una función hash, aplicada sobre una columna, que tiene como objetivo realizar una distribución equitativa de los registros sobre las diferentes particiones. Es útil para particionar tablas donde no hay unos criterios de particionado claros, pero en la que se quiere mejor el rendimiento.
- Particionado List: la clave de particionado es una lista de valores, que determina cada una de las particiones.
- Particionado Composite: los particionados anteriores eran del tipo simples (single o one-level), pues utilizamos un unico método de particionado sobre una o mas columnas. Oracle nos permite utilizar metodos de particionado compuestos, utilizando un primer particionado de un tipo determinado, y luego para cada particion, realizar un segundo nivel de particionado utilizando otro metodo. Las combinaciones son las siguientes (se han ido ampliando conforme han ido avanzando las versiones): range-hash, range-list, range-range, list-range, list-list, list-hash y hash-hash .
- Particionado Interval: En lugar de indicar los rangos de valores que van a determinar como se realiza el particionado, el sistema automáticamente creara las particiones cuando se inserte un nuevo registro en la b.d. Las técnicas de este tipo disponible son Interval, Interval List, Interval Range e Interval Hash (por lo que el particionado Interval es complementario a las técnicas de particionado vistas anteriormente).
- Particionado System: se define la tabla particionada indicando las particiones deseadas, pero no se indica una clave de particionamiento. En este tipo de particionado, se delega la gestión del particionado a las aplicaciones que utilicen la base de datos (por ejemplo, en las sentencias sql de inserción deberemos de indicar en que partición insertamos los datos).
No hay comentarios:
Publicar un comentario