前言
從今天開始本系列就帶各位小伙伴學習資料庫技術,資料庫技術是Java開發中必不可少的一部分知識內容,也是非常重要的技術,本系列教程由淺入深, 全面講解資料庫體系, 非常適合零基礎的小伙伴來學習,
全文大約 【1707】 字,不說廢話,只講可以讓你學到技術、明白原理的純干貨!本文帶有豐富案例及配圖,讓你更好的理解和運用文中的技術概念,并可以給你帶來具有足夠啟迪的思考...
一. 事務
事務這個概念不太容易理解,所以我們通過下面一個模擬轉賬的案例來讓各位小伙伴理解事務到底是什么
1. 模擬轉賬
生活當中轉賬是轉賬方賬戶扣錢,收賬方賬戶加錢,我們用資料庫操作來模擬現實轉賬,
舉個栗子: 資料庫模擬轉賬,
#A 賬戶轉賬給 B 賬戶 1000 元,
#A 賬戶減1000 元
UPDATE account SET MONEY = MONEY-1000 WHERE id=1;
#B 賬戶加 1000 元
UPDATE account SET MONEY = MONEY+1000 WHERE id=2;
上述代碼完成了兩個賬戶之間轉賬的操作,
舉個栗子: 模擬轉賬錯誤,
#A 賬戶轉賬給 B 賬戶 1000 元,
#A 賬戶減1000 元
UPDATE account SET MONEY = MONEY-1000 WHERE id=1;
#斷電、例外、出錯...
#B 賬戶加 1000 元
UPDATE account SET MONEY = MONEY+1000 WHERE id=2;
上述代碼在減操作后程序中出現了例外或加錢陳述句出錯,會發現,減錢仍舊是成功的,而加錢失敗了!
注意: 每條 SQL 陳述句都是一個獨立的操作,一個操作執行完對資料庫是永久性的影響,
2. 事務的概念
事務是一個原子操作,是一個最小執行單元,可以由一個或多個SQL陳述句組成,在同一個事務當中,所有的SQL陳述句都成功執行時,整個事務成功,有一個SQL陳述句執行失敗,整個事務都執行失敗,
各位小伙伴是否理解了呢?那么我們再做個小小的總結:
事務就是讓多個操作形成一個整體,在這個整體中的多個操作要么執行全成功,要么執行全失敗,這就是事務的作用,
3. 事務的執行程序
開始程序:連接到資料庫,執行一條DML陳述句, 上一個事務結束后,又輸入了一條DML陳述句,即事務的開始,
結束程序如下:
1).提交:
a.顯示提交:commit;
b.隱式提交:一條創建、洗掉的陳述句,正常退出(客戶端退出連接),
2).回滾:
a.顯示回滾:rollback;
b.隱式回滾:非正常退出(斷電、宕機),執行了創建、洗掉的陳述句,但是失敗了,會為這個無效的陳述句執行回滾,
4. 事務的原理
資料庫會為每一個客戶端都維護一個空間獨立的快取區(回滾段),一個事務中所有的增刪改陳述句的執行結果都會快取在回滾段中,只有當事務中所有SQL陳述句均正常結束(commit),才會將回滾段中的資料同步到資料庫,否則無論因為哪種原因失敗,整個事務將回滾(rollback),
5. 事務的特性
下面給各位小伙伴系統的說一下事務都具有哪些特性和功能,
通常叫做ACID原則,因為ACID是由下面四個單詞的首字母構成的,
Atomicity(原子性): 表示一個事務內的所有操作是一個整體,要么全部成功,要么全部失敗
Consistency(一致性) :表示一個事務內有一個操作失敗時,所有的更改過的資料都必須回滾到修改前狀態
Isolation(隔離性): 事務查看資料操作時資料所處的狀態,要么是另一并發事務修改它之前的狀態,要么是另一事務修改它之后的狀態,事務不會查看中間狀態的資料,
Durability(持久性): 持久性事務完成之后,它對于系統的影響是永久性的,
6. 事務應用
應用環境:基于增刪改陳述句的操作結果(均回傳操作后受影響的行數),可通程序式邏輯手動控制事務提交或回滾,
舉個栗子: 事務完成轉賬,A賬戶給B賬戶轉賬,
#1.開啟事務
START TRANSACTION;|setAutoCommit=0;#禁止自動提交 setAutoCommit=1;#開啟自動提交
#2.事務內資料操作陳述句
UPDATE ACCOUNT SET MONEY = MONEY-1000 WHERE ID = 1;
UPDATE ACCOUNT SET MONEY = MONEY+1000 WHERE ID = 2;
#3.事務內陳述句都成功了,執行 COMMIT;
COMMIT;
#4.事務內如果出現錯誤,執行 ROLLBACK;
ROLLBACK;
注意: 開啟事務后,執行的陳述句均屬于當前事務,成功再執行 COMIIT,失敗要進行 ROLLBACK,
二. 結語
最后在這里對本文核心要點進行總結:
-
事務能夠在增刪改操作中保證資料的一致性,所以在增刪改操作中必須加入事務,
-
各位小伙伴一定要熟練的記住事務的操作程序以及ACID原則,非常重要哦,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/551985.html
標籤:其他
上一篇:Python3.10動態修改Windows系統(win10/win11)本地IP地址(靜態IP)
下一篇:返回列表