亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SQLServer中的“With(Nolock)”是什么?

SQLServer中的“With(Nolock)”是什么?

冉冉說 2019-07-22 14:36:57
SQLServer中的“With(Nolock)”是什么?有人能解釋一下使用with (nolock)在查詢中,什么時候應該/不應該使用它?例如,如果您有一個具有高交易率的銀行應用程序,以及某些表中的大量數據,那么在哪種類型的查詢中可以使用nolock?在某些情況下,你應該經常使用它/永遠不要使用它?
查看完整描述

3 回答

?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

With(NOLOCK)相當于使用Read unCommated作為事務隔離級別。因此,您有可能讀取隨后回滾的未提交行,即從未將其放入數據庫的數據。因此,雖然它可以防止其他操作導致讀取陷入僵局,但也會帶來風險。在一個高交易率的銀行應用程序中,它可能不是你試圖用IMHO解決的任何問題的正確解決方案。


查看完整回答
反對 回復 2019-07-22
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

問題是,更糟糕的是:

  • 死鎖,或
  • 一個錯誤的價值?

對于金融數據庫來說,死鎖遠比錯誤的價值更糟糕。我知道這聽起來倒像,但聽我說完。DB事務的傳統示例是更新兩行,從一行減去另一行。這是錯誤的。

在金融數據庫中,您使用業務事務。這意味著向每個帳戶添加一行。最重要的是完成這些事務并成功地寫入行。

暫時把賬戶余額弄錯并不是什么大不了的事,這就是一天結束時對賬的目的。而且,帳戶透支的可能性要大得多,因為同時使用了兩個ATM機,而不是數據庫中未提交的讀取。

也就是說,SQLServer 2005修復了大多數導致NOLOCK是必要的。因此,除非您使用的是SQLServer 2000或更高版本,否則不應該需要它。

再讀
行級版本控制


查看完整回答
反對 回復 2019-07-22
  • 3 回答
  • 0 關注
  • 2697 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號