




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、上一章:數(shù)據(jù)庫監(jiān)視和優(yōu)化第八章數(shù)據(jù)庫的并發(fā)性控制提綱:1、能夠被加鎖的數(shù)據(jù)庫對象2、db2支持的鎖的模式及其兼容性3、隔離級的概念及使用4、影響加鎖策略的因素8.1、鎖的概念作為一個大型的關(guān)系數(shù)據(jù)庫系統(tǒng),應(yīng)該能夠允許多個應(yīng)用程序同吋對相同數(shù)據(jù)進(jìn)行 訪問。當(dāng)這種情況發(fā)生時,要保證數(shù)據(jù)庫的完整性,就必須要有一定的機(jī)制用于控制數(shù)據(jù) 記錄的讀取、插入、刪除和更新。鎖就是一種這樣的機(jī)制。我們訶以通過調(diào)整數(shù)據(jù)庫加鎖 的策略,來適應(yīng)一定的并發(fā)性的需求。通過對數(shù)據(jù)庫對象加鎖,我們可以避免以下情況的發(fā)生:1、由于并發(fā)更改造成數(shù)據(jù)的丟失例如下表:reservations:flightslatp name5127a
2、null5127cnull想象如下場景:bob和john兩人同時來到不同的航空代理處購買512航班的機(jī)票,兩個代理都 想為自己的顧客預(yù)訂7a座位,然后兩個代理同時輸入下列命令:代理 1: update reservations set p_name=,bob, where flight=512 and seat='7a' and p_name is null;代理 2: update reservations set p_name=,john, where flight=512 and seat=,7a, and p_name is null;如果沒有一定的機(jī)制阻止對同一數(shù)據(jù)的
3、并發(fā)更改,則兩個代理都會收到更改成功 的信息。bob和john將會在機(jī)場出現(xiàn)并認(rèn)為他們都己經(jīng)預(yù)訂好座位。如果我們使用了加鎖機(jī)制進(jìn)行控制,這種情況可以避免。2、避免對未提交數(shù)據(jù)的存取未提交數(shù)據(jù)是指被命令所更改,但還未被提交的數(shù)據(jù)。在很多情況下,如果允許 用戶對未提交的數(shù)據(jù)進(jìn)行存取而該數(shù)據(jù)最終未被提交,用戶依據(jù)其作出的決定冇可能 是錯誤的。例如下表:reservationsflightseatp name5127amary5127cnull想象如下場景:在512航班上7c是唯一剩下的座位,現(xiàn)在bob來到某個航空代理處想購買512 航班的機(jī)票,該代理發(fā)現(xiàn)7c是唯一剩下的座位。于是鍵入下列命令: up
4、date reservations set p_name二'bob,where flight=512 and seat二'7c and p_name=null 這時,john來到另外一個航空代理處想購買512航班的機(jī)票,該代理輸入下列查詢 命令:select seat from reservations where p_name is null如果不阻止對未提交數(shù)據(jù)的讀取,則rh于7c已經(jīng)被bob預(yù)訂了,則該語句返回的 記錄數(shù)為零,意味著該航班已經(jīng)客滿,john沒有能買到座位。過了一會兒,bob認(rèn)為該航班太貴,于是,該事務(wù)相應(yīng)地回滾,7c座位被空出。 如果數(shù)據(jù)庫通過加鎖機(jī)制阻止
5、対未提交數(shù)據(jù)的存取,john可以買到7c座位。db2可以通過加鎖機(jī)制來阻止對未提交數(shù)據(jù)的訪問。當(dāng)然,在某些情況下,對未提 交數(shù)據(jù)的訪問是允許的。3、防止不可重復(fù)讀不可重復(fù)讀是指由于在同一事務(wù)中,兩次執(zhí)行同樣的select語句,得到的結(jié)果不同。 這種情況會導(dǎo)致原先作出的決定由于條件的更改會產(chǎn)生偏差。例如下列航班表:航班座位旅客名稱目的地岀發(fā)地5127bdenverdallas8148asan josedenver1341chonolulusan jose想象以下場景:john需要從dallas飛往honolulu,他找到航空代理處,該代理發(fā)現(xiàn)沒有直 達(dá)航班,但對以從dallas到denver到s
6、an jose再到honolulu的路線(如上 表)。john正在決定該路線是否可行時,bob從另外一個航空代理處預(yù)訂了 814航班的8 a座位。而這恰好是該航班的最后一個座位。如果這時john決定代理提供的路線可行, 決定購買吋,卻發(fā)現(xiàn)該路線已經(jīng)不能成立,john必須重新選擇路線。采用加鎖機(jī)制,db2能夠支持可重復(fù)讀請求,它可以允許或阻止應(yīng)用程序修改其它 應(yīng)用程序正在訪問的數(shù)據(jù)。82、鎖的對象、策略及模式821、鎖的對象db2支持對表空間、表、行和索引加鎖(大型機(jī)上的數(shù)據(jù)庫還可以支持對數(shù)據(jù)頁 加鎖)來保證數(shù)據(jù)庫的并發(fā)完整性。不過在考慮用戶應(yīng)用程序的并發(fā)性的問題上,通常 并不檢查用于表空間和索
7、引的鎖。該類問題分析的焦點(diǎn)在于表鎖和行鎖。822、加鎖策略db2可以只對表進(jìn)行加鎖,也可以對表和表中的行進(jìn)行加鎖。如果只對表進(jìn)行加鎖, 則表中所有的行都受到同等程度的影響。如果加鎖的范圍針對于表及下屬的行,則在刈° 表加鎖后,相應(yīng)的數(shù)據(jù)行上述要加鎖。究竟應(yīng)用程序是對表加行鎖還是同時加表鎖和行 鎖,是由應(yīng)用程序執(zhí)行的命令和系統(tǒng)的隔離級確定。有關(guān)隔離級的知識我們會在下面的 章節(jié)提到。823、鎖的模式db2在表一級加鎖可以使用以下加鎖方式:名稱縮寫全名描述in無意圖鎖 (intenet none) 不需要行鎖該鎖的擁有者可以讀表中的任何數(shù)據(jù),包括其他 事務(wù)尚未提交的數(shù)據(jù),但不能対表中的數(shù)據(jù)
8、進(jìn)行 更改。is意圖共享鎖(intent share)該鎖的擁有者在擁有相應(yīng)行的上的s鎖時可以讀 取該行的數(shù)據(jù)。但不能對表中的數(shù)據(jù)進(jìn)行更改。需要行鎖配合ix意圖排他鎖 (intent exclusive) 需要行鎖配合該鎖的擁有者在擁有相應(yīng)行的x鎖時可以更改該 行的數(shù)據(jù)。six共享攜意圖排他鎖 (share with intent exclusive) 需要行鎖配合鎖的擁有者可以讀表中的任何數(shù)據(jù),如果在相應(yīng) 的行上能夠獲得x鎖,則可以修改該行。six鎖 的獲得比佼特殊,它是在應(yīng)用程序已經(jīng)擁有ix 鎖的情況下請求s鎖或者是在應(yīng)用程序已經(jīng)擁有 s鎖的情況下請求ix鎖時生成的。s共享鎖(share)
9、 不需要行鎖配合鎖的擁有者可以讀表中的任何數(shù)據(jù),如果表上被 加上s鎖,該表中的數(shù)據(jù)就只能被讀取,不能被 改變。u更新鎖(update) 不需要行鎖配合鎖的擁有者可以讀表中的任何數(shù)據(jù),如果在升級 到x鎖z后,可以更改表屮的任何數(shù)據(jù)。該鎖是 處于等待對數(shù)據(jù)進(jìn)行更改的一種中間狀態(tài)。x排他鎖 (exclusive) 不需要行鎖配合鎖的擁有者可以讀収或更改表中的任何數(shù)據(jù)。如 果對表加上x鎖,除了未提交讀程序,其他應(yīng)用 程序都不能對該表進(jìn)行存取。z超級排他鎖 (super exclusive) 不需要行鎖配合該鎖不是通過應(yīng)用程序屮的dml語言來生成的。 一般是通過對表進(jìn)行刪除(drop)和轉(zhuǎn)換(alter
10、) 操作或創(chuàng)建和刪除索引而獲得的。如杲對表上加 上z鎖,其他應(yīng)用程序,包括未提交讀程序都不 能對該表進(jìn)行存取。f面對兒種表鎖的模式進(jìn)一步加以闡述:is、ix、six方式用于表一級并需要行鎖配合,他們可以阻止其他應(yīng)用程序?qū)υ摫?加上排他鎖。 如果一個應(yīng)用程序獲得某表的is鎖,該應(yīng)用程序可獲得某一行上的s鎖,用于 只讀操作,同時其他應(yīng)用程序也可以讀取該行,或是對表中的其他行進(jìn)行更改。 如果一個應(yīng)用程序獲得某表的ix鎖,該應(yīng)用程序可獲得某一行上的x鎖,用 于更改操作,同時其他應(yīng)用程序可以讀取或更改表中的其他行。 如果一個應(yīng)用程序獲得某表的six鎖,該應(yīng)用程序可以獲得某一行上的x鎖, 用于更改操作,同
11、時其他應(yīng)用程序只能對表屮其他行進(jìn)行只讀操作。s、u、x和z方式用于表一級,但并不需要行鎖配合,是比較嚴(yán)格的表加鎖策略。 如果一個應(yīng)用程序得到某表的s鎖。該應(yīng)用程序可以讀表中的任何數(shù)據(jù)。同時 它允許其他應(yīng)用程序獲得該表上的只讀請求鎖。如杲有應(yīng)用程序需要更改讀該 表上的數(shù)據(jù),必須等s鎖被釋放。 如果一個應(yīng)用程序得到某表的u鎖,該應(yīng)用程序可以讀表中的任何數(shù)據(jù),并最 終對以通過獲得表上的x鎖來得到對表中任何數(shù)據(jù)的修改權(quán)。其他應(yīng)用程序只 能讀取該表中的數(shù)據(jù)。u鎖與s鎖的區(qū)別主要在于更改的意圖上。u鎖的設(shè)計(jì) 主要是為了避免兩個應(yīng)用程序在擁有s鎖的情況下同時屮請x鎖而造成死鎖 的。 如果一個應(yīng)用程序得到某表
12、上的x鎖,該應(yīng)用程序可以讀或修改表屮的任何數(shù) 據(jù)。其他應(yīng)用程序不能對該表進(jìn)行讀或者更改操作。 如果一個應(yīng)用程序得到某表上的z鎖,該應(yīng)用程序?qū)σ宰x或修改表中的任何數(shù) 據(jù)。其他應(yīng)用程序,包括未提交讀程序都不能對該表進(jìn)行讀或者更改操作。in鎖用于表上以允許未提交讀這一概念。除了表鎖z外,db2還支持以下兒種方式的行鎖。名稱縮寫全名需要表 鎖的最 低級別描述s共宇鎖(share)is該行正在被某個應(yīng)用程序讀取,其他應(yīng)用程序 只能對該行進(jìn)行讀操作。u更改鎖 (update)ix某個應(yīng)用程序正在讀該行并有可能更改該行, 其他應(yīng)用程序只能讀該行。x排他鎖 (exclusive)ix該行正在被某個應(yīng)用程序更改
13、,其他應(yīng)用程序 不能訪問該行。w弱排他鎖 (weak exclusive)ix當(dāng)一行數(shù)據(jù)被插入表中的時候,該行上會被加 上w鎖。鎖的擁有者能夠更改該行,該鎖基本 與x鎖相同,除了它與nw鎖兼容。ns下一鍵共享鎖 (next key share)is鎖的擁有者和其他程序都可以讀該行,但不能 對該行進(jìn)行更改。當(dāng)應(yīng)用程序處于rs或cs隔 離級下,該鎖用來替代s鎖。nx下一鍵排他鎖 (next key exclusive)ix當(dāng)一行數(shù)據(jù)被插入到索引中或從索引中被刪除 的時候,該行的下一行上會被加上該鎖。鎖的 擁有者可以讀,但不能更改鎖定行。該鎖與x 鎖類似,只是與ns鎖兼容。nw下一鍵弱排他鎖 (ne
14、xt key weak exclusive)ix當(dāng)一行被插入到索引中的時候,該行的下一行 會被加上該鎖。鎖的擁有者可以讀但不能更改 鎖定行。該鎖與x和nx鎖類似,只是與w和 ns鎖兼容。824、鎖的兼容性鎖的兼容性是指當(dāng)一個應(yīng)用程序在表(行)上加上某種鎖后,其他應(yīng)用程序是否能夠 在表(行)上加上相應(yīng)的鎖,如果能夠加上,說明這兩種鎖是兼容的,否則說明這兩種鎖 不兼容,不能對同一數(shù)據(jù)對象并發(fā)存取。表鎖的兼容性見下表:鎖a的 方式鎖b的方式inissixsixuxzin兼容兼容兼容兼容兼容兼容兼容不兼容is兼容兼容兼容兼容兼容兼容不兼容不兼容s兼容兼容兼容不兼容不兼容兼容不兼容不兼容ix兼容兼容不兼
15、容兼容不兼容不兼容不兼容不兼容six兼容兼容不兼容不兼容不兼容不兼容不兼容不兼容u兼容兼容兼容不兼容不兼容不兼容不兼容不兼容x兼容不兼容不兼容不兼容不兼容不兼容不兼容不兼容z不兼容不兼容不兼容不兼容不兼容不兼容不兼容不兼容行鎖的兼容性:鎖a的模 式鎖b的模式suxwnsnxnws兼容兼容不兼容不兼容兼容不兼容不兼容u兼容不兼容不兼容不兼容兼容不兼容不兼容x不兼容不兼容不兼容不兼容不兼容不兼容不兼容w不兼容不兼容不兼容不兼容不兼容不兼容兼容ns兼容兼容不兼容不兼容兼容兼容兼容nx不兼容不兼容不兼容不兼容兼容不兼容不兼容nw不兼容不兼容不兼容兼容兼容不兼容不兼容8.3> 隔離級(isolat
16、ion levels)隔離級是影響加鎖策略的重要環(huán)節(jié),它直接影響加鎖的范圍及鎖的持續(xù)時間。兩個應(yīng)用 程序即使執(zhí)行的相同的操作,也可能由于選擇的隔離級的不同而造成加鎖的結(jié)果不同。在 db2中,共有四種隔離級: 讀可靠性(rsread stability)如果使用這種隔離級,在一個事務(wù)中所有被讀取過的行上都會被加上ns鎖, 直到該事務(wù)被提交或回滾,行上的鎖才會被釋放。這樣可以保證在一個事務(wù)中即使 多次讀取同一行,得到的值不會改變。但是,如果使用這種隔離級,在一個事務(wù)中, 如果使用同樣的搜索標(biāo)準(zhǔn)重新打開已被處理過的游標(biāo),則結(jié)果集可能改變。(可能 會增加某些行,這些行被稱為幻影行(phantom)。這
17、是因?yàn)閞s隔離級不能阻止 通過插入或更新操作在結(jié)果集中加入新行。 重復(fù)讀(rrrepeat read)如果使用這種隔離級,在一個事務(wù)屮所有被讀取過的行上都會被加上s鎖, 知道該事務(wù)被提交或冋滾,行上的鎖才會被釋放。這樣可以保證在一個事務(wù)中即 使多次讀取同一行,得到的值不會改變。另外,在同一事務(wù)中如杲以同樣的搜索 標(biāo)準(zhǔn)重新打開已被處理過的游標(biāo),得到的結(jié)果集不會改變。重復(fù)讀相對于讀可靠 性而言,加鎖的范圍更大。對于讀可靠性,應(yīng)用程序只對符合要求的所有行加鎖, 而對于重復(fù)讀,應(yīng)用程序?qū)λ斜粧呙柽^的行都加鎖。例如,如果一個應(yīng)用程 序?qū)σ粋€表中的10000行數(shù)據(jù)進(jìn)行掃描,最終找到了 100條符合搜索
18、條件的結(jié)果 行。如果該應(yīng)用程序使用的是讀可靠性隔離級,應(yīng)用程序?qū)⒅粚@符合條件的100 行加鎖:如果該應(yīng)用程序使用的是重復(fù)讀隔離級,應(yīng)用程序?qū)Ρ粧呙柽^的10000 行都加鎖。 游標(biāo)可靠性(cscursor stability)如果使用這種隔離級,在一個事務(wù)中,結(jié)果集中只有正在被讀取的那一行(游 標(biāo)指向的行)將被加上ns鎖,英他未被處理的行上不被加鎖。這種隔離級只能 保證正在被處理的行的值不會被其他并發(fā)的程序所改變。該隔離級是db2缺省的 隔離級。 未提交讀(uruncommitted read)如果使用這種隔離級,對于只讀操作,不加行鎖。典型的只讀操作包括: select語句的結(jié)果集只讀(比
19、如語句中包括0rder by子句);定義游標(biāo)是指 明起為 for fetch only。該隔離級可以改善應(yīng)用程序的性能,同時可以最大程度的允許并發(fā)。但是, 應(yīng)用程序的數(shù)據(jù)完整性將受到威脅。如果需要讀取未提交的數(shù)據(jù),該隔離級是唯 一選擇。以上我們所提的隔離級的加鎖范圍和持續(xù)吋間都是針對于讀操作而言的。對于更改操 作,被修改的行上會被加上x鎖,不論使用何種隔離級,x鎖直到提交或回滾之后才會被 釋放。我們可以通過以下方法來改變應(yīng)用程序的隔離級: 在進(jìn)行內(nèi)嵌式sql應(yīng)用程序編程的時候,當(dāng)捆綁文件被綁定到數(shù)據(jù)庫的時候,可 以通過isolation參數(shù)來指定該程序包的隔離級。對于已經(jīng)生成的程序包,可以 通
20、過下列sql語句來查看其隔離級:select isolation from syscat.packageswhere pkgname二'xxxxxx'and pkgschcma二'yyyyyy'其屮/xxxxxx,和,yyyyyy,分別是該程序包的名字和模式名。 在clp中可以使用change isl to v隔離級或者change isolation level to v隔離級 > 來改變當(dāng)前clp命令所使用的隔離級。在使用cli開發(fā)應(yīng)用程序時,可以通過cli.ini文件中的isolation參數(shù)來設(shè)置應(yīng) 用程序的隔離級。選擇一種適當(dāng)?shù)母綦x級別非常重要,
21、因?yàn)楦綦x級別不僅影響并發(fā)性,而且還會影響應(yīng)用程序的性能。用戶可以基于以下原則去選擇應(yīng)用程序的隔離級別: 如果你是對只讀型的表進(jìn)行查詢,可以使用未提交讀隔離級,因?yàn)檫@樣可 以減少鎖的分配,而且由于表只用于只讀型操作,不會影響到應(yīng)用程序讀 取數(shù)據(jù)的準(zhǔn)確性。 如果你對查詢岀的數(shù)據(jù)是否還未提交不在乎,也可以使用未提交讀隔離級。 比如在粗略地估算已經(jīng)出售的機(jī)票數(shù)目時,我們不是特別強(qiáng)調(diào)某張票是正 在處理,還沒有被提交的。 如果你想獲得最大的并發(fā)性,同時希望消除未提交數(shù)據(jù)的影響,則應(yīng)使用 游標(biāo)可靠性隔離級。 如果你需要在一個工作單元內(nèi)正在被查詢的數(shù)據(jù)不被其他應(yīng)用程序所改 動,則可以使用讀可靠性隔離級。 如果
22、你需要在一個工作單元內(nèi)正在被查詢的數(shù)據(jù)不被其他應(yīng)用程序所改 動,并且不希望幻影行的出現(xiàn),則可以使用可重復(fù)讀隔離級。8.4、影響加鎖策略的其他因素8.4、lock table 語句通常來講,當(dāng)決定數(shù)據(jù)庫使用的加鎖策略吋,應(yīng)用程序的隔離級和其執(zhí)行的sql 語句是主要被考慮的因素。一般來說,為了最大程度地允許應(yīng)用程序的并發(fā),通常在 表上使用意圖鎖。但是,對于某些應(yīng)用程序來說,意圖鎖不能完全適應(yīng)其要求。比如 某些應(yīng)用程序需要對表進(jìn)行排他性的存取或者不允許其他應(yīng)用程序?qū)Ρ礤鴶?shù)據(jù)進(jìn)行 任何改動。這時候,應(yīng)用程序需要的是更嚴(yán)格的加鎖方式。lock table命令就可 以滿足應(yīng)用程序的這種需要。lock ta
23、ble命令可以將表鎖定為兩種模式:共享模式和排他模式。命令形式 如下:lock table table-name in share modelock table table-name in exclusive mode如果將表鎖定為共亨模式,被鎖定的表上將被加上s鎖;如杲將表鎖定為排他模 式,被鎖定的表上將被加上x鎖。842、鎖的轉(zhuǎn)換在一個事務(wù)屮,當(dāng)一個對象需要不同的加鎖模式時,數(shù)據(jù)庫管理器將該對象上現(xiàn) 有的鎖模式與被請求的鎖模式進(jìn)行比較,如果需要的鎖模式更高,將進(jìn)行鎖的轉(zhuǎn)換, 對該對象上加上更高模式的鎖,否則,將保持現(xiàn)有的鎖模式。鎖模式由高到低按照以 下順序排列:表鎖:intiststixt
24、utxtz行鎖:stutx其中s鎖與ix鎖的轉(zhuǎn)換比較特殊,當(dāng)應(yīng)用程序擁有一個表上的s鎖并請求ix鎖 的時候,鎖轉(zhuǎn)換的結(jié)果為six鎖?;蛘撸?dāng)應(yīng)用程序擁有一個表上的ix鎖并請求s 鎖的時候,鎖轉(zhuǎn)換的結(jié)果也是six鎖。下面是一個鎖轉(zhuǎn)換的例子:假設(shè)當(dāng)前應(yīng)用程序的隔離級為rr, ixcol二?謂詞采用的打描方式為索引掃描)語句語句所需的 表鎖是否需要鎖 轉(zhuǎn)換結(jié)果鎖說明select from a where ixcol=?is不需要is該事務(wù)中的第一個語句, 不會發(fā)生鎖轉(zhuǎn)換。select. from as需要ss鎖的模式比比is鎖高, 需要鎖轉(zhuǎn)換。select . from a where ixcol=
25、?is不需要isis鎖的模式比比s鎖低, 所以不需要鎖轉(zhuǎn)換。update a set.where ixcol=?ix需要six原先是s鎖,現(xiàn)在又巾 請ix鎖,鎖轉(zhuǎn)換的結(jié)果 為six鎖。commit不需要鎖不需要所有鎖被釋放在提交時鎖被釋放掉。select from a where ixcol=?is不需要is新事務(wù)的開始。lock table a in exclusive modex需耍xx鎖的模式比is鎖高, 需要進(jìn)行鎖轉(zhuǎn)換。update a set.where ixcol=?ix不需耍xix鎖的模式比x鎖低, 不需要鎖轉(zhuǎn)換rollback不需要鎖不需要所有鎖被釋放在回滾時鎖被釋放掉。注:所
26、有的鎖在提交或冋滾時都會被釋放掉,除非是在定義游標(biāo)時,指定為withhold的游標(biāo)相關(guān)的表鎖。8.4.3、鎖的升級每個鎖在內(nèi)存中都需要一定的內(nèi)存空間,為了減少鎖需要的內(nèi)存開銷,db2提供 了鎖升級的功能。鎖升級是通過對表加上非意圖性的表鎖,同時釋放行鎖來減少鎖的數(shù) 目,從而達(dá)到減少鎖需要的內(nèi)存開銷的目的。鎖升級是由數(shù)據(jù)庫管理器自動完成的,有 兩個數(shù)據(jù)庫的配置參數(shù)直接影響鎖升級的處理:locklist一在一個數(shù)據(jù)庫全局內(nèi)存中用于鎖存儲的內(nèi)存。單位為頁(4k)omaxlocks一一個應(yīng)用程序允許得到的鎖占用的內(nèi)存所占locklist大小的百分比。 鎖升級會在這兩種情況下被觸發(fā): 某個應(yīng)用程序請求的
27、鎖所占用的內(nèi)存空間超出了 maxlocks與locklist的乘枳大 小。這時,數(shù)據(jù)庫管理器將試圖通過為提出鎖請求的應(yīng)用程序中請表鎖,并釋 放行鎖來節(jié)省空間。 在一個數(shù)據(jù)庫中已被加上的全部鎖所占的內(nèi)存空間超出了 locklist定義的大 小。這時,數(shù)據(jù)庫管理器也將試圖通過為提出鎖請求的應(yīng)用程序申請表鎖,并 釋放行鎖來節(jié)省空間。鎖升級是有可能會失敗的,比如,現(xiàn)在一個應(yīng)用程序已經(jīng)在一個表上加有ix鎖, 表中的某些行上加有x鎖,另一個應(yīng)用程序又來請求表上的is鎖,以及很多行上的s 鎖,由于申請的鎖數(shù)目過多引起鎖的升級。數(shù)據(jù)庫管理器試圖為該應(yīng)用程序申請表上的 s鎖來減少所需要的鎖的數(shù)目,但s鎖與表上原有的ix鎖沖突,鎖升級不能成功。如果鎖升級失敗,引起鎖升級的應(yīng)用程序?qū)⒔拥揭粋€912的sqlcodeo8.4.4、死鎖死鎖的產(chǎn)生是因?yàn)橛捎阪i請求沖突而不能結(jié)束事務(wù),并且該請求沖突不能夠在本 事務(wù)內(nèi)解決。下面我們利用一個典型的例子來說明死鎖的概念。應(yīng)用程序a和應(yīng)用程序b均需要在提交前完成的工作是得到一碗麥片奶,(我們 可以把牛奶和麥片分別看作是表中的行)。運(yùn)行情況如下:1、應(yīng)用程序a得到麥片上的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國變頻無卡旋切機(jī)數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025年度貸款居間服務(wù)合作協(xié)議集錦行業(yè)版
- 2024-2025學(xué)年高中物理課時分層作業(yè)16裂變和聚變含解析粵教版選修3-5
- 全國青島版信息技術(shù)七年級上冊專題二第1課二、《對無線路由器進(jìn)行硬件連接》教學(xué)設(shè)計(jì)
- 鉆鏜床項(xiàng)目風(fēng)險分析和評估報(bào)告
- 4《花之歌》教學(xué)設(shè)計(jì)-2024-2025學(xué)年統(tǒng)編版語文六年級上冊
- 教科版高中信息技術(shù)必修1教學(xué)設(shè)計(jì)-7.1 信息技術(shù)對人類社會的影響
- 2025年度旅游度假區(qū)運(yùn)營合作協(xié)議書范本
- 2020-2025年中國起絨坯布行業(yè)市場深度分析及投資戰(zhàn)略研究報(bào)告
- 2025年度新能源電池運(yùn)輸與安全協(xié)議
- 園林景觀工程報(bào)價表
- 2023年黑龍江省哈爾濱市單招數(shù)學(xué)摸底卷(含答案)
- 浙江臺州仙居富民村鎮(zhèn)銀行2023年招聘人員筆試歷年高頻考點(diǎn)試題答案帶詳解
- 教科版六下科學(xué)全冊課時練(含答案)
- 機(jī)械制造技術(shù)基礎(chǔ)PPT(中職)全套教學(xué)課件
- (完整版)小學(xué)英語語法大全-附練習(xí)題,推薦文檔
- 數(shù)學(xué)人教版六年級下冊簡便運(yùn)算課件
- 非遺申請書范本
- 吊頂工程課件
- 2023年金華職業(yè)技術(shù)學(xué)院高職單招(英語)試題庫含答案解析
- GB/T 16492-1996光學(xué)和光學(xué)儀器環(huán)境要求總則、定義、氣候帶及其參數(shù)
評論
0/150
提交評論