Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
MDEV-23991 dict_table_stats_lock() has unnecessarily long scope
Patch removes dict_index_t::stats_latch. Table/index statistics now protected with dict_sys->mutex. That way statistics computation can happen in parallel in several threads and dict_sys->mutex will be locked only for a short period of time. This patch is a joint work with Marko Mäkelä dict_index_t:🔒 make mutable which allows to pass const pointer when only lock is touched in an object btr_height_get() btr_get_size(): make index argument const for better type safety btr_estimate_number_of_different_key_vals(): now returns computed values instead of setting fields in dict_index_t directly remove everything related to dict_index_t::stats_latch dict_stats_index_set_n_diff(): now returns computed values instead of setting fields in dict_index_t directly dict_stats_analyze_index(): now returns computed values instead of setting fields in dict_index_t directly Reviewed by: Marko Mäkelä
- Loading branch information
Showing
21 changed files
with
289 additions
and
280 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| # | ||
| # MDEV-23991 dict_table_stats_lock() has unnecessarily long scope | ||
| # | ||
| CREATE TABLE t1(a INT) ENGINE=INNODB STATS_PERSISTENT=1; | ||
| SET DEBUG_SYNC='dict_stats_update_persistent SIGNAL stop WAIT_FOR go'; | ||
| ANALYZE TABLE t1; | ||
| connect con1, localhost, root; | ||
| SET DEBUG_SYNC='now WAIT_FOR stop'; | ||
| SELECT ENGINE,SUM(DATA_LENGTH+INDEX_LENGTH),COUNT(ENGINE),SUM(DATA_LENGTH),SUM(INDEX_LENGTH) FROM information_schema.TABLES WHERE ENGINE='InnoDB'; | ||
| ENGINE SUM(DATA_LENGTH+INDEX_LENGTH) COUNT(ENGINE) SUM(DATA_LENGTH) SUM(INDEX_LENGTH) | ||
| InnoDB 49152 3 49152 0 | ||
| SET DEBUG_SYNC='now SIGNAL go'; | ||
| disconnect con1; | ||
| connection default; | ||
| Table Op Msg_type Msg_text | ||
| test.t1 analyze status OK | ||
| SET DEBUG_SYNC= 'RESET'; | ||
| DROP TABLE t1; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| --source include/have_innodb.inc | ||
| --source include/have_debug.inc | ||
| --source include/have_debug_sync.inc | ||
| --source include/count_sessions.inc | ||
|
|
||
| --echo # | ||
| --echo # MDEV-23991 dict_table_stats_lock() has unnecessarily long scope | ||
| --echo # | ||
| CREATE TABLE t1(a INT) ENGINE=INNODB STATS_PERSISTENT=1; | ||
|
|
||
| SET DEBUG_SYNC='dict_stats_update_persistent SIGNAL stop WAIT_FOR go'; | ||
| --send ANALYZE TABLE t1 | ||
|
|
||
| --connect(con1, localhost, root) | ||
| SET DEBUG_SYNC='now WAIT_FOR stop'; | ||
|
|
||
| SELECT ENGINE,SUM(DATA_LENGTH+INDEX_LENGTH),COUNT(ENGINE),SUM(DATA_LENGTH),SUM(INDEX_LENGTH) FROM information_schema.TABLES WHERE ENGINE='InnoDB'; | ||
|
|
||
| SET DEBUG_SYNC='now SIGNAL go'; | ||
| --disconnect con1 | ||
|
|
||
| --connection default | ||
| --reap | ||
| SET DEBUG_SYNC= 'RESET'; | ||
| DROP TABLE t1; | ||
|
|
||
| --source include/wait_until_count_sessions.inc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.