diff options
author | Sergey Vojtovich <svoj@mariadb.org> | 2015-06-17 13:09:22 +0400 |
---|---|---|
committer | Sergey Vojtovich <svoj@mariadb.org> | 2015-06-19 15:06:34 +0400 |
commit | 12d9fe14bea38eaa2ff0f5edeea22d4c7a5debed (patch) | |
tree | 330f309dd955bfec99f6e3131f846b67586dcf9e | |
parent | 8f603bcbcac4a9091b6adbca3fd3655a947e759a (diff) | |
download | mariadb-git-12d9fe14bea38eaa2ff0f5edeea22d4c7a5debed.tar.gz |
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%
-rw-r--r-- | include/mysql/psi/mysql_table.h | 6 | ||||
-rw-r--r-- | sql/sql_base.cc | 8 |
2 files changed, 10 insertions, 4 deletions
diff --git a/include/mysql/psi/mysql_table.h b/include/mysql/psi/mysql_table.h index bd703d75e1f..bf744ec664c 100644 --- a/include/mysql/psi/mysql_table.h +++ b/include/mysql/psi/mysql_table.h @@ -30,6 +30,9 @@ */ #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_rebind_table PSI_TABLE_CALL(rebind_table) #define PSI_CALL_open_table PSI_TABLE_CALL(open_table) @@ -38,6 +41,9 @@ #define PSI_CALL_release_table_share PSI_TABLE_CALL(release_table_share) #define PSI_CALL_drop_table_share PSI_TABLE_CALL(drop_table_share) #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_rebind_table(A1,A2,A3) NULL #define PSI_CALL_close_table(A1) /* no-op */ diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 96d317e2b57..848020c1846 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -1100,7 +1100,7 @@ void close_thread_table(THD *thd, TABLE **table_ptr) critical section. */ if (table->file != NULL) - table->file->unbind_psi(); + MYSQL_UNBIND_TABLE(table->file); tc_release_table(table); DBUG_VOID_RETURN; @@ -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, for aggregates per thread to work properly. */ - table->file->unbind_psi(); - table->file->rebind_psi(); + MYSQL_UNBIND_TABLE(table->file); + MYSQL_REBIND_TABLE(table->file); } #endif } @@ -2530,7 +2530,7 @@ retry_share: if (table) { DBUG_ASSERT(table->file != NULL); - table->file->rebind_psi(); + MYSQL_REBIND_TABLE(table->file); } else { |