Details
-
Task
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
Description
- Currently, during read-only workload with high contention (say 1024 threads)
dict_sys mutex contention rises as a top-contention (as reported by performance schema).
- read-only workload ideally shouldn't have anything to do with dict_sys mutex
but optimizer needs stats and to read stat dict_sys mutex is taken.
- dict_sys is global mutex even though optimizer may request stat for a said table only.
- this contention is heavily visible when operating with higher scalability and especially
with more numa nodes things get worse.
wait/synch/mutex/innodb/dict_sys_mutex | 24670208.7616 | 50001391 |
<60 secs ro workload> ...
wait/synch/mutex/innodb/dict_sys_mutex | 36223993.1059 | 95602955 |
-------------------------
How to solve it?
- Probably check how dict_sys mutex could be relaxed for concurrent access.
- Marko suggested a better solution. Starting 10.6 there is table->lock_mutex.
Given table level mutex it could help reduce the contention.
--------------------------------------------
Very early POC has show improvement in sysbench-ro workload qps by 5-7%.
The approach also helps support the numa-scalability goal.
Attachments
Issue Links
- relates to
-
MDEV-27746 Wrong comparision of BLOB's empty preffix with non-preffixed BLOB causes rows count mismatch for clustered and secondary indexes during non-locking read
- Closed
-
MDEV-32176 Contention in ha_innobase::info_low (dict_table::lock_mutex_lock)
- Closed