一、事物的簡介
1.事物的概念
事物是乙個操作序列,該序列中的多個操作要麼都做,要麼都不做
是mysql5.5之後的儲存引擎所支援
2.事物的特點
a.原子性
原子是自然界中最小的顆粒,具有不可再分的特點
事物中的所有操作可以看作是乙個原子,要麼全部執行,要麼全不執行
b.一致性
事物執行的結果必須要保證資料庫中資料的一致性
c.隔離性
隔離性指各個事物的操作是互不干擾的,任意乙個事物的內部操作都對其他併發的事物都不能進行干擾
d.永續性
指事物一旦提交後,對資料庫中資料做出的任何改變都會永久儲存
二.事物的控制
1.開啟事物
語法:start transaction |begin 開啟乙個新的事物
(1).建立乙個庫test5
(2).建立一張表account(id賬號主鍵唯一,username賬號名,balance金額)
(3).插入資料
例如:開啟新事物,完成張三給李四轉賬200
start transaction;
update account set balance=balance-200 where username='張三';
update account set balance=balance+200 where username='李四';
注意:使用start transaction 開啟乙個新事物後,該事物就不會自動提交,必須手動提交
2.提交事物
語法:commit;
例如:開啟新事物,完成張三給李四轉賬200,提交事物
start transaction;
update account set balance=balance-200 where username='張三';
update account set balance=balance+200 where username='李四';
commit;
3.事物回滾
語法:rollback;
注意:開啟的事物,未提交時候可以回滾
例如:回滾事物
start transaction;
update account set balance=balance-200 where username='張三';
update account set balance=balance+200 where username='李四';
rollback;
讀取其他事務未提交的資料也稱為髒讀(dirty read) 。 我們可以這樣來理解髒讀:
a 事務在更新一條記錄, 但尚未提交前, b 事務讀到了 a 事務更新後的記錄, 那麼 b 事務
會產生對 a 事務未提交資料的依賴。 一旦 a 事務回滾, 那麼 b 事務讀到的資料, 將是錯誤
的髒資料。
三.事物的隔離級別
事物的隔離級別用於決定如何控制併發使用者讀寫資料的操作
事物的隔離級別由低到高分為:
1.read uncommitted
指讀取未提交的資料內容
2.read committed
指讀取提交的資料,該隔離級別下,所有事物只能看到其他事物已經提交的資料。該隔離級別解決了髒讀的問題。
3.repeatable read
指(可重複讀)是mysql預設的隔離級別
4.serializable
指(可序列化)該隔離級別是最高的,同時花費也是最高的,效能最低,一般很少用
因為在該隔離級別下,事物按著順序執行
mysql中事務的特性 mysql中事務的四大特性
原子性 atomicity 事務就像 原子 一樣,不可被分割,組成事務的dml操作語句要麼全成功,要麼全失敗,不可能出現部分成功部分失敗的情況。一致性 consistency 一旦事務完成,不管是成功的,還是失敗的,整個系統處於資料一致的狀態。隔離性 isolation 乙個事務的執行不會被另乙個事...
mysql中的事務和鎖 MySQL中的事務和鎖
鎖 行級鎖select for update nowaitfalse,skip false 注意必須用在事物裡面 所有匹配的行將被鎖定,知道事務結束。這意味著可以通過鎖防止資料被其他事務修改。一般情況下如果其他事務鎖定了相關行,那麼本查詢將被阻塞,直到鎖被釋放。事務事務的四大特性 1.原子性 事務包...
MySql中的事務
一.mysql的事務支援不是繫結在mysql伺服器本身,而是與儲存引擎相關 1.myisam 不支援事務,用於唯讀程式提高效能 2.innodb 支援acid事務 行級鎖 併發 二.乙個事務是乙個連續的一組資料庫操作,就好像它是乙個單一的工作單元進行。換言之,永遠不會是完整的事務,除非該組內的每個單...