Nogle gange kan en enkelt SQL-forespørgsel være årsagen til alle serverens problemer. MySQL har indbygget funktionalitet til at fange langsom forespørgselslog eller identificere forespørgsler, der ikke er optimale og tager lang tid at afslutte, hvilket giver dig mulighed for at logge alle langsomt kørende forespørgsler, som tog over et defineret antal sekunder at udføre af MySQL-databasemotor til en fil. Langsom forespørgselslog er ikke aktiveret eller aktiveret som standard MySQL-installation, så det er en af de mindre brugte logfiler.
For at aktivere langsom forespørgselslog skal du blot tilføje følgende linje til MySQL-konfigurationsfilen (my.cnf eller my.ini) og derefter genstarte MySQL-serveren:
log-slow-queries
Eller,
log-slow-queries = [path to the log file]
Erstat [sti til logfilen] med den faktiske sti til den langsomme forespørgselslogfil, du ønsker, at MySQL skal skrive loggen til, hvilket er den valgfri værdi.
Eller du kan starte mysqld med –log-slow-queries[=filnavn] mulighed for at aktivere den langsomme forespørgselslog. I begge syntakser, hvis der ikke er angivet et logfilnavn, er standardnavnet værtsnavn -slow.log, gemt i MySQL-datafilbiblioteket. Hvis et filnavn er givet, men ikke som et absolut stinavn, skriver serveren også filen i databiblioteket.
Efter aktivering af langsom forespørgselslog vil MySQL oprette, fange og logge til logfilen med alle SQL-sætninger, der tog mere end long_query_time sekunder at udføre, som som standard er indstillet til 10 sekunder . Tiden til at erhverve de indledende tabellåse tælles ikke som eksekveringstid. mysqld skriver en sætning til den langsomme forespørgselslog, efter at den er blevet udført, og efter at alle låse er blevet frigivet, så logrækkefølgen kan være forskellig fra udførelsesrækkefølgen.
Du kan derefter undersøge alle de langsomme SQL-forespørgsler i logfilen og derefter tage de nødvendige skridt til at optimere SQL-sætningerne. Den langsomme forespørgselslog vil fortælle dig om, hvornår forespørgslen blev fuldført, hvor lang tid forespørgslen tog at køre, hvor lang tid det tog at sikre dens låse, hvor mange rækker der blev sendt tilbage som et resultat, hvor mange rækker der blev undersøgt for at bestemme resultat, hvilken database der blev brugt og selve forespørgslen. Men husk på, at en SQL-forespørgsel indeholdt i loggen måske allerede er optimal, men udført langsomt på grund af systemressourcerne, der er blevet brugt op af den faktiske langsomme sætning, der skal finjusteres.