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 快照讀和當前讀 鎖定讀一致性非鎖定讀假如乙個...