Intention Locks 意向锁 InnoDB 支持多颗粒度锁定允许row-level locks和锁整个表共存。 为了使锁在多个颗粒级别实现, 额外类型的锁被称为意向锁是被使用。 . Intention lock 意向锁是表级锁 在InnoDB 表明锁的类型(共享或者排它) 一个事务随后需要用于一个记录在那个表。 有两种意向锁类型在InnoDB(假设事务T有请求一个表明类型的锁在表t) 1.意向共享锁 (IS): 事务T尝试设置S锁在表t的单个记录上 2.意向排它锁 事务T尝试设置X锁在那些记录上 例如, SELECT ... LOCK IN SHARE MODE 设置一个IS LOCK SELECT ... FOR UPDATE 设置一个IS 锁 意向锁协议如下: 1.在一个事务可以获得S锁在表t的一条记录上,它必须首先获得一个IS或者更强的锁在表t 2.在一个事务可以获得X锁在一个记录,它必须首先获得一个IX锁在表t上 那些规则可以入下汇总: X IX S IS X Conflict Conflict Conflict Conflict IX Conflict Compatible Conflict Compatible S Conflict Conflict Compatible Compatible IS Conflict Compatible Compatible Compatible 一个锁是被授权到一个请求的事务 如果它是和存在的锁兼容的, 但是不能授权如果它是和存在的锁冲突的。 一个事务等待直到冲突存在的锁被释放, 如果一个锁请求和存在的锁冲突, 不能被立即授予 意味它会导致死锁,一个错误发生 因此意向锁不堵塞任何除非全表请求(比如 LOCK TABLES ... WRITE). IX和IS锁的主要目的是显示谁是锁住一个记录了,或者准备去锁定一个记录
Intention Locks 意向锁
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
InnoDB 意向锁
锁意向锁案例考虑这个例子:事务A锁住了表中的一行,让这一行只能读,不能写。之后,事务B申请整个表的写锁。如果事务B申请成
java sql 数据库 意向锁 共享锁 -
MySQL意向锁SQL示例:查看意向锁及其状态
当一个连接请求对表进行读锁或写锁时,MySQL会自动获取适当级别的意向锁来指示其意图。需要强调的是,意向锁
mysql sql 数据库 意向锁 MySQL