En kollega på CleverCode rekommenderade nyligen ett verktyg för att analysera SQL-satser i MySQL, profilering, och upptäckte att detta verktyg är mycket bra, som noggrant kan analysera var den specifika tiden spenderades på SQL-satser under frågeprocessen. CleverCode sammanfattar det här och delar det med dig.
1 Introduktion
MySQLS Query Profiler är ett mycket praktiskt verktyg för analys av frågediagnostik, genom vilket du kan få tillgång till flera resurser under hela exekveringsprocessen av en fråga, såsom CPU, IO, IPC, SWAP, etc., samt förekomsten av PAGE FAULTS, CONTEXT SWITCHE, etc., och även få platsen för varje funktion som anropas av MySQL i källfilen under körningen av frågan.
MySQL version 5.0.37 eller senare stöder PROFILING-felsökningsfunktionen, som låter dig förstå detaljerna kring de resurser som förbrukas av SQL-satser. Eftersom det kräver att systemets getrusage()-funktion anropas, kan den endast användas på Linux/Unix-klassplattformar, inte Windows. Dessutom är PROFILERING för bearbetning av processer snarare än trådar, och andra applikationer på servern kan påverka dina felsökningsresultat, så detta verktyg är lämpligt för felsökning under utveckling, och om du vill felsöka i en produktionsmiljö bör du vara uppmärksam på dess begränsningar.
2 Drift
2.1 Kontrollera om profilen är aktiverad, den är avstängd som standard.
2.2 Aktivera profilering. Variabelprofilering är en användarvariabel som måste aktiveras igen varje gång.
2.3 Exekverar följande satser: För att undvika att SQL tidigare lagrats i QCACHE rekommenderas att tvinga SELECT-satsen att inte utföra QCACHE-detektering vid exekvering av SQL. Detta gör att du kan lämna in noggrannheten i analysen.
2.4 AnvändningVisa profilfrågaDen senasteExekveringsinformation för satsen。 (Analys: välj sql_no_cache räkning(*) från system_user där ålder > 20)
2.5 Att använda visa profiler. Se en lista över satser som körs på servern. (fråge-ID, tid spenderad, sats).
2.6 Använd visa profil för att fråga exekveringsinformationen för formulerings-ID:t. Här analyserar vi uttalandet med ID 6. (Analys: välj sql_no_cache räkning(*) från system_user där ålder > 20).
2.7 Hämta CPU och Block IO-förbrukning.
2.8 Att få in ytterligare information. kan erhållas genom att utföra "VISA PROFIL *** FÖR FRÅGA n". Referensadress: http://dev.mysql.com/doc/refman/5.6/en/show-profile.html.
|