mirror of
https://github.com/MariaDB/server.git
synced 2025-05-25 13:42:52 +03:00
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ä
28 lines
769 B
Plaintext
28 lines
769 B
Plaintext
--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
|