Sledujte všechny dotazy SQL v MySQL
Microsoft SQL Server má nástroj s názvem Profiler, který můžete použít ke sledování každého dotazu SQL, který narazí na databázi. To je mimořádně užitečné pro programátory i administrátory databází při odstraňování přesných dotazů generovaných aplikací.
Když jsem často používali MySQL, bylo to jedno z prvních věcí, které jsem chtěl zjistit, jak postupovat. Jak jinak můžete vidět skutečný kód SQL vygenerovaný pomocí WordPress nebo phpBB?
První věc, kterou budeme muset udělat, je zapnout protokolování dotazů v MySQL. Buďte varováni, že by se to mělo dělat jen ve vývoji ... skutečně zpomaluje to, aby se zaznamenal každý dotaz do souboru.
Najděte a otevřete konfigurační soubor MySQL, obvykle /etc/mysql/my.cnf na Ubuntu. Hledejte sekci s názvem "Protokolování a replikace"
#
# * Protokolování a replikace
#
# Obě umístění se otáčí cronjobem.
# Uvědomte si, že tento typ protokolu je výkonný vrah.log = /var/log/mysql/mysql.log
Stačí odkomentovat proměnnou "log" pro zapnutí protokolování. Restartujte MySQL pomocí tohoto příkazu:
sudo /etc/init.d/mysql restart
Nyní jsme připraveni začít sledovat dotazy při příchodu. Otevřete nový terminál a spusťte tento příkaz, abyste mohli procházet soubor protokolu, případně upravit cestu.
tail -f /var/log/mysql/mysql.log
Nyní spusťte aplikaci. Zobrazí se dotazy databáze, které začínají létat v terminálovém okně. (ujistěte se, že na terminálu máte aktivován rolování a historie)
Jsem ohromen, phpbb3 má poměrně těsný, optimalizovaný kód SQL. WordPress je naopak velmi neefektivní.