偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

一篇文章弄懂 MySQL 的事務(wù)隔離級(jí)別

新聞 數(shù)據(jù)庫(kù)運(yùn)維
先簡(jiǎn)單介紹一下MySQL中事務(wù)的概念,它是指: 用于實(shí)現(xiàn)某種行為的SQL語(yǔ)句的組合,可以是單條SQL語(yǔ)句,也可以是多條。

 

先簡(jiǎn)單介紹一下MySQL中事務(wù)的概念,它是指: 用于實(shí)現(xiàn)某種行為的SQL語(yǔ)句的組合,可以是單條SQL語(yǔ)句,也可以是多條。 就像線程一樣,MySQL服務(wù)器允許多個(gè)事務(wù)并發(fā)執(zhí)行去更新某些數(shù)據(jù),為了保障安全,MySQL提供了四種隔離級(jí)別,用來(lái)限制不同事務(wù)之間的干擾。

四種隔離級(jí)別如下(按照級(jí)別由低到高):

  • read uncommitted(讀未提交)

  • read committed(讀已提交)

  • repeatable read(可重復(fù)讀)

  • Serializable(串行化)

接下來(lái)按照這個(gè)順序分別進(jìn)行演示。

**準(zhǔn)備工作**

由于我本地服務(wù)器上只有一個(gè)root用戶,為了后續(xù)的演示操作,所以需要再新建一個(gè)用戶testB,并授予相應(yīng)權(quán)限。方便起見(jiàn),下文中root、testB開(kāi)啟的事務(wù)稱為A、B。

一、read uncommitted(讀未提交)

分別登錄到用戶root和testB,以表t_ss作為實(shí)驗(yàn)表,通過(guò)查詢可以看到表t_ss是空的。

分別將root和testB的隔離級(jí)別設(shè)置為 read uncommitted( 讀 未提交)。

接著分別在root、testB中開(kāi)啟事務(wù)A、B,然后在B中向表t_ss插入一條數(shù)據(jù)。 這時(shí)候B中的事務(wù)還沒(méi)有提交(commit),我們?cè)僭贏中查表,可以看見(jiàn), 即使B的事務(wù)還未提交,A中也可以查詢到事務(wù)B插入的數(shù)據(jù)。

到這大家應(yīng)該都能理解 read uncommitted( 讀 未提交) 的含義了,通俗來(lái)說(shuō)就是: 即使事務(wù)B沒(méi)有commit,其它事務(wù)也能讀取到事務(wù)B更新的數(shù)據(jù),即能夠讀取事務(wù)沒(méi)有提交的數(shù)據(jù)。 這是事務(wù)隔離級(jí)別中等級(jí)最低的一個(gè)。

二、read committed(讀已提交)

將root和testB的事務(wù)隔離級(jí)別設(shè)置為 read committed(讀已提交)。

同樣開(kāi)啟兩個(gè)事務(wù),并在B中再插入一條數(shù)據(jù),此時(shí)B事務(wù)未提交,當(dāng)在A中查詢時(shí),發(fā)現(xiàn)并未查詢到B新插入的數(shù)據(jù)。

當(dāng)commit事務(wù)B后,A成功讀取到B插入的數(shù)據(jù)。

總結(jié)一下,在read committed(讀已提交)級(jí)別時(shí), 其它事務(wù)只能讀取事務(wù)B提交后的數(shù)據(jù),未提交則讀取不到。 這是大部分?jǐn)?shù)據(jù)庫(kù)的默認(rèn)隔離級(jí)別。

三、repeatable read(可重復(fù)讀)

將事務(wù)隔離級(jí)別設(shè)置為 repeatable read(可重復(fù)讀) ,并分別開(kāi)啟事務(wù)。

A先查表,有兩條數(shù)據(jù),然后B插入一條數(shù)據(jù)并commit,A再查表,結(jié)果還是兩條數(shù)據(jù),但是B中查表所得結(jié)果是三條數(shù)據(jù)。(箭頭指示命令執(zhí)行順序)

也就是說(shuō),當(dāng)數(shù)據(jù)庫(kù)處于repeatable read(可重復(fù)讀)時(shí), 同一個(gè)事務(wù)前后兩次所讀取的數(shù)據(jù)必須是一致的,無(wú)論事務(wù)B有沒(méi)有插入數(shù)據(jù)。 它是MySQL的默認(rèn)隔離級(jí)別。

四、Serializable(串行化)

將root的隔離級(jí)別設(shè)置為 Serializable(串行化) ,開(kāi)啟事務(wù)。當(dāng)在事務(wù)A中查詢表t_ss且未commit時(shí),B事務(wù)一直在等待,到達(dá)指定時(shí)間后會(huì)報(bào)錯(cuò),顯示超時(shí)。

在事務(wù)A提交后,事務(wù)B才能夠成功插入數(shù)據(jù)。

Serializable(串行化)是等級(jí)最高,要求最嚴(yán)的事務(wù)隔離級(jí)別,在這種情況下, 其它事務(wù)必須等待當(dāng)前事務(wù)commit后才能執(zhí)行。

以上便是四種事務(wù)隔離級(jí)別,希望能給大家?guī)?lái)一點(diǎn)幫助。

責(zé)任編輯:張燕妮 來(lái)源: BeCoder
相關(guān)推薦

2018-10-22 12:50:20

CDN網(wǎng)絡(luò)內(nèi)容發(fā)布網(wǎng)絡(luò)

2022-05-30 18:18:23

NoSQL數(shù)據(jù)庫(kù)

2024-12-26 16:49:20

Python字典元素

2022-08-03 08:17:00

Redis事務(wù)內(nèi)存

2021-06-30 10:01:09

Python字典代碼

2021-06-16 10:03:37

Python案例分析Python基礎(chǔ)

2021-01-07 11:10:47

關(guān)鍵字

2025-01-26 15:38:11

Spring事務(wù)編程式

2020-10-09 08:15:11

JsBridge

2021-07-03 10:02:30

Python字符串瀏覽器

2018-04-09 16:35:10

數(shù)據(jù)庫(kù)MySQLInnoDB

2017-09-05 08:52:37

Git程序員命令

2024-05-10 13:46:36

Python進(jìn)制

2021-06-05 10:02:15

Python進(jìn)制數(shù)據(jù)類型

2021-06-09 09:00:11

Python數(shù)據(jù)類型基礎(chǔ)

2024-11-27 16:38:07

2022-02-21 09:44:45

Git開(kāi)源分布式

2019-04-17 15:16:00

Sparkshuffle算法

2024-06-25 08:18:55

2021-06-30 00:20:12

Hangfire.NET平臺(tái)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)