mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +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:
@ -1685,7 +1685,7 @@ public:
|
|||||||
my_hrtime_t user_time;
|
my_hrtime_t user_time;
|
||||||
// track down slow pthread_create
|
// track down slow pthread_create
|
||||||
ulonglong prior_thr_create_utime, thr_create_utime;
|
ulonglong prior_thr_create_utime, thr_create_utime;
|
||||||
ulonglong start_utime, utime_after_lock;
|
ulonglong start_utime, utime_after_lock, utime_after_query;
|
||||||
|
|
||||||
// Process indicator
|
// Process indicator
|
||||||
struct {
|
struct {
|
||||||
@ -2488,8 +2488,8 @@ public:
|
|||||||
*/
|
*/
|
||||||
void update_server_status()
|
void update_server_status()
|
||||||
{
|
{
|
||||||
ulonglong end_utime_of_query= current_utime();
|
utime_after_query= current_utime();
|
||||||
if (end_utime_of_query > utime_after_lock + variables.long_query_time)
|
if (utime_after_query > utime_after_lock + variables.long_query_time)
|
||||||
server_status|= SERVER_QUERY_WAS_SLOW;
|
server_status|= SERVER_QUERY_WAS_SLOW;
|
||||||
}
|
}
|
||||||
inline ulonglong found_rows(void)
|
inline ulonglong found_rows(void)
|
||||||
|
@ -1483,38 +1483,30 @@ void log_slow_statement(THD *thd)
|
|||||||
DBUG_VOID_RETURN; // Don't set time for sub stmt
|
DBUG_VOID_RETURN; // Don't set time for sub stmt
|
||||||
|
|
||||||
/* Follow the slow log filter configuration. */
|
/* 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;
|
DBUG_VOID_RETURN;
|
||||||
|
|
||||||
/*
|
if (((thd->server_status & SERVER_QUERY_WAS_SLOW) ||
|
||||||
If rate limiting of slow log writes is enabled, decide whether to log
|
((thd->server_status &
|
||||||
this query to the log or not.
|
(SERVER_QUERY_NO_INDEX_USED | SERVER_QUERY_NO_GOOD_INDEX_USED)) &&
|
||||||
*/
|
opt_log_queries_not_using_indexes &&
|
||||||
if (thd->variables.log_slow_rate_limit > 1 &&
|
!(sql_command_flags[thd->lex->sql_command] & CF_STATUS_COMMAND))) &&
|
||||||
(global_query_id % thd->variables.log_slow_rate_limit) != 0)
|
thd->examined_row_count >= thd->variables.min_examined_row_limit)
|
||||||
DBUG_VOID_RETURN;
|
|
||||||
|
|
||||||
/*
|
|
||||||
Do not log administrative statements unless the appropriate option is
|
|
||||||
set.
|
|
||||||
*/
|
|
||||||
if (thd->enable_slow_log)
|
|
||||||
{
|
{
|
||||||
ulonglong end_utime_of_query= thd->current_utime();
|
thd->status_var.long_query_count++;
|
||||||
thd_proc_info(thd, "logging slow query");
|
/*
|
||||||
|
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_proc_info(thd, "logging slow query");
|
||||||
((thd->server_status &
|
slow_log_print(thd, thd->query(), thd->query_length(),
|
||||||
(SERVER_QUERY_NO_INDEX_USED | SERVER_QUERY_NO_GOOD_INDEX_USED)) &&
|
thd->utime_after_query);
|
||||||
opt_log_queries_not_using_indexes &&
|
thd_proc_info(thd, 0);
|
||||||
!(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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
@ -1828,6 +1828,7 @@ int write_bin_log(THD *thd, bool clear_error,
|
|||||||
if (mysql_bin_log.is_open())
|
if (mysql_bin_log.is_open())
|
||||||
{
|
{
|
||||||
int errcode= 0;
|
int errcode= 0;
|
||||||
|
thd_proc_info(thd, "Writing to binlog");
|
||||||
if (clear_error)
|
if (clear_error)
|
||||||
thd->clear_error();
|
thd->clear_error();
|
||||||
else
|
else
|
||||||
@ -1835,6 +1836,7 @@ int write_bin_log(THD *thd, bool clear_error,
|
|||||||
error= thd->binlog_query(THD::STMT_QUERY_TYPE,
|
error= thd->binlog_query(THD::STMT_QUERY_TYPE,
|
||||||
query, query_length, is_trans, FALSE, FALSE,
|
query, query_length, is_trans, FALSE, FALSE,
|
||||||
errcode);
|
errcode);
|
||||||
|
thd_proc_info(thd, 0);
|
||||||
}
|
}
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user