sql >> Database teknologi >  >> RDS >> Mysql

Aktiver logning af langsomme forespørgsler (langsom forespørgselslog) i MySQL-databasen

Et af hovedkravene til en hurtig webserver er at have effektive og effektive SQL-sætninger eller forespørgsler, der er optimeret. Enhver ikke-optimal SQL-kommando (Structured Query Language) eller sætninger, der tager for lang eller lang tid at udføre, vil opbruge mange systemressourcer, hvilket får MySQL-databasen til at køre langsommere, og flere og flere forespørgsels-backlogs står i kø, og når forbindelsesgrænsen er nået, besøgende er blevet nægtet eller nægtet forbindelse. I værste fald vil din webserver også gå ned eller konstant underpræstere. Tilfældet er især tilfældet, når du bruger MyISAM-tabeltypen, som bruger låsning på tabelniveau i stedet for låsning på rækkeniveau på et websted med høj trafik.

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.


  1. Brug af en IF-erklæring i en MySQL SELECT-forespørgsel

  2. Deltager til MAX datoregistrering i gruppe

  3. Sådan genererer du tilføje kolonneerklæring for alle tabellerne i en database i SQL Server - SQL Server / T-SQL selvstudium del 49

  4. Formater et tal som valuta i SQLite