diff options
author | Sergey Vojtovich <svoj@mariadb.org> | 2017-12-12 22:53:38 +0400 |
---|---|---|
committer | Sergey Vojtovich <svoj@mariadb.org> | 2017-12-13 12:46:33 +0400 |
commit | 159a6c2e608d04732cb678c7691345b9b1dc69b1 (patch) | |
tree | 1e3f015f20b5b84e291ad134e3c8dbb16af31dfc /sql/sql_parse.cc | |
parent | 751e0f6b1ebeddb4faa3437daa399103bb212ac2 (diff) | |
download | mariadb-git-159a6c2e608d04732cb678c7691345b9b1dc69b1.tar.gz |
MDEV-14505 - Threads_running becomes scalability bottleneck
Instead of updating global counter, calculate Threads_running on the fly.
All threads having command != COM_SLEEP are included.
Behaviour changes:
Previously SHOW STATUS and SHOW GLOBAL STATUS returned the same values
representing global status. Now SHOW STATUS always returns 1 indicating that
current session has 1 thread running.
Previously only threads that were executing dispatch_command() or running events
were accounted by Threads_running. Now it is rough equivalent of
SELECT COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST WHERE state!='Sleep'
Diffstat (limited to 'sql/sql_parse.cc')
-rw-r--r-- | sql/sql_parse.cc | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 7a4c7ca4c56..9ce6c6b8787 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1550,9 +1550,6 @@ bool dispatch_command(enum enum_server_command command, THD *thd, "<?>"))); bool drop_more_results= 0; - if (!is_com_multi) - inc_thread_running(); - /* keep it withing 1 byte */ compile_time_assert(COM_END == 255); @@ -2410,10 +2407,8 @@ com_multi_end: thd->m_digest= NULL; if (!is_com_multi) - { - dec_thread_running(); thd->packet.shrink(thd->variables.net_buffer_length); // Reclaim some memory - } + thd->reset_kill_query(); /* Ensure that killed_errmsg is released */ free_root(thd->mem_root,MYF(MY_KEEP_PREALLOC)); |