mysql 筆記 事務

2021-06-25 16:31:28 字數 1918 閱讀 1333

一、問題讀取

1. 髒讀(dirty read):

事務1更新了某一條記錄,但未提交;事務2讀取到新的未提交記錄;事務1回滾。

2. 不可重複讀取(nonrepeatable read):

不可重複讀,是指在資料庫訪問中,乙個

事務範圍內兩個相同的查詢卻返回了不同資料。

例子:事務1讀取某一條記錄;事務2修改事務1讀取的記錄提交後;事務1再次讀取該記錄。

3. 幻象讀取(phantom read):事務1按 where 子句讀取一批記錄;事務2插入一條或多條符合事務1讀取規則的記錄;事務1再按一樣的 where 子句讀取一批記錄。

二、隔離級別(級別由低到高)

1. read uncommitted

(讀取未提交內容)

2. read commited

(讀取提交內容)

3. repeatable read

(可重讀)

4. serializable 

(可序列化)

隔離級別

髒讀

不可重複讀

幻讀

read uncommitted

read committed

×

repeatable read

×

×

serializable

×

×

×

三、事務控制語句
檢視當前會話隔離級別

select @@tx_isolation;

檢視系統當前隔離級別

select @@global.tx_isolation;

設定當前會話隔離級別

set session transaction isolatin level repeatable read;

設定系統當前隔離級別

set global transaction isolation level repeatable read;

命令列,開始事務時

set autocommit=off 或者 start transaction

四、事務的特性(acid)
原子性

(atomicity)

原子性是指

乙個事務是乙個不可分割的工作單位,事務中包括的諸操作要麼都做,要麼都不做。

只有使事務中所有的資料庫操作執行都成功,才算整個事務成功。只要有乙個

sql語句執行失敗,那麼在這個事務中已經執行的

sql語句都必須撤銷,資料庫狀態應該退回到執行事務前的狀態。

一致性(consistency)

事務必須是使

資料庫從乙個一致性狀態變到另乙個一致性狀態。一致性與原子性是密切相關的。

在事務開始之前和結束之後,資料庫的完整性約束沒有被破壞。

隔離性(isolation)

乙個事務的執行不能被其他事務干擾。即乙個事務內部的操作及使用的資料對併發的其他事務是隔離的,併發執行的各個事務之間不能互相干擾,這些通過鎖來實現。

永續性(durability) 

持續性也稱永久性(

permanence

),指乙個事務一旦提交,它對

資料庫中資料的改變就應該是永久性的。接下來的其他操作或故障(比如說宕機等)不應該對其有任何影響。

mysql筆記 事務

寫日誌為什麼比直接寫磁碟要快?使用事務日誌,儲存引擎在修改表的資料時,只需要修改其記憶體拷貝,再把該修改行為記錄到硬碟上的事務日誌中,而不用每次都將修改的資料本身持久到磁碟。事務日誌採用的是追加的方式,因此寫日誌的操作是磁碟上一小塊區域內的順序i o,而不是隨機i o,所以快很多。事務日誌持久以後,...

Mysql筆記 事務

事務 transaction 會把資料庫從一種一致狀態轉換為另一種一致狀態。在資料庫提交工作時,要麼所有修改都已經儲存了,要麼修改都不儲存。事務是訪問並更新資料庫中各種資料項的乙個程式執行單元。在執行中要麼都做修改,要麼都不做修改。innodb儲存引擎中的事務完全符合acid的特性。l 原子性 at...

MySQL學習筆記 事務

事務是用來保證一組資料庫的操作,要麼全部成功,要麼全部失敗 應用場景較多 如銀行轉賬,訂票等。mysql的事務是在引擎層支援的,原生的myisam不支援,因此主流使用innodb引擎。原子性顧名思義,不可分割,要麼所有指令都成功,要麼所有指令都失敗 一致性事務開始前和事務結束後,資料庫的狀態都是正常...