問(wèn)題是,更糟糕的是:
- 死鎖,或
- 一個(gè)錯(cuò)誤的價(jià)值?
對(duì)于金融數(shù)據(jù)庫(kù)來(lái)說(shuō),死鎖遠(yuǎn)比錯(cuò)誤的價(jià)值更糟糕。我知道這聽(tīng)起來(lái)倒像,但聽(tīng)我說(shuō)完。DB事務(wù)的傳統(tǒng)示例是更新兩行,從一行減去另一行。這是錯(cuò)誤的。
在金融數(shù)據(jù)庫(kù)中,您使用業(yè)務(wù)事務(wù)。這意味著向每個(gè)帳戶(hù)添加一行。最重要的是完成這些事務(wù)并成功地寫(xiě)入行。
暫時(shí)把賬戶(hù)余額弄錯(cuò)并不是什么大不了的事,這就是一天結(jié)束時(shí)對(duì)賬的目的。而且,帳戶(hù)透支的可能性要大得多,因?yàn)橥瑫r(shí)使用了兩個(gè)ATM機(jī),而不是數(shù)據(jù)庫(kù)中未提交的讀取。
也就是說(shuō),SQLServer 2005修復(fù)了大多數(shù)導(dǎo)致NOLOCK
是必要的。因此,除非您使用的是SQLServer 2000或更高版本,否則不應(yīng)該需要它。
再讀
行級(jí)版本控制