sql >> Databasteknik >  >> RDS >> Mysql

Aktivera loggning av långsamma frågor (långsam frågelogg) i MySQL-databasen

Ett av huvudkraven för en snabb webbserver är att ha effektiva och effektiva SQL-satser eller frågor som är optimerade. Alla icke-optimala SQL-kommandon (Structured Query Language) eller satser som tar för lång eller lång tid att köra kommer att förbruka mycket systemresurser, vilket gör att MySQL-databasen kör långsammare, och att fler och fler eftersläpningar ställer sig i kö, och när anslutningsgränsen är nådd, besökare nekats eller nekats anslutning. I värsta fall kommer din webbserver att gå ner också, eller kontinuerligt underprestera. Detta är särskilt sant när du använder MyISAM-tabelltypen som använder tabellnivålåsning istället för radnivålåsning på en webbplats med hög trafik.

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.


  1. Använder aktuell tid i UTC som standardvärde i PostgreSQL

  2. connect ECONNREFUSED - node js , sql

  3. Är det möjligt att köra en sträng i MySQL?

  4. DSN-filer och IRI-programvara