Maison > Article > base de données > Comment utiliser le profil pour le réglage de MySQL
Le contenu de cet article explique comment utiliser le profil pour le réglage de Mysql. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Lorsque nous effectuons une analyse des performances de MySQL, il existe trois méthodes les plus couramment utilisées :
(1) Requête lente (analyse du SQL qui a des problèmes)
(2 ) Expliquez (montre comment MySQL utilise les index pour traiter les instructions de sélection et les tables de connexion. Cela peut aider à choisir de meilleurs index et à écrire des instructions de requête plus optimisées)
(3) Profil (combien de temps il faudra pour exécuter la requête SQL), et voir l'utilisation du processeur/mémoire, le temps que prend Systemlock, le verrouillage de table pendant l'exécution, etc.)
Ce chapitre donne principalement un bref aperçu du profil Utilisation Pour effectuer. analyse des performances sur une certaine instruction SQL.
Le profilage n'est ouvert qu'à partir de la version mysql5.0.3. Cependant, après mysql5.7, les informations de profil seront progressivement abandonnées et mysql recommande d'utiliser un schéma de performances.
profil Cet outil peut être utilisé pour interroger l'état d'exécution SQL, la durée du verrouillage du système et du verrouillage de la table, etc. est très important pour localiser la consommation d'E/S et Consommation CPU d'une instruction . (Les deux plus grandes ressources consommées par l'exécution des instructions SQL sont les E/S et le processeur)
pour afficher votre version MySQL :
mysql> select version(); +------------+ | version() | +------------+ | 5.6.35-log | +------------+
Vérifiez si la fonction de profil est activée (profiling=on signifie activé) :
mysql> show variables like '%profil%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | have_profiling | YES | | profiling | OFF | | profiling_history_size | 15 | +------------------------+-------+
Activer le profil :
mysql> set profile=1;
Après avoir ouvert le profil, exécutez l'instruction SQL à analyser :
mysql> select t1.*,t2.action from pre_forum_thread as t1 left join (select a.* from pre_forum_threadmod as a,(select tid,max(dateline) as dateline from pre_forum_threadmod group by tid) as b where a.tid=b.tid and a.dateline=b.dateline) as t2 on t1.tid=t2.tid where t1.displayorder>=0 and t1.fid in (47,49) and t1.tid > 100318 and (t1.authorid =7683017 or t2.action<>'DWN' or t2.action is null ) order by t1.dateline desc limit 20;
Affichez les informations du profil généré :
mysql> show profiles; +----------+------------+--------------------------------------------------------------------------------------------------------+ | Query_ID | Duration | Query | +----------+------------+--------------------------------------------------------------------------------------------------------+ | 1 | 1.37183777 | select t1.*,t2.action from pre_forum_thread as t1 | | 2 | 0.00078796 | show columns from `bbs`.`t2` | | 3 | 0.00150425 | show columns from `bbs`.`pre_forum_thread` | +----------+------------+--------------------------------------------------------------------------------------------------------+
Obtenir le coût de l'instruction de requête spécifiée :
mysql> show profile for query 2; +----------------------+----------+ | Status | Duration | +----------------------+----------+ | starting | 0.000147 | | checking permissions | 0.000023 | | Opening tables | 0.000047 | | init | 0.000081 | | System lock | 0.000031 | | optimizing | 0.000034 | | statistics | 0.001650 | | preparing | 0.000046 | | executing | 0.000018 | | Sending data | 2.460588 | | end | 0.000041 | | query end | 0.000019 | | closing tables | 0.000022 | | freeing items | 0.000055 | | cleaning up | 0.000085 | +----------------------+----------+
Fermer le profil :
mysql> set profiling=0;
Détails associés Paramètres :
type: ALL --显示所有的开销信息 | BLOCK IO --显示块IO相关开销 | CONTEXT SWITCHES --上下文切换相关开销 | CPU --显示CPU相关开销信息 | IPC --显示发送和接收相关开销信息 | MEMORY --显示内存相关开销信息 | PAGE FAULTS --显示页面错误相关开销信息 | SOURCE --显示和Source_function,Source_file,Source_line相关的开销信息 | SWAPS --显示交换次数相关开销的信息 例如,想要查看cpu和io开销可以执行命令: mysql> SHOW profile CPU,BLOCK IO FOR query 2;
Processus généralement simple :
(1)set profiling=1; //打开profile分析 (2)run your sql1; (3)run your sql2; (4)show profiles; //查看sql1,sql2的语句分析 (5)SHOW profile CPU,BLOCK IO io FOR query 1; //查看CPU、IO消耗 (6)set profiling=0; //关闭profile分析
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!