在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一,事务的4个基本特征 Atomic(原子性): Consistency(一致性): Isolation(隔离性): Durability(持久性): 以上属于废话 二,为什么需要对事务并发控制 如果不对事务进行并发控制,我们看看数据库并发操作是会有那些异常情形 Lost update: Dirty Reads: Non-repeatable Reads: Second lost updates problem: Phantom Reads: 三, 数据库的隔离级别 为了兼顾并发效率和异常控制,在标准SQL规范中,定义了4个事务隔 Read Uncommitted: Read Committed: Repeatable Read: Serializable: 四,隔离级别对并发的控制 下表是各隔离级别对各种异常的控制能力。 (注:LU:丢失更新;DR:脏读;NRR:非重复读;SLU:二类丢失更新;PR:幻像读) 顺便举一小例。 MS_SQL: --事务一 set transaction isolation level serializable begin tran insert into test values('xxx') --事务二 set transaction isolation level read committed begin tran select * from test --事务三 set transaction isolation level read uncommitted begin tran select * from test 在查询分析器中执行事务一后,分别执行事务二,和三。结果是事务二会等待,而事务三则会执行。 ORACLE: --事务一 set transaction isolation level serializable; insert into test values('xxx'); select * from test; --事务二 set transaction isolation level read committed--ORACLE默认级别 select * from test 执行事务一后,执行事务二。结果是事务二只读出原有的数据,无视事务一的插入操作。 读者是否发现MS_SQL和ORACLE对并发控制的处理有所不同呢? 五,锁 下表是锁的兼容或冲突情形。 现有 S U X oracle:
七,附 select object_name,session_id,os_user_name,oracle_username,process,locked_mode,status from v$locked_object l, all_objects a where l.object_id=a.object_id; MS_SQL: EXEC SP_LOCK |
请发表评论