Saltar al contenido

¿Cómo optimizar table_cache?

Esta es la solución más válida que encomtrarás brindar, pero mírala pausadamente y analiza si se adapta a tu trabajo.

Solución:

La razón por la que no encontraste una respuesta es porque no hay una respuesta. El valor apropiado para table_cache no se correlaciona con una cantidad de memoria del sistema.

Tenga en cuenta que table_cache fue renombrado table_open_cache en MySQL 5.1.3 y se hace referencia con el nuevo nombre en las versiones más recientes de MySQL.

Como mencioné en mi respuesta a esta pregunta reciente similar, entre las cosas que pueden incrementar opened_tablesalgunos de ellos son inofensivos e inevitables (como hacer copias de seguridad con mysqldumpque, en la mayoría de los casos, emite alguna variante de FLUSH TABLESque incrementa los contadores a medida que cada tabla se vuelve a abrir después del vaciado, ya sea con el fin de hacer una copia de seguridad de la tabla o por otros subprocesos de clientes que acceden a las tablas recientemente vaciadas, que naturalmente deben volver a abrirse).

Lo que no pensé mencionar en esa publicación es, y confío en que encontrará algo de diversión en esto, que el acto de ejecutar mysqltuner contra su servidor puede, en sí mismo, incrementar el opened_tables contador, invalidando así sus propios resultados.

Un comentarista de mi respuesta hizo referencia a este artículo, donde el autor señala que ajustar table_cache empeora el rendimiento cuanto más “óptimamente” lo configure.

La conclusión es que este es un buen ejemplo de una variable que es mejor dejarla a menos que tenga una razón específica para modificarla, y la salida de un script de ajuste no cuenta. Los scripts de ajuste a menudo tienen buenas intenciones, pero a veces eso es lo mejor que se puede decir sobre ellos:

El problema con las correlaciones que a veces parecen ser true es que la gente empieza a creer que siempre serán true. Los DBA de Oracle abandonaron el ajuste basado en proporciones hace años y deseamos que los DBA de MySQL sigan su ejemplo.

Deseamos aún más fervientemente que la gente no escriba “guiones de sintonía” que codifiquen estas peligrosas prácticas y las enseñen a miles de personas. Esto lleva a nuestra segunda sugerencia de lo que no se debe hacer: ¡no utilice scripts de ajuste! Hay varios muy populares que puedes encontrar en Internet. Probablemente sea mejor ignorarlos.

También le sugerimos que evite la palabra “ajuste”, que hemos usado generosamente en los últimos párrafos. Preferimos la “configuración” o la “optimización” en su lugar (siempre y cuando eso sea lo que realmente esté haciendo; consulte el Capítulo 3). La palabra “ajuste” evoca imágenes de un novato indisciplinado que ajusta el servidor y ve lo que sucede. Sugerimos en la sección anterior que es mejor dejar esta práctica para aquellos que están investigando los aspectos internos del servidor.

“Afinar” su servidor puede ser una asombrosa pérdida de tiempo.

— Schwartz, barón; Zaitsev, Peter; Tkachenko, Vadim (2012-03-05). MySQL de alto rendimiento: optimización, copias de seguridad y replicación (ubicaciones de Kindle 12173-12182). OReilly Media – A. Edición Kindle.

Como nota al margen, MySQL 5.0 está al final de su vida útil. MySQL 5.0.67 se lanzó hace más de 4 años y desde entonces se corrigió una cantidad significativa de errores en la serie de versiones 5.0. Si tuviera un servidor 5.0.67 y estuviera funcionando, lo último que querría hacer sería cambiar cualquier cosa sobre su configuración.

Estás abriendo menos de 1 mesa por hora. Es decir insignificante.

La métrica que debería haberse examinado es Opened_tables / Uptime. Eso es “por segundo”.

Sugiero que cualquier cosa por debajo de 2/seg está bien.

Volviendo a la pregunta del título:

Considere aumentar table_open_cache Si

Opened_tables / Uptime > 2
Opened_table_definitions / Uptime > 1
Table_open_cache_misses / Uptime > 1
Table_open_cache_overflows / Uptime > 1
Open_tables = table_open_cache

Si no puedes subirlo, comprueba open_files_limit y el límite del sistema operativo.

Si su MySQL es lo suficientemente nuevo, configure table_open_cache_instances a (quizás) la cantidad de núcleos que tiene.

Sección de Reseñas y Valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *