亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

【深入淺出事務(wù)】(3):事務(wù)的隔離級(jí)別(超詳細(xì))

zhangrxiang / 3016人閱讀

摘要:客戶端設(shè)置手動(dòng)提交,修改事務(wù)隔離級(jí)別為,并且開(kāi)啟事務(wù)一定要在開(kāi)啟事務(wù)前修改事務(wù)的隔離級(jí)別,不然當(dāng)前還是保持著原來(lái)的事務(wù)隔離級(jí)別,直到當(dāng)前事務(wù)提交。

本質(zhì)

隔離級(jí)別定義了數(shù)據(jù)庫(kù)系統(tǒng)中一個(gè)操作產(chǎn)生的影響什么時(shí)候以哪種方式可以對(duì)其他并發(fā)操作可見(jiàn),隔離性是事務(wù)的ACID中的一個(gè)重要屬性,核心是對(duì)鎖的操作。

從數(shù)據(jù)庫(kù)系統(tǒng)角度

共享鎖(Shared Lock)

讀鎖,保證數(shù)據(jù)只能讀取,不能被修改。
如果事務(wù)A對(duì)數(shù)據(jù)M加上S鎖,則事務(wù)A可以讀記錄M但不能修改記錄M,其他事務(wù)(這里用事務(wù)B)只能對(duì)記錄M再加上S鎖,不能加X(jué)鎖,直到事務(wù)A釋放了記錄M上的S鎖,保證了其他事務(wù)(事務(wù)B)可以讀記錄M,但在事務(wù)A釋放M上的S鎖之前不能對(duì)記錄M進(jìn)行任何修改。

例子: MySql 5.5 證明S鎖的特性。

數(shù)據(jù)準(zhǔn)備

CREATE TABLE `test1` (`id`  bigint(1) NOT NULL DEFAULT 0 ,`name`  varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,PRIMARY KEY (`id`))
INSERT INTO test1 VALUES(1,1),(2,2),(3,3)

設(shè)置事務(wù)為手動(dòng)提交,方便證明上訴結(jié)論(mysql默認(rèn)為自動(dòng)提交,執(zhí)行單句sql其實(shí)包含 開(kāi)啟事務(wù),執(zhí)行sql,提交事務(wù),3個(gè)步驟)。

客戶端A開(kāi)啟一個(gè)事務(wù)A。

客戶端A給test1表加上讀鎖。

查詢test1表原有的數(shù)據(jù)(加上S鎖后,可以讀數(shù)據(jù))。

事務(wù)A修改數(shù)據(jù)(加上S鎖后,無(wú)法修改數(shù)據(jù))。

B客戶端開(kāi)啟事務(wù)B。

事務(wù)B對(duì)記錄M查詢(因?yàn)槭荢鎖,其他事務(wù)可以對(duì)記錄A進(jìn)行select )。

事務(wù)B對(duì)記錄M加讀鎖(事務(wù)A對(duì)記錄A加上S鎖后,事務(wù)B同樣也可以對(duì)記錄A加上S鎖,證明了,mysql里的讀鎖就是S鎖,具有共享)。

事務(wù)B對(duì)記錄M加寫(xiě)鎖(一直處于等待狀態(tài),被掛起,具體掛起的原因可以見(jiàn):Innodb行鎖源碼學(xué)習(xí)。

事務(wù)B對(duì)記錄M修改(一直處于等待狀態(tài),被掛起)。

事務(wù)A釋放M上的S鎖。

此時(shí)事務(wù)B才得到響應(yīng)。

說(shuō)明了,只有釋放了讀鎖,另外一個(gè)事務(wù)才能加寫(xiě)鎖,或者更新數(shù)據(jù)。

排他鎖(X 鎖)

寫(xiě)鎖,若事務(wù)A對(duì)數(shù)據(jù)對(duì)象M加上X鎖,事務(wù)A可以讀記錄M也可以修改記錄M,其他事務(wù)(事務(wù)B)不能再對(duì)記錄M加任何鎖,直到事務(wù)A釋放記錄M上的鎖,保證了其他事務(wù)(事務(wù)B)在事務(wù)A釋放記錄M上的鎖之前不能再讀取和修改記錄M。

例子:Mysql 5.5,證明X鎖的特性。

客戶端A設(shè)置手動(dòng)提交,并且開(kāi)啟事務(wù)A。

客戶端B設(shè)置手動(dòng)提交,并且開(kāi)啟事務(wù)B。

事務(wù)A給記錄M加上X鎖。

事務(wù)A可以讀記錄M也可以修改記錄M。

事務(wù)B不能對(duì)記錄M加任何鎖。

事務(wù)B也不能對(duì)記錄M進(jìn)行查詢和修改。

事務(wù)A釋放記錄M上的X鎖。

事務(wù)B阻塞的進(jìn)程被執(zhí)行,中斷了6秒。

從程序員角度

悲觀鎖(Pessimistic[?pes??m?st?k] Lock)

對(duì)數(shù)據(jù)被外界修改保持保守態(tài)度,在整個(gè)數(shù)據(jù)處理過(guò)程中,數(shù)據(jù)處于鎖定狀態(tài),依賴(lài)于數(shù)據(jù)庫(kù)提供的鎖機(jī)制。

樂(lè)觀鎖(Optimistic[?ɑ:pt??m?st?k]Lock)

采用寬松的加鎖機(jī)制,基于數(shù)據(jù)版本記錄機(jī)制,具體做法:數(shù)據(jù)庫(kù)表增加一個(gè)"version"字段來(lái)實(shí)現(xiàn),讀取數(shù)據(jù)時(shí),將版本號(hào)一同讀出,之后更新,對(duì)版本號(hào)加1,將提交數(shù)據(jù)的版本數(shù)據(jù)與數(shù)據(jù)庫(kù)對(duì)應(yīng)記錄的當(dāng)前版本信息進(jìn)行比對(duì),如果提交的數(shù)據(jù)版本號(hào)大于數(shù)據(jù)庫(kù)的數(shù)據(jù),則予以更新,否則,被認(rèn)為是過(guò)期數(shù)據(jù)。

幾個(gè)概念 丟失更新

事務(wù)A和事務(wù)B,同時(shí)獲得相同數(shù)據(jù),然后在各自的事務(wù)中修改數(shù)據(jù)M,事務(wù)A先提交事務(wù),數(shù)據(jù)M假如為M+,事務(wù)B后提交事務(wù),數(shù)據(jù)M變成了M++,最終結(jié)果變成M++,覆蓋了事務(wù)A的更新。

例子:

事務(wù)A 事務(wù)B
讀取X=100 讀取X=100
寫(xiě)入X=X+100
事務(wù)結(jié)束X=200
寫(xiě)入X=X+100
事務(wù)結(jié)束X=300(事務(wù)A的更新丟失)
臟讀

允許事務(wù)B可以讀到事務(wù)A修改而未提交的數(shù)據(jù),可能會(huì)造成了臟讀(臟讀本質(zhì)就是無(wú)效的數(shù)據(jù),只有當(dāng)事務(wù)A回滾,那么事務(wù)B讀到的數(shù)據(jù)才為無(wú)效的,所以這里只是可能造成臟讀,當(dāng)事務(wù)A不回滾的時(shí)候,事務(wù)B讀到的數(shù)據(jù)就不為臟數(shù)據(jù),也就是有效的數(shù)據(jù),臟數(shù)據(jù)會(huì)導(dǎo)致以后的操作都會(huì)發(fā)生錯(cuò)誤,一定要去避免,不能憑借僥幸,事務(wù)A不能百分之百保證不回滾,所以這種隔離級(jí)別很少用于實(shí)際應(yīng)用,并且它的性能也不比其他級(jí)別好多少)。

例子:

事務(wù)A 事務(wù)B
寫(xiě)入X=X+100(x=200)
讀取X=200(無(wú)效數(shù)據(jù),臟讀)
事務(wù)回滾X=100
事務(wù)結(jié)束X=100
事務(wù)結(jié)束
不可重復(fù)讀

不可重復(fù)讀是指在一個(gè)事務(wù)范圍中2次或者多次查詢同一數(shù)據(jù)M返回了不同的數(shù)據(jù),例如:事務(wù)B讀取某一數(shù)據(jù),事務(wù)A修改了該數(shù)據(jù)M并且提交,事務(wù)B又讀取該數(shù)據(jù)M(可能是再次校驗(yàn)),在同一個(gè)事務(wù)B中,讀取同一個(gè)數(shù)據(jù)M的結(jié)果集不同,這個(gè)很蛋疼。

例子:

事務(wù)A 事務(wù)B
讀取X=100 讀取X=100
寫(xiě)入X=X+100 讀取X=100
事務(wù)結(jié)束,X=200
讀取X=200(在一個(gè)事務(wù)B中讀X的值發(fā)生了變化)
事務(wù)結(jié)束
幻讀

當(dāng)用戶讀取某一個(gè)范圍的數(shù)據(jù)行時(shí),另一個(gè)事務(wù)又在該范圍內(nèi)查詢了新行,當(dāng)用戶再讀取該范圍的數(shù)據(jù)行時(shí),會(huì)發(fā)現(xiàn)會(huì)有新的“幻影行”,例如:事務(wù)B讀某一個(gè)數(shù)據(jù)M,事務(wù)A對(duì)數(shù)據(jù)M增加了一行并提交,事務(wù)B又讀數(shù)據(jù)M,發(fā)生多出了一行造成的結(jié)果不一致(如果行數(shù)相同,則是不可重復(fù)讀)。

例子:

事務(wù)A 事務(wù)B
讀取數(shù)據(jù)集M(3行)
在數(shù)據(jù)集M插入一行(4行)
事務(wù)結(jié)束
讀取數(shù)據(jù)M(4行)
事務(wù)結(jié)束

在事務(wù)B里,同一個(gè)數(shù)據(jù)集M,讀到的條數(shù)不一致(新增,刪除)。

封鎖協(xié)議

在運(yùn)用S鎖和X鎖對(duì)數(shù)據(jù)M加鎖的時(shí)候,需要約定一些規(guī)則,例如何時(shí)申請(qǐng)S鎖或者X鎖,持鎖時(shí)間,這些規(guī)則就是封鎖協(xié)議。
其中不同的封鎖協(xié)議對(duì)應(yīng)不同的隔離級(jí)別。

一級(jí)封鎖協(xié)議

一級(jí)封鎖協(xié)議對(duì)應(yīng)READ-UNCOMMITTED 隔離級(jí)別,本質(zhì)是在事務(wù)A中修改完數(shù)據(jù)M后,立刻對(duì)這個(gè)數(shù)據(jù)M加上共享鎖(S鎖)[當(dāng)事務(wù)A繼續(xù)修改數(shù)據(jù)M的時(shí)候,先釋放掉S鎖,再修改數(shù)據(jù),再加上S鎖],根據(jù)S鎖的特性,事務(wù)B可以讀到事務(wù)A修改后的數(shù)據(jù)(無(wú)論事務(wù)A是否提交,因?yàn)槭枪蚕礞i,隨時(shí)隨地都能查到數(shù)據(jù)A修改后的結(jié)果),事務(wù)B不能去修改數(shù)據(jù)M,直到事務(wù)A提交,釋放掉S鎖。

缺點(diǎn):
可能會(huì)造成如下后果

丟失更新。

臟讀。

不可重復(fù)讀。

幻讀。

例子:MySql 5.5 證明一級(jí)封鎖協(xié)議會(huì)造成臟讀,不可重復(fù)讀。

A客戶端修改數(shù)據(jù)M,B客戶端設(shè)置不同的隔離級(jí)別去查看數(shù)據(jù)M,論證該級(jí)別下會(huì)發(fā)生臟讀,不可重復(fù)讀(相當(dāng)于客戶端A修改的數(shù)據(jù)已經(jīng)寫(xiě)到表里,客戶端B傳不同版本號(hào)[隔離級(jí)別],去查看數(shù)據(jù)M,所得的查詢結(jié)果也不同)。

客戶端A設(shè)置手動(dòng)提交,并且開(kāi)啟事務(wù)A。

客戶端B設(shè)置手動(dòng)提交,修改事務(wù)隔離級(jí)別為read-uncommitted,并且開(kāi)啟事務(wù)B(一定要在開(kāi)啟事務(wù)前修改事務(wù)的隔離級(jí)別,不然當(dāng)前還是保持著原來(lái)的事務(wù)隔離級(jí)別,直到當(dāng)前事務(wù)提交)。

事務(wù)B查詢數(shù)據(jù)M。

事務(wù)A修改其中一行數(shù)據(jù)(查詢?cè)谢A(chǔ)數(shù)據(jù),然后把id = 1 的name 修改為4 )。

事務(wù)B查看數(shù)據(jù)M,發(fā)現(xiàn)事務(wù)B讀到了事務(wù)A未提交的數(shù)據(jù),發(fā)生了臟讀。

事務(wù)A回滾。

客戶端B查詢的情況。

在同一個(gè)事務(wù)B里,查詢同一個(gè)數(shù)據(jù)M,居然2次不一樣,造成不可重復(fù)讀,其中有一次數(shù)據(jù)是無(wú)效的數(shù)據(jù),臟讀了。
假如事務(wù)A不回滾呢? 那么事務(wù)B就沒(méi)造成臟讀,不可重復(fù)讀。

例子:MySql 5.5 證明一級(jí)封鎖協(xié)議會(huì)造成更新丟失

事務(wù)A提交數(shù)據(jù)M。

事務(wù)B查詢數(shù)據(jù)M,事務(wù)B查詢的數(shù)據(jù)M,沒(méi)有臟數(shù)據(jù),并且2次結(jié)果一致,沒(méi)出現(xiàn)不可重復(fù)讀。

事務(wù)B修改數(shù)據(jù)M。

此時(shí)事務(wù)A對(duì)數(shù)據(jù)M的修改被事務(wù)B給覆蓋,造成了更新丟失

例子:MySql 5.5 證明一級(jí)封鎖協(xié)議會(huì)造成幻讀

客戶端A設(shè)置手動(dòng)提交,并且開(kāi)啟事務(wù)A。

客戶端B設(shè)置手動(dòng)提交,修改事務(wù)隔離級(jí)別為read-uncommitted,并且開(kāi)啟事務(wù)B(一定要在開(kāi)啟事務(wù)前修改事務(wù)的隔離級(jí)別,不然當(dāng)前還是保持著原來(lái)的事務(wù)隔離級(jí)別,直到當(dāng)前事務(wù)提交)。

事務(wù)B查詢數(shù)據(jù)M。

事務(wù)A插入一條數(shù)據(jù)。

事務(wù)B查詢數(shù)據(jù)M。

事務(wù)B第二次查詢的時(shí)候,數(shù)據(jù)M多了一行,像是發(fā)生了幻覺(jué)似的,有可能這一行是無(wú)效數(shù)據(jù)(當(dāng)事務(wù)A回滾)。

二級(jí)封鎖協(xié)議

二級(jí)封鎖協(xié)議對(duì)應(yīng)READ-COMMITTED隔離級(jí)別,本質(zhì)是事務(wù)A在修改數(shù)據(jù)M后立刻加X(jué)鎖,事務(wù)B不能修改數(shù)據(jù)M,同時(shí)不能查詢到最新的數(shù)據(jù)M(避免臟讀),查詢到的數(shù)據(jù)M是上一個(gè)版本(Innodb MVCC快照)的。

優(yōu)點(diǎn):
1.避免臟讀。

缺點(diǎn):
可能會(huì)造成如下后果

丟失更新。

不可重復(fù)讀。

幻讀。

例子:MySql 5.5 證明二級(jí)封鎖協(xié)議不會(huì)造成臟讀,但是會(huì)造成不可重復(fù)讀(幻讀,丟失更新,和上面證明方式一樣,這里暫不證明了)
A客戶端修改數(shù)據(jù)M,B客戶端設(shè)置不同的隔離級(jí)別去查看數(shù)據(jù)M,論證該級(jí)別下會(huì)發(fā)生不可重復(fù)讀(相當(dāng)于客戶端A修改的數(shù)據(jù)已經(jīng)寫(xiě)到表里,客戶端B傳不同版本號(hào)[隔離級(jí)別],去查看數(shù)據(jù)M,所得的查詢結(jié)果也不同)。

客戶端A設(shè)置手動(dòng)提交,并且開(kāi)啟事務(wù)A。

客戶端B設(shè)置手動(dòng)提交,修改事務(wù)隔離級(jí)別為read-committed,并且開(kāi)啟事務(wù)B(一定要在開(kāi)啟事務(wù)前修改事務(wù)的隔離級(jí)別,不然當(dāng)前還是保持著原來(lái)的事務(wù)隔離級(jí)別,直到當(dāng)前事務(wù)提交)。

事務(wù)A修改其中一行數(shù)據(jù)(查詢?cè)谢A(chǔ)數(shù)據(jù),然后把id = 1 的name 修改為4 )。

事務(wù)B查詢數(shù)據(jù)M,數(shù)據(jù)還是和之前的一樣(沒(méi)有發(fā)生臟讀),事務(wù)B讀不到了事務(wù)A未提交的數(shù)據(jù)。

事務(wù)A提交。

事務(wù)B查詢數(shù)據(jù),數(shù)據(jù)M被修改。

在同一個(gè)事務(wù)B中,查詢數(shù)據(jù)M,2次結(jié)果不一致,證明發(fā)生了不可重復(fù)讀。

三級(jí)封鎖協(xié)議

三級(jí)封鎖協(xié)議對(duì)應(yīng)REPEATABLE-READ隔離級(jí)別,本質(zhì)是二級(jí)封鎖協(xié)議基礎(chǔ)上,對(duì)讀到的數(shù)據(jù)M瞬間加上共享鎖,直到事務(wù)結(jié)束才釋放(保證了其他事務(wù)沒(méi)辦法修改該數(shù)據(jù)),這個(gè)級(jí)別是MySql 5.5 默認(rèn)的隔離級(jí)別。

優(yōu)點(diǎn):
1.避免臟讀。
2.避免不可重復(fù)讀。

缺點(diǎn):

幻讀。

丟失更新。

例子:MySql 5.5 證明三級(jí)封鎖協(xié)議不會(huì)造成臟讀,不可重復(fù)讀(造成幻讀,丟失更新,和上面證明方式一樣,但是要在非mysql數(shù)據(jù)庫(kù)上證明,后面有解釋?zhuān)@里暫不證明了)

客戶端A設(shè)置手動(dòng)提交,并且開(kāi)啟事務(wù)A。

客戶端B設(shè)置手動(dòng)提交,修改事務(wù)隔離級(jí)別為repeatable-read,并且開(kāi)啟事務(wù)B(一定要在開(kāi)啟事務(wù)前修改事務(wù)的隔離級(jí)別,不然當(dāng)前還是保持著原來(lái)的事務(wù)隔離級(jí)別,直到當(dāng)前事務(wù)提交)。

事務(wù)A查詢數(shù)據(jù)M。

事務(wù)B查詢數(shù)據(jù)M。

事務(wù)A更新數(shù)據(jù)M。

事務(wù)B查詢數(shù)據(jù)M,發(fā)現(xiàn)查詢的結(jié)果沒(méi)變化,避免了臟讀。

事務(wù)A提交事務(wù)。

事務(wù)B查詢數(shù)據(jù)M,還是和之前查詢的結(jié)果一樣,沒(méi)有變化,避免了不可重復(fù)讀。

事務(wù)B提交事務(wù)

這個(gè)時(shí)候事務(wù)B才能查詢到最新的數(shù)據(jù)M+。

例子:MySql 5.5 證明Mysql Innodb引擎的三級(jí)封鎖協(xié)議不會(huì)造成幻讀

mysql innodb的reapetable read級(jí)別是避免了幻讀,mysql的實(shí)現(xiàn)和標(biāo)準(zhǔn)定義的RR隔離級(jí)別有差別,詳情見(jiàn) how-to-produce-phantom-reads。

客戶端A設(shè)置手動(dòng)提交,并且開(kāi)啟事務(wù)A。

客戶端B設(shè)置手動(dòng)提交,修改事務(wù)隔離級(jí)別為repeatable-read,并且開(kāi)啟事務(wù)B(一定要在開(kāi)啟事務(wù)前修改事務(wù)的隔離級(jí)別,不然當(dāng)前還是保持著原來(lái)的事務(wù)隔離級(jí)別,直到當(dāng)前事務(wù)提交)。

事務(wù)A查詢數(shù)據(jù)M。

事務(wù)B查詢數(shù)據(jù)M。

事務(wù)A對(duì)記錄M插入一條數(shù)據(jù)。

事務(wù)A提交。

事務(wù)B查看數(shù)據(jù)M。

看不到事務(wù)A新增加的一條數(shù)據(jù),說(shuō)明避免了幻讀。

事務(wù)B插入一條記錄。

明明剛剛查詢到?jīng)]有ID為4的,現(xiàn)在居然插不進(jìn)去,哈哈哈哈哈。

例子:MySql 5.5 證明三級(jí)封鎖協(xié)議在讀到數(shù)據(jù)的瞬間加上共享鎖,等事務(wù)結(jié)束才釋放以及三級(jí)封鎖協(xié)議會(huì)造成更新丟失

客戶端A重新開(kāi)啟事務(wù)A。

客戶端B設(shè)置手動(dòng)提交,修改事務(wù)隔離級(jí)別為read-committed,并且開(kāi)啟事務(wù)B(一定要在開(kāi)啟事務(wù)前修改事務(wù)的隔離級(jí)別,不然當(dāng)前還是保持著原來(lái)的事務(wù)隔離級(jí)別,直到當(dāng)前事務(wù)提交)

事務(wù)A修改數(shù)據(jù)M。

事務(wù)B也修改數(shù)據(jù)M,事務(wù)B的修改進(jìn)程被掛起,因?yàn)槭聞?wù)A在對(duì)數(shù)據(jù)M修改后瞬間加上了共享鎖,對(duì)于其他事務(wù)只能讀。

事務(wù)A提交事務(wù)。

事務(wù)B的修改進(jìn)程被喚起(等待4.98秒)。

事務(wù)B提交修改。

最終事務(wù)A,事務(wù)B查詢數(shù)據(jù)M。

事務(wù)B的修改把事務(wù)A的修改給覆蓋了,造成了更新丟失。

最強(qiáng)封鎖協(xié)議

最強(qiáng)封鎖協(xié)議對(duì)應(yīng)Serialization隔離級(jí)別,本質(zhì)是從MVCC并發(fā)控制退化到基于鎖的并發(fā)控制,對(duì)事務(wù)中所有讀取操作加S鎖,寫(xiě)操作加X(jué)鎖,這樣可以避免臟讀,不可重復(fù)讀,幻讀,更新丟失,開(kāi)銷(xiāo)也最大,會(huì)造成讀寫(xiě)沖突,并發(fā)程度也最低。

例子:MySql 5.5 證明三級(jí)封鎖協(xié)議不會(huì)造成幻讀

客戶端A重新開(kāi)啟事務(wù)A

客戶端B設(shè)置手動(dòng)提交,修改隔離級(jí)別為SERIALIZABLE,并且開(kāi)啟事務(wù)B。

事務(wù)A插入數(shù)據(jù),并且提交。

事務(wù)B查詢數(shù)據(jù),依然還是之前的數(shù)據(jù),避免的幻讀。

事務(wù)A修改數(shù)據(jù),被掛起。

證明了Serialization級(jí)別下寫(xiě)操作是對(duì)數(shù)據(jù)M加的是X鎖。

總結(jié)

ANSI SQL 隔離級(jí)級(jí)別

隔離性 臟讀可能性 不可重復(fù)讀可能性 幻讀可能性 加鎖讀
READ-UNCOMMITTED Y Y Y N
READ-COMMITTED N Y Y N
REPEATABLE-READ N N Y N
SERIALIZABLE N N N Y

感謝您的耐心閱讀,如果您發(fā)現(xiàn)文章中有一些沒(méi)表述清楚的,或者是不對(duì)的地方,請(qǐng)給我留言,您的鼓勵(lì)是作者寫(xiě)作最大的動(dòng)力,
如果您認(rèn)為本文質(zhì)量不錯(cuò),讀后覺(jué)得收獲很大,不妨請(qǐng)我喝杯咖啡,讓我更有動(dòng)力繼續(xù)寫(xiě)出高質(zhì)量的文章。

支付寶

微信

作 者 : @mousycoder

原文出處 : http://mousycoder.com/2016/02/19/explain-transaction-in-simple-language-3/

創(chuàng)作時(shí)間:2016-2-19

更新時(shí)間:2016-2-22

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/65501.html

相關(guān)文章

  • 深入理解 MySQL ——鎖、事務(wù)與并發(fā)控制

    摘要:鎖共享鎖與排他鎖它們都是標(biāo)準(zhǔn)的行級(jí)鎖。防止任何其他事務(wù)變動(dòng)的行。間隙鎖是性能和并發(fā)性之間權(quán)衡的一種折衷,用于某些特定的事務(wù)隔離級(jí)別,如級(jí)別級(jí)別,我司為了減少死鎖,關(guān)閉了鎖,使用級(jí)別。 本文首發(fā)于 vivo 互聯(lián)網(wǎng)技術(shù)微信公眾號(hào) https://mp.weixin.qq.com/s/JF...作者:張碩 本文對(duì) MySQL 數(shù)據(jù)庫(kù)中有關(guān)鎖、事務(wù)及并發(fā)控制的知識(shí)及其原理做了系統(tǒng)化的介紹和總...

    Dr_Noooo 評(píng)論0 收藏0
  • [靈魂拷問(wèn)]MySQL面試高頻100問(wèn)(工程師方向)

    摘要:黑客技術(shù)點(diǎn)擊右側(cè)關(guān)注,了解黑客的世界開(kāi)發(fā)進(jìn)階點(diǎn)擊右側(cè)關(guān)注,掌握進(jìn)階之路開(kāi)發(fā)點(diǎn)擊右側(cè)關(guān)注,探討技術(shù)話題作者丨呼延十排版丨團(tuán)長(zhǎng)前言本文主要受眾為開(kāi)發(fā)人員所以不涉及到的服務(wù)部署等操作且內(nèi)容較多大家準(zhǔn)備好耐心和瓜子礦泉水前一陣系統(tǒng)的學(xué)習(xí)了一下也有 ...

    gyl_coder 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<