Mysql之事務

什么是事務

假如你下了一筆訂單,會有以下數據庫操作:

1. 生成一筆訂單記錄 
2. 減少庫存  
3. 從你的賬戶中減少金額  
4. 生成支付記錄    

這邊的四個操作缺一不可,一旦某一個操作出現異常,則全部操作都需要全部回滾。而事務的作用就是保證在出現異常的情況下能夠對操作進行回滾。

事務的特性:

原子性(Atomicity)

??原子性是指事務包含的所有操作要么全部成功,要么全部失敗回滾。因此事務的操作如果成功就必須要完全應用到數據庫,如果操作失敗則不能對數據庫有任何影響。

一致性(Consistency)

??一致性是指事務必須使數據庫從一個一致性狀態變換到另一個一致性狀態,也就是說一個事務執行之前和執行之后都必須處于一致性狀態。
??拿轉賬來說,假設用戶A和用戶B兩者的錢加起來一共是5000,那么不管A和B之間如何轉賬,轉幾次賬,事務結束后兩個用戶的錢相加起來應該還得是5000,這就是事務的一致性。

隔離性(Isolation)

??隔離性是當多個用戶并發訪問數據庫時,比如操作同一張表時,數據庫為每一個用戶開啟的事務,不能被其他事務的操作所干擾,多個并發事務之間要相互隔離。
??即要達到這么一種效果:對于任意兩個并發的事務T1和T2,在事務T1看來,T2要么在T1開始之前就已經結束,要么在T1結束之后才開始,這樣每個事務都感覺不到有其他事務在并發地執行。

持久性(Durability)

??持久性是指一個事務一旦被提交了,那么對數據庫中的數據的改變就是永久性的,即便是在數據庫系統遇到故障的情況下也不會丟失提交事務的操作。

事務的隔離級別

臟讀

??臟讀是指在一個事務讀取了另一個未提交的事務中的數據。
??如:事務B商品C的庫存進行了修改,但是該事務還未提交。這時候事務A讀取了商品C的庫存,后來發現代碼有問題,對事務B進行了回滾,那么事務A讀取的就是臟數據了。
??一般都是事務的隔離級別保證的就是這個,隔離級別越高效率越低。

不可重復讀

??不可重復讀是指事務A在查詢過程中,事務B修改了數據。第一次和第二次的結果不同。
??但這是可以接受的。

幻讀

?? 幻讀指的是事務A在讀取過程,事務B對添加了一些數據,導致讀取的結果長度有了變化。

場景

具體場景

  1. 如上述所說,一個操作需要有多個操作來完成時需要事務

代碼場景

  1. 一個方法內部,對數據庫的寫操作超過兩條及以上。

分布式事務

?? 假設上述的操作,在四個節點進行操作,普通的事務回滾將不會有效。因為不知道所有的操作是否都成功了。

解決辦法一: 事務補償

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252540.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252540.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252540.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JVM垃圾回收機制總結

對于垃圾回收機制我先拋出三個問題: ①哪些內存需要回收? ②什么時候回收? ③如何回收? 下面我們主要針對這三個問題來研究JVM GC 一、哪些內存需要回收? 1.JAVA使用可達性分析法來判斷對象是否需要回收。 這個算法的基…

虛擬機增加內存方法

樓主由于要在虛擬機里面裝一個oracle,在安裝過程中,提示物理內存不符合最低標準,如圖1. 圖1 因為懶得新建一個虛擬機了,所以考慮給虛擬機新增磁盤空間。 首先說明,新增磁盤空間,必須保證當前虛擬機里每個新…

myBatis xml if、where、if-else?、foreach 心得

MyBatis 的強大特性之一便是它的動態 SQL。如果你有使用 JDBC 或其它類似框架的經驗,你就能體會到根據不同條件拼接 SQL 語句的痛苦。例如拼接時要確保不能忘記添加必要的空格,還要注意去掉列表最后一個列名的逗號。利用動態 SQL 這一特性可以徹底擺脫這…

bzoj千題計劃213:bzoj2660: [Beijing wc2012]最多的方案

http://www.lydsy.com/JudgeOnline/problem.php?id2660 很容易想到是先把n表示成最大的兩個斐波那契數相加,然后再拆分這兩個斐波那契數 把數表示成斐波那契進制的形式,第i位表示有沒有第i個斐波那契數 比如16133 001001 那么拆分一個數就是把一個1…

面對對象-封裝

private 私有的 package/friendly/default 不寫 protected 受保護的 public 公共的 那么什么情況該用什么修飾符呢?從作用域來看,public能夠適用所有的情況。 但是大家在工作的時候,又不會真正全部都適用public,那么到底什么情況改用什么修飾…

本文詳解5G是個什么鬼,程序員都準備好了嗎?

無線移動通訊發展歷史 最近5G的概念炒的如火如荼,為此,華為和高通還干了一仗。這篇文章從技術層面給大家分析,什么是5G,它和4G比,高級在哪里? 我們來看看移動互聯網的技術發展: 然后我們在來看看…

安裝kerberos報錯 error: command 'gcc' failed with exit status 1

pip install kerberos 報錯:error: command gcc failed with exit status 1 安裝環境工具 yum install gcc libffi-devel python-devel openssl-devel 再次安裝kerberos安裝成功 轉載于:https://www.cnblogs.com/panbc/p/8268574.html

jquery正則表達式驗證:驗證全是數字

需求說明: 前端頁面使用正則表達式驗證輸入框中輸入的內容全是數字。 代碼說明: 這里只介紹正則表達式,其他部分的代碼不做介紹。如果有其他需要自行修改即可。 步驟一:建立一個頁面可以是html、jsp等,引入jquery-3.2.…

0613課堂匯總

一: 數據類型: 基本數據類型{byte(8)/short(16)/char(16)/int(32)/float(32)/long(64)/double(64)/boolean(1)}引用數據類型{*除了基本數據類型都是引用數據類型 *包括API中的類(String,File)*自定義的類(Personal A…

Istio流量管理實踐之(5): 使用cert-manager部署Istio自定義入口網關及進行證書管理...

Istio Gateway提供多個自定義入口網關的支持能力,通過開放一系列端口用于承載網格邊緣的進入連接,同時可以使用不同loadbalancer來隔離不同的入口流量。cert-manager可用于使用存儲在Kubernetes Secret資源中的任意簽名密鑰對來獲取證書。本文提供了手動…

log4配置

log4j 和 log4j2 方式一&#xff1a;log4j2.xml 添加 jar 包 1 <!-- log4j-core --> 2 <!-- 3 <dependency> 4 <groupId>org.apache.logging.log4j</groupId> 5 <artifactId>log4j-core</artifactId> 6 …

[bzoj3625][Codeforces 250 E]The Child and Binary Tree(生成函數+多項式運算+FFT)

3625: [Codeforces Round #250]小朋友和二叉樹 Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 650 Solved: 283[Submit][Status][Discuss]Description 我們的小朋友很喜歡計算機科學&#xff0c;而且尤其喜歡二叉樹。考慮一個含有n個互異正整數的序列c[1],c[2],...,c[n]。…

常用內建模塊

一.datetime 1.模塊導入: from datetime import datetime 2.獲取當前日期和時間: >>> now datetime.now() >>> print(now) 2019-01-13 14:19:38.1810003.獲取指定日期和時間: >>> dt datetime(2019,1,10,15,0) >>> print(dt) 2019-01-10…

子序列進階問題

題目&#xff1a; 有一個數組&#xff0c;讓找到兩個不重復的連續子序列A,B &#xff0c;求Max(Sum(A)-Sum(B) 分析&#xff1a; AB必定連續&#xff0c;設兩端連接處index為{X&#xff0c;x1}&#xff0c;X可取0~n-1 設F(x)為連接處index為{X&#xff0c;x1}時 Max(Sum(A)…

day5-shelve模塊

一、概述前面章節我們講述了json和pickle模塊的序列化和反序列化處理&#xff0c;他們有一個不足是在python 3中不能多次dump和load&#xff0c;shelve模塊則可以規避這個問題。shelve模塊是一個簡單的k,v將內存數據通過文件持久化的模塊&#xff0c;可以持久化任何pickle可支持…

程序員:請你不要對業務「置之不理」

成長是條孤獨的路&#xff0c;一個人會走得更快&#xff1b;有志同道合者同行&#xff0c;會走得更遠。本篇內容整理自 21 天鯤鵬新青年計劃線上分享內容。鯤鵬新青年計劃是由 TGO 鯤鵬會組織的線上分享活動&#xff0c;希望能幫助更多同學一起學習、成長。12 月 28 日&#xf…

在Ubuntu系統下如何將chrome瀏覽器的bookmarks導出到本地

1. 打開chrome瀏覽器在頁面的右上角點擊那個三個小點的位置&#xff0c;找到bookmarks&#xff0c;然后點擊bookmarks manager,然后在organize右側大倒三角下選擇&#xff0c;export bookmarks to HTML&#xff0c;選擇要保存的位置&#xff0c;利用同樣的方法下次就可以直接導…

php基于數組的分頁實現

關于數組的分頁函數,用數組進行分頁的好處是可以方便的進行聯合多表查詢,只需要將查詢的結果放在數組中就可以了以下是數組分頁的函數,函數page_array用于數組的分頁&#xff0c;函數show_array用于分頁函數的操作及顯示&#xff0c;需要配合使用.兩個函數通過全局變量$countpa…

028 -bash-4.1$ 出現故障的原理及解決辦法?

最近在搭建分布式的時候&#xff0c;出現了這個問題&#xff0c;很不爽。下面是我的解決方式。 1.在用戶下刪除bash rm -rf /home/beifeng/.bash* 2.拷貝 cp /etc/skel/.bash* /home/beifeng 3.退出&#xff0c;再進入用戶 4.解釋 set |grep -i ps1 轉載于:https://www.cnblogs…

彈出ifream

top.$.jBox("iframe:"${ctx}/synopsis/hmlwxSynopsis/addItem, {title: "添加作品",width: 1000, height: 500, buttons:{關閉: true,確定:ok},submit:function(v, h, f){},loaded: function (jboxContent) {$(jboxContent).css(overflow-x,);$(jboxConten…