国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

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

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

網(wǎng)友解答:

不鎖怕出事,鎖了又怕鎖死了?。。?/p>

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

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

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

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

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

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

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

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

線程一執(zhí)行事務(wù)一到一半的時候,鎖了A想要獲得B的鎖,與此同時事務(wù)二執(zhí)行到了鎖B,想要獲得鎖A的時候,因為互相都想要對方擁有的鎖,而導(dǎo)致死鎖!

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

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

可以看到這個過程中是A占著共享鎖想要升級,B占著獨占鎖想要降級,然后卡死!

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

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

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

網(wǎng)友解答:

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

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

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

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

一個用戶請求資源阻塞時,對已經(jīng)獲得的資源保持不放

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

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

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

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

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

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

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

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

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

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

標(biāo)簽: