DB2学习笔记

表锁:

名称缩写 全名 描述
IN 无意图锁(Intent Node),不需要行锁 拥有者可以读取包括其他事务未提交数据在内的所有数据,但不能对表中的数据作出修改
IS 意图共享锁(Intent Share),需要行锁配合 拥有者可以在拥有相应行上的S锁时可以读取该行的数据,但不能修改数据
IX 意图排他锁(Intent eXclusive),需要行锁配合 拥有者可以在拥有相应行上的X锁时可以修改该行的数据
SIX 共享并且意图排他锁(Share with Intent eXclusive),需要行锁配合 拥有者可以读取表中的任何数据,如果在相应的行上可以获得X锁,可以修改该行。SIX的获取比较特殊,当程序拥有IX锁时请求S锁,或者在已经拥有S锁的时候请求IX锁时产生
S 共享锁(Share),不需要行锁配合 可以读取表上的任何数据,如果表上被加了S锁,表上的数据只能被读取而不能做出任何修改
U 更新锁(Update),不需要行锁配合 拥有者可以读取表中的任何数据,如果升级为X锁,则可以更改表中的任何数据,该锁是等待对数据进行修改的一种中间状态
X 排他锁(eXclusive),不需要行锁配合 拥有者可以读取或者修改表中的任意数据,如果加上了X锁,除了未提交读事务外,其他程序都不能对表进行任何读取或者修改
Z 超级排他锁(Super eXclusive),不需要行锁配合 该锁一般不是由 DML 产生,而是由Drop,Alter或者创建删除索引时产生的,加上Z锁后,所有程序(包括未提交读程序)都不能对表进行读取或者修改

行锁:

名称缩写 全名 需要表锁最低级别 描述
S 共享锁(Share) IS 该行正在被读取,其他程序只能执行读操作
U 更改锁(Update) IX 某个程序正在读取并有可能修改该行,其他程序只能读取该行
X 排他锁(eXclusive) IX 该行正在被某个程序修改,其他程序不能访问该行
W 弱排他锁(Weak eXclusive) IX 一行被插入表后,该行会加上 W 锁,只有锁的拥有者可以修改该行,与 X 锁的不同在于该锁与 NW 锁兼容
NS 下一键共享锁(Next Share) IS 拥有者与其他程序都可以读取该行,但不能进行修改,当程序处于RS或者CS隔离级别下时,该锁可以代替S锁
NX 下一键排他锁(NexteXclusive) IX 一行的数据被插入到索引或者从索引被删除时,该行的下一行会被加上 NX 锁,锁的拥有者可以读该行的数据但不能修改。该锁与 X 锁类似,但与 NS 锁兼容
NW 下一键弱排他锁(NextWeak eXclusive) IX 一行的数据被插入到索引时,该行的下一行会被加上NW锁,锁的拥有者可以读但不能修改该行的数据,与X锁及 NX 锁类似,但与W锁以及 NS 锁兼容

隔离级别

默认隔离级别是CS. DB2的隔离级别有四种: