本篇內(nèi)容主要講解“MySQL事務(wù)的概念以及事務(wù)隔離級別介紹”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“MySQL事務(wù)的概念以及事務(wù)隔離級別介紹”吧!
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供羅田網(wǎng)站建設(shè)、羅田做網(wǎng)站、羅田網(wǎng)站設(shè)計、羅田網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、羅田企業(yè)網(wǎng)站模板建站服務(wù),10多年羅田做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
先簡單介紹一下MySQL中事務(wù)的概念,它是指: 用于實現(xiàn)某種行為的SQL語句的組合,可以是單條SQL語句,也可以是多條。 就像線程一樣,MySQL服務(wù)器允許多個事務(wù)并發(fā)執(zhí)行去更新某些數(shù)據(jù),為了保障安全,MySQL提供了四種隔離級別,用來限制不同事務(wù)之間的干擾。
四種隔離級別如下(按照級別由低到高):
read uncommitted(讀未提交)
read committed(讀已提交)
repeatable read(可重復(fù)讀)
Serializable(串行化)
接下來按照這個順序分別進(jìn)行演示。
**準(zhǔn)備工作**
由于我本地服務(wù)器上只有一個root用戶,為了后續(xù)的演示操作,所以需要再新建一個用戶testB,并授予相應(yīng)權(quán)限。方便起見,下文中root、testB開啟的事務(wù)稱為A、B。
一、read uncommitted(讀未提交)
分別登錄到用戶root和testB,以表t_ss作為實驗表,通過查詢可以看到表t_ss是空的。
分別將root和testB的隔離級別設(shè)置為 read uncommitted( 讀 未提交)。
接著分別在root、testB中開啟事務(wù)A、B,然后在B中向表t_ss插入一條數(shù)據(jù)。 這時候B中的事務(wù)還沒有提交(commit),我們再在A中查表,可以看見, 即使B的事務(wù)還未提交,A中也可以查詢到事務(wù)B插入的數(shù)據(jù)。
到這大家應(yīng)該都能理解 read uncommitted( 讀 未提交) 的含義了,通俗來說就是: 即使事務(wù)B沒有commit,其它事務(wù)也能讀取到事務(wù)B更新的數(shù)據(jù),即能夠讀取事務(wù)沒有提交的數(shù)據(jù)。 這是事務(wù)隔離級別中等級最低的一個。
二、read committed(讀已提交)
將root和testB的事務(wù)隔離級別設(shè)置為 read committed(讀已提交)。
同樣開啟兩個事務(wù),并在B中再插入一條數(shù)據(jù),此時B事務(wù)未提交,當(dāng)在A中查詢時,發(fā)現(xiàn)并未查詢到B新插入的數(shù)據(jù)。
當(dāng)commit事務(wù)B后,A成功讀取到B插入的數(shù)據(jù)。
總結(jié)一下,在read committed(讀已提交)級別時, 其它事務(wù)只能讀取事務(wù)B提交后的數(shù)據(jù),未提交則讀取不到。 這是大部分?jǐn)?shù)據(jù)庫的默認(rèn)隔離級別。
三、repeatable read(可重復(fù)讀)
將事務(wù)隔離級別設(shè)置為 repeatable read(可重復(fù)讀) ,并分別開啟事務(wù)。
A先查表,有兩條數(shù)據(jù),然后B插入一條數(shù)據(jù)并commit,A再查表,結(jié)果還是兩條數(shù)據(jù),但是B中查表所得結(jié)果是三條數(shù)據(jù)。(箭頭指示命令執(zhí)行順序)
也就是說,當(dāng)數(shù)據(jù)庫處于repeatable read(可重復(fù)讀)時, 同一個事務(wù)前后兩次所讀取的數(shù)據(jù)必須是一致的,無論事務(wù)B有沒有插入數(shù)據(jù)。 它是MySQL的默認(rèn)隔離級別。
四、Serializable(串行化)
將root的隔離級別設(shè)置為 Serializable(串行化) ,開啟事務(wù)。當(dāng)在事務(wù)A中查詢表t_ss且未commit時,B事務(wù)一直在等待,到達(dá)指定時間后會報錯,顯示超時。
在事務(wù)A提交后,事務(wù)B才能夠成功插入數(shù)據(jù)。
Serializable(串行化)是等級最高,要求最嚴(yán)的事務(wù)隔離級別,在這種情況下, 其它事務(wù)必須等待當(dāng)前事務(wù)commit后才能執(zhí)行。
到此,相信大家對“MySQL事務(wù)的概念以及事務(wù)隔離級別介紹”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
網(wǎng)站欄目:MySQL事務(wù)的概念以及事務(wù)隔離級別介紹
網(wǎng)頁路徑:http://chinadenli.net/article38/podcsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、全網(wǎng)營銷推廣、軟件開發(fā)、網(wǎng)站設(shè)計公司、網(wǎng)頁設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)