作者adrianshum (Alien)
看板Database
标题Re: [问题] Oracle 8i 移转到 SQL 2008
时间Wed Feb 25 19:21:21 2009
※ 引述《trueQoo (幸运之神)》之铭言:
: ※ 引述《adrianshum (Alien)》之铭言:
: : 问题就在於读会有 lock
: : 在 oracle, connection 1 正在读某 table,
: : connection 2 是能直接 update. 反之亦然,
: : connection A 在 update 某 table, 未 commit
: : 之前, connect B 能直接读没问题.
: : 但之前的 Sql Server 则是靠类似 reader writer lock
: : 的方法去达成 READ COMMITED 这 isolation level.
: 读,在每个资料库系统中,都有 lock
: 这点 oracle也是有的....
: oracle ,connection1 读某 table,connection2能直接 update
: 这点 sql server本来就可以啊!!
举个实际例子好了
connection A, update T1, 然後读 T2
connection B, update T2, 然後读 T1
oracle 中, 这是很正常也能正常通过的.
但在 SqlServer 中, 则会造成 deadlock
(因为两者的 read 皆在等候对方的 write
完成)
本来在 oracle 要避免 deadlock 只要处理 CUD
的部份, SqlServer 则是 CRUD 都要.
: 至於 connection A在 update 没 commit , connect B 在 SQL Server中预设不能读
: 这是 ANSI SQL定义的 isolation level,和 SQL Server无关
read committed这 isoation level 定义的是
"A 的东西没 commit, B 不会读到未 commit 的部份" ,
还是
"A 的东西没 commit, B 读到有未 commit 的东西就要等到 A commit 才能继续" ?
我想是前者吧?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.155.236.82