Anuncios

Bienvenidos sean a este post, hoy veremos un cache bastante particular.

Anuncios
Anuncios

Cuando un thread necesita acceder a un archivo fisico de una tabla se necesita un descriptor de archivo, para acelerar el acceso de un archivo mariadb almacena los descriptores de los archivos que estan almacenados dentro del cache de tabla abierta, y esta se vuelve mas util si muchas tablas de tipo MyIsam estan contenidas en la misma base de datos, aunque tengan en mente que la busqueda de los descriptores en este cache tienen un costo.

Anuncios

Si el cache no puede ser lo suficientemente grande para contener todos los descriptores necesarios puede ser mejor desactivarlo, lo recomendable es que el DBA haga algunos chequeos para saber si este cache es util para la carga de trabajo del equipo.

Anuncios

En el servidor tenemos la variable table_open_cache la cual determina cuantos descriptores de archivos pueden ser almacenados en el cache, este valor no deberia exceder el numero maximo de descriptores de archivos permitidos por el sistema operativo o el servidor podria comenzar a rechazar nuevas conexiones, en sistemas basados en Unix se puede usar el siguiente comando para obtener este dato:

ulimit -n
Anuncios

En otros sistemas si no disponemos de un comando como ulimit se debe verificar con la documentacion o googlearlo.

Anuncios
Anuncios

Para que el cache puede contener todos los descriptores necesarios, la variable table_open_cache deberia ser igual al numero maximo de conexiones simultaneas (la variable max_connections) multiplicado por el numero maximo de tablas que pueden ser referenciadas en un comando, sin olvidar que deben reservar algunos descriptores para las tablas temporales, las tablas Aria y MyIsam necesitan un descriptor para el archivo index pero este descriptor es compartido entre todas las conexiones.

Anuncios

Si el servidor produce errores porque no puede abrir mas archivos, se puede usar la siguiente opcion con mysqld_safe:

mysqld_safe --open-files-limit
Anuncios

Con esta opcion de inicio se deberia establecer un valor mas bajo solucionando el inconveniente.

Anuncios

En resumen, hoy hemos visto un cache particular llamado de tabla abierta, este nos permite cachear los descriptores de archivos para tener un acceso mas rapido a los mismos, igualmente el DBA deberia verificar que realmente ayude en la performance del equipo antes de habilitarlo, 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

Donación

Es para mantenimento del sitio, gracias!

$1.50

Anuncio publicitario