亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

MySQL中事務概念的簡潔學習教程

2024-07-24 13:08:15
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了MySQL中的事務概念,是MySQL入門學習中的基礎知識,需要的朋友可以參考下

事務是由一步或幾步數據庫操作序列組成邏輯執行單元,這系列操作要么全部執行,要么全部放棄執行。程序和事務是兩個不同的概念。一般而言:一段程序中可能包含多個事務。

事務具有四個特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持續性(Durability)。這四個特性也簡稱ACID性。

1)原子性:事務是應用中最小的執行單位,就如原子是自然界最小顆粒,具有不可再分的特征一樣。事務是應用中不可再分的最小邏輯執行體。

2)一致性:事務執行的結果,必須使數據庫從一個一致性狀態,變到另一個一致性狀態。當數據庫中只包含事務成功提交的結果時,數據庫處于一致性狀態。一致性是通過原子性來保證的。

3)隔離性:各個事務的執行互不干擾,任意一個事務的內部操作對其他并發的事務,都是隔離的。也就是說:并發執行的事務之間不能看到對方的中間狀態,并發執行的事務之間不能相互影響。

4)持續性:持續性也稱為持久性,指事務一旦提交,對數據所做的任何改變,都要記錄到永久存儲器中,通常是保存進物理數據庫。

在關系型數據庫中,事務的隔離性分為四個隔離級別,在解讀這四個級別前先介紹幾個關于讀數據的概念。

1)臟讀(Dirty Reads):所謂臟讀就是對臟數據(Drity Data)的讀取,而臟數據所指的就是未提交的數據。也就是說,一個事務正在對一條記錄做修改,在這個事務完成并提交之前,這條數據是處于待定狀態的(可能提交也可能回滾),這時,第二個事務來讀取這條沒有提交的數據,并據此做進一步的處理,就會產生未提交的數據依賴關系。這種現象被稱為臟讀。

2)不可重復讀(Non-Repeatable Reads):一個事務先后讀取同一條記錄,但兩次讀取的數據不同,我們稱之為不可重復讀。也就是說,這個事務在兩次讀取之間該數據被其它事務所修改。

3)幻讀(Phantom Reads):一個事務按相同的查詢條件重新讀取以前檢索過的數據,卻發現其他事務插入了滿足其查詢條件的新數據,這種現象就稱為幻讀。

事務四個隔離級別對比:

1)未提交讀(Read Uncommitted):SELECT語句以非鎖定方式被執行,所以有可能讀到臟數據,隔離級別最低。

2)提交讀(Read Committed):只能讀取到已經提交的數據。即解決了臟讀,但未解決不可重復讀。

3)可重復讀(Repeated Read):在同一個事務內的查詢都是事務開始時刻一致的,InnoDB的默認級別。在SQL標準中,該隔離級別消除了不可重復讀,但是還存在幻讀。

4)串行讀(Serializable):完全的串行化讀,所有SELECT語句都被隱式的轉換成SELECT ... LOCK IN SHARE MODE,即讀取使用表級共享鎖,讀寫相互都會阻塞。隔離級別最高。

隔離級別對比表:

MySQL中事務概念的簡潔學習教程

數據庫的事務有下列語句組成:

一組DML(Data Manipulate Language,即數據操作語言)經過這組DML修改后數據將保持較好的一致性。

一個DDL(Data Definition Language,即數據定義語言)語句。

一個DCL(Data control Language,即數據控制語言)語句。

DDL和DCL語句最多只能有一個,因為DDL和DCL語句都會導致事務立即提交。

當事務所包含的全部數據庫操作都成功執行后,應該提交(commit)事務,使這些修改永久生效。

事務提交有兩種方式:顯式提交和自動提交。

(1)顯式提交:使用commit。

(2)自動提交:執行DDL或DCL,或者程序正常退出。

數據庫事務傳播級別,指的是事務嵌套時,應該采用什么策略,即在一個事務中調用別的事務,該怎么辦

假如有一下兩個事務:

 

 
  1. ServiceA {  
  2. void methodA () {  
  3. ServiceB . methodB ();  
  4. }  
  5.  
  6. }  
  7.  
  8. ServiceB {  
  9. void methodB () {  
  10. }  
  11. }  

1 : PROPAGATION_REQUIRED

加入當前正要執行的事務不在另外一個事務里,那么就起一個新的事務

比如說, ServiceB.methodB 的事務級別定義為 PROPAGATION_REQUIRED, 那么由于執行 ServiceA.methodA 的時候,

ServiceA.methodA 已經起了事務,這時調用 ServiceB.methodB , ServiceB.methodB 看到自己已經運行在 ServiceA.methodA

的事務內部,就不再起新的事務。而假如 ServiceA.methodA 運行的時候發現自己沒有在事務中,他就會為自己分配一個事務。

這樣,在 ServiceA.methodA 或者在 ServiceB.methodB 內的任何地方出現異常,事務都會被回滾。即使 ServiceB.methodB 的事務已經被

提交,但是 ServiceA.methodA 在接下來 fail 要回滾, ServiceB.methodB 也要回滾

2 : PROPAGATION_SUPPORTS

如果當前在事務中,即以事務的形式運行,如果當前不再一個事務中,那么就以非事務的形式運行

3 : PROPAGATION_MANDATORY

必須在一個事務中運行。也就是說,他只能被一個父事務調用。否則,他就要拋出異常

4 : PROPAGATION_REQUIRES_NEW

這個就比較繞口了。 比如我們設計 ServiceA.methodA 的事務級別為 PROPAGATION_REQUIRED , ServiceB.methodB 的事務級別為 PROPAGATION_REQUIRES_NEW ,

那么當執行到 ServiceB.methodB 的時候, ServiceA.methodA 所在的事務就會掛起, ServiceB.methodB 會起一個新的事務,等待 ServiceB.methodB 的事務完成以后,

他才繼續執行。他與 PROPAGATION_REQUIRED 的事務區別在于事務的回滾程度了。因為 ServiceB.methodB 是新起一個事務,那么就是存在

兩個不同的事務。如果 ServiceB.methodB 已經提交,那么 ServiceA.methodA 失敗回滾, ServiceB.methodB 是不會回滾的。如果 ServiceB.methodB 失敗回滾,

如果他拋出的異常被 ServiceA.methodA 捕獲, ServiceA.methodA 事務仍然可能提交。

5 : PROPAGATION_NOT_SUPPORTED

當前不支持事務。比如 ServiceA.methodA 的事務級別是 PROPAGATION_REQUIRED ,而 ServiceB.methodB 的事務級別是 PROPAGATION_NOT_SUPPORTED ,

那么當執行到 ServiceB.methodB 時, ServiceA.methodA 的事務掛起,而他以非事務的狀態運行完,再繼續 ServiceA.methodA 的事務。

6 : PROPAGATION_NEVER

不能在事務中運行。假設 ServiceA.methodA 的事務級別是 PROPAGATION_REQUIRED , 而 ServiceB.methodB 的事務級別是 PROPAGATION_NEVER ,

那么 ServiceB.methodB 就要拋出異常了。

7 : PROPAGATION_NESTED

理解 Nested 的關鍵是 savepoint 。他與 PROPAGATION_REQUIRES_NEW 的區別是, PROPAGATION_REQUIRES_NEW 另起一個事務,將會與他的父事務相互獨立,

而 Nested 的事務和他的父事務是相依的,他的提交是要等和他的父事務一塊提交的。也就是說,如果父事務最后回滾,他也要回滾的。

而 Nested 事務的好處是他有一個 savepoint 。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品久久久久久久久久久久久| 久99久在线视频| 日韩激情视频在线| 91久热免费在线视频| 18一19gay欧美视频网站| 欧美电影在线免费观看网站| 最新91在线视频| 国产精品免费看久久久香蕉| 夜夜躁日日躁狠狠久久88av| 国产精品久久久久久久久久99| 日韩视频免费看| 黑人狂躁日本妞一区二区三区| 中文字幕亚洲无线码a| 亚洲精品福利在线| 亚洲精品电影网在线观看| 国产综合香蕉五月婷在线| 亚洲电影中文字幕| 九九综合九九综合| 国产精品久久久久7777婷婷| 精品视频久久久久久久| 日韩电影在线观看中文字幕| 国产成人精品久久二区二区91| 久久久久久久久久亚洲| 亚洲国产另类 国产精品国产免费| www.午夜精品| 成人午夜激情网| 精品亚洲男同gayvideo网站| 精品国产91久久久久久老师| 日韩男女性生活视频| 亚洲成人精品在线| 久久99久久久久久久噜噜| 欧美综合第一页| 国产九九精品视频| 日韩精品免费电影| 欧美—级a级欧美特级ar全黄| 国产福利成人在线| 欧美在线视频导航| 久久人人爽人人爽爽久久| 在线观看91久久久久久| 久久久国产精品免费| 欧美激情aaaa| 欧美一区二区三区四区在线| 91久久久在线| 国产91精品网站| 狠狠色噜噜狠狠狠狠97| 欧美另类高清videos| 亚洲国产成人精品女人久久久| 91成人免费观看网站| 亚洲国产精品嫩草影院久久| 亚洲成人网在线观看| 狠狠久久五月精品中文字幕| 91精品国产九九九久久久亚洲| 欧美福利视频在线观看| 日本久久久a级免费| 欧美激情视频在线免费观看 欧美视频免费一| 国产精品久久久久久久电影| 91色在线视频| 欧美亚洲另类激情另类| 欧美国产日本高清在线| 亚洲性生活视频在线观看| 午夜欧美不卡精品aaaaa| 奇米成人av国产一区二区三区| 国产精品福利网| 奇米一区二区三区四区久久| 成人黄色网免费| 色999日韩欧美国产| 少妇高潮久久77777| 国产成人精品在线观看| 欧美激情在线有限公司| 亚洲欧美精品在线| 91精品国产高清久久久久久91| 国产亚洲精品久久久久久777| 久久精品最新地址| 欧美精品一区二区三区国产精品| 亚洲第一天堂av| 日韩免费视频在线观看| 国产精品久久久久久久久粉嫩av| 国产欧美韩国高清| 亚洲在线观看视频| 欧美成人精品一区二区三区| 亚洲永久在线观看| 91丨九色丨国产在线| 97热精品视频官网| 国产精品丝袜久久久久久高清| 欧美成人亚洲成人日韩成人| 欧美人在线观看| 国产午夜精品全部视频在线播放| 欧美日韩国产一区中文午夜| xx视频.9999.com| 亚洲一区二区三区在线免费观看| 国产91精品在线播放| 国产一区二区三区高清在线观看| 国产不卡在线观看| 国产欧亚日韩视频| 一本大道亚洲视频| 国产黑人绿帽在线第一区| 国产精品一区久久久| 欧美日韩午夜剧场| 国产精品偷伦视频免费观看国产| 久久国产精品首页| 久久影院模特热| 亚洲欧美日韩网| 久久综合亚洲社区| 欧美大尺度激情区在线播放| 国产精品成人一区二区| 日韩av色在线| 日产精品久久久一区二区福利| 国产视频久久久久| 日韩中文字幕免费| 国产精品7m视频| 国产精品久久久久久久久男| 亚洲va欧美va国产综合剧情| 欧美xxxx做受欧美.88| 亚洲欧美变态国产另类| 久久69精品久久久久久久电影好| 91人成网站www| 中文字幕亚洲一区在线观看| 日韩精品中文字幕在线| 国产日韩精品在线播放| 国产亚洲a∨片在线观看| 日韩有码视频在线| 成人午夜一级二级三级| 欧美精品video| 精品亚洲男同gayvideo网站| 久久久精品国产网站| 亚洲人成电影网站色…| 亚洲综合社区网| 成人免费网视频| 亚洲成**性毛茸茸| 欧美丰满少妇xxxxx做受| 欧美视频在线观看 亚洲欧| 亚洲a一级视频| 高清一区二区三区四区五区| 亚洲欧美中文在线视频| 亚洲日韩中文字幕| 精品国产999| 日韩av网站电影| 欧美日韩第一视频| 日韩高清电影免费观看完整版| 国产精品白嫩初高中害羞小美女| 欧美精品激情blacked18| 亚洲福利小视频| 国内精品小视频在线观看| 色99之美女主播在线视频| 91po在线观看91精品国产性色| 精品自在线视频| 欧美在线精品免播放器视频| 亚洲美女久久久| 欧美性猛交xxxxx水多| 狠狠操狠狠色综合网| 色综久久综合桃花网| 亚洲日本中文字幕免费在线不卡| 亚洲欧美日韩天堂一区二区| 亚洲韩国欧洲国产日产av| 福利一区视频在线观看| 在线观看精品国产视频| 亚洲精品日韩激情在线电影| 992tv在线成人免费观看| 成人免费激情视频| 欧美精品一二区| 国产精品亚洲激情| 国产精品私拍pans大尺度在线| 国产亚洲精品久久久| 久久成人在线视频|