it-swarm-eu.dev

Zpracování pomalých dotazů

Pokouším se povolit pomalé protokolování dotazů na našem serveru, abych identifikoval všechny dotazy, které by mohly použít optimalizaci. Zní to dost jednoduše, ale do mého souboru není zapisováno. Nemám žádné chyby ani nic podobného, ​​prostě se nezdá, že by zaznamenával pomalé dotazy. Vzpomněl jsem si na restartování mysql po mých konfiguračních změnách.

Používám MySQL Ver 5.1.61. Zde je to, co mám v my.cnf:

slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1

soubor /var/logs/my.slow.log má jako vlastník mysql, také v zájmu ladění jsem dal všem číst/zapisovat do log souboru.

Ve výše uvedeném nastavení jsem nastavil long_query_time na 1, protože chci jen zjistit, jestli to funguje. Snažil jsem se nastavit nižší (např. 0,3), ale stále se mi nic nedělá. Vím, že dotazy, které běží moje aplikace, trvají déle než 1 sekundu a také jsem úmyslně spustil protokolovací dotazy (SELECT sleep(10);) v terminálu pro testování a protokol je stále prázdný.

Prohlédl jsem si dokumenty, z toho, co vidím, by to mělo fungovat. Každý má nějaké návrhy, co dělám špatně? Jakákoli rada by byla oceněna, díky moc!

Upravit: V dotazech jsem spustil dotaz:

 `SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');`

Výsledek:

10.0000000
/var/run/mysqld/mysqld-slow.log
OFF

Změny konfigurace se samozřejmě nezohledňují, protože se domnívám, že se jedná o výchozí hodnoty. Jsem si docela jistý, že soubor my.cnf, který měním, je analyzován, jako kdybych vložil neplatnou hodnotu, mysql se při restartu pokazí. Co se tady může dít?

Další úprava:

Po převzetí rady @RolandoMySQLDBA a přesunutí konfiguračních řádků mého dotazu do [mysqld] Se moje nastavení zdají být uloženy. Nyní je výsledkem výše uvedeného dotazu proměnná_hodnota:

1.0000000
/var/logs/my.slow.log
ON

Stále však nevidím zapisovaný soubor my.slow.log. Nemyslím si, že se jedná o problém s oprávněními, protože soubor je ve vlastnictví mysql a Přidal jsem všechna oprávnění pro všechny uživatele v souboru. Může někdo vymyslet důvod, proč by to nefungovalo?

Edit: Vyřešeno! Cesta k protokolu pomalých dotazů byla nesprávná, měla to být /var/log/my.slow.log místo/var/log * s */my.slow.log. Díky všem za pomoc, naučil jsem se přidělit!

13
TheMethod

Myslím, že jsem dostal odpověď:

Tyto možnosti musíte vložit do sekce [mysqld]

[mysqld]
slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1

a restartujte mysql

AKTUALIZACE 2013-03-05 16:36 EST

Nevím, proč se to stále děje, ale zkuste toto:

service mysql stop
rm -f /var/logs/my.slow.log
touch /var/logs/my.slow.log
chown mysql:mysql /var/logs/my.slow.log
service mysql start

pak spusťte SELECT SLEEP(10); a podívejte se, jestli to dopadne v /var/logs/my.slow.log

21
RolandoMySQLDBA