卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

數(shù)據(jù)庫(kù)什么時(shí)候會(huì)產(chǎn)生死鎖?

網(wǎng)友解答: 不鎖怕出事,鎖了又怕鎖死了?。?!數(shù)據(jù)庫(kù)由于數(shù)據(jù)存儲(chǔ)速度快,數(shù)據(jù)穩(wěn)定,結(jié)構(gòu)化的特性,被廣泛用作數(shù)據(jù)存儲(chǔ),并成為最重要,最常見(jiàn)的方式!數(shù)據(jù)庫(kù)從20世紀(jì)50年代誕生伊始,就因?yàn)橹С?/p>

網(wǎng)友解答:

不鎖怕出事,鎖了又怕鎖死了?。?!

數(shù)據(jù)庫(kù)由于數(shù)據(jù)存儲(chǔ)速度快,數(shù)據(jù)穩(wěn)定,結(jié)構(gòu)化的特性,被廣泛用作數(shù)據(jù)存儲(chǔ),并成為最重要,最常見(jiàn)的方式!

數(shù)據(jù)庫(kù)從20世紀(jì)50年代誕生伊始,就因?yàn)橹С质聞?wù)的特性得到大力的發(fā)展,最終各種數(shù)據(jù)庫(kù)諸如oracle,Sybase,mysql等關(guān)系型數(shù)據(jù)庫(kù)百花齊放,既然數(shù)據(jù)庫(kù)是因?yàn)槭聞?wù)而生,那么事務(wù)的特性又是哪些呢?簡(jiǎn)而言之就是ACID(原子性,一致性,隔離性,持久性)!

而為了保持?jǐn)?shù)據(jù)的一致性,數(shù)據(jù)庫(kù)都有了一個(gè)操作叫做加鎖!有表級(jí)鎖,行級(jí)鎖,頁(yè)面鎖!

死鎖就是說(shuō)兩個(gè)線程在爭(zhēng)同一個(gè)資源,然后互不相讓,導(dǎo)致鎖死的情況(比如兩個(gè)人從兩端走上獨(dú)木橋,然后卡死在橋中間)!

回到問(wèn)題本身,數(shù)據(jù)庫(kù)在什么時(shí)候會(huì)產(chǎn)生死鎖呢?

1,情況一:我中有你,你中有我!

事務(wù)一:兩個(gè)操作update A;update B;

事務(wù)二:兩個(gè)操作update B;update A;

線程一執(zhí)行事務(wù)一到一半的時(shí)候,鎖了A想要獲得B的鎖,與此同時(shí)事務(wù)二執(zhí)行到了鎖B,想要獲得鎖A的時(shí)候,因?yàn)榛ハ喽枷胍獙?duì)方擁有的鎖,而導(dǎo)致死鎖!

2,情況二:吃著碗里的,看著鍋里的!

A線程先查詢了一條記錄(使用了共享鎖),與此同時(shí)B線程正要修改這條記錄(使用了獨(dú)占鎖),然后A線程突然想修改這條記錄了,怎么辦呢?升級(jí)鎖。。而B(niǎo)線程想要降級(jí)為共享鎖,必須要等到A線程釋放掉共享鎖,這樣就形成了死鎖!

可以看到這個(gè)過(guò)程中是A占著共享鎖想要升級(jí),B占著獨(dú)占鎖想要降級(jí),然后卡死!

3,牽一發(fā)而動(dòng)全身!

一個(gè)表結(jié)構(gòu),必須要有適當(dāng)?shù)乃饕葍?yōu)化手段,如果在執(zhí)行事務(wù)的時(shí)候,沒(méi)有加索引條件甚至沒(méi)有任何條件,那么將執(zhí)行全表掃描,如果是多個(gè)事務(wù)在操作,很容易就發(fā)生了阻塞和死鎖!所以字段加索引非常重要??!

可以說(shuō)數(shù)據(jù)庫(kù)死鎖必然會(huì)造成很嚴(yán)重的生產(chǎn)事故,所以要盡量避免死鎖的發(fā)生,而如何避免呢?我會(huì)在后面的回答中逐一解答,敬請(qǐng)關(guān)注。。。

網(wǎng)友解答:

數(shù)據(jù)庫(kù)是一個(gè)軟件,是一個(gè)很多用戶會(huì)一起使用的軟件。

當(dāng)多個(gè)用戶同時(shí)的去操作數(shù)據(jù)庫(kù)中數(shù)據(jù)的時(shí)候,在數(shù)據(jù)庫(kù)中就會(huì)產(chǎn)生多個(gè)用戶去存取同一條數(shù)據(jù)的情況。如果兩個(gè)或多個(gè)以上的用戶在執(zhí)行的過(guò)程中,因爭(zhēng)奪資源導(dǎo)致互相等待,并且將一直等待下去,這種情況叫做死鎖。

產(chǎn)生死鎖的條件

一條數(shù)據(jù)每次只能被一個(gè)用戶使用。

一個(gè)用戶請(qǐng)求資源阻塞時(shí),對(duì)已經(jīng)獲得的資源保持不放

用戶已經(jīng)獲得的資源,未使用前,別人不能搶走

幾個(gè)用戶形成首尾相接的循環(huán)等待資源

幾個(gè)條件同時(shí)發(fā)生的時(shí)候,就會(huì)產(chǎn)生思索。

比如小明和小紅都要做飯,做飯需要鏟子和鍋(加入鏟子和鍋各有一個(gè))。

小明拿到了鏟子,準(zhǔn)備去找鍋。

小紅拿到了鍋,準(zhǔn)備去找鏟子。

然后他/她倆就僵持住了,每個(gè)人都拿著手上的東西不放手,于是就一直僵持下去了。

數(shù)據(jù)庫(kù)鎖類型

排它鎖(X鎖):鎖上之后,其他用戶不能對(duì)其查詢和修改。

共享鎖(S鎖):鎖上之后,其他用戶可以查詢,但是不能修改。

標(biāo)簽: