Oracle確保使用REDO進(jìn)行提交和撤銷回滾的交易耐用性和一致性。在提交過程中,Oracle在重做日志緩沖區(qū)中生成了提交記錄,標(biāo)記在重做日志中以永久變化,并更新SCN以反映當(dāng)前數(shù)據(jù)庫狀態(tài)。對于回滾,Oracle使用撤消數(shù)據(jù)來通過重建原始值并保持讀取一致性來恢復(fù)變化。重做記錄的恢復(fù)更改,存儲在在線重做日志中,而Undo存儲了如何逆轉(zhuǎn)回滾和一致性的變化,并保存在撤消表空間中。關(guān)鍵的實際考慮包括:1)經(jīng)常提交增加重做,但減少使用撤消使用; 2)大型交易可能會觸發(fā)“快照太舊”錯誤,如果撤消保留不足; 3)通過v $ sysstat或跟蹤文件監(jiān)視重做; 4)確保足夠的撤消表空間的大小和長期查詢的保留率; 5)檢查等待事件,例如日志文件同步或ENQ:TX - 解決性能問題時的爭論。
Oracle使用兩種核心機制處理交易和回滾:重做和撤消。這些共同起作用,以確保數(shù)據(jù)一致性,耐用性以及從失敗中恢復(fù)的能力。
提交期間會發(fā)生什么
當(dāng)您發(fā)布COMMIT
時,Oracle不會立即將所有更改寫入數(shù)據(jù)文件。相反,它做了一些關(guān)鍵的事情:
- 它在重做日志緩沖區(qū)中生成提交記錄。
- 直到該點的交易所做的所有更改都標(biāo)記為重做日志中的永久性。
- 更新系統(tǒng)更改號(SCN)以反映數(shù)據(jù)庫的當(dāng)前點。
因此,即使尚未寫入磁盤的實際數(shù)據(jù)塊,所做的交易的事實也記錄在重做日志中。這就是為什么Oracle可以保證耐用性 - 一旦提交成功返回,即使發(fā)生崩潰,更改也是安全的。
回滾如何與撤消一起工作
如果交易回滾(明確或由于錯誤),Oracle使用撤消數(shù)據(jù)來恢復(fù)更改。
在修改實際數(shù)據(jù)之前,首先,通過交易進(jìn)行的每種更改首先記錄在撤消表空間中。這使Oracle可以:
- 重建更改數(shù)據(jù)的原始值。
- 維持可能同時查詢相同數(shù)據(jù)的其他會話的讀取一致性。
例如,如果會話A更新一行和會話B在提交之前對其進(jìn)行查詢,則會使用撤消數(shù)據(jù)查看該行的原始版本。
回滾基本上是反向播放此撤消信息,在交易開始之前將數(shù)據(jù)庫恢復(fù)到其狀態(tài)。
重做與撤消 - 關(guān)鍵差異
混合重做和撤消很容易,但這是它們在功能方面的不同之處:
-
重做:
- 記錄對數(shù)據(jù)庫進(jìn)行了哪些更改。
- 用于恢復(fù) - 實例恢復(fù),媒體恢復(fù)等。
- 存儲在在線重做日志文件中。
- 每個更改都會通過重做日志緩沖區(qū),然后再沖洗到磁盤。
-
撤消:
- 記錄如何撤消更改。
- 用于回滾和保持讀取一致性。
- 存儲在拆卸面積中。
- Oracle也用于閃回功能和一致的讀取。
簡而言之:
REDO是關(guān)于錄制恢復(fù)的更改;撤消是關(guān)于保留舊值以進(jìn)行回滾和一致性。
實際含義和調(diào)整考慮
了解這些機制在處理性能或恢復(fù)問題時會有所幫助。
這里有一些實際觀點:
- 頻繁的投入減少了所需的撤消量,但增加了重做。因此,在批量操作中,明智地將您的承諾批量。
- 大型交易可能會導(dǎo)致“快照太舊”錯誤,如果撤消保留不足。
- 您可以通過
V$SYSSTAT
(redo size
)或跟蹤文件等視圖監(jiān)視重做生成。 - 對于長期運行的報告或查詢,請確保您的撤消表空間足夠大,并配置了適當(dāng)?shù)谋A袈省?/li>
如果您要解決與重做或撤消有關(guān)的性能問題的故障排除,請檢查等待事件,例如log file sync
(用于重做)或enq: TX – contention
(用于撤消)可以幫助查明瓶頸。
這就是Oracle確保在引擎蓋下進(jìn)行可靠的交易處理的方式。不是每天看到的東西,而是在調(diào)整或調(diào)試數(shù)據(jù)庫行為時可以理解的。
以上是Oracle如何使用重做和撤消機制來管理交易和回滾?的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機

Video Face Swap
使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)

要安全、徹底地卸載MySQL并清理所有殘留文件,需遵循以下步驟:1.停止MySQL服務(wù);2.卸載MySQL軟件包;3.清理配置文件和數(shù)據(jù)目錄;4.驗證卸載是否徹底。

Oracle不僅是數(shù)據(jù)庫公司,還是云計算和ERP系統(tǒng)的領(lǐng)導(dǎo)者。1.Oracle提供從數(shù)據(jù)庫到云服務(wù)和ERP系統(tǒng)的全面解決方案。2.OracleCloud挑戰(zhàn)AWS和Azure,提供IaaS、PaaS和SaaS服務(wù)。3.Oracle的ERP系統(tǒng)如E-BusinessSuite和FusionApplications幫助企業(yè)優(yōu)化運營。

MongoDB適合非結(jié)構(gòu)化數(shù)據(jù)和高擴展性需求,Oracle適合需要嚴(yán)格數(shù)據(jù)一致性的場景。1.MongoDB靈活存儲不同結(jié)構(gòu)數(shù)據(jù),適合社交媒體和物聯(lián)網(wǎng)。2.Oracle結(jié)構(gòu)化數(shù)據(jù)模型確保數(shù)據(jù)完整性,適用于金融交易。3.MongoDB通過分片橫向擴展,Oracle通過RAC縱向擴展。4.MongoDB維護(hù)成本低,Oracle維護(hù)成本高但支持完善。

MySQL和Oracle的主要區(qū)別在于許可證、功能和優(yōu)勢。1.許可證:MySQL提供GPL許可證,免費使用,Oracle采用專有許可證,價格昂貴。2.功能:MySQL功能簡單,適合Web應(yīng)用和中小型企業(yè),Oracle功能強大,適合大規(guī)模數(shù)據(jù)和復(fù)雜業(yè)務(wù)。3.優(yōu)勢:MySQL開源免費,適合初創(chuàng)公司,Oracle性能可靠,適合大型企業(yè)。

MySQL和Oracle在性能和可擴展性上的區(qū)別在于:1.MySQL在小型到中型數(shù)據(jù)集上表現(xiàn)更好,適合快速擴展和高效讀寫;2.Oracle在處理大型數(shù)據(jù)集和復(fù)雜查詢時更具優(yōu)勢,適合高可用性和復(fù)雜業(yè)務(wù)邏輯。MySQL通過主從復(fù)制和分片技術(shù)實現(xiàn)擴展,而Oracle通過RAC實現(xiàn)高可用性和擴展性。

MySQL采用GPL和商業(yè)許可,適合小型和開源項目;Oracle采用商業(yè)許可,適合需要高性能的企業(yè)。MySQL的GPL許可免費,商業(yè)許可需付費;Oracle許可費用按處理器或用戶計算,成本較高。

在不同的應(yīng)用場景下,選擇MongoDB還是Oracle取決于具體需求:1)如果需要處理大量非結(jié)構(gòu)化數(shù)據(jù)且對數(shù)據(jù)一致性要求不高,選擇MongoDB;2)如果需要嚴(yán)格的數(shù)據(jù)一致性和復(fù)雜查詢,選擇Oracle。

學(xué)習(xí)Java不走彎路的關(guān)鍵是:1.理解核心概念和語法;2.多實踐;3.理解內(nèi)存管理和垃圾回收;4.加入在線社區(qū);5.閱讀別人的代碼;6.了解常見庫和框架;7.學(xué)習(xí)處理常見錯誤;8.制定學(xué)習(xí)計劃并循序漸進(jìn)。這些方法能幫助你高效掌握J(rèn)ava編程。
