程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MYSQL事務回滾的2個成績剖析

MYSQL事務回滾的2個成績剖析

編輯:MySQL綜合教程

MYSQL事務回滾的2個成績剖析。本站提示廣大學習愛好者:(MYSQL事務回滾的2個成績剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是MYSQL事務回滾的2個成績剖析正文


是以,准確的原子操作是真正被履行過的。是物理履行。

在以後事務中確切能看到拔出的記載。最初只不外刪除。然則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過程來停止收受接管。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved