Anuncios

Bienvenidos sean a este post, en posts anteriores hemos mencionado a las particiones en archivos fisicos y hoy hablaremos sobre este tema.

Anuncios
Anuncios

Para comenzar si la variable @@innodb_file_per_table esta con el valor OFF cuando la tabla esta particionada, hara que todas las particiones sean almacenadas en el espacio de tabla de sistema de InnoDB pero en diferentes areas, en cambio si esta tiene el valor de 1 cada particion es almacenada en un archivo diferente, los motores de almacenamiento que almacenan los datos e indices en archivos separados (tales como MyIsam y Aria) crean un archivo de datos y de indices por cada particion, la extension de los archivos de datos e indices es la misma que la usada para tablas sin particionar, el nombre base de estos archivos tiene la siguiente sintaxis:

<nombre_tabla>#P#<nombre_particion>.<extension>
Anuncios

Siempre llevaran el nombre de la tabla seguido de #P# lo cual identifica a la particion, despues de este esta el nombre de la misma y por ultimo la extension que son iguales a las vistas en este post, pero vamos a repasar las mismas:

  • .frm, contiene todas las definiciones de la tabla
  • .par, contiene todas las definiciones de la particion
  • .ibd, contiene la definicion del espacio de tabla
Anuncios

Vamos a suponer que tenemos una tabla llamada empleado y esta posee dos particiones llamadas p0 y p1, esta poseera los siguientes archivos:

empleado.frm
empleado.par
empleado#P#p0.ibd
empleado#P#p1.ibd
Anuncios

En cambio los archivos de una tabla de tipo Aria poseera los siguientes archivos:

empleado.frm
empleado.par
empleado#P#p0.MAD
empleado#P#p0.MAI
empleado#P#p1.MAD
empleado#P#p1.MAI
Anuncios

A su vez para las subparticiones se creara un nuevo archivo, para identificarla es muy similar a la anterior porque primero ira el nombre de la tabla, seguido del identificador de particion con el nombre de la misma, ahora le agregaremos el identificador de la subparticion #SP# seguido del nombre de la misma y por ultimo la extension, veamos un ejemplo:

empleado.frm
empleado.par
empleado#P#p0#SP#s0.ibd
empleado#P#p0#SP#s1.ibd
empleado#P#p1#SP#s2.ibd
empleado#P#p1#SP#s3.ibd
Anuncios
Anuncios

De manera predeterminada los archivos de particiones son almacenados en el path de la base de datos en el directorio data, aunque es posible especificar un path para cada archivo de datos de cada particion asi como de archivos de indices, esto nos permitira distribuir las particiones a traves de varios discos reduciendo la sobrecarga de entrada y salida en los discos, esta caracteristica no es muy util y esta es la razon principal por la que usaremos el particionamiento, veamos una sintaxis de ejemplo:

CREATE TABLE empleado (
  id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
)
ENGINE = InnoDB
PARTITION BY RANGE (id) (
    PARTITION p0 VALUES LESS THAN (10000)
  DATA DIRECTORY '/disk_x',
    PARTITION p1 VALUES LESS THAN MAXVALUE
);
Anuncios

En este ejemplo un directorio de la base de datos sera creado en el disco disk_x, en caso de no existir, y en este estara el archivo de datos de la particion p0, inclusive si todas las particiones son almacenadas en paths no estandares el directorio data aun contendra el archivo .par, por ultimo si especificamos el directorio de datos e indices a nivel tabla no tiene efecto si la tabla es particionada, sin embargo ellos son silenciosamente ignorados y no se genera ningun aviso.

Anuncios

En resumen, hoy hemos visto los archivos fisicos de particiones, como son, como se denominan en el disco, un ejemplo para ver como crearlo, espero les haya sido util 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