自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

DB2鎖兼容性和死鎖

數(shù)據(jù)庫(kù)
DB2數(shù)據(jù)庫(kù)中的鎖相信大家都有一些了解,下文對(duì)DB2鎖兼容性和死鎖方面作了詳盡的闡述,希望對(duì)您能夠有所幫助。

DB2鎖兼容性是怎樣的?死鎖又是怎么回事?下文對(duì)這些問(wèn)題都作了詳細(xì)的解答,如果您在此方面遇到過(guò)類似的問(wèn)題,不妨一看。

鎖兼容性

如果數(shù)據(jù)資源上的一種鎖狀態(tài)允許在同一資源上放置另一個(gè)鎖,就認(rèn)為這兩種鎖(或兩種狀態(tài))是兼容的。每當(dāng)一個(gè)事務(wù)持有數(shù)據(jù)資源上的鎖,而第二個(gè)事務(wù)請(qǐng)求同一資源上的鎖時(shí),DB2 數(shù)據(jù)庫(kù)管理器檢查兩種鎖狀態(tài)以確定它們是否兼容。如果鎖是兼容的,則將鎖授予第二個(gè)事務(wù)(假定沒(méi)有其它事務(wù)在等待該數(shù)據(jù)資源)。但是,如果鎖不兼容,則第二個(gè)事務(wù)必須等待,直到***個(gè)事務(wù)釋放它的鎖為止,然后才可以獲取對(duì)資源的訪問(wèn)權(quán)并繼續(xù)處理。(如果資源上有多個(gè)與新請(qǐng)求的鎖不兼容的鎖,則第二個(gè)事務(wù)必須等到它們?nèi)勘会尫艦橹?。)?qǐng)參閱 IBM DB2 Universal Database Administration Guide:Performance 文檔(或在 DB2 信息中心搜索 Lock type compatibility 主題)以獲取關(guān)于各個(gè)鎖之間是否兼容的特定信息。

鎖升級(jí) 

所有的鎖都需要存儲(chǔ)空間;因?yàn)榭捎每臻g并不是無(wú)限的,所以 DB2 數(shù)據(jù)庫(kù)管理器必須限制鎖可以使用的空間(這是通過(guò) maxlocks 數(shù)據(jù)庫(kù)配置參數(shù)完成的)。為了防止特定數(shù)據(jù)庫(kù)代理超過(guò)已建立的鎖空間限制,當(dāng)獲取的(任意類型的)鎖過(guò)多時(shí),會(huì)自動(dòng)執(zhí)行稱為鎖升級(jí)的進(jìn)程。鎖升級(jí)是一種轉(zhuǎn)換,它將同一表內(nèi)幾個(gè)單獨(dú)的行級(jí)鎖轉(zhuǎn)換成一個(gè)單獨(dú)的表級(jí)鎖。因?yàn)殒i定升級(jí)是在內(nèi)部處理的,所以唯一可從外部檢測(cè)到的結(jié)果可能只是對(duì)一個(gè)和多個(gè)表的并發(fā)訪問(wèn)減少了。

以下是鎖定升級(jí)的工作原理:當(dāng)事務(wù)請(qǐng)求鎖,而鎖存儲(chǔ)空間已滿時(shí),就選定與該事務(wù)相關(guān)聯(lián)的一個(gè)表,幫它獲取一個(gè)表級(jí)鎖,釋放所有該表的行級(jí)鎖(以在鎖列表數(shù)據(jù)結(jié)構(gòu)中創(chuàng)建空間),并將表級(jí)鎖添加到鎖列表。如果這個(gè)過(guò)程所釋放的空間不夠,則選定另一個(gè)表,重復(fù)這個(gè)過(guò)程,直到釋放了足夠的可用空間為止。這時(shí),事務(wù)將獲取所請(qǐng)求的鎖并繼續(xù)執(zhí)行。但是,如果在該事務(wù)的所有行級(jí)鎖都已經(jīng)升級(jí)之后,仍然沒(méi)有獲得必要的可用鎖空間,則(通過(guò) SQL 錯(cuò)誤代碼)要求事務(wù)提交或回滾它啟動(dòng)以來(lái)所作的所有更改,然后事務(wù)終止。

死鎖

有時(shí)兩個(gè)或更多個(gè)事務(wù)對(duì)鎖的爭(zhēng)用會(huì)引起稱為死鎖的情況。說(shuō)明死鎖發(fā)生原因的***方式是舉例說(shuō)明:假定事務(wù) 1 在表 A 上獲取了互斥(X)鎖,而事務(wù) 2 在表 B 上獲取了互斥(X)鎖?,F(xiàn)在,假定事務(wù) 1 嘗試在表 B 上獲取互斥(X)鎖,而事務(wù) 2 嘗試在表 A 上獲取互斥(X)鎖。這兩個(gè)事務(wù)的處理都將被掛起,直到同意第二個(gè)鎖請(qǐng)求為止。但是,因?yàn)樵谌魏我粋€(gè)事務(wù)釋放它目前持有的鎖(通過(guò)執(zhí)行或回滾操作)之前,(兩者中的)任一事務(wù)的鎖請(qǐng)求都不會(huì)被同意,而且又因?yàn)閮蓚€(gè)事務(wù)都不能釋放它目前持有的鎖(因?yàn)樗鼈兌家褣炱鸩⒌却i),所以兩個(gè)事務(wù)都陷入了死鎖狀況。

當(dāng)死鎖狀況發(fā)生時(shí),除非某些外部代理采取行動(dòng),否則所涉及的所有事務(wù)將無(wú)限期地等待釋放鎖。DB2 通用數(shù)據(jù)庫(kù)用于處理死鎖的工具是稱為死鎖檢測(cè)器的異步系統(tǒng)后臺(tái)進(jìn)程。死鎖檢測(cè)器的唯一職責(zé)是定位和解決在鎖定子系統(tǒng)中找到的任何死鎖。死鎖檢測(cè)器在大多數(shù)時(shí)間處于休眠狀態(tài),但會(huì)在預(yù)置的時(shí)間間隔被“喚醒”,以確定是否存在死鎖狀況。如果死鎖檢測(cè)器在鎖定子系統(tǒng)中發(fā)現(xiàn)死鎖,則選擇死鎖涉及的一個(gè)事務(wù)、終止并回滾它。(被終止和回滾的事務(wù)收到一個(gè) SQL 錯(cuò)誤代碼,它所獲得的所有鎖都被釋放。)通常,剩下的一個(gè)或多個(gè)事務(wù)就可以繼續(xù)執(zhí)行了。

鎖超時(shí)

任何時(shí)候當(dāng)一個(gè)事務(wù)在特定數(shù)據(jù)資源(例如,表或行)上持有鎖時(shí),直到持有鎖的事務(wù)終止并釋放它所獲取的所有鎖之前,其它事務(wù)對(duì)該資源的訪問(wèn)都可能被拒絕。如果沒(méi)有某種適當(dāng)?shù)逆i超時(shí)檢測(cè)機(jī)制,則事務(wù)可能無(wú)限期地等待鎖的釋放。例如,有可能出現(xiàn)這種情況:一個(gè)事務(wù)在等待另一個(gè)用戶的應(yīng)用程序所持有的鎖被釋放,而該用戶離開(kāi)了他(或她)的工作站,但忘了執(zhí)行一些允許應(yīng)用程序終止擁有鎖的事務(wù)的交互。顯然,此類情況會(huì)導(dǎo)***差的應(yīng)用程序性能。要避免發(fā)生此類情況時(shí)阻礙其它應(yīng)用程序的執(zhí)行,可以在數(shù)據(jù)庫(kù)的配置文件中指定鎖超時(shí)值(通過(guò) locktimeout數(shù)據(jù)庫(kù)配置參數(shù))。使用之后,該參數(shù)就控制任何事務(wù)將等待獲取所請(qǐng)求的鎖的時(shí)間。如果在指定的時(shí)間間隔過(guò)去之后還未獲得想要的鎖,則等待的應(yīng)用程序接收一個(gè)錯(cuò)誤,并回滾請(qǐng)求該鎖的事務(wù)。分布式事務(wù)應(yīng)用程序環(huán)境特別容易產(chǎn)生此類超時(shí);可以通過(guò)使用鎖超時(shí)避免它們。

 

 

 

【編輯推薦】

DB2鎖機(jī)制深度分析

不允許設(shè)置db2主鍵問(wèn)題的解決

DB2創(chuàng)建表空間的方式

Linux中DB2用戶組的介紹

linux下安裝DB2的步驟

責(zé)任編輯:段燃 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-08-27 09:55:40

db2兼容性并置

2010-08-03 11:27:01

DB2分區(qū)兼容性

2010-08-19 09:54:42

DB2死鎖

2010-08-06 14:22:07

DB2分區(qū)兼容性

2010-08-16 10:45:46

DB2 9.7

2010-08-16 10:45:46

DB2 9.7

2010-07-29 11:07:23

DB2分區(qū)兼容性

2010-08-20 08:52:25

DB2死鎖

2010-08-11 10:17:34

DB2 9.7

2010-08-03 11:39:08

DB2分區(qū)兼容性

2010-08-10 13:36:00

2010-11-02 16:31:59

DB2鎖的屬性

2010-11-02 16:25:55

DB2鎖機(jī)制

2010-07-29 13:09:48

DB2 9.7 兼容

2010-05-07 15:52:28

ibmdwDB2

2023-04-17 19:43:54

兼容性測(cè)試軟件測(cè)試

2010-08-06 13:20:00

DB2鎖等待

2011-03-16 14:50:58

DB2管理超級(jí)可用性

2010-09-07 09:31:03

DB2數(shù)據(jù)庫(kù)鎖表

2010-11-02 16:39:32

DB2鎖的類型
點(diǎn)贊
收藏

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