Ibland kan en enda SQL-fråga vara orsaken till serverns alla problem. MySQL har inbyggd funktionalitet för att fånga långsam frågelogg eller identifiera frågor som inte är optimala och som tar lång tid att slutföra, vilket gör att du kan logga alla långsamma frågor som tog över ett definierat antal sekunder att exekvera av MySQL databasmotor till en fil. Långsam frågelogg är inte aktiverad eller på som standard MySQL-installation, så det är en av de mindre använda loggarna.
För att aktivera långsam frågelogg, lägg helt enkelt till följande rad i MySQL-konfigurationsfilen (my.cnf eller my.ini) och starta sedan om MySQL-servern:
log-slow-queries
Eller,
log-slow-queries = [path to the log file]
Ersätt [sökväg till loggfilen] med faktisk sökväg till den långsamma frågeloggfil som du vill att MySQL ska skriva loggen till, vilket är det valfria värdet.
Eller så kan du starta mysqld med –log-slow-queries[=filnamn] alternativet för att aktivera den långsamma frågeloggen. I båda syntaxerna, om inget loggfilnamn anges, är standardnamnet värdnamn -slow.log, lagrad i MySQL-datafilkatalogen. Om ett filnamn anges, men inte som ett absolut sökväg, skriver servern filen i datakatalogen också.
Efter att ha aktiverat långsam frågelogg kommer MySQL att skapa, fånga och logga till loggfilen med alla SQL-satser som tog mer än long_query_time sekunder att köra, vilket som standard är inställt på 10 sekunder . Tiden för att förvärva de initiala tabelllåsen räknas inte som exekveringstid. mysqld skriver en sats till den långsamma frågeloggen efter att den har körts och efter att alla lås har släppts, så loggordningen kan skilja sig från exekveringsordningen.
Du kan sedan undersöka alla långsamma SQL-frågor i loggfilen och sedan vidta nödvändiga steg för att optimera SQL-satserna. Den långsamma frågeloggen kommer att berätta om vilken tid det var när frågan slutfördes, hur lång tid det tog att köras, hur lång tid det tog att säkra dess lås, hur många rader som skickades tillbaka som ett resultat, hur många rader som undersöktes för att fastställa resultat, vilken databas som användes och själva frågan. Men kom ihåg att en SQL-fråga i loggen kanske redan är optimal, men exekveras långsamt på grund av att systemresurserna använts av den faktiska långsamma satsen som måste finjusteras.