Maison  >  Article  >  base de données  >  L'utilisation et l'analyse des performances d'explication dans MySQL

L'utilisation et l'analyse des performances d'explication dans MySQL

黄舟
黄舟original
2017-12-06 09:24:461729parcourir

MySQL fournit une commande EXPLAIN, qui peut analyser l'instruction SELECT et afficher les informations détaillées de l'exécution de SELECT pour que les développeurs puissent l'optimiser. L'utilisation de la commande EXPLAIN est très simple. La connaissance de l'analyse des performances de MySQL et l'explication de l'utilisation sont essentielles. cet article Ce que nous souhaitons principalement présenter, présentons ce processus à travers quelques exemples pratiques !

1. Utilisez l'instruction expliquer pour afficher les résultats de l'analyse

Par exemple,

explain select * from test1 where id=1;

apparaîtra :

id  selecttype  table  type possible_keys  key key_len  ref rows  extra各列。

où,

type=const signifie qu'il peut être trouvé une fois dans l'index ; si

key=primary, cela signifie que la clé primaire est utilisée

type ; =all, signifie une analyse complète de la table ;

key=null signifie que l'index n'est pas utilisé. type=ref, car il est considéré comme étant plusieurs lignes correspondantes à ce moment-là. Dans la requête conjointe, il s'agit généralement de REF.

2. Index combiné dans MYSQL

Supposons que la table ait id, key1, key2, key3 et que les trois forment un index combiné, alors

Par exemple :

where key1=....     
where key1=1 and key2=2     
where key1=3 and key3=3 and key2=2

Selon le principe le plus à gauche, ceux-ci peuvent tous être indexés, comme à partir du test où key1=1 commande par key3, s'il est analysé avec expliquer, seul l'index normal_key est utilisé, mais uniquement pour la clause Where fonctionne, et l'ordre ultérieur par nécessite un tri.

3. Utilisez l'analyse des requêtes lentes

dans my.ini :

long_query_time=1
log-slow-queries=d:\mysql5\logs\mysqlslow.log

Enregistrez le journal des requêtes lentes pendant plus d'une seconde

Vous pouvez utiliser mysqlsla pour l'analyser. Vous pouvez également utiliser mysqlreport, tel que

DMS pour analyser les pourcentages de sélection, mise à jour, insertion, suppression, remplacement, etc.

4. MYISAM et INNODB.

Dans myisam, veuillez noter que cela est dû au verrouillage de la table. Par exemple, après plusieurs opérations UPDATE, lorsque vous sélectionnez à nouveau, vous constaterez que l'opération SELECT est verrouillée et vous devez le faire. attendez que toutes les opérations UPDATE soient terminées. Enfin, si vous pouvez SELECT

innodb, c'est différent, les verrous de ligne sont utilisés et le problème ci-dessus n'existe pas.

5. L'élément de configuration de la transaction MYSQL

innodb_flush_log_at_trx_commit=1

signifie que lorsque la transaction est validée, le journal des transactions sera écrit sur le disque . immédiatement, et les données et l'index seront écrits en même temps. Également mis à jour.

innodb_flush_log_at_trx_commit=0

Lorsque la transaction est validée, le journal des transactions n'est pas écrit immédiatement sur le disque. Il est écrit toutes les secondes

innodb_flush_log_at_trx_commit=2

Lorsque le. La transaction est validée, elle est écrite immédiatement. Fichier disque (ici, il est simplement écrit dans le tampon du noyau, mais il n'est pas immédiatement vidé sur le disque, mais est vidé sur le disque toutes les 1 seconde, et les données et l'index sont mis à jour à en même temps

expliquer l'utilisation

EXPLAIN tbl_name或:EXPLAIN [EXTENDED] SELECT select_options

Le premier peut obtenir la structure des champs d'une table, etc., tandis que le second donne principalement des informations pertinentes informations d'index, et la discussion d'aujourd'hui se concentre sur ces dernières

Exemple

mysql> explain select * from event;  
+—-+————-+——-+——+—————+——+———+——+——+——-+  
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |  
+—-+————-+——-+——+—————+——+———+——+——+——-+  
| 1 | SIMPLE | event | ALL | NULL | NULL | NULL | NULL | 13 | |  
+—-+————-+——-+——+—————+——+———+——+——+——-+  
1 row in set (0.00 sec)

La signification de chaque attribut.

id

Sélectionner le numéro de série de la requête

select_type

Le type de requête de sélection fait principalement la distinction entre les requêtes ordinaires et les requêtes complexes telles que les requêtes d'union et les sous-requêtes

.
table

Le type utilisé dans la requête conjointe. type montre le type d'accès, qui est un indicateur plus important. Les valeurs de résultat du meilleur au pire sont :

type
.

De manière générale, il faut s'assurer que la requête atteint au moins le niveau range, de préférence réf. Si elle est vide, il n'y a pas d'index pertinent. Pour améliorer les performances, vous pouvez vérifier si certains champs sont référencés par. la clause WHERE, ou vérifiez si le champ n'est pas adapté à l'indexation. 🎜>Affiche la longueur de clé que MySQL décide d'utiliser. Si aucun index n'est sélectionné, la clé est NULL. >Affiche la longueur de clé que MySQL décide d'utiliser. Si la clé est NULL, la longueur est NULL. La documentation suggère qu'une attention particulière à cette valeur peut déterminer quelle partie d'une clé primaire multiple est réellement utilisée par MySQL

.

ref

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
montre quels champs ou constantes sont utilisés avec la clé. Le nombre de lignes


indique la quantité de données que MySQL doit parcourir pour trouver. Il est inexact sur innodb.

Extra

S'il s'agit d'un index Unique, cela signifie que les informations sont uniquement utilisées. Les informations de l'arborescence d'index sont récupérées, ce qui est plus rapide que de scanner la table entière

. Si c'est là où utilisé, cela signifie où la restriction est utilisée.

Si c'est impossible où, cela signifie que où n'est pas nécessaire. Généralement, rien n'est trouvé

Si cette information indique Utilisation. filesort ou Using Temporary, ce sera très difficile. Les index de WHERE et ORDER BY ne peuvent souvent pas être pris en compte. Si l'index est déterminé en fonction de WHERE, alors dans ORDER BY, cela entraînera inévitablement l'utilisation de filesort, qui dépend si. s'il est plus rentable de filtrer d'abord puis de trier, ou s'il est plus rentable de trier d'abord puis de filtrer.

Résumé :

C'est toutes les connaissances sur l'analyse des performances de MySQL et l'explication de l'utilisation qui sont présentées ici, je crois que mes amis les connaissent également. ça. comprendre!

Recommandations associées :

Le rôle d'EXPLAIN dans Mysql

Introduction aux requêtes lentes MySQL et EXPLIQUER

Outil d'analyse des performances des requêtes MySQL - expliquer l'analyse des mots clés

mysql explique le type de connexion exemple

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn