14.2 InnoDB 和 ACID 模型
14.2 InnoDB 和 ACID 模型
ACID 模型是資料庫設計的準則。ACID模型的設計初衷是為了防止在軟體或硬體crashes的時候資料損壞。
-
A: atomicity.
-
C: consistency
-
I: isolation
-
D: durability
Atomicity 原子性
原子性是指一個事務是一個不可分割的工作單元,其中的操作要麼都做,要麼都不做;如果事務中一個sql語句執行失敗,則已執行的語句也必須回滾,資料庫退回到事務前的狀態。
實現:
InnoDB 儲存引擎提供兩種事務日誌: redo log(重做日誌)和undo log(回滾日誌)。其中
redo log 用於保證事務永續性,
undo log則是事務原子性和隔離性實現的基礎。
實現原子性的關鍵,是當事務回滾時能夠撤銷所有已經成功執行的sql語句。 InnoDB 實現回滾,靠的是undo log:當事務對資料庫進行修改時,InnoDB會生成對應的undo log; 如果事務執行失敗或呼叫了rollback,導致事務需要回滾,便可以利用undo log中的資訊將資料回滾到修改之前的樣子。
undo log屬於邏輯日誌,它記錄的是sql執行的資訊。當發生回滾時,InnoDB會根據undo log的內容做與之相反的工作: 對於每個insert,回滾時會執行delete;對於每個delete,回滾時會執行insert;對於每個update,回滾時會執行一個反向的update,把資料改回去。
Consistency 一致性
一致性是無論在什麼情況下,資料的完整性不被破壞。一致性與mysql與下列特性有關:
-
InnoDB doublewrite buffer
-
InnoDB crash recovery
一致性指事務執行結束後,資料庫的完整性約束沒有被破壞,事務執行的前後都是合法的資料狀態。
實現:
可以說一致性是事務追求的終極目標:原子性,永續性,隔離性都是為了保證資料狀態的一致性。
Isolation 隔離性
與原子性、永續性側重於研究事務本身不同,隔離性研究的是不同事務之間的相互影響。隔離性是指,事務內部的操作與其他事務隔離的,併發執行的各個事務之間不能相互干擾。嚴格的隔離性,對應了事務隔離級別中的serializable(可序列化),但實際應用中處於效能方面的考慮很少會使用可序列化。
Durability 永續性
部分內容參考以下文件:
https://www.cnblogs.com/kismetv/p/10331633.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21374452/viewspace-2730668/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 搞懂MySQL InnoDB事務ACID實現原理MySql
- 談談MySQL InnoDB儲存引擎事務的ACID特性MySql儲存引擎
- ACID(Force & Steal)
- MySQL底層概述—3.InnoDB執行緒模型MySql執行緒模型
- ACID的實現原理
- 『淺入淺出』MySQL 和 InnoDBMySql
- InnoDB意向鎖和插入意向鎖
- 事務的性質(ACID)
- Vulnhub靶機系列之Acid
- Redis 事務支援 ACID 麼?Redis
- Mysql innodb引擎(一)緩衝和索引MySql索引
- Mysql 中 MyISAM 和 InnoDB 的區別MySql
- InnoDB學習(四)之RedoLog和UndoLog
- 讀書筆記【JS 權威指南】14.2 瀏覽器定位和導航筆記JS瀏覽器
- InnoDB從內分析之區和段(三)
- 淺析InnoDB引擎的索引和索引原理索引
- ACID之I:事務隔離
- mysql淺談--事務ACID特性MySql
- SQL Server 中的 ACID 屬性SQLServer
- 跨微服務的 ACID 事務微服務
- mysql innodb_deadlock_detect檢測和處理MySql
- Innodb檢查點和redo寫盤時機
- MySQL中myisam和innodb有什麼差異?MySql
- MySQL儲存引擎:MyISAM和InnoDB的區別MySql儲存引擎
- Windows 10平臺安裝PostgreSQL 14.2詳細教程WindowsSQL
- 詳細瞭解INNODB_TRX、INNODB_LOCKs、INNODB_LOCK_waits、PROCESSLIST表AI
- MySQL是如何實現事務的ACIDMySql
- 事務ACID特性與隔離級別
- 基座模型、聊天模型和指令模型的區別模型
- audition 2021 for Mac(au2021) v14.2直裝版Mac
- innodb索引篇索引
- MySQL Deadlocks in InnoDBMySql
- 14.4 InnoDB Architecture
- MySQL InnoDB 索引MySql索引
- MySQL:Innodb 讓MDL LOCK和ROW LOCK 記錄到errlogMySql
- 資料庫系列:MySQL引擎MyISAM和InnoDB的比較資料庫MySql
- MySQL三種InnoDB、MyISAM和MEMORY儲存引擎對比MySql儲存引擎
- 使用MyISAM表和InnoDB的一些記錄GD