sql >> Database >  >> RDS >> Mysql

Logboekregistratie van trage query's (Slow Query-logboek) in MySQL-database inschakelen

Een van de belangrijkste vereisten voor een snelle webserver is het hebben van efficiënte en effectieve SQL-instructies of query's die zijn geoptimaliseerd. Alle niet-optimale SQL (Structured Query Language)-commando's of -instructies die te lang of te lang duren om uit te voeren, zullen veel systeembronnen gebruiken, waardoor de MySQL-database langzamer gaat werken en er steeds meer achterstallige query's in de rij komen te staan, en wanneer verbindingslimiet is bereikt, bezoekers worden geweigerd of geweigerd. In het ergste geval zal uw webserver ook uitvallen of voortdurend ondermaats presteren. Dit is met name het geval wanneer u het MyISAM-tabeltype gebruikt dat vergrendeling op tabelniveau gebruikt in plaats van vergrendeling op rijniveau op een website met veel verkeer.

Soms kan een enkele SQL-query de oorzaak zijn van alle problemen met de server. MySQL heeft ingebouwde functionaliteit om langzame query-logboeken vast te leggen of query's te identificeren die niet optimaal zijn en lang duren om te voltooien. het dossier. Logboek voor trage zoekopdrachten is niet geactiveerd of standaard ingeschakeld voor MySQL-installatie, dus het is een van de minder gebruikte logboeken.

Om een ​​langzame querylog in te schakelen, voegt u eenvoudig de volgende regel toe aan het MySQL-configuratiebestand (my.cnf of my.ini) en start u de MySQL-server opnieuw op:

log-slow-queries

Of,

log-slow-queries = [path to the log file]

Vervang [pad naar het logbestand] met het daadwerkelijke pad naar het logbestand met trage query's waarnaar u wilt dat de MySQL het logboek schrijft, wat de optionele waarde is.

Of u kunt mysqld starten met de –log-slow-queries[=file_name] optie om het logbestand voor trage zoekopdrachten in te schakelen. Als er in beide syntaxis geen naam van het logbestand is opgegeven, is de standaardnaam host_name -slow.log, opgeslagen in de map MySQL-gegevensbestanden. Als een bestandsnaam wordt gegeven, maar niet als een absolute padnaam, schrijft de server het bestand ook in de datadirectory.

Na het inschakelen van langzame querylog, zal MySQL het logbestand maken, vastleggen en loggen met alle SQL-instructies die meer dan long_query_time hebben geduurd seconden om uit te voeren, wat standaard is ingesteld op 10 seconden . De tijd om de initiële tafelvergrendelingen te verkrijgen, wordt niet geteld als uitvoeringstijd. mysqld schrijft een instructie naar het trage querylogboek nadat het is uitgevoerd en nadat alle vergrendelingen zijn vrijgegeven, dus de logvolgorde kan verschillen van de uitvoeringsvolgorde.

U kunt vervolgens alle trage SQL-query's in het logbestand bekijken en vervolgens de nodige stappen ondernemen om de SQL-instructies te optimaliseren. Het log met trage zoekopdrachten zal u vertellen hoe laat de zoekopdracht voltooid was, hoe lang het duurde om de zoekopdracht uit te voeren, hoe lang het duurde om de vergrendelingen te beveiligen, hoeveel rijen als resultaat werden teruggestuurd, hoeveel rijen werden onderzocht om de resultaat, welke database is gebruikt en de eigenlijke query zelf. Houd er echter rekening mee dat een SQL-query in het logboek al optimaal kan zijn, maar langzaam wordt uitgevoerd vanwege de systeembronnen die zijn opgebruikt door de eigenlijke slow-instructie die moet worden verfijnd.


  1. Oracle Date - Hoe jaren tot nu toe toe te voegen

  2. Hoe maak je verbinding met meerdere MySQL-databases op één webpagina?

  3. Getallen opmaken met komma's in MySQL

  4. Onderdruk waarschuwingsberichten met mysql vanuit Terminal, maar wachtwoord geschreven in bash-script