sql >> Databáze >  >> RDS >> Mysql

Povolit protokolování pomalých dotazů (Slow Query Log) v databázi MySQL

Jedním z hlavních požadavků na rychlý webový server je mít efektivní a efektivní SQL příkazy nebo dotazy, které jsou optimalizovány. Jakékoli neoptimální příkazy nebo příkazy SQL (Structured Query Language), jejichž provedení trvá příliš dlouho nebo zdlouhavě, spotřebovávají mnoho systémových prostředků, což způsobí, že databáze MySQL běží pomaleji, a pak se stále více dotazů zařazuje do fronty a kdy je dosaženo limitu připojení, návštěvníkům je odepřeno nebo odmítnuto připojení. V nejhorším případě selže i váš webový server nebo bude trvale podprůměrný. Tento případ platí zejména v případě, že používáte typ tabulky MyISAM, který používá zamykání na úrovni tabulky namísto zamykání na úrovni řádků na webu s vysokou návštěvností.

Někdy může být příčinou všech problémů serveru jediný SQL dotaz. MySQL má vestavěnou funkci pro zachycení pomalého protokolu dotazů nebo identifikaci dotazů, které nejsou optimální a jejich dokončení trvá dlouhou dobu, což vám umožňuje protokolovat všechny pomalu běžící dotazy, jejichž spuštění databázovým strojem MySQL trvalo definovaný počet sekund, do soubor. Protokol pomalého dotazu není ve výchozí instalaci MySQL aktivován nebo zapnutý, jde tedy o jeden z méně používaných protokolů.

Chcete-li povolit protokol pomalých dotazů, jednoduše přidejte následující řádek do konfiguračního souboru MySQL (my.cnf nebo my.ini) a poté restartujte server MySQL:

log-slow-queries

Nebo,

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

Nahraďte [cesta k souboru protokolu] se skutečnou cestou k souboru protokolu pomalého dotazu, do kterého má MySQL zapisovat protokol, což je volitelná hodnota.

Nebo můžete spustit mysqld pomocí –log-slow-queries[=název_souboru] možnost povolit protokol pomalých dotazů. Pokud v obou syntaxi není zadán žádný název souboru protokolu, výchozí název je název_hostitele -slow.log, uložený v adresáři datového souboru MySQL. Pokud je zadán název souboru, ale ne jako absolutní cesta, server zapíše soubor také do datového adresáře.

Po povolení pomalého protokolu dotazů MySQL vytvoří, zachytí a přihlásí do souboru protokolu se všemi příkazy SQL, které trvaly déle než long_query_time sekund k provedení, což je ve výchozím nastavení nastaveno na 10 sekund . Čas potřebný k získání počátečních zámků tabulky se nepočítá jako doba provádění. mysqld zapíše příkaz do protokolu pomalého dotazu po jeho provedení a po uvolnění všech zámků, takže pořadí protokolů se může lišit od pořadí provádění.

Poté můžete prozkoumat všechny pomalé dotazy SQL v souboru protokolu a poté provést nezbytné kroky k optimalizaci příkazů SQL. Protokol pomalého dotazu vám řekne, jak dlouho byl dotaz dokončen, jak dlouho trvalo spuštění dotazu, jak dlouho trvalo zabezpečení jeho zámků, kolik řádků bylo v důsledku toho odesláno zpět, kolik řádků bylo prozkoumáno za účelem zjištění výsledek, která databáze byla použita a samotný dotaz. Ale mějte na paměti, že SQL dotaz obsažený v protokolu může být již optimální, ale spuštěn pomalu, protože systémové prostředky byly vyčerpány skutečným pomalým příkazem, který je třeba doladit.


  1. Jak změním výchozí hodnotu sloupce v PostgreSQL?

  2. FOR XML PATH(''):Escapování speciálních znaků

  3. MariaDB ROWNUM() Vysvětleno

  4. Funkce LPAD() v PostgreSQL