有沒有辦法使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. 我可以在函數範圍中使用define指令嗎?
- 5. 我可以獲取Excel剪貼板數據的源範圍嗎?
- 6. 我可以在PHP中獲取數據庫列的規範嗎?
- 7. 我可以隔離div的範圍嗎?
- 8. 我可以查詢當前範圍嗎?
- 9. 我可以替換隔離範圍的範圍嗎?
- 10. 嵌套函數可以放在Javascript的全局範圍內嗎?
- 11. 我可以在Rails中使用普通的ActiveRecord範圍(範圍)和模塊嗎?
- 12. 我可以在MongoDB中按範圍分組浮點數嗎?
- 13. Facebook應用可以使用我的網站數據庫嗎?
- 14. SQL可以根據範圍限制交錯數據嗎?
- 15. 選擇範圍內的數據庫行
- 16. 我可以在Bootstrap datepicker中禁用幾個日期範圍嗎?
- 17. 我可以在我的Controller $範圍中注入Java代碼嗎?
- 18. 我應該/可以使用多個數據庫嗎?
- 19. 我可以下載Phpmyadmin數據庫嗎?
- 20. 可以在全球範圍內設定「假設新」嗎?
- 21. CLGeocoder可以在全球範圍內工作,超越美國嗎?
- 22. 我可以使用不在範圍內的條件過濾Google表格中的數據嗎?
- 23. 我可以從範圍訪問一個參數嗎?
- 24. 我可以將列表範圍作爲一個函數嗎?
- 25. 我可以刪除數組中的項目範圍嗎?
- 26. 在Play中,我可以根據數據庫類型應用不同的Evolution嗎?
- 27. 可以在rails應用上使用兩個sqlite3數據庫嗎?
- 28. 在Android應用程序中可以使用Neo4j數據庫嗎?
- 29. asp.net mvc razor應用程序 - 從範圍內的數據庫中選擇數據
- 30. 我可以從數據庫項目初始化數據庫嗎?
快照隔離不是髒讀,快照隔離是對數據的讀取,就像您開始批處理時一樣。骯髒的閱讀是讀取從未提交但可能已被回滾的數據(nolock,未定義的) – SQLMenace 2010-05-14 17:22:31
感謝您指出這一點,希望我的回答現在沒有那麼具有誤導性。雖然,提問者仍然沒有指定他的數據庫,並且可能不會。 – marr75 2010-05-18 15:17:40