54 votes

Qu'est-ce que MySQL "Efficacité clé"

MySQL Workbench rapports d'une valeur appelée "Clé de l'Efficacité", en association avec le serveur de la santé. Qu'est-ce que cela signifie et quelles sont ses implications?

alt text

À partir de MySQL.com, "la Clé de l'Efficacité" est:

...une indication du nombre d' key_read_requests qui a abouti à de réels key_reads.

Ok, donc ce que cela signifie. Que veut-il me dire comment je suis censé régler le serveur?

81voto

Martin Points 3785

"La clé de l'Efficacité" est une indication de la façon dont beaucoup de valeur que vous obtenez à partir de l'indice des caches lieu dans MySQL mémoire. Si votre clé de rendement est élevé, alors le plus souvent MySQL est des recherches à partir de l'intérieur de l'espace mémoire, ce qui est beaucoup plus rapide que d'avoir à récupérer l'indice pertinent pâtés de maisons de disque.

La façon d'améliorer les clefs de l'efficacité est de consacrer plus de votre mémoire système MySQL index des caches. Comment vous faites cela dépend du moteur de stockage que vous utilisez. Pour MyISAM, augmenter la valeur de la clé-taille de buffer. Pour InnoDB, augmenter la valeur de innodb-tampon-pool-size.

Cependant, comme Michael Eakins points, le système d'exploitation détient également des caches de blocs de disque qui il a consulté récemment. Plus la quantité de mémoire de votre système d'exploitation est disponible, plus les blocs de disque, il peut mettre en cache. En outre, les lecteurs de disques eux-mêmes (et les contrôleurs de disque dans certains cas), ont aussi des caches - ce qui peut accélérer la récupération de données à partir du disque. La hiérarchie est un peu comme ceci:

  1. plus rapide de la récupération des données de l'indice de l'intérieur de MySQL index cache. Le coût est un peu de la mémoire des opérations.
  2. la récupération des données de l'indice qui est tenu dans l'OS cache du système de fichiers. Le coût est un appel système (pour la lecture), et certaines opérations de mémoire.
  3. la récupération des données de l'indice détenu dans le disque système de cache (contrôleur et les disques). Le coût est un appel système (pour la lecture), la communication avec le périphérique de disque, et certaines opérations de mémoire.
  4. lente récupération de données de l'index à partir de la surface du disque. Le coût est un appel système, la communication avec l'appareil, le mouvement physique du disque (mouvement de bras + rotation).

Dans la pratique, la différence entre le 1 et le 2 est presque imperceptible, sauf si votre système est très occupé. Aussi, il est peu probable (sauf si votre système a un peu moins de RAM que votre contrôleur de disque) que le scénario 3 entreront en jeu.

J'ai utilisé des serveurs avec les tables MyISAM avec relativement faible de l'indice de caches (512 MO), mais massive de la mémoire système (64 GO) et ont trouvé qu'il est difficile de démontrer la valeur de l'augmentation de la taille de l'index de cache. Je suppose que cela dépend de ce qui se passe sur votre serveur. Si tout ce que vous êtes en cours d'exécution est une base de données MySQL, il est très probable que le cache du système d'exploitation est très efficace. Toutefois, si vous exécutez d'autres travaux sur le même serveur et que ces utiliser beaucoup de mémoire / accès disque, puis ceux-ci pourraient expulser précieux index mis en cache des blocs conduisant à MySQL de frapper le disque le plus souvent.

Un exercice intéressant (si vous avez le temps) est à bricoler avec votre système afin de le rendre plus lent. L'exécution d'un standard de la charge de travail sur de grandes tables, de réduire le MySQL tampons jusqu'à ce que l'impact est notable. Vider votre cache du système de fichiers par le pompage des quantités énormes (plus de RAM) de données non pertinentes par le biais de votre système de fichiers ( le chat de la grand-fichier > /dev/null ). Regarder iostat que vos requêtes exécutées.

"La clé de l'Efficacité" n'est PAS une mesure de la qualité de vos clés. Bien conçu, les touches ont un impact beaucoup plus important sur la performance de haut "les Clés de l'Efficacité". MySQL n'a pas beaucoup pour vous y aider, malheureusement.

7voto

Michael Eakins Points 3176

Key_read_requests est le nombre de demandes de lire une clé de bloc à partir du cache. Alors que key_reads est le nombre de lectures physiques d'une clé de bloc à partir du disque. Donc, ces 2 variables peut augmenter de façon indépendante. (http://bugs.mysql.com/bug.php?id=28384)

Toujours aussi clair comme de la boue.

À la prochaine peu d'explication:

Partiellement valide l'utilisation de Key_reads

Il est partiellement raison valable pour examiner Key_reads, en supposant que nous soins sur le nombre de physique lit qui se produisent, parce que nous savons que les disques sont très lent par rapport à d'autres les pièces de l'ordinateur. Et voici lorsque je reviens à ce que j'ai appelé "la plupart du temps factuel" ci-dessus, parce que Key_reads ne sont pas du physique la lecture du disque. Si la demande de bloc de données n'est pas dans l'exploitation système de cache, puis un Key_read est un la lecture du disque, mais s'il est mis en cache, puis c'est juste un appel système. Cependant, nous allons faire notre premier difficiles à prouver hypothèse:

Difficile à prouver l'hypothèse n ° 1: Un Key_read peut correspondre à un physique de lecture du disque, peut-être. Si nous prenons que cette supposition est vraie, alors ce autre raison pourrait-on avoir pour prendre soin de sur Key_reads? Cette hypothèse conduit "un cache miss est significativement plus lent qu'un accès au cache", ce qui rend sens. Si elle était tout aussi rapide à faire Key_read comme un Key_read_request, ce qui utilisation de la clé de tampon d'être de toute façon? Ayons confiance MyISAM les créateurs de la sur ce un, parce qu'ils conçus un accès au cache pour être plus rapide qu'une miss. (http://planet.mysql.com/entry/?id=23679)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X