MySQL关于table_lock_wait和table_lock_immediate
发布时间:2021-06-08
发布时间:2021-06-08
MySQL关于table_lock_wait和table_lock_immediate
前记
前几天收到一位同行的一个文档,是MySQL High Performance 2的读书笔记, 97页,6w多字。在描述完知识点后,有疑问的地方列出问题,希望和我讨论。看完以后非常敬佩,自感自己无法做到这么细心。为表敬意,承诺会一一回答里面的问题。对于无法简单回复的问题,就想通过博客的方式写出来,便于讨论。
因此这个系列,就是回复这位同学的文档中的问题的。
问题
服务器变量table_locks_immediate和 table_locks_waited#?它们保持多大的比例是合适的?
背景
table_locks_immediate表示可以立即获取锁的查询次数, table_locks_waited表示不能立即获取锁的次数;
Session 1
Session 2
lock tables t1 read;
(table_locks_immediate+1)
update t1 set y=1 where id=1;
(locked并且table_locks_waited+1)
上面这个例子很简单,session 1加了表所,但是session 2要更新,获取表锁失败。
异象
Session 1
Session 2
lock tables t1 write;
(table_locks_immediate+1)
update t1 set y=1 where id=1;
(locked但table_locks_waited不变)
上一篇:高中有机化学基础知识点的总结