InnoDB儲存引擎的事務

2022-07-23 14:54:36 字數 1474 閱讀 7020

當多個使用者訪問同乙份資料,乙個使用者更改該事物時可能會有其他使用者同時發起更改請求,為保證資料庫記錄的更新從乙個一致性狀態轉為另外乙個一致性狀態,使用事務是非常有必要的。

1原子性(atomicity)

原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼全部成功,要麼全部失敗。比如在同乙個事務中的sql語句,要麼全部執行成功,要麼全部執行失敗。

2 一致性(consistency)

事務必須使資料庫從乙個一致性狀態變換到另外乙個一致性狀態。

3 隔離性(isolation)

事務的隔離性是多個使用者併發訪問資料庫時,資料庫為每乙個使用者開啟的事務,不能被其他事務的運算元據所干擾,多個併發事務之間要相互隔離。

4永續性(durability)

永續性是指乙個事務一旦被提交,它對資料庫中資料的改變就是永久性的,接下來即使資料庫發生故障也不應該對其有任何影響。

mysql資料庫中支援事務的儲存引擎有innodb和bdb,myisam和memory儲存引擎不支援事務,而innodb儲存引擎事務主要通過undo日誌和redo日誌實現。

1,重做日誌(也叫redo日誌

事務在執行時需要將執行的事務日誌寫入到日誌檔案裡,對應的日誌檔案為重做日誌(安裝編譯後產生ib_logfile0,ib_logfile1,預設大小為48mb,建議設定512m以便容納較大的事務)。當sql進行資料庫更新操作時,首先將重做日誌寫入到日誌緩衝區,客戶端執行commit命令提交時,日誌緩衝區的內容會被重新整理到磁碟,日誌緩衝區的重新整理方式或者時間間隔可以通過引數innodb_flush_log_at_trx_commit控制。以下是重做日誌相關引數介紹:

mysql在物理檔案備份時需要複製該檔案,以及在奔潰恢復以及重新執行重做日誌中的記錄。

2,回滾(undo)日誌

與redo日誌相反,undo日誌主要用於事務異常時的資料回滾,具體是複製食物前的資料庫內容到undo緩衝區,在合適的時間將內容重新整理到磁碟。undo日誌均放在表空間.ibd資料檔案中。

mysql主流Innodb儲存引擎 事務鎖分析

repeatable read 可重讀 mysql中innodb預設的隔離級別。悲觀鎖 為了防止併發導致資料庫操作受其他執行緒運算元據庫影響,一般基於資料庫的悲觀鎖來加鎖操作。從sql語句來看,為了搶占獨佔鎖,兩種方式。1 更新語句加鎖 begin 開啟事務 insert into a.update...

MySql中innodb儲存引擎事務日誌詳解

mysql會最大程度的使用快取機制來提高資料庫的訪問效率,但是萬一資料庫發生斷電,因為快取的資料沒有寫入磁碟,導致快取在記憶體中的資料丟失而導致資料不一致怎麼辦?innodb主要是通過事務日誌實現acid特性,事務日誌包括 重做日誌redo和回滾日誌undo。redo記錄的是已經全部完成的事務,就是...

InnoDB 儲存引擎

innodb是事務型資料庫的首選引擎,支援事務安全表 acid 支援行鎖定和外來鍵。mysql 5.5.5 之後,innodb作為預設儲存引擎。innodb的主要特性有一下幾項。a.innodb給mysql提供了具有提交 回滾和崩潰恢復能力的事務安全 acid相容 儲存引擎。innodb鎖定在行級並...