mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
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.
This commit is contained in:
@ -67,7 +67,7 @@ void Filesort_tracker::print_json_members(Json_writer *writer)
|
|||||||
Tracker object to be used with filesort
|
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);
|
DBUG_ASSERT(cur_action < MAX_QEP_ACTIONS);
|
||||||
|
|
||||||
@ -79,13 +79,13 @@ Filesort_tracker *Sort_and_group_tracker::report_sorting()
|
|||||||
varied_executions= true;
|
varied_executions= true;
|
||||||
cur_action++;
|
cur_action++;
|
||||||
if (!dummy_fsort_tracker)
|
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 dummy_fsort_tracker;
|
||||||
}
|
}
|
||||||
return qep_actions_data[cur_action++].filesort_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_data[cur_action].filesort_tracker= fs_tracker;
|
||||||
qep_actions[cur_action++]= EXPL_ACTION_FILESORT;
|
qep_actions[cur_action++]= EXPL_ACTION_FILESORT;
|
||||||
|
|
||||||
|
@ -396,7 +396,7 @@ public:
|
|||||||
@return
|
@return
|
||||||
Tracker object to be used with filesort
|
Tracker object to be used with filesort
|
||||||
*/
|
*/
|
||||||
Filesort_tracker *report_sorting();
|
Filesort_tracker *report_sorting(THD *thd);
|
||||||
|
|
||||||
friend class Iterator;
|
friend class Iterator;
|
||||||
/*************** Statistics retrieval interface ***************/
|
/*************** Statistics retrieval interface ***************/
|
||||||
|
@ -21058,7 +21058,7 @@ create_sort_index(THD *thd, JOIN *join, ORDER *order,
|
|||||||
filesort_retval= filesort(thd, table, join->sortorder, length,
|
filesort_retval= filesort(thd, table, join->sortorder, length,
|
||||||
select, filesort_limit, 0,
|
select, filesort_limit, 0,
|
||||||
&examined_rows, &found_rows,
|
&examined_rows, &found_rows,
|
||||||
join->explain->ops_tracker.report_sorting());
|
join->explain->ops_tracker.report_sorting(thd));
|
||||||
table->sort.found_records= filesort_retval;
|
table->sort.found_records= filesort_retval;
|
||||||
tab->records= found_rows; // For SQL_CALC_ROWS
|
tab->records= found_rows; // For SQL_CALC_ROWS
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user