MySQL事物系列 1 事物簡介

2022-02-18 01:32:13 字數 1231 閱讀 4026

1:事物是一組sql的集合,要麼都執行,要麼都不執行。有acid4個特性,即:原子性、一致性、隔離性、永續性。

a(atomicity)原子性:整個事物是不可分割的工作單位。

c(consistency)一致性:是指事物將資料庫從一種狀態變為另外一種狀態。在事物之前和事物之後,資料庫的完整性約束沒有被破壞。

i(isolation)隔離性:隔離性的其他稱呼:併發控制(concurrency control)、可序列、鎖。即:該事物提交之前對其他事物不可見。

d(durability)永續性:事物一旦提交,其結果就是永久性的,及時發生宕機等故障,資料庫也能將資料恢復。

特殊:mysql的ndb cluster引擎來說,雖然其支援事物,但是不能滿足d的要求;oracle的事物隔離級別是read committed,不滿足i的要求,即不滿足隔離性。

innodb的儲存引擎預設是read repeatable的事物隔離級別。

2:事物的分類

扁平事物

帶有儲存點的扁平事物

鏈事物巢狀事物

分布式事物

3:扁平事物是事物模型中最簡單的一種。從begin work開始,到commit work或者rollback work 結束。

扁平事物的3中不同的結果:

扁平事物的缺點:一旦設計的操作比較多,事物較大,如需求回滾某一小部分則花費的代價較大。由此,引出了帶有儲存點的扁平事物。

4:帶有儲存點的的扁平事物

該事物允許事物執行過程中回滾到同一事物中較早的乙個狀態。

5:鏈式事物

6:巢狀事物

7:分布式事物

通常在分布式環境中執行的扁平事物,因此需要根據資料所在位置訪問網路中的不同節點。

例如:用在在atm進行銀行轉賬操作。從招商轉賬到工商。

atm可以視為節點a;發出轉賬申請

招商後台資料庫可以視為節點b;扣款

工商後台資料庫可以視為節點c;增款

a節點收到同時完成或者失敗。

這裡需要用到分布式事物,因為a節點不能通過呼叫一台資料庫完成任務,訪問網路中兩個節點的資料庫,在每個節點的資料庫執行的事物操作又都是扁平事物。對於分布式事物,同樣滿足acid特性,要麼都發生,要麼都失效。

MySQL事物系列 2 事物的實現

1 事物的隔離性由鎖來實現。事物的永續性和事物的原子性通過redo log來實現。事物的一致性通過undo log來實現。redo log恢復提交事物修改的頁操作 undo log回滾到行記錄某個特定版本。redo通常是物理日誌,記錄的是頁的修改操作 undo是邏輯日誌,根據每行記錄進行記錄。2 r...

Mysql的事物簡介

以下是銀行賬戶表t act id 賬號 餘額 進行轉賬操作 idactno balance11 6002 2100 假如1給2轉賬100,那兩個人的賬戶資訊就需要執行以下sql update t act set balance 400 where actno 1 update t act set b...

MySQL系列 3事物隔離

事務是用來保證資料庫一致性的關鍵技術。事物內的資料庫操作,要麼全部成功,要麼全部失敗。在mysql中,事務支援是在引擎層實現的。本篇文章裡,將會以innodb為例,剖析mysql在事務支援方面的特定實現。隔離性與隔離級別 提到事務,你肯定會想到acid atomicity consistency i...