it-swarm-eu.dev

Povolení funkce „log_queries_not_using_indexes“ zakáže „long_query_time“?

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?

14
coolcfan

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

27
drogart