我不是DBA,我只是想了解Oracle的多版本併發模型。關於oracle的undo段綁定的問題
啓動DML操作時,MVCC協議的第一步是綁定一個還原段。問題是爲什麼一個還原段只能用於一個活動事務?
感謝您的時間~~
我不是DBA,我只是想了解Oracle的多版本併發模型。關於oracle的undo段綁定的問題
啓動DML操作時,MVCC協議的第一步是綁定一個還原段。問題是爲什麼一個還原段只能用於一個活動事務?
感謝您的時間~~
多版本併發可能是把握當談到甲骨文最重要的概念。即使他們不想成爲DBA,程序員也能理解它。
對此有幾個方面,但它們都歸結爲效率:撤消管理是開銷,因此儘量減少致力於它的週期數量有助於數據庫的整體性能。
我不認爲第4點是非常正確的。其他會話將使用第一次會話更新所創建的撤銷來維持讀取一致性,但不保證這些撤消塊在這些查詢處於活動狀態時不會被重用。重複使用這種撤銷會導致臭名昭着的「快照太舊」的錯誤。 – 2011-06-04 13:38:19
@DaveCosta - 公平點 – APC 2011-06-04 16:48:15
「爲什麼一個還原段只能用於一個活動事務?」
這只是一個設計決定。這就是撤消細分市場的設計方法。我想這是爲了解決前面的回滾機制可能發生的一些問題。
回滾(仍然可用,但不贊成撤消)包括由DBA顯式創建回滾段,並且可以將多個事務分配給單個回滾段。這存在一些缺點,最明顯的是,如果分配給給定分段的一個事務產生足夠的回滾數據,並且該分段已滿(並且不能再擴展),則使用相同分段的其他事務將不能執行任何將產生的操作回滾數據。
我在猜測新的撤消功能的一個設計目標是爲了防止這種事務間依賴。因此,他們設計了這種機制,以便DBA調整大小並創建撤消表空間,但其中的分段管理由Oracle在內部完成。這允許每筆交易使用專用細分。如果表空間填滿(並且不能自動擴展),它們仍然可能造成彼此的問題,但是在分段級別,不會有一個事務可能導致另一個事務出現問題。
對不起。由於我的錯誤點擊,我在完成之前提交了我的問題。 – user770957 2011-06-04 07:05:54