MySQL資料庫之事務管理

2021-10-21 13:33:32 字數 2639 閱讀 9514

4. 事務的隔離級別

二、事務的操作

2. 案例演示

1. 模擬生活

生活中往往出現這樣一種場景,一件事情中包含多個任務,只有多個任務同時完成事務才能辦成,否則只要有乙個任務失敗,整件事情失敗。

如公司的運營,所有員工共同配合:

2. 事務的定義

資料庫事務( transaction)是訪問並可能操作各種資料項的乙個資料庫操作序列,這些操作要麼全部執行,要麼全部不執行,是乙個不可分割的工作單位。事務由事務開始與事務結束之間執行的全部資料庫操作組成。通俗來說事務就是多條dml語句同時成功或者同時失敗。

目標:了解事務的本質,了解事務的工作過程,操作事務以提高資料操作效率這才是事務管理的本質。

:只有dml語句才與事務管理有關,其他語句無關。只要進行資料的增、刪、改操作,就要考慮資料的安全性。

3. 事務的特性(acid)

3.1 原子性(atomicity)

所有任務要麼全部成功,要麼全部失敗。說明事務是最小的工作單元,不可再分。如 a給 b 轉賬,不會出現a的錢少了,而b的錢沒有增加的情況。

3.2 一致性(consistency)

事務開始前和結束後,資料的完整性約束沒有被破壞。如轉賬完成後,a減少100,b一定增加100。

3.3 隔離性(isolation)

同一時間,只允許乙個事務請求同一資料。多個事務同時操作時,不同事務之間彼此沒有任何干擾。

3.4 永續性(durability)

事務一旦被提交,對資料的改變就是永久性的。即使資料庫系統遇到故障也不會丟失提交事務的操作。

4. 事務的隔離級別

事務的特性已經確定了,但是資料庫中如果嚴格按照事務的四大特性進行管理的話,資料的操作就會變得非常緩慢且消耗非常多的系統資源,為了保障資料的acid特性的同時提公升資料操作的效率,資料庫中定義了事務的隔離級別

4.1 讀未提交(read uncommitted)

事務a讀到了事務b未提交的資料,並在該資料基礎上進行操作。

4.2 讀已提交(read committed)

事務a只能讀到事務b已提交的資料。

4.3 可重複讀(repeatable read)

乙個未完成的事務讀取不到其他事務已經提交的資料。如事務a 開啟之後,不管多久,每一次在事務a 中讀取到的資料都是一致的。即使事務b 已經將資料修改,並且提交了,事務a讀取到的資料依舊沒有發生改變。

4.4 序列化/序列化(serializable)

多個事務要排隊,不能併發,乙個事務在操作時,另乙個事務不能操作。

mysql中事務行為預設提交,每執行一條dml語句,就提交一次。

1. 基本語法

1.1 設定隔離級別

1.2 開啟事務

start transaction;
1.3 提交事務
commit();
清空事務性活動的日誌檔案,將改變的資料全部徹底持久化到資料庫表中。

提交事務標誌著事務的結束,並且是全部成功的結束。

1.4 回滾事務

rollback();
清空事務性活動的日誌檔案,將之前所有的dml操作全部撤銷恢復到資料改變之前。

回滾事務標誌著事務的結束,並且是全部失敗的結束。

2. 案例演示

左:事務a 右:事務b

2.1 讀未提交

2.2 讀已提交

設定隔離級別,需要重連資料庫。

2.3 可重複讀

2.4 序列化

Spring之事務管理

spring事務管理高層抽象主要包括3個介面 1.platformtransactionmanager 事務管理器 實現類 datasourcetransactionmanager 使用spring jdbc或ibatis進行持久化資料時使用 實現類 hibernatetransactionmana...

spring之事務管理

spring對事務的管理,有兩種方式,分別是程式設計式事務和宣告式事務,常用的是宣告式的事務,採用宣告式的事務包括配置檔案的方式和註解的配置方式 1採用配置檔案的方式 1.1類 public class user public class userdao 增加錢 public void addmon...

Spring Framework之事務管理

目錄spring事務管理 參考1 事務是什麼?2 事務的目的是什麼?spring的事務管理底層基於資料庫事務,所以在學習spring事務之前,我們需要先學習資料庫事務。事務的定義 事務是資料庫管理系統執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。來自維基百科 簡單翻譯就是將資料資源進行訪...