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
indique la quantité de données que MySQL doit parcourir pour trouver. Il est inexact sur innodb.
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!