Day029 MySQL中的事務

2021-09-29 06:06:08 字數 1891 閱讀 5290

一、事物的簡介

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事務 行級鎖 併發 二.乙個事務是乙個連續的一組資料庫操作,就好像它是乙個單一的工作單元進行。換言之,永遠不會是完整的事務,除非該組內的每個單...