atomicity/consistency
資料庫的一致性依賴於其他三種特性:原子性,隔離性,永續性
原子性用於保證事務中的語句要麼全部執行要麼全部不執行
隔離性用於保證多事務併發處理下事務處理順序與結果的保證
隔離性的處理分為四個級別
atomicity
innodb使用undo log
回滾日誌,記錄事務操作以便回滾
使用undo log撤回之前的操作
durability
redo log
mysql是先把磁碟上的資料載入到記憶體中,在記憶體中對資料進行修改,再刷回磁碟上。如果此時突然宕機,記憶體中的資料就會丟失。
怎麼解決?
事務提交前直接把資料寫入磁碟
太浪費io資源
使用redo log來解決永續性和讀寫io消耗嚴重問題
當做資料修改的時候,不僅在記憶體中操作,還會在redo log中記錄這次操作。當事務提交的時候,會將redo log日誌進行刷盤(redo log一部分在記憶體一部分在磁碟)。當資料庫宕機重啟會將redolog中的內容恢復到資料庫再根據undo log和binlog內容決定回滾資料還是提交資料
isolation
使用鎖機制,保證每個事務能夠看到的資料總是一致的,就好像其他事務不存在一樣,多個事務併發執行後的狀態和它們序列執行後的狀態是等價的
兩種鎖
資料庫事務原子性 一致性是怎樣實現的?
這個問題的有趣之處,不在於問題本身 原子性 一致性的實現機制是什麼 而在於回答者的分歧反映出來的另外乙個問題 原子性和一致性之間的關係是什麼?我特別關注了 我練功發自真心 的答案,他正確地指出了,為了保證事務操作的原子性,必須實現基於日誌的redo undo機制。但這個答案仍然是不完整的,因為原子性...
oracle事務一致性 原子性
事務的動作要麼一起成功,要麼都不成功,這是事務的原子性。原子性包括 語句級原子性 過程級原子性 事務級原子性 ddl與原子性 如果某條語句 如insert update 執行成功與否會自動控制事務。如設定插入前的觸發器。create table t2 cnt int insert into t2 v...
理解事務 原子性 一致性 隔離性
事務是指對系統進行的一組操作,為了保證系統的完整性,事務需要具有acid特性,具體如下 1.原子性 atomic 乙個事務包含多個操作,這些操作要麼全部執行,要麼全都不執行。實現事務的原子性,要支援回滾操作,在某個操作失敗後,回滾到事務執行之前的狀態。回滾實際上是乙個比較高層抽象的概念,大多數db在...