Všiml jsem si, že v Mysql, když povoluji log_queries_not_using_indexes
, slow_query_log
A long_query_time
, Vygenerovaný soubor protokolu pomalých dotazů bude obsahovat mnoho dotazů, i když je doba dotazu mnohem kratší než long_query_time
.
Zdá se, že jakmile je povolen log_queries_not_using_indexes
, Mysql zaznamená všechny dotazy, které nepoužívají indexy, bez ohledu na to, co je "long_query_time".
Existuje způsob, jak to překonat? Chci říct, existuje způsob, jak zaznamenávat všechny dotazy, které trvají déle než long_query_time
, Bez ohledu na to, zda používají indexy?
To je očekávané chování. Podívejte se na dokumenty online, ale v souhrnu:
long_query_time
je prahová hodnota doby provedení dotazu, po které je zaznamenána. Všechny dotazy trvající déle, než je prahová hodnota, se zaznamenávají bez ohledu na to, zda používají index nebo ne.
log_queries_not_using_indexes
říká MySQL, aby dodatečně protokoloval všechny dotazy, které nepoužívají index k omezení počtu kontrolovaných řádků. Protokolování této podmínky nastane bez ohledu na dobu provedení.
Doufám, že to pomůže vysvětlit, co vidíte. Vypadá to, že asi jen chcete long_query_time
a ne log_queries_not_using_indexes
pokud je vaším cílem zachytit pouze dotazy, které trvají déle, než je určitý práh.
Odkazy na dokumenty: http://dev.mysql.com/doc/refman/5.5/en/server-options.html#option_mysqld_log-queries-not-using-indexes
http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_long_query_time