Question Comment augmenter l'utilisation de la mémoire dans MySQL Server pour améliorer la vitesse?


J'ai un serveur Windows 2008 avec 8 Go de RAM sous IIS7 et MySQL. J'ai suivi l'utilisation de la mémoire, de l'unité centrale de traitement et du disque sur le serveur et j'ai découvert que MySQL n'utilise que 250 Mo de RAM, ce qui maintient les disques très occupés, même si j'ai beaucoup de mémoire vive disponible.

Dans SQL Server, je peux facilement définir la quantité de mémoire que je souhaite utiliser. Je recherche le même paramètre dans MySQL.

Comment puis-je configurer MySQL pour utiliser plus de mémoire et réduire l'utilisation du processeur et du disque?


25
2017-07-20 01:46


origine




Réponses:


table_cache est la directive de configuration la plus utile à modifier. Chaque fois que MySQL accède à une table, il la charge en cache. Si vous avez un grand nombre de tables, il est plus rapide de les mettre en cache.

Examinez les variables de votre serveur en exécutant:

show status;

et jetez un oeil pour la variable open_tables. Si c'est le même que votre table_cache valeur, et opened_tables continue à monter, alors vous devez augmenter la table_cache valeur dans votre fichier de configuration. Vous trouverez un équilibre en expérimentant ces variables pendant les heures de pointe. Vous voulez le configurer de sorte qu’aux heures de pointe, le nombre de opened_tables même après une longue période de fonctionnement du serveur.

key_buffer_size est également une bonne variable à expérimenter. Cette variable affecte la taille de la mémoire tampon d'index. Si elle est plus grande, la vitesse de traitement des index par MySQL augmente. Vous pouvez regarder les variables avec le show variables; commander à nouveau et comparer key_read_requests à key_reads. Idéalement, vous voulez que le rapport entre ces deux variables soit aussi bas que possible, et vous pouvez le faire en augmentant la taille de la variable. key_buffer_size. Si vous définissez cette variable plus haut, vous aurez moins d'écritures et de lectures directement sur le disque, ce qui était votre principale préoccupation.


19
2017-07-20 02:12



En fait, la commande est show status;  voir les variables d'état tel que Open_tables et Opened_tables. table_cache semble avoir été supprimé dans les dernières versions de MySQL. - Matt Fenwick


Vous devez changer les valeurs dans le my.cnf fichier et redémarrez MySQL, bien que vous puissiez en changer beaucoup pendant que MySQL est lancé ('SET GLOBAL VARIABLE =valeur').

Vous voudrez probablement chercher à augmenter key_buffer_size, sort_buffer, read_buffer et table_cache pour commencer et probablement innodb_buffer_pool_size , si vous avez des tables InnoDB. Certaines de ces valeurs peuvent augmenter considérablement (même deux ordres de grandeur), surtout en fonction de votre matériel. Les valeurs par défaut de MySQL sont extrêmement conservatrices et semblaient viser les ordinateurs de bureau à usage mixte d’il ya dix ans. Oh, et sachez que la version 32 bits aura du mal à utiliser plus de 2 Go de RAM.

Regarder dans le manuel MySQL pour plus d'informations et de conseils.


3
2017-07-20 01:58