Anuncios

Bienvenidos sean a este post, hoy veremos los motivos de utilizar esta mecanica.

Anuncios
Anuncios

La distribucion de este estilo se puede deber por varios motivos, uno de los principales son los cuellos de botella que se pueden generar debido al exceso de entrada/salida sobre el disco, si bien mucho de este problema lo podemos mitigar con discos mas rapidos, por ejemplo SSD, con logs, con un buen uso de los caches pero en determinadas circunstancias la informacion sera tan grande que no la podremos almacenar completamente en memoria y esta incrementara la actividad en nuestro disco, tambien con el tiempo un solo disco no los alcanzara para almacenar las bases de datos y ahi deberemos agregar mas discos, entrando en accion lo descripto en el titulo.

Anuncios
Anuncios

Comencemos con el concepto mas basico como es el path de los archivos, sabemos que de manera predeterminda se generan en el directorio data del servidor, este se puede averiguar mediante la variable @@global.datadir, la cual no es dinamica y solamente la podemos establecer mediante el archivo de configuraciones o usando a –datadir al inicio, tambien nos es posible especificar diferentes paths para los datos de una tabla y los archivos de indice usando:

  • DATA DIRECTORY, para los archivos de los datos de la tabla
  • INDEX DIRECTORY, para los archivos de los indices
Anuncios

Estos no se afectan entre si, por lo tanto lo especificado para el directorio de datos no afecta a los archivos de indice, ante un error o que no exista el directorio de destino no se creara a la tabla, para los motores de almacenamiento que no usan un archivo separado para indices, como InnoDB, si especificamos un INDEX DIRECTORY nos generara un aviso como el siguiente:

Warning (Code 1030): Got error 140 "Wrong create options" from storage engine InnoDB
Anuncios

Continuando con el tema vamos a considerar el siguiente ejemplo:

CREATE TABLE chars (
  ch CHAR(1)
)
  ENGINE = MyISAM,
  DATA DIRECTORY = '/tmp',
  INDEX DIRECTORY = '/tmp';
Anuncios

Como pueden observar estas opciones pueden ser unicamente establecidas al momento de la creacion de la tabla, si intentamos hacerlo por medio de un ALTER TABLE veremos un error como el siguiente:

MariaDB [test]> ALTER TABLE chars DATA DIRECTORY = '/any/other/path';
Query OK, 0 rows affected, 1 warning (0.13 sec)    
Records: 0  Duplicates: 0  Warnings: 1
Warning (Code 1618): <DATA DIRECTORY> option ignored
Anuncios

Cuando hablamos de archivos fisicos para tablas particionadas en este post, tanto DATA DIRECTORY como INDEX DIRECTORY pueden ser establecidas en particiones individuales, aunque InnoDB puede tener un directorio data separado, el cual puede ser especificado en la variable @@innodb_data_home_dir en el archivo de configuracion, pero de manera predeterminada siempre usara el directorio data de mariadb.

Anuncios
Anuncios

En este post mencionamos que existe un modo llamado archivo por tabla, el cual se activa si el valor de la variable @@innodb_file_per_table es ON, este modo es el predeterminado en versiones de la 10.0 en adelante pero no en versiones anteriores, si esta activo nos permite usar a la opcion DATA DIRECTORY y si esta desactivado se crean en el espacio de tabla del sistema, este espacio de tabla se encuentra el directorio data de mariadb haciendo que esta opcion no tenga sentido, una buena practica es almacenar este espacio de tabla en un disco de rotacion y los espacio de tablas separados en un disco SSD.

Anuncios

En resumen, hoy hemos visto como distribuir los archivos en multiples discos, cuales son los beneficios de hacer esto, porque se llega a esto, tambien hemos visto la forma mas basica de hacerlo, 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.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50

Anuncio publicitario