1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Added THD::utime_after_query to avoid calling current_utime() twice for every end-of-query

Increment long_query_count also if thd->variables.log_slow_rate_limit is used
Added new state "Writing to binlog"


sql/sql_class.h:
  Added THD::utime_after_query to avoid calling current_utime() twice for every end-of-query
sql/sql_parse.cc:
  Increment long_query_count also if thd->variables.log_slow_rate_limit is used
  Removed extra calls to thd_proc_info(thd, "logging slow query") and thd->current_utime();
sql/sql_table.cc:
  Added new state "Writing to binlog"
This commit is contained in:
Michael Widenius
2012-09-13 21:11:47 +03:00
parent 6f94b5c76d
commit 32e4c7e138
3 changed files with 25 additions and 31 deletions

View File

@@ -1483,38 +1483,30 @@ void log_slow_statement(THD *thd)
DBUG_VOID_RETURN; // Don't set time for sub stmt
/* Follow the slow log filter configuration. */
if (!(thd->variables.log_slow_filter & thd->query_plan_flags))
if (!thd->enable_slow_log ||
!(thd->variables.log_slow_filter & thd->query_plan_flags))
DBUG_VOID_RETURN;
/*
If rate limiting of slow log writes is enabled, decide whether to log
this query to the log or not.
*/
if (thd->variables.log_slow_rate_limit > 1 &&
(global_query_id % thd->variables.log_slow_rate_limit) != 0)
DBUG_VOID_RETURN;
/*
Do not log administrative statements unless the appropriate option is
set.
*/
if (thd->enable_slow_log)
if (((thd->server_status & SERVER_QUERY_WAS_SLOW) ||
((thd->server_status &
(SERVER_QUERY_NO_INDEX_USED | SERVER_QUERY_NO_GOOD_INDEX_USED)) &&
opt_log_queries_not_using_indexes &&
!(sql_command_flags[thd->lex->sql_command] & CF_STATUS_COMMAND))) &&
thd->examined_row_count >= thd->variables.min_examined_row_limit)
{
ulonglong end_utime_of_query= thd->current_utime();
thd_proc_info(thd, "logging slow query");
thd->status_var.long_query_count++;
/*
If rate limiting of slow log writes is enabled, decide whether to log
this query to the log or not.
*/
if (thd->variables.log_slow_rate_limit > 1 &&
(global_query_id % thd->variables.log_slow_rate_limit) != 0)
DBUG_VOID_RETURN;
if (((thd->server_status & SERVER_QUERY_WAS_SLOW) ||
((thd->server_status &
(SERVER_QUERY_NO_INDEX_USED | SERVER_QUERY_NO_GOOD_INDEX_USED)) &&
opt_log_queries_not_using_indexes &&
!(sql_command_flags[thd->lex->sql_command] & CF_STATUS_COMMAND))) &&
thd->examined_row_count >= thd->variables.min_examined_row_limit)
{
thd_proc_info(thd, "logging slow query");
thd->status_var.long_query_count++;
slow_log_print(thd, thd->query(), thd->query_length(),
end_utime_of_query);
}
thd_proc_info(thd, "logging slow query");
slow_log_print(thd, thd->query(), thd->query_length(),
thd->utime_after_query);
thd_proc_info(thd, 0);
}
DBUG_VOID_RETURN;
}