1、事务
数据库在读取的记录上加共享锁,验证是否可以读取数据,直到事务提交,锁才能释放,其他用户可以读取数据,但是不能修改。可以保证在同一事务中前后两次读取记录是一致的。当必须要信任所有读取的记录,保证记录不被修改,我们可以采用repeatable read,例如统计数据(银行账号的余额情况)、关联查询多个表等。 5)Last Committed Read(读取最后提交的数据) 这是一种乐观锁,它解决了Commited Read的不足,因为Commited Read在记录被锁时,其它进程需要等待。 这种隔离级别常被用在WEB应用系统中,例如在电子商务系统中,可以选择商品添加到购物篮中,但是此时后台可能你正在对商品的价格进行更新,当再次检查的时候,可能发现商品的价格已经发生变化。 设置语句参考如下:
相对Committed Read而言,提高了并发量和系统的吞吐量。可以通过ONCONFIG参数设置为隔离级别:USELASTCOMMITTED。表需要设置为行级锁,不能是页级锁。 6)几种隔离级别的比较 隔离级别 脏读? 不可重复读? 幻影读? Dirty Read Yes Yes Yes Last Commited Read No Yes Yes Commited Read No Yes Yes Cursor Stability No No Yes Repeatable Read No No No 5、设置事务/会话的锁模式 1)不等待锁的释放 为默认的锁模式,如果数据库对象被锁,则立即返回错误。错误消息参考如下: