mysql事務(wù)提交

      網(wǎng)友投稿 805 2025-03-31

      1、


      當(dāng)事務(wù)commit時,需要將事務(wù)狀態(tài)設(shè)置為COMMIT狀態(tài),這里同樣通過Undo來實現(xiàn)的

      入口函數(shù):trx_commit_low-->trx_write_serialisation_history

      trx_undo_set_state_at_finish

      2、

      二階段提交流程

      時間點1

      prepare 階段

      時間點2

      commit 階段

      時間點3

      時間點1出現(xiàn)問題

      這個時候redo log 和 binlog都在內(nèi)存中,所以本次事務(wù)的相關(guān)操作都會消失,相對于事務(wù)回滾了,不影響數(shù)據(jù)的一致性。

      時間點2出現(xiàn)問題

      這個時候redo log已經(jīng)到磁盤了。binlog沒有刷到磁盤所以會消失。服務(wù)器從故障中恢復(fù)時,讀取磁盤中的redo log ,但是由于對應(yīng)的redo log項還是prepare狀態(tài),就要判斷binlog 是否完整,如果binlog完整則提交事務(wù),如果binlog不完整則回滾事務(wù)。

      時間點3出現(xiàn)問題。

      這個時候redo log 和 binlog都已經(jīng)存磁盤,服務(wù)器從redo log恢復(fù)就好了。

      binlog怎么判斷完整性:

      statement 格式的 binlog,最后會有 COMMIT;

      row 格式的 binlog,最后會有一個 XID event

      redolog 和binlog怎么聯(lián)系起來:

      它們有一個共同的數(shù)據(jù)字段,叫 XID。

      崩潰恢復(fù)的時候,會按順序掃描 redo log:如果碰到既有 prepare、又有 commit 的 redo log,就直接提交;如果碰到只有 parepare、而沒有 commit 的 redo log,就拿著 XID 去 binlog 找對應(yīng)的事務(wù)。

      來自

      3、

      redo日志僅記錄對頁的物理修改,不包含事務(wù)信息,因此在崩潰恢復(fù)時單純依靠redo日志只能進行前滾,即恢復(fù)到崩潰前的內(nèi)存狀態(tài)。但是這個時候有些事務(wù)還沒有提交(活躍事務(wù))需要回滾,這就需要依賴undo,undo中記錄了未提交事務(wù)及修改行的原始版本,崩潰恢復(fù)時找到這些活躍事務(wù)將原始版本還原完成回滾。因此事務(wù)是否提交信息保存在undo里。

      鏈接:https://www.zhihu.com/question/362498822/answer/951351986

      4、

      這些都是由事務(wù)性存儲引擎來完成的,但 binlog 不在事務(wù)存儲引擎范圍內(nèi),而是由 Mysql Server 來記錄的。

      那么就必須保證 binlog 數(shù)據(jù)和 redo log 之間的一致性,所以開啟了 binlog 后實際的事務(wù)執(zhí)行就多了一步,如下:

      mysql事務(wù)提交

      先記錄 undo/redo log,確保日志刷到磁盤上持久存儲。

      更新數(shù)據(jù)記錄,緩存操作并異步刷盤。

      將事務(wù)日志持久化到 binlog。

      提交事務(wù),在 redo log 中寫入commit記錄。

      這樣的話,只要 binlog 沒寫成功,整個事務(wù)是需要回滾的,而 binlog 寫成功后即使 Mysql Crash 了都可以恢復(fù)事務(wù)并完成提交。

      要做到這點,就需要把 binlog 和事務(wù)關(guān)聯(lián)起來,而只有保證了 binlog 和事務(wù)數(shù)據(jù)的一致性,才能保證主從數(shù)據(jù)的一致性。

      所以 binlog 的寫入過程不得不嵌入到純粹的事務(wù)存儲引擎執(zhí)行過程中,并以內(nèi)部分布式事務(wù)(xa 事務(wù))的方式完成兩階段提交。

      5、

      疑問:事務(wù)的順序提交問題,備機回放時怎么保證順序提交的(相關(guān)信息是怎么通過redo傳遞的)?

      MySQL

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:智能制造生產(chǎn)流程管理制度(智能制造基本流程)
      下一篇:excel圖表制作:繪制時間線圖
      相關(guān)文章
      亚洲高清美女一区二区三区| 久久精品国产亚洲av麻| 久久精品亚洲中文字幕无码麻豆| 亚洲精品国产自在久久| 亚洲av无码成人精品区在线播放| 亚洲AV成人无码网天堂| 亚洲精品无码专区在线播放| 亚洲中文字幕无码av永久| 亚洲乱人伦精品图片| 亚洲一区二区三区无码国产| 亚洲国产成人精品久久| 亚洲国产成人超福利久久精品| 亚洲最大的成网4438| 亚洲高清中文字幕综合网| 亚洲成色999久久网站| 亚洲激情在线观看| 亚洲精品不卡视频| 亚洲一区精彩视频| 亚洲精品第一国产综合亚AV| 在线观看亚洲视频| AV在线亚洲男人的天堂| 亚洲色自偷自拍另类小说| 亚洲av无码不卡一区二区三区| 亚洲av无码专区国产乱码在线观看 | 国产午夜亚洲精品国产| 亚洲日韩国产AV无码无码精品| 亚洲欧美一区二区三区日产| 亚洲1区2区3区精华液| 亚洲?V乱码久久精品蜜桃| 亚洲中文字幕无码爆乳av中文| 国产亚洲AV手机在线观看| 国产精品亚洲精品日韩已满| 亚洲高清在线视频| 亚洲人成高清在线播放| 亚洲成av人在线观看网站| 亚洲欧洲中文日韩久久AV乱码 | 久久久久亚洲av成人无码电影| 国产国拍亚洲精品mv在线观看| 亚洲日本一区二区| 亚洲乱码一二三四区乱码| 日韩国产欧美亚洲v片|