Atitit 資料庫事務實現原理

2021-09-07 07:13:54 字數 1713 閱讀 6505

atitit資料庫事務

實現原理

如果只是需要事務的話,你自己給mongo操作加上事務功能就可以啦。。資料庫事務只不過是他自己實現了而已。。如果資料庫不支援事務,就要你在**裡面實現事務就可以了。。

最簡單方便的就是使用日誌方式來做事務就可以了。。

比如插入倆個資料。每執行乙個

sql,就生成乙個

undo

日誌即可。。

u

ndo日誌表如下字段(事務

id,**名稱,操作【

insert,update,delete

】,原記錄

id,新記錄id)

如果後面的

sql失敗了。那麼根據

undo日誌,撤銷掉前面執行的

sql資料即可。

主要流程如下。根據事務id,得到前幾個

sql語句新增的記錄

id,然後刪除這幾個

id的資料即可。。

如果提交成功,那麼可以刪除掉此事務id對應的

undo

日誌即可。。

shadow copies/pages(影像拷貝/影像頁面): 每個事務拷貝乙份自己的資料庫(或者是資料庫的一部分),在這份拷貝上操作。出錯了,就刪除這份拷貝。成功後,使用檔案系統的功能 做一下檔案交換,替換掉舊的資料。

transaction log (事務日誌):transaction log是這樣一塊儲存區域–在事務將資料寫到磁碟之前先將資訊寫到transaction log檔案。這樣,如果服務發生崩潰、事務被取消;資料庫清楚如果根據日誌刪除資料,或者繼續完成未完成的操作。

事務中,每當執行一條sql語句對資料產生了影響,就會記錄下來與之相反的操作到undo log(撤銷日誌)中,例如,更新會記錄之前的狀態,刪除會形成insert,新增會形成delete,一旦事務被回滾,則執行undo log中記錄的操作,來完成恢復到之前的狀態。這裡是個 邏輯恢復哦!

同時,每當執行一條事務中的sql,會將操作記錄到redo log中,此時事務一旦被提交,就將該redolog中的操作,持久化到磁碟上,資料就持久的記錄下來了(acid的d)。

ps:還有,undolog才是原子性的關鍵

關係型資料庫工作原理-事務管理(二) - 資料庫其他綜合 - 紅黑聯盟.html

作者:: 

綽號:老哇的爪子

(全名::

attilax

akbar al rapanui 阿提拉克斯 阿克巴 阿爾 拉帕努伊 )

漢字名:

艾提拉(

艾龍),

email:[email protected]

atiend

資料庫事務實現原理

資料庫事務是資料庫管理系統執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。這些操作要麼全部執行,要麼全部不執行,是乙個不可分割的工作單位。典型特性有原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 durabilily 簡稱acid。原子性 事...

spring事務實現原理

如果你用過spring aop,那麼理解註解事務就十分簡單了。事務註解本質上實在事務方法加入乙個around切面,在方法開始前開始事務,在丟擲異常後回滾事務。使用簡單偽 可以簡單理解為 dowithtransaction catch exception ex spring transaction有各...

MySQL事務實現原理

以上是sql 92標準中定義的四種隔離級別。在mysql中,預設的隔離級別是repeatable read 可重複讀 並且解決了幻讀問題。不可重複讀重點在於update和delete,而幻讀的重點在於insert insert update delete 快照讀和當前讀 鎖定讀一致性非鎖定讀假如乙個...