事務就是一組DML語句組成,這些語句在邏輯上存在相關性,這一組DML語句要麼所有成功,要麼所有失敗,是一個總體。MySQL提供一種機制,保證咱們達到這樣的效果。事務還規定不一樣的客戶端看到的數據是不相同的。
開始一個事務數據庫
start transaction;
建立一個保存點session
savepoint 保存點名;
回到保存點(根據具體狀況)併發
rollback to 保存點名;
事務操做注意事項ide
是指當一個事務正在訪問數據,而且對數據進行了修改,而這種修改尚未提交到數據庫中,這時,另一個事務也訪問這個數據,而後使用了這個數據。學習
不可重複讀線程
是指在一個事務內,屢次讀同一數據。在這個事務尚未結束時,另一個事務也訪問該同一數據。那麼,在第一個事務中的兩次讀數據之間,因爲第二個事務的修改,那麼第一個事務兩次讀到的的數據多是不同的。這樣就發生了在一個事務內兩次讀到的數據是不同的,所以稱爲是不可重複讀。(即不能讀到相同的數據內容)。code
幻讀blog
是指當事務不是獨立執行時發生的一種現象,例如第一個事務對一個表中的數據進行了修改,這種修改涉及到表中的所有數據行。同時,第二個事務也修改這個表中的數據,這種修改是向表中插入一行新數據。那麼,之後就會發生操做第一個事務的用戶發現表中還有沒有修改的數據行,就好象發生了幻覺同樣。事務
注:不可重複讀的重點是修改,對於一樣的條件, 你讀取過的數據,再次讀取出來發現值不同了。幻讀的重點在於新增或者刪除,對於一樣的條件, 第1次和第2次讀出來的記錄數不同。
設置事務隔離級別ci
set session transaction isolation level read uncommitted;
事務的ACID特性