看板 Database 關於我們 聯絡資訊
※ 引述《Adonisy (堂本瓜一)》之銘言: : ※ 引述《adrianshum (Alien)》之銘言: : : 順便八卦問一問的. : : 以前工作有試過把 8i 移到好像是Sql2000 吧... : : 當時發覺有一個 Sql server 做得很不濟的事. : : 就是當有人在 read 某 record 的話, write access : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ : : 也會需要等的 (Oracle 則是 read 不會影響其他人 : ^^^^^^^^^^^^^ : : write). 當時令到一些在 oracle 不會出現問題的 : : code 在 sql server 出現 deadlock 的情況. : : 最新的 sql server 在方面有改善做法嗎? : 一直沒這問題啊... : 讀的 share lock是讀完就釋放 lock : 除非隔離層級調高.... 問題就在於讀會有 lock 在 oracle, connection 1 正在讀某 table, connection 2 是能直接 update. 反之亦然, connection A 在 update 某 table, 未 commit 之前, connect B 能直接讀沒問題. 但之前的 Sql Server 則是靠類似 reader writer lock 的方法去達成 READ COMMITED 這 isolation level. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.155.236.82
grence:如果不在意dirty read,SQL SERVER也有更低層級的lock 02/25 15:15
adrianshum:當然在意. 一般大型程式都不可能用 Dirty Read 吧?.. 02/25 16:56
trueQoo:dirty read只是 no lock而以...也沒什麼啊~~~ 02/25 17:22
grence:只是好奇未 commit前就讀資料不會有dirty read問題嗎? 02/25 19:20
adrianshum:Oracle 是會讓你讀到未update 前的樣子, 而不是等 02/25 19:22
taicomjp:SQL Server預設是Read Committed 02/26 01:48
finalcoffee:MS SQL在where條件後加上with(NOLOCK) 03/28 11:08