表锁
IN 无意图锁,不需要行锁 该锁拥有者可以读表中的任何数据,包括其他用户尚未提交的数据,但不能对表中的数据进行updata
IS 意图共享锁 该锁的拥有者可以在拥有行S锁后,可以读取改行的数据,但不能对该行进行更改 需要行锁配合
IX 意图排他锁 该锁拥有者在得到相应行的X锁后,可以更改该行的数据需要行锁配合
SIX 共享With意图排他锁 可以读表中的任何数据,如果获得相应的X锁,就可以修改该行; SIX在IX下,请求S,或者在S下请求IX需要行锁配合
S 共享锁 可以读表中的任何数据,如果表被加S锁,只能读取,不能update
U 更新锁 可以读表中的任何数据,在升级到X锁后,还可以更改表中的任何数据,该锁处于等待对数据进行更改的一种中间状态。U锁的设计主要是避免两个应用程序在拥有S锁的情况下,同事申请X锁造成的死锁。
X排他锁 可以读取or更改表中任何数据,除了 未提交读程序外,其他应用程序不能读写
Z 超级排他锁 由于drop alter 表,create drop index而获得的。
若不指定,则不需要行锁配合
A B | IN | IS | S | IX | SIX | U | X | Z |
IN | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
IS | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
S | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
IX | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
SIX | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
U | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
X | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Z | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 兼容 0不兼容
行锁
需要表锁的最低级别
S 共享锁 IS 该行正在被读取,其他应用程序只能对该行进行读操作;
U 更改锁 IX 正在读,可能改,其他应用程序只能读该行,其他应用只能读该行
X 排他 IX 更改,正在更改,其他应用程序不能访问该行
W 弱排他 weak eXclusive IX 当一行数据插入某表时,该行会被加上W锁,锁的拥有者可以更改本行,该锁于X锁基本相同,但是和NW锁兼容
NS 下一键共享 IS 锁的拥有者可以和其他应用程序读该行,但不能更改该行,当处于RS CS时相当于S
NX 下一键排他 IX 当一行数据被插入到索引中,或者从索引中删除的时候,该行的下一行会被加上该锁,锁的拥有者可以读但是不能更改锁定行,该锁于X锁类似,但是和NS锁兼容
NW 下一键弱排他, IX 当一行数据被插入到索引的时候,该行的下一行会被加上该锁,可以读但是不能update,与X、NX锁类似,但它与W和NS锁兼容。
[@more@]
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24386451/viewspace-1036223/ ,如需转载,请注明出处,否则将追究法律责任。