From 2bc6e29afeea374aa0ef4bc36c7a7b649c20d959 Mon Sep 17 00:00:00 2001 From: Sergey Vojtovich Date: Fri, 19 Jun 2015 15:04:58 +0400 Subject: [PATCH] MDEV-7943 - pthread_getspecific() takes 0.76% in OLTP RO Pass THD to Sort_and_group_tracker::report_sorting(). This reduces number of pthread_getspecific() calls from 292 to 290. --- sql/sql_analyze_stmt.cc | 6 +++--- sql/sql_analyze_stmt.h | 2 +- sql/sql_select.cc | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/sql/sql_analyze_stmt.cc b/sql/sql_analyze_stmt.cc index d2eb46298f1..eae47743b03 100644 --- a/sql/sql_analyze_stmt.cc +++ b/sql/sql_analyze_stmt.cc @@ -67,7 +67,7 @@ void Filesort_tracker::print_json_members(Json_writer *writer) Tracker object to be used with filesort */ -Filesort_tracker *Sort_and_group_tracker::report_sorting() +Filesort_tracker *Sort_and_group_tracker::report_sorting(THD *thd) { DBUG_ASSERT(cur_action < MAX_QEP_ACTIONS); @@ -79,13 +79,13 @@ Filesort_tracker *Sort_and_group_tracker::report_sorting() varied_executions= true; cur_action++; if (!dummy_fsort_tracker) - dummy_fsort_tracker= new (current_thd->mem_root) Filesort_tracker(); + dummy_fsort_tracker= new (thd->mem_root) Filesort_tracker(); return dummy_fsort_tracker; } return qep_actions_data[cur_action++].filesort_tracker; } - Filesort_tracker *fs_tracker= new(current_thd->mem_root)Filesort_tracker(); + Filesort_tracker *fs_tracker= new(thd->mem_root)Filesort_tracker(); qep_actions_data[cur_action].filesort_tracker= fs_tracker; qep_actions[cur_action++]= EXPL_ACTION_FILESORT; diff --git a/sql/sql_analyze_stmt.h b/sql/sql_analyze_stmt.h index 3086d070f9a..9e8191c0947 100644 --- a/sql/sql_analyze_stmt.h +++ b/sql/sql_analyze_stmt.h @@ -396,7 +396,7 @@ public: @return Tracker object to be used with filesort */ - Filesort_tracker *report_sorting(); + Filesort_tracker *report_sorting(THD *thd); friend class Iterator; /*************** Statistics retrieval interface ***************/ diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 97bacc571b6..8a6a7f72915 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -21058,7 +21058,7 @@ create_sort_index(THD *thd, JOIN *join, ORDER *order, filesort_retval= filesort(thd, table, join->sortorder, length, select, filesort_limit, 0, &examined_rows, &found_rows, - join->explain->ops_tracker.report_sorting()); + join->explain->ops_tracker.report_sorting(thd)); table->sort.found_records= filesort_retval; tab->records= found_rows; // For SQL_CALC_ROWS