国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MYSQL事務回滾的2個問題分析

2024-07-24 12:47:22
字體:
來源:轉載
供稿:網友

因此,正確的原子操作是真正被執行過的。是物理執行。

在當前事務中確實能看到插入的記錄。最后只不過刪除了。但是AUTO_INCREMENT不會應刪除而改變值。

1、為什么auto_increament沒有回滾?

因為innodb的auto_increament的計數器記錄的當前值是保存在存內存中的,并不是存在于磁盤上,當mysql server處于運行的時候,這個計數值只會隨著insert改增長,不會隨著delete而減少。而當mysql server啟動時,當我們需要去查詢auto_increment計數值時,mysql便會自動執行:SELECT MAX(id) FROM 表名 FOR UPDATE;語句來獲得當前auto_increment列的最大值,然后將這個值放到auto_increment計數器中。所以就算 Rollback MySQL的auto_increament計數器也不會作負運算。

2、MySQL的事務對表操作的時候是否是物理操作?

MySQL的事務是有redo和undo的,redo操作的所有信息都是記錄到 redo_log中,也就是說當一個事務做commit操作時,需要先把這個事務的操作寫到redo_log中,然后再把這些操作flush到磁盤上,當 出現故障時,只需要讀取redo_log,然后再重新flush到磁盤就行了。

而對于undo就比較麻煩,MySQL在處理事務時,會在數據共享 表空間里申請一個段叫做segment段,用保存undo信息,當在處理rollback,不是完完全全的物理undo,而是邏輯undo,就是說會對之 前的操作進行反操作,但是這些共享表空間是不進行回收的。這些表空間的回收需要由mysql的master thread進程來進行回收。

您可能感興趣的文章:

MySql事務無法回滾的原因有哪些mysql實現事務的提交和回滾實例淺析Mysql 數據回滾錯誤的解決方法解析php mysql 事務處理回滾操作(附實例)實現MySQL回滾的Python腳本的編寫教程
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浮山县| 贡觉县| 通山县| 大兴区| 洪泽县| 遵义市| 沂南县| 岐山县| 莱西市| 杭州市| 长垣县| 当阳市| 武义县| 安龙县| 明水县| 徐闻县| 海阳市| 邛崃市| 甘孜县| 班玛县| 云龙县| 遂川县| 西平县| 松滋市| 铜鼓县| 纳雍县| 阳东县| 西城区| 利川市| 南华县| 德安县| 石渠县| 雷波县| 兴国县| 孙吴县| 前郭尔| 茂名市| 平邑县| 庆城县| 南京市| 鹤山市|