无码人妻A片一区二区三区_18禁裸乳无遮挡啪啪无码免费_91精品亚?影视在线?看_人人妻人人爽人人澡AV_国产精品人妻一区二区三区四区_午夜免费影视

中培偉業(yè)IT資訊頻道
您現(xiàn)在的位置:首頁 > IT資訊 > 數(shù)據(jù)庫 > 國產(chǎn)數(shù)據(jù)庫與Oracle數(shù)據(jù)庫事務(wù)差異分析

國產(chǎn)數(shù)據(jù)庫與Oracle數(shù)據(jù)庫事務(wù)差異分析

2025-04-17 16:10:00 | 來源:企業(yè)IT培訓(xùn)

數(shù)據(jù)庫中的ACID是事務(wù)的基本特性,而在Oracle等數(shù)據(jù)庫遷移到國產(chǎn)數(shù)據(jù)庫國產(chǎn)中,可能因?yàn)椴煌瑪?shù)據(jù)庫事務(wù)處理機(jī)制的不同,在遷移后的業(yè)務(wù)邏輯處理上存在差異。本文簡要介紹了事務(wù)的ACID屬性、事務(wù)的隔離級(jí)別、回滾機(jī)制和超時(shí)機(jī)制,并總結(jié)SAVEPOINT的使用,以總結(jié)。

1、數(shù)據(jù)庫中事務(wù)基本概念

事務(wù)是數(shù)據(jù)庫中的基本邏輯操作單元,由一組不可分割的數(shù)據(jù)庫操作序列組成,這些操作要么全部成功執(zhí)行,要么全部失敗回滾。其核心目的是確保數(shù)據(jù)的完整性和一致性,尤其在并發(fā)操作或系統(tǒng)故障時(shí)維護(hù)數(shù)據(jù)庫的可靠狀態(tài)。

1.1 事務(wù)基本屬性

ACID是事務(wù)的基本特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability)。

原子性:事務(wù)中的所有操作必須作為一個(gè)整體執(zhí)行,要么全部執(zhí)行成功、要么全部失敗回滾,不允許出現(xiàn)部分成功的情況。在數(shù)據(jù)庫中通常是通過日志記錄(如undo log)來實(shí)現(xiàn)回滾操作,若事務(wù)執(zhí)行失敗,系統(tǒng)跟進(jìn)日志撤銷已執(zhí)行的操作。

一致性:事務(wù)執(zhí)行前后,數(shù)據(jù)庫必須保持一致性狀態(tài)。所有數(shù)據(jù)必須滿足預(yù)定義的完整性約束(如主鍵、外鍵、唯一性約束等)。即使事務(wù)失敗,數(shù)據(jù)庫也不能破壞這些規(guī)則。在數(shù)據(jù)庫中通過一些約束和檢查來確保數(shù)據(jù)庫的完整性約束。

隔離性:多個(gè)事務(wù)并發(fā)執(zhí)行時(shí),每個(gè)事務(wù)的操作應(yīng)與其他事務(wù)相互隔離,使得每個(gè)事務(wù)感覺不到其他事務(wù)的存在,最終效果應(yīng)與事務(wù)串行執(zhí)行的結(jié)果一致。數(shù)據(jù)庫中通過鎖機(jī)制(Locking)或多版本并發(fā)控制(MVCC)實(shí)現(xiàn),不同的隔離級(jí)別提供不同程度的隔離性。

持久性:事務(wù)一旦提交,其對(duì)數(shù)據(jù)庫的修改就是永久性的,即使系統(tǒng)發(fā)生故障(如斷電、崩潰),修改也不會(huì)丟失。數(shù)據(jù)庫中通過重做日志(Redo Log)實(shí)現(xiàn)持久性。提交事務(wù)時(shí),對(duì)數(shù)據(jù)的修改首先寫入日志,再異步寫入數(shù)據(jù)庫文件中。當(dāng)數(shù)據(jù)庫崩潰恢復(fù)時(shí),通過重放日志恢復(fù)數(shù)據(jù)。

以轉(zhuǎn)賬交易為例,通過undo日志實(shí)現(xiàn)原子性,確保“扣款”和“存款”兩個(gè)操作要么全部成功,要么全部失敗;一致性是確保轉(zhuǎn)賬前后,數(shù)據(jù)庫必須滿足業(yè)務(wù)規(guī)則(如余額不為負(fù)、總額不變);通過鎖機(jī)制和MVCC多版本并發(fā)控制來實(shí)現(xiàn)事務(wù)的隔離性,多個(gè)并發(fā)轉(zhuǎn)賬操作互不干擾,結(jié)果與串行執(zhí)行一致;持久性則是一旦轉(zhuǎn)賬成功,即使系統(tǒng)崩潰,修改也不會(huì)丟失。

1.2 事務(wù)回滾機(jī)制

事務(wù)的原子性要求事務(wù)要么全部執(zhí)行成功、要么全部執(zhí)行失敗回滾,但是對(duì)于Oracle數(shù)據(jù)庫支持語句級(jí)的原子性,也就是一個(gè)事務(wù)中單個(gè)語句執(zhí)行失敗,則只會(huì)回滾該語句執(zhí)行的操作,不會(huì)導(dǎo)致在當(dāng)前事務(wù)中丟失之前的任何工作。如果需要回滾整個(gè)事務(wù),需要處理錯(cuò)誤并且主動(dòng)調(diào)用ROLLBACK。這種語句級(jí)的回滾對(duì)于處理一些長時(shí)間運(yùn)行的批處理任務(wù)有用,邏輯上希望能夠處理錯(cuò)誤,不需要回滾已經(jīng)完成的所有操作。

1.3 事務(wù)超時(shí)機(jī)制

數(shù)據(jù)庫中事務(wù)會(huì)設(shè)置不同的超時(shí)機(jī)制,防止因?yàn)槌霈F(xiàn)等鎖而出現(xiàn)無限等待,超過這個(gè)時(shí)間后會(huì)出現(xiàn)等鎖超時(shí),事務(wù)會(huì)回滾。

Oracle數(shù)據(jù)庫:默認(rèn)不會(huì)主動(dòng)終止因行鎖等待而阻塞的事務(wù),事務(wù)會(huì)無限期等待鎖釋放,需由應(yīng)用層處理或手動(dòng)終止,行鎖在事務(wù)提交或回滾是自動(dòng)釋放;事務(wù)默認(rèn)也無超時(shí)設(shè)置,但是可以限制會(huì)話的空閑時(shí)間,超過時(shí)間后會(huì)斷開鏈接。

MySQL數(shù)據(jù)庫:通過 innodb_lock_wait_timeout 控制,默認(rèn)為50秒。當(dāng)事務(wù)等待鎖超過此時(shí)間時(shí),會(huì)拋出錯(cuò)誤;事務(wù)中無默認(rèn)超時(shí)時(shí)間,但是連接的空閑超時(shí)設(shè)置wait_timeout,默認(rèn)8小時(shí)。

PostgreSQL:通過pg_lock_timeout設(shè)置行鎖等待超時(shí)時(shí)間,默認(rèn)為0無限等待;事務(wù)中設(shè)置statement_timeout 控制單條SQL執(zhí)行時(shí)間,默認(rèn)無限制。

TiDB:兼容MySQL行鎖等待設(shè)置;如果是悲觀事務(wù),默認(rèn)TTL(Time-To-Live)為 1小時(shí),超時(shí)后自動(dòng)回滾,另外通過tidb_idle_transaction_timeout 控制空閑事務(wù)。

OceanBase:MySQL模式下兼容MySQL設(shè)置;事務(wù)中通過 ob_query_timeout 控制事務(wù)單條語句執(zhí)行時(shí)間,默認(rèn)1800s

GoldenDB:兼容MySQL設(shè)置

GaussDB:參數(shù)lockwait_timeout控制單個(gè)鎖的最長等待時(shí)間,當(dāng)申請(qǐng)的鎖等待時(shí)間超過設(shè)定值時(shí),系統(tǒng)會(huì)報(bào)錯(cuò),默認(rèn)為20min;通過通過 statement_timeout 控制單個(gè)語句執(zhí)行時(shí)長,默認(rèn)0表示不控制。

主站蜘蛛池模板: 日韩不卡一区二区 | caoporm超免费公开视频 | 粗大的内捧猛烈进出少妇 | 黄色网页网址在线免费 | 日韩精品中文字幕吗一区二区 | 亚洲AV无码片一区二区三区H0 | 顶级AV网站在线观看 | 久久亚洲国产精品123区 | 国模私拍大尺度裸体av | 少妇搡BBBB搡| caoporn-草棚在线视频最 | 无码人妻A片一区二区三区 无码人妻一区二区三区巨免费 | 色偷偷2019免费视频观看 | 少妇精品一区二区三区在线观看 | 亚洲AV色男人的天堂在线观看 | 国产97人人超碰CAO蜜芽PROM | 亚洲专区一区 | 女人洗澡一级毛片一级毛片 | 欧美色倩网站大全免费 | 免费观看国产小粉嫩喷水精品午 | 亚洲激情自拍 | 欧美女同舔女同 | av永久在线 | 九九热六 | 国产精品高潮久久久久久 | 久久国产精品嫩草影院的推荐理由 | 91精品无码一区二区 | 美女翘臀强行进去太爽了 | 国产熟睡乱子伦视频在线播放 | 99亚洲视频| 511yc影院免费理论片 | 熟妇女的欲乱在线观看 | 国产乱码一线二线三线新区 | 97在线观| av在线日韩 | 四虎影城| 国产乱淫精品一区二区三区毛片 | 亚洲AV无码不卡一区二区三区 | 国产精品搬运 | 日韩激情无卡视频在线观看 | 国产精品久久久久9999赢消 |