DB2中事务的隔离级别分为 UR(未落实的读),CS(游标稳定性),RS(读稳定性),RR(可重复读)
事务中更改隔离级别的语句 connect reset; change isolation to UR; connect to testdb
以下为各级别的特点:
1.
UR下可能出现脏读,他的隔离级别最低
该操作不对表,数据行进行锁定
2.
CS可以避免脏读,但可能出现不可重复读的现象
update操作发生后,update影响的行上会出现X锁(写锁,个人理解为不可脏读数据行的写锁)
3.
RS可以避免不可重复读的问题,但可能出现幻读的现象
select,update操作发生后,在select,update影响的行上,发生了共享锁,其它事务若想update这些行,就会发生互斥,引发锁等待
4.
RR可以避免幻读
读操作发生后,在表上加了S锁(共享锁,个人理解为,不可写表的锁),所以update等更新锁,在表级别上与它发生了互斥
名词解释:
所谓 脏度,指的是,读取了另一事务中未提交的数据
所谓 不可重复读,指的是,本事务中两次读取数据的结果不同
所谓 幻读,指的是,本事务,可能读到,其它事务插入的新数据