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和BASE的比較資料庫
- MySQL的ACID模式MySql模式
- innodb_flush_method和innodb_flush_log_at_trx_commitMIT
- mysql事務和鎖InnoDBMySql
- InnoDB和MyISAM 區別(轉)
- MySQL/InnoDB和Group CommitMySqlMIT
- InnoDB和MyISAM的區別
- MySQL/InnoDB和GroupCommit(2)MySqlMIT
- MyISAM和InnoDB的區別
- ACID的實現原理
- 事務的ACID特性
- mysql innodb_log_file_size 和innodb_log_buffer_size引數MySql
- 鎖:innodb_lock_wait_timeout和 innodb_rollback_on_timeout?AI
- 『淺入淺出』MySQL 和 InnoDBMySql
- MySQL InnoDB Update和Crash Recovery流程MySql
- MYSQL和INNODB分層實現MySql
- InnoDB和MyISAM區別總結
- 讀書筆記【JS 權威指南】14.2 瀏覽器定位和導航筆記JS瀏覽器
- Redis 事務支援 ACID 麼?Redis
- 資料庫事務 ACID資料庫
- Mysql innodb引擎(一)緩衝和索引MySql索引
- Mysql 中 MyISAM 和 InnoDB 的區別MySql
- innodb_flush_log_at_trx_commit和sync_binlog innodb_flush_methodMIT
- 跨微服務的 ACID 事務微服務
- mysql淺談--事務ACID特性MySql
- SQL Server 中的 ACID 屬性SQLServer
- 初觸hibernate01--MYSQL建表時type=InnoDB和Engine=InnoDB注意點MySql
- InnoDB 中文參考手冊 --- 6 備份和恢復 InnoDB 資料庫 (轉)資料庫
- InnoDB從內分析之區和段(三)
- 淺析InnoDB引擎的索引和索引原理索引
- 【轉】InnoDB和MyISAM的技術資料
- MyISAM和InnoDB的主要區別和應用場景
- 基座模型、聊天模型和指令模型的區別模型
- Windows 10平臺安裝PostgreSQL 14.2詳細教程WindowsSQL
- InnoDB 中文參考手冊 --- 5 新增與移除 InnoDB 資料和日誌檔案 (轉)
- Innodb:RR隔離級別下insert...select 對select表加鎖模型和死鎖案列模型