Commit 12d9fe14 authored by Sergey Vojtovich's avatar Sergey Vojtovich

MDEV-7956 - handler::rebind_psi() takes 0.07% in OLTP RO

Do not call handler::rebind_psi() and handler::unbind_psi() when performance
schema is compiled out.

Overhead change:
handler::rebind_psi 0.04% -> out of radar
handler::unbind_psi 0.03% -> out of radar
open_table          0.21% -> 0.18%
close_thread_table  0.05% -> 0.05%
parent 8f603bcb
...@@ -30,6 +30,9 @@ ...@@ -30,6 +30,9 @@
*/ */
#ifdef HAVE_PSI_TABLE_INTERFACE #ifdef HAVE_PSI_TABLE_INTERFACE
#define MYSQL_UNBIND_TABLE(handler) (handler)->unbind_psi()
#define MYSQL_REBIND_TABLE(handler) (handler)->rebind_psi()
#define PSI_CALL_unbind_table PSI_TABLE_CALL(unbind_table) #define PSI_CALL_unbind_table PSI_TABLE_CALL(unbind_table)
#define PSI_CALL_rebind_table PSI_TABLE_CALL(rebind_table) #define PSI_CALL_rebind_table PSI_TABLE_CALL(rebind_table)
#define PSI_CALL_open_table PSI_TABLE_CALL(open_table) #define PSI_CALL_open_table PSI_TABLE_CALL(open_table)
...@@ -38,6 +41,9 @@ ...@@ -38,6 +41,9 @@
#define PSI_CALL_release_table_share PSI_TABLE_CALL(release_table_share) #define PSI_CALL_release_table_share PSI_TABLE_CALL(release_table_share)
#define PSI_CALL_drop_table_share PSI_TABLE_CALL(drop_table_share) #define PSI_CALL_drop_table_share PSI_TABLE_CALL(drop_table_share)
#else #else
#define MYSQL_UNBIND_TABLE(handler) /* no-op */
#define MYSQL_REBIND_TABLE(handler) /* no-op */
#define PSI_CALL_unbind_table(A1) /* no-op */ #define PSI_CALL_unbind_table(A1) /* no-op */
#define PSI_CALL_rebind_table(A1,A2,A3) NULL #define PSI_CALL_rebind_table(A1,A2,A3) NULL
#define PSI_CALL_close_table(A1) /* no-op */ #define PSI_CALL_close_table(A1) /* no-op */
......
...@@ -1100,7 +1100,7 @@ void close_thread_table(THD *thd, TABLE **table_ptr) ...@@ -1100,7 +1100,7 @@ void close_thread_table(THD *thd, TABLE **table_ptr)
critical section. critical section.
*/ */
if (table->file != NULL) if (table->file != NULL)
table->file->unbind_psi(); MYSQL_UNBIND_TABLE(table->file);
tc_release_table(table); tc_release_table(table);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
...@@ -1635,8 +1635,8 @@ use_temporary_table(THD *thd, TABLE *table, TABLE **out_table) ...@@ -1635,8 +1635,8 @@ use_temporary_table(THD *thd, TABLE *table, TABLE **out_table)
thread to another, we need to let the performance schema know that, thread to another, we need to let the performance schema know that,
for aggregates per thread to work properly. for aggregates per thread to work properly.
*/ */
table->file->unbind_psi(); MYSQL_UNBIND_TABLE(table->file);
table->file->rebind_psi(); MYSQL_REBIND_TABLE(table->file);
} }
#endif #endif
} }
...@@ -2530,7 +2530,7 @@ bool open_table(THD *thd, TABLE_LIST *table_list, Open_table_context *ot_ctx) ...@@ -2530,7 +2530,7 @@ bool open_table(THD *thd, TABLE_LIST *table_list, Open_table_context *ot_ctx)
if (table) if (table)
{ {
DBUG_ASSERT(table->file != NULL); DBUG_ASSERT(table->file != NULL);
table->file->rebind_psi(); MYSQL_REBIND_TABLE(table->file);
} }
else else
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment