summaryrefslogtreecommitdiff
path: root/sql/sql_parse.cc
diff options
context:
space:
mode:
authorSergey Vojtovich <svoj@mariadb.org>2017-12-12 22:53:38 +0400
committerSergey Vojtovich <svoj@mariadb.org>2017-12-13 12:46:33 +0400
commit159a6c2e608d04732cb678c7691345b9b1dc69b1 (patch)
tree1e3f015f20b5b84e291ad134e3c8dbb16af31dfc /sql/sql_parse.cc
parent751e0f6b1ebeddb4faa3437daa399103bb212ac2 (diff)
downloadmariadb-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.cc7
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));