有沒有辦法使WITH(NOLOCK)應用於在特定數據庫上運行的任何SELECT語句?我可以在數據庫範圍內應用NOLOCK嗎?
1
A
回答
5
沒有,但你可以使用SQL Server 2005上的SNAPSHOT ISOLATION數據庫級及以上,應該有很大的幫助死鎖
SQL Server 2005引入擴展到SQL-92隔離級別與引進的快照隔離級別和READ COMMITTED的附加實現。新的READ_COMMITTED_SNAPSHOT隔離級別可以透明地替換所有事務的READ COMMITTED。
SNAPSHOT隔離指定在事務內讀取的數據永遠不會反映其他同時事務所做的更改。事務使用交易開始時存在的數據行版本。數據讀取時不會鎖定數據,因此SNAPSHOT事務不會阻止其他事務寫入數據。寫入數據的事務不會阻止快照事務讀取數據。您需要通過設置ALLOW_SNAPSHOT_ISOLATION數據庫選項來啓用快照隔離才能使用它。
READ_COMMITTED_SNAPSHOT數據庫選項確定在數據庫中啓用快照隔離時,默認READ COMMITTED隔離級別的行爲。如果您沒有明確指定READ_COMMITTED_SNAPSHOT ON,則將READ COMMITTED應用於所有隱式事務。這產生與設置READ_COMMITTED_SNAPSHOT OFF(默認值)相同的行爲。當READ_COMMITTED_SNAPSHOT OFF有效時,數據庫引擎使用共享鎖來強制執行默認隔離級別。如果將READ_COMMITTED_SNAPSHOT數據庫選項設置爲ON,則數據庫引擎將使用行版本控制和快照隔離作爲默認值,而不是使用鎖來保護數據。
0
取決於您的數據庫。某些數據庫引擎允許您默認爲髒讀或類似行爲。
例如,某些MSSQL Server版本允許您將數據庫設置爲快照隔離,SQLMenace的文章中對此進行了描述。
相關問題
- 1. 我可以在隔離範圍內調用多個函數嗎?
- 2. 我可以在隔離範圍內使用ng模型嗎?
- 3. 我可以在{{#with}}範圍內訪問視圖屬性嗎?
- 4. 嵌套函數可以放在Javascript的全局範圍內嗎?
- 5. 我可以在Rails中使用普通的ActiveRecord範圍(範圍)和模塊嗎?
- 6. 我可以在MongoDB中按範圍分組浮點數嗎?
- 7. 選擇範圍內的數據庫行
- 8. SQL可以根據範圍限制交錯數據嗎?
- 9. Facebook應用可以使用我的網站數據庫嗎?
- 10. 我可以在Bootstrap datepicker中禁用幾個日期範圍嗎?
- 11. 我可以在我的Controller $範圍中注入Java代碼嗎?
- 12. 我應該/可以使用多個數據庫嗎?
- 13. 我可以下載Phpmyadmin數據庫嗎?
- 14. 我可以刪除數組中的項目範圍嗎?
- 15. 我可以將列表範圍作爲一個函數嗎?
- 16. 可以在rails應用上使用兩個sqlite3數據庫嗎?
- 17. 我們可以使用範圍數組來調用角度函數嗎?
- 18. 我可以在TransactionScope中從數據庫檢索數據嗎?
- 19. 我可以將findViewById()限制在單個片段的範圍內嗎?
- 20. 我可以在方法範圍內的C#或VB.NET中創建別名嗎?
- 21. 我可以在全球範圍內更改Symfony的視圖後綴嗎?
- 22. HTML:我可以在滑塊上的範圍內添加標籤嗎?
- 23. CDI擴展:我可以在兩個範圍內公開一個接口嗎?
- 24. 我可以使用sum(filter())範圍的查找值嗎?
- 25. 我可以使用ModelForm來按範圍過濾日期嗎?
- 26. 我可以使用水豚/ rspec來匹配範圍嗎?
- 27. 我可以從模型代碼中調用指定範圍嗎?
- 28. 我可以將鬍鬚限制在當前範圍嗎?
- 29. 我可以在linq語句中重構範圍變量嗎?
- 30. 我可以在Nashorn的新引擎範圍中調用函數嗎?
快照隔離不是髒讀,快照隔離是對數據的讀取,就像您開始批處理時一樣。骯髒的閱讀是讀取從未提交但可能已被回滾的數據(nolock,未定義的) – SQLMenace 2010-05-14 17:22:31
感謝您指出這一點,希望我的回答現在沒有那麼具有誤導性。雖然,提問者仍然沒有指定他的數據庫,並且可能不會。 – marr75 2010-05-18 15:17:40