J'ai exécuté l'excellent script d'optimisation des performances MySQL et j'ai commencé à travailler sur les suggestions. Celui que j'ai rencontré était
TABLE CACHE
Valeur actuelle table_cache = 4096 tables Vous avez un total de 1073 tables. Vous avez 3900 tables ouvertes. Le taux de réussite actuel de table_cache est de 2%, tandis que 95% de votre cache de table est utilisé. Vous devriez probablement augmenter votre table_cache
J'ai commencé à lire sur le table_cache mais j'ai trouvé la documentation MySQL assez manquante. Ils disent d'augmenter le table_cache
"si vous avez la mémoire". Malheureusement, la table_cache
variable est définie comme «Le nombre de tables ouvertes pour tous les threads».
Comment la mémoire utilisée par MySQL changera-t-elle si j'augmente cette variable? Qu'est-ce qu'une bonne valeur, pour la définir?
la source
table_open_cache
à la lecture des documents. Voir la réponse de @MarkRs en regardanttable_cache
Vous devez surveiller la variable Opened_Tables et voir à quelle vitesse elle augmente. S'il est beaucoup plus rapide que vous créez de nouvelles tables (y compris des tables temporaires), votre cache de table est peut-être trop petit.
Table_Cache doit toujours - enfin de toute façon - être significativement plus grand que le nombre total de tables dans le serveur. Sinon, il continuera d'ouvrir et de fermer les tables.
Je ne vois pas comment vous pourriez obtenir un taux de réussite du cache de 2%, à moins que vous ne mesuriez le temps juste après un redémarrage du serveur ou que vous utilisiez beaucoup FLUSH TABLES (par rapport au nombre de requêtes). Normalement, le taux de réussite du cache de table doit être de 99,9%, sinon les performances seront nulles.
Ne faites pas de TABLES DE RINÇAGE si vous pouvez l'éviter, cela fait sauter le cache.
L'ouverture des tables coûte cher car elle doit lire le fichier FRM. Dans MyISAM, c'est nettement pire (que les autres moteurs), car lorsqu'il ferme une table, il jette également tous les blocs du cache de clés provenant de ses index. Donc, fermer une table vide ses index du cache de clés == pas bon! D'autres moteurs conservent les blocs mis en cache mais ont encore besoin de relire les métadonnées et d'allouer certaines structures.
la source