在DB2中以「與UR」子句的查詢允許查詢是一個未提交的讀也是如此的「使用NOLOCK」子句中的MySQL。在oracle中是否有這樣的選項呢?如果不是爲什麼?oracle是否允許未提交的讀取選項?
回答
湯姆提供了一個很好的回答這個:On Transaction Isolation Levels
他說:
讀取未提交 隔離級別允許髒讀。 Oracle數據庫不使用髒 讀取,也不允許它們使用。 一個讀取未提交 隔離級別的基本目標是提供一個基於標準的 定義,允許 對於非阻塞讀。
...
現在,讓髒 讀取數據庫......它不僅返回 錯誤的答案,而且它返回...... [答案]。 ..從來沒有在桌子上存在。 在多用戶數據庫中,髒讀 可能是一個危險的功能。 個人而言,我從來沒有見過 它的用處......
這裏的要點是,髒讀是 不是一個功能;相反,這是一個 責任。在Oracle數據庫中,它僅僅是不需要的 。你得到所有的骯髒的 優勢讀不 阻塞,沒有任何不正確的 結果。
湯姆凱特的答案是正確的WRT甲骨文,有作爲,由於其多版本併發控制(MVCC)架構的髒讀沒有這樣的事情。
從應用功能的角度來看,我完全同意湯姆;沒有很好的理由或髒讀。
爲什麼曾經使用過甲骨文之外?在沒有MVCC(如MySQL和安格爾)這是一個技巧繞開鎖定問題,可以減緩性能或導致鎖定系統「用完鎖」如果沒有適當的調整。與您需要在Oracle中調整回滾/撤消的方式相同,您需要在非MVCC數據庫中管理鎖定系統。
所以爲什麼可能是有用的與Oracle - 作爲只讀功能的性能提升,其中「錯誤數據」是極不可能和高度無關緊要。在MySQL/DB2/Ingres/Informix(不確定SQL Server/Sybase)中,它可用於繞過鎖定管理工具以提高性能。
這裏有一種情況,讀做的例子並不需要一致性:
- 所有產品目錄
這裏有一個情況下讀取需要一致性的例子:
- 產品名單有貨
甲骨文甚至沒有想到髒讀,也沒有真正失去性能的好處,也不能「添加爲特徵」。在Oracle真正的MVCC體系結構中需要太多的技巧來獲取髒數據)。
是的,但爲什麼迫使人們用維基百科讀你的帖子?只需寫一次完整的術語,然後就可以隨意使用縮寫 – 2008-10-16 17:21:36
在存儲過程中,您可以將記錄插入日誌表中以進行調試或性能檢查,或者檢查長時間運行的proc已經實現的步驟,髒讀操作很有用!我如何用Oracle讀取這些記錄(就像我在SQL Server中使用「nolock」提示)? – alexbrina 2014-11-20 14:42:03
雖然上面的答案是真正正確的,你可以看看自治事務,但要記住,他們是不建議你可以看看這裏Autonomous Transactions這裏Autonomous Transactions a Poor Mis-Understood Feature 的缺點。
WITH UR rationale:當涉及到SELECT ONLY(報表)查詢時,等待提交沒有任何意義。如果您正在報告正在更新的表格,則無論您是否獲得該更新都無關緊要。髒讀與提交後的數據一樣有效。考慮一下查詢是否在第二個時間點擊了該鎖定記錄。
如果您針對不斷變化的表運行查詢,則不會及時獲取任何設置點。在查詢開始時訪問的數據位於較早的時間點,然後是在查詢結束時訪問的數據。查詢結果中可能包含或不包含可能會對錶進行的大量更新。
使用WITH UR和其他DBMS等價物可以提高性能,因爲查詢不會等待提交,並且不會導致數據完整性的任何損失。
(PS剛剛成立了自己的帳戶,所以我不能夠對其他的反應發表評論。)
- 1. SVN是否允許提交和推送?
- 2. Oracle是否允許跨模式視圖?
- 3. MS ACCESS讀取未提交
- 4. 未提交讀取SSIS
- 5. 表單提交出錯允許提交
- 6. LINQ to SQL結合讀取未提交和讀取提交
- 7. 瞭解SQL讀取提交和讀取未提交
- 8. ResultSet未打開。操作'getString'不允許。驗證自動提交是否關閉。
- 9. 不允許多重提交
- 10. jquery允許表單提交後取消提交
- 11. Mozilla Marketplace是否允許打包應用程序提交?
- 12. @ Html.RadioButtonFor允許單選允許選定的選項
- 13. Dojo - 過濾選擇 - 如何添加允許提交的空白選項' - '
- 14. 是否允許在Vim的'iskeyword'選項中包含空格?
- 15. 應用程序中的捐贈選項 - 是否允許這些選項?
- 16. 是否libpng允許讀取整個圖像不到內存
- 17. CQRS - 是否允許從寫入側調用讀取側?
- 18. HTML5是否明確允許<select>未選中<option>?
- 19. 是否install4j有選項JRE不提取
- 20. 是否允許網頁抓取?
- 21. 斯卡拉是否允許這種提取器?
- 22. 亞馬遜MWS是否允許提取銷售信息?
- 23. HTTP允許標題是否包含「選項」?
- 24. 允許未選定選項的SQL搜索
- 25. 要提交確認彈出框內提交按鈕,並允許或不允許提交
- 26. DBContext Linq實體讀取未提交
- 27. 未提交Ria服務讀取
- 28. JSP頁面未讀取已提交值
- 29. 的AppStore提交否認 - 應用程序不允許使用UDID
- 30. 從緩存讀取未提交的讀取?
內容提要:你不需要它,因爲Oracle已經做了正確的事情。 – 2008-10-16 12:17:53