Este dilema se puede resolver de variadas maneras, por lo tanto te dejamos la respuesta más completa para nosotros.
table_open_cache puede ser una variable útil para ajustar para mejorar el rendimiento.
Cada sesión simultánea que accede a la misma tabla lo hace de forma independiente. Esto mejora el rendimiento, aunque tiene un costo de uso de memoria adicional.
table_open_cache indica el número máximo de tablas que el servidor puede mantener abiertas en cualquier instancia de caché de tabla. Idealmente, le gustaría este conjunto para volver a abrir una mesa con la menor frecuencia posible.
Sin embargo, tenga en cuenta que este no es un límite estricto. Cuando el servidor necesita abrir una tabla, expulsa la tabla cerrada utilizada menos recientemente del caché y agrega la nueva tabla. Si se utilizan todas las tablas, el servidor agrega la nueva tabla y no expulsa ninguna tabla. Tan pronto como una mesa ya no se use, será desalojada de la lista incluso si no es necesario abrir ninguna mesa, hasta que el número de mesas abiertas sea igual a table_open_cache
table_open_cache ha predeterminado a 2000 desde Maria DB 10.1.7. Antes de eso, el valor predeterminado era 400.
Puede ver la configuración actual en el archivo my.cnf o ejecutando:
select @@table_open_cache;+--------------------+| @@table_open_cache|+--------------------+|400|+--------------------+
Para evaluar si le vendría bien una table_open_cache más alta, mire la cantidad de tablas abiertas, junto con el tiempo de actividad del servidor (Opened_tables y las variables de estado Uptime):
showglobalstatuslike'opened_tables';+---------------+--------+| Variable_name |Value|+---------------+--------+| Opened_tables |354858|+---------------+--------+
Si el número de tablas abiertas aumenta rápidamente, debería aumentar el valor de table_open_cache. Trate de encontrar un valor que vea un aumento lento, o posiblemente ninguno, en el número de mesas abiertas.
Asegúrese de que su sistema operativo pueda hacer frente a la cantidad de descriptores de archivos abiertos requeridos por la configuración de table_open_cache. Si table_open_cache se establece en un valor demasiado alto, MariaDB puede comenzar a rechazar las conexiones a medida que el sistema operativo se queda sin descriptores de archivos. Tenga en cuenta también que los motores de almacenamiento MyISAM (¿y Aria?) necesitan dos descriptores de archivo por tabla abierta.
Es posible que open_table_cache incluso se pueda reducir.
Si su número de open_tables aún no ha alcanzado el table_open_cache_size, y el servidor ha estado activo por un tiempo, puede considerar disminuir el valor.
showglobalstatuslike'open_tables';+---------------+-------+| Variable_name |Value|+---------------+-------+| Open_tables |354|+---------------+-------+
El caché de la tabla abierta se puede vaciar con FLUSH TABLES o con el flush-tables
o refresh
Comandos mysqladmin.
Creación automática de nuevas instancias de caché abierta de tabla
En MariaDB 10.2 y versiones posteriores, MariaDB Server puede crear varias instancias de la caché abierta de tablas. Inicialmente crea una única instancia. Sin embargo, siempre que detecte una contención en las instancias existentes, creará automáticamente una nueva instancia. Cuando el número de instancias ha aumentado debido a la contención, no vuelve a disminuir.
Cuando MariaDB Server crea una nueva instancia, imprime un mensaje como el siguiente en el registro de errores:
[Note] Detected table cache mutex contention at instance 1: 25% waits. Additional table cache instance activated. Number of instances after activation: 2.
El número máximo de instancias está definido por el table_open_cache_instances
variable del sistema. El valor predeterminado de la table_open_cache_instances
la variable del sistema es 8
, que se espera que maneje hasta 100 núcleos de CPU. Si su sistema es más grande que esto, puede beneficiarse al aumentar el valor de esta variable del sistema.
La implementación y el comportamiento de esta característica es diferente a la misma característica en MySQL 5.6.
El contenido reproducido en este sitio es propiedad de sus respectivos dueños, y MariaDB no revisa este contenido por adelantado. Los puntos de vista, la información y las opiniones expresadas por este contenido no representan necesariamente las de MariaDB o cualquier otra parte.
Reseñas y puntuaciones
Si entiendes que ha resultado útil nuestro post, sería de mucha ayuda si lo compartieras con otros desarrolladores de este modo contrubuyes a difundir este contenido.