中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mysql事務是什么意思

發布時間:2021-06-25 09:29:51 來源:億速云 閱讀:148 作者:chen 欄目:大數據

本篇內容主要講解“Mysql事務是什么意思”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Mysql事務是什么意思”吧!

上一篇著重談到了MySQL鎖的概念,里面談到了事務的概念,其實大部分開發者對于事務肯定不陌生,事務的概念其實就是一組SQL語句組成一個執行單元,如果單元中的某個SQL語句執行出現異常,則需要將整個事務進行回滾到未修改的狀態。只有單元中全部SQL語句都成功執行,才會提交數據代表事務執行成功。而Mysql其實前幾篇我們都已經知道是支持多種存儲引擎的,其實正是因為MyISAM引擎不支持事務被InnoDB取代的原因。所以本篇文章主要是針對InnoDB引擎詳細了解下事務這個概念。

事務特性

  • 原子性: 事務是一個原子操作單元,其對數據的修改,要么全都執行,要么全都不執行。

  • 一致性:事務中包含的處理要滿足數據庫提前設置的約束,如主鍵約束或者NOT NULL 約束等。

  • 隔離性:事務處理過程中的中間狀態對外部是不可見的。

  • 持久性:事務完成之后,它對于數據的修改是永久性的。

隔離性的四種隔離級別

InnoDB引擎支持的4種事務隔離級別分別是:讀未提交、讀已提交、可重復讀、串行讀。

  • 讀未提交:允許臟讀,可以讀取其他session中未提交的臟數據。

  • 讀已提交:不可讀取其他session尚未提交的數據,只有其他session數據已提交才能讀取到,為不重復讀。

  • 可重復讀:該級別下可重復讀,InnoDB引擎默認采用可重復讀,不允許讀取還未提交的臟數據,但是可能存在InnoDB獨有的幻讀。

  • 串行讀:該級別下隔離程度最高,事務只能一個接著一個串行執行,無法并發執行。每次串行讀都需要獲得表級共享鎖,讀寫操作都會阻塞。

幻讀

事務在插入一條已經經過檢查不存在的記錄,但是插入結果是數據已經存在,之前的檢查操作如同幻影。Mysql默認采用可重復讀級別,所以只可能出現幻讀的情況。

設置事務隔離級別

可以在my.ini文件中[mysqld]下配置transaction-isolation屬性,隔離性的四個值為:READ-UNCOMMITTED、READ-COMMITIED、REPEATABLE-READ、SERIALIZABLE,分別對應讀未提交、讀已提交、可重復讀、串行讀四種隔離級別。

事務分類

事務一般分為兩種:隱式事務和顯示事務。在Mysql中,事務默認是自動提交的,所以說每個DML語句實際上就是一次事務的過程。 隱式事務:沒有開啟和結束的標志,默認執行完SQL語句就自動提交,比如我們經常使用的INSERT、UPDATE、DELETE語句就屬于隱式事務。 顯示事務:需要顯示的開啟關閉,然后執行一系列操作,最后如果全部操作都成功執行,則提交事務釋放連接,如果操作有異常,則回滾事務中的所有操作。

事務使用步驟 開啟事務:關閉自動提交,然后開啟事務。 事務操作:一系列DML語句執行。 事務結束:根據事務操作成功與否選擇提交事務或者回滾事務操作。

接下來我們簡單的使用事務實現用戶A向用戶B轉賬的操作:

創建用戶表并插入兩條用戶數據:

Mysql事務是什么意思

配置數據庫連接信息:

Mysql事務是什么意思

接下來從連接池中取出一個數據庫連接并進行數據庫連接:

Mysql事務是什么意思

數據庫連接成功,則使用connection對象開啟事務: Mysql事務是什么意思

然后查詢轉賬賬號與待轉賬賬號是否存在,并進行轉賬等一系列操作,這里由于魔鬼回調的原因我這里使用async庫變成鏈式調用:

Mysql事務是什么意思

最后根據事務操作的成功或失敗進行事務提交或者事務回滾,并且釋放數據庫連接:

Mysql事務是什么意思

然后可以測試轉賬成功的情況可以發現轉賬操作成功了

Mysql事務是什么意思

再次測試轉賬失敗的操作可以發現扣除A積分和增加B積分的操作全部被回滾了,所以A和B的積分余額都沒有發生改變

Mysql事務是什么意思 

到此,相信大家對“Mysql事務是什么意思”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岢岚县| 怀柔区| 沙洋县| 寿光市| 潼关县| 西安市| 炎陵县| 冷水江市| 滕州市| 呼伦贝尔市| 固阳县| 平山县| 五原县| 长宁县| 长春市| 达孜县| 绥芬河市| 冕宁县| 淳化县| 承德县| 普陀区| 吉安县| 富源县| 广灵县| 四平市| 丰镇市| 图木舒克市| 东至县| 漠河县| 盐山县| 宽甸| 阆中市| 越西县| 镇平县| 铁岭市| 五峰| 儋州市| 勃利县| 于田县| 淮阳县| 西乌|