mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-5864 - Reduce usage of LOCK_open: TABLE_SHARE::tdc.free_tables
Let TABLE_SHARE::tdc.free_tables, TABLE_SHARE::tdc.all_tables, TABLE_SHARE::tdc.flushed and corresponding invariants be protected by per-share TABLE_SHARE::tdc.LOCK_table_share instead of global LOCK_open.
This commit is contained in:
@ -4,9 +4,9 @@ WHERE name LIKE 'wait/synch/mutex/%'
|
||||
OR name LIKE 'wait/synch/rwlock/%';
|
||||
flush status;
|
||||
select NAME from performance_schema.mutex_instances
|
||||
where NAME = 'wait/synch/mutex/sql/LOCK_open';
|
||||
where NAME = 'wait/synch/mutex/sql/TABLE_SHARE::tdc.LOCK_table_share' GROUP BY NAME;
|
||||
NAME
|
||||
wait/synch/mutex/sql/LOCK_open
|
||||
wait/synch/mutex/sql/TABLE_SHARE::tdc.LOCK_table_share
|
||||
select NAME from performance_schema.rwlock_instances
|
||||
where NAME = 'wait/synch/rwlock/sql/LOCK_grant';
|
||||
NAME
|
||||
@ -23,7 +23,7 @@ id b
|
||||
1 initial value
|
||||
SET @before_count = (SELECT SUM(TIMER_WAIT)
|
||||
FROM performance_schema.events_waits_history_long
|
||||
WHERE (EVENT_NAME = 'wait/synch/mutex/sql/LOCK_open'));
|
||||
WHERE (EVENT_NAME = 'wait/synch/mutex/sql/TABLE_SHARE::tdc.LOCK_table_share'));
|
||||
SELECT * FROM t1;
|
||||
id b
|
||||
1 initial value
|
||||
@ -36,12 +36,12 @@ id b
|
||||
8 initial value
|
||||
SET @after_count = (SELECT SUM(TIMER_WAIT)
|
||||
FROM performance_schema.events_waits_history_long
|
||||
WHERE (EVENT_NAME = 'wait/synch/mutex/sql/LOCK_open'));
|
||||
WHERE (EVENT_NAME = 'wait/synch/mutex/sql/TABLE_SHARE::tdc.LOCK_table_share'));
|
||||
SELECT IF((@after_count - @before_count) > 0, 'Success', 'Failure') test_fm1_timed;
|
||||
test_fm1_timed
|
||||
Success
|
||||
UPDATE performance_schema.setup_instruments SET enabled = 'NO'
|
||||
WHERE NAME = 'wait/synch/mutex/sql/LOCK_open';
|
||||
WHERE NAME = 'wait/synch/mutex/sql/TABLE_SHARE::tdc.LOCK_table_share';
|
||||
TRUNCATE TABLE performance_schema.events_waits_history_long;
|
||||
TRUNCATE TABLE performance_schema.events_waits_history;
|
||||
TRUNCATE TABLE performance_schema.events_waits_current;
|
||||
@ -50,7 +50,7 @@ id b
|
||||
1 initial value
|
||||
SET @before_count = (SELECT SUM(TIMER_WAIT)
|
||||
FROM performance_schema.events_waits_history_long
|
||||
WHERE (EVENT_NAME = 'wait/synch/mutex/sql/LOCK_open'));
|
||||
WHERE (EVENT_NAME = 'wait/synch/mutex/sql/TABLE_SHARE::tdc.LOCK_table_share'));
|
||||
SELECT * FROM t1;
|
||||
id b
|
||||
1 initial value
|
||||
@ -63,7 +63,7 @@ id b
|
||||
8 initial value
|
||||
SET @after_count = (SELECT SUM(TIMER_WAIT)
|
||||
FROM performance_schema.events_waits_history_long
|
||||
WHERE (EVENT_NAME = 'wait/synch/mutex/sql/LOCK_open'));
|
||||
WHERE (EVENT_NAME = 'wait/synch/mutex/sql/TABLE_SHARE::tdc.LOCK_table_share'));
|
||||
SELECT IF((COALESCE(@after_count, 0) - COALESCE(@before_count, 0)) = 0, 'Success', 'Failure') test_fm2_timed;
|
||||
test_fm2_timed
|
||||
Success
|
||||
|
Reference in New Issue
Block a user