Heim > Datenbank > MySQL-Tutorial > Hauptteil

So verwenden Sie ein Profil für die MySQL-Optimierung

不言
Freigeben: 2018-11-23 17:28:55
nach vorne
3621 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit der Verwendung des Profils für die MySQL-Optimierung. Ich hoffe, dass es für Freunde hilfreich ist.

  1. Wenn wir eine MySQL-Leistungsanalyse durchführen, gibt es drei am häufigsten verwendete Methoden:

    (1) Langsame Abfrage (Analyse von SQL, das Probleme aufweist)
    (2 ) Erklären (zeigt, wie MySQL Indizes verwendet, um Auswahlanweisungen und Verbindungstabellen zu verarbeiten. Dies kann dabei helfen, bessere Indizes auszuwählen und optimiertere Abfrageanweisungen zu schreiben)
    (3) Profil (wie lange es dauert, die SQL-Abfrage auszuführen) , und Sehen Sie sich die CPU-/Speicherauslastung an, wie viel Zeit Systemsperre, Tabellensperre während der Ausführung benötigt usw.)

  2. Dieses Kapitel gibt hauptsächlich einen kurzen Überblick über die auszuführende Profilverwendung Leistungsanalyse für eine bestimmte SQL-Anweisung.

  3. Profiling ist erst ab der Version mysql5.0.3 möglich. Nach MySQL5.7 werden Profilinformationen jedoch schrittweise aufgegeben, und MySQL empfiehlt die Verwendung eines Leistungsschemas.

  4. Profil Dieses Tool kann verwendet werden, um den SQL-Ausführungsstatus abzufragen, wie lange Systemsperre und Tabellensperre dauern usw. ist sehr wichtig für die Lokalisierung des E/A-Verbrauchs und CPU-Verbrauch einer Anweisung . (Die beiden größten Ressourcen, die bei der Ausführung von SQL-Anweisungen verbraucht werden, sind E/A und CPU)

Verwenden Sie das Profiltool

  1. , um Ihre MySQL-Version anzuzeigen:

    mysql> select version(); 
    +------------+
    | version()  |
    +------------+
    | 5.6.35-log |
    +------------+
    Nach dem Login kopieren
  2. Überprüfen Sie, ob die Profilfunktion aktiviert ist (Profiling=on bedeutet aktiviert):

    mysql> show variables like '%profil%';
    +------------------------+-------+
    | Variable_name          | Value |
    +------------------------+-------+
    | have_profiling        | YES  |
    | profiling              | OFF    |
    | profiling_history_size | 15    |
    +------------------------+-------+
    Nach dem Login kopieren
  3. Profil einschalten:

    mysql> set profile=1;
    Nach dem Login kopieren
  4. Führen Sie nach dem Öffnen des Profils die zu analysierende SQL-Anweisung aus:

    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;
    Nach dem Login kopieren
  5. Zeigen Sie die generierten Profilinformationen an:

    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` |
    +----------+------------+--------------------------------------------------------------------------------------------------------+
    Nach dem Login kopieren
  6. Den angegebenen Overhead der Abfrageanweisung abrufen:

    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 |
    +----------------------+----------+
    Nach dem Login kopieren
  7. Profil schließen:

    mysql> set profiling=0;
    Nach dem Login kopieren
  8. Zugehörige spezifische Parameter:

    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;
    Nach dem Login kopieren

Zusammenfassung

  1. Im Allgemeinen einfacher Prozess:

    (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分析
    Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo verwenden Sie ein Profil für die MySQL-Optimierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage