Innodb的S lock和IS lock的范围问题!
Innodb的S lock和IS lock的范围问题!
Intention shared (IS): Transaction T intends to set S locks on individual rows in table R.
Intention exclusive (IX): Transaction T intends to set X locks on those rows.
The intention locking protocol is as follows:
Before a given transaction can acquire an S lock on a given row, it must first acquire an IS or stronger lock on the table containing that row.
Before a given transaction can acquire an X lock on a given row, it must first acquire an IX lock on the table containing that row.
红色片段意思是,在对一行获得S lock之前,你必须对这个行所在的表能获取IS lock。在对一行获得X lock之前,你必须对这个行所在的表能获取IX lock。
问下:为什么S lock的范围比IS lock的小呢?为什么X lock的范围比IX要小呢?S lock是表共享锁啊 IS lock是表的行锁啊,红色部分是不是写反了,还是我理解错了?
------解决方案--------------------------------------------------------