版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
數(shù)據(jù)庫系統(tǒng)概論AnIntroductiontoDatabaseSystem第5章數(shù)據(jù)保護第3章并發(fā)控制
第3節(jié)并發(fā)控制1并發(fā)控制概述2并發(fā)調(diào)度的可串行性3封鎖4封鎖的粒度5封鎖協(xié)議6兩段鎖協(xié)議7活鎖和死鎖8的并發(fā)控制9小結(jié)并發(fā)控制概述多事務(wù)執(zhí)行方式(1)事務(wù)串行執(zhí)行每個時刻只有一個事務(wù)運行,其他事務(wù)必須等到這個事務(wù)結(jié)束以后方能運行不能充分利用系統(tǒng)資源,發(fā)揮數(shù)據(jù)庫共享資源的特點并發(fā)控制(續(xù))(2)交叉并發(fā)方式(interleavedconcurrency)事務(wù)的并行執(zhí)行是這些并行事務(wù)的并行操作輪流交叉運行是單處理機系統(tǒng)中的并發(fā)方式,能夠減少處理機的空閑時間,提高系統(tǒng)的效率并發(fā)控制(續(xù))(3)同時并發(fā)方式(simultaneousconcurrency)多處理機系統(tǒng)中,每個處理機可以運行一個事務(wù),多個處理機可以同時運行多個事務(wù),實現(xiàn)多個事務(wù)真正的并行運行最理想的并發(fā)方式,但受制于硬件環(huán)境更復(fù)雜的并發(fā)方式機制事務(wù)并發(fā)執(zhí)行帶來的問題可能會存取和存儲不正確的數(shù)據(jù),破壞事務(wù)的隔離性和數(shù)據(jù)庫的一致性DBMS必須提供并發(fā)控制機制并發(fā)控制機制是衡量一個DBMS性能的重要標(biāo)志之一一、
并發(fā)控制概述并發(fā)控制機制的任務(wù)對并發(fā)操作進行正確調(diào)度保證事務(wù)的隔離性保證數(shù)據(jù)庫的一致性1、并發(fā)控制單位—事務(wù)事務(wù)是數(shù)據(jù)庫的邏輯工作單位,它是用戶定義的一組操作序列。在SQL中,定義事務(wù)的語句有三條:BEGINTRANSACTIONCOMMIT/*提交事務(wù)的所有操作,即將事務(wù)中所有對數(shù)據(jù)庫的更新寫回到磁盤上的物理數(shù)據(jù)庫中去,事務(wù)正常結(jié)束。ROLLBACK/*表示回滾,即在事務(wù)運行中發(fā)生了某種故障,事務(wù)不能繼續(xù)執(zhí)行,系統(tǒng)將事務(wù)中對數(shù)據(jù)庫的所有已完成的更新操作全部撤銷,滾回到事務(wù)開始時的狀態(tài)。事務(wù)的屬性P162(1)原子性---一個事務(wù)是一個不可分割的工作單位,事務(wù)中包括的操作要么都做,要么都不做。(2)一致性:(3)隔離性(4)持續(xù)性2、并發(fā)操作的三類不一致性并發(fā)操作帶來的數(shù)據(jù)不一致性包括三類:丟失修改、不可重復(fù)讀和讀“臟”數(shù)據(jù)T1的修改被T2覆蓋了!
讀A=16
A←A-3寫回A=13①讀A=16
②
③A←A-1
寫回A=15
④事務(wù)T2事務(wù)T1數(shù)據(jù)不一致實例:飛機訂票系統(tǒng)并發(fā)操作帶來的數(shù)據(jù)不一致性丟失修改(lostupdate)不可重復(fù)讀(non-repeatableread)讀“臟”數(shù)據(jù)(dirtyread)(1)
丟失修改丟失修改是指事務(wù)1與事務(wù)2從數(shù)據(jù)庫中讀入同一數(shù)據(jù)并修改事務(wù)2的提交結(jié)果破壞了事務(wù)1提交的結(jié)果,導(dǎo)致事務(wù)1的修改被丟失。圖1三種數(shù)據(jù)不一致性T1T2①讀A=16
②
③A←A-1
寫回A=15
④
讀A=16
A←A-1寫回A=15(a)丟失修改(2)
不可重復(fù)讀不可重復(fù)讀是指事務(wù)1讀取數(shù)據(jù)后,事務(wù)2執(zhí)行更新操作,使事務(wù)1無法再現(xiàn)前一次讀取結(jié)果。圖2三種數(shù)據(jù)不一致性(續(xù))
讀B=100B←B*2寫回B=200
①
讀A=50
讀B=100
求和=150②
③讀A=50
讀B=200
求和=250(驗算不對)T2T1(b)不可重復(fù)讀三類不可重復(fù)讀事務(wù)1讀取某一數(shù)據(jù)后:事務(wù)2對其做了修改,當(dāng)事務(wù)1再次讀該數(shù)據(jù)時,得到與前一次不同的值。事務(wù)2刪除了其中部分記錄,當(dāng)事務(wù)1再次讀取數(shù)據(jù)時,發(fā)現(xiàn)某些記錄神密地消失了。事務(wù)2插入了一些記錄,當(dāng)事務(wù)1再次按相同條件讀取數(shù)據(jù)時,發(fā)現(xiàn)多了一些記錄。后兩種不可重復(fù)讀有時也稱為幻影現(xiàn)象(phantomrow)(3)
讀“臟”數(shù)據(jù)事務(wù)1修改某一數(shù)據(jù),并將其寫回磁盤事務(wù)2讀取同一數(shù)據(jù)后事務(wù)1由于某種原因被撤消,這時事務(wù)1已修改過的數(shù)據(jù)恢復(fù)原值事務(wù)2讀到的數(shù)據(jù)就與數(shù)據(jù)庫中的數(shù)據(jù)不一致,是不正確的數(shù)據(jù),又稱為“臟”數(shù)據(jù)。圖3三種數(shù)據(jù)不一致性(續(xù))
讀C=200
①讀C=100C←C*2
寫回C②
③ROLLBACKC恢復(fù)為100T2T1(c)讀“臟”數(shù)據(jù)二、
并發(fā)調(diào)度的可串行性1、什么樣的并發(fā)操作調(diào)度是正確的2、如何保證并發(fā)操作的調(diào)度是正確的1、什么樣的并發(fā)操作調(diào)度是正確的計算機系統(tǒng)對并行事務(wù)中并行操作的調(diào)度是隨機的,而不同的調(diào)度可能會產(chǎn)生不同的結(jié)果。將所有事務(wù)串行起來的調(diào)度策略一定是正確的調(diào)度策略。如果一個事務(wù)運行過程中沒有其他事務(wù)在同時運行,也就是說它沒有受到其他事務(wù)的干擾,那么就可以認為該事務(wù)的運行結(jié)果是正常的或者預(yù)想的什么樣的并發(fā)操作調(diào)度是正確的(續(xù))以不同的順序串行執(zhí)行事務(wù)也有可能會產(chǎn)生不同的結(jié)果,但由于不會將數(shù)據(jù)庫置于不一致狀態(tài),所以都可以認為是正確的。幾個事務(wù)的并行執(zhí)行是正確的,當(dāng)且僅當(dāng)其結(jié)果與按某一次序串行地執(zhí)行它們時的結(jié)果相同。這種并行調(diào)度策略稱為可串行化(Serializable)的調(diào)度。什么樣的并發(fā)操作調(diào)度是正確的(續(xù))可串行性是并行事務(wù)正確性的唯一準(zhǔn)則例:現(xiàn)在有兩個事務(wù),分別包含下列操作:事務(wù)1:讀B;A=B+1;寫回A;
事務(wù)2:讀A;B=A+1;寫回B;
假設(shè)A的初值為2,B的初值為2。什么樣的并發(fā)操作調(diào)度是正確的(續(xù))對這兩個事務(wù)的不同調(diào)度策略串行執(zhí)行串行調(diào)度策略1串行調(diào)度策略2交錯執(zhí)行不可串行化的調(diào)度可串行化的調(diào)度(a)串行調(diào)度策略,正確的調(diào)度SlockBY=B=2UnlockBXlockAA=Y+1寫回A(=3)UnlockA
SlockAX=A=3UnlockAXlockBB=X+1寫回B(=4)UnlockB
T1T2(b)串行調(diào)度策略,正確的調(diào)度
SlockBY=B=3UnlockBXlockAA=Y+1寫回A(=4)UnlockA
SlockA
X=A=2UnlockAXlockBB=X+1寫回B(=3)UnlockB
T1T2(c)不可串行化的調(diào)度SlockBY=B=2
UnlockB
XlockAA=Y+1寫回A(=3)
UnlockA
SlockAX=A=2
UnlockA
XlockBB=X+1寫回B(=3)
UnlockBT1T2(c)不可串行化的調(diào)度(續(xù))由于其執(zhí)行結(jié)果與(a)、(b)的結(jié)果都不同,所以是錯誤的調(diào)度。(d)可串行化的調(diào)度SlockBY=B=2UnlockBXlockA
A=Y+1寫回A(=3)UnlockA
SlockA
等待等待等待X=A=3UnlockAXlockBB=X+1寫回B(=4)UnlockBT1T2(d)可串行化的調(diào)度(續(xù))由于其執(zhí)行結(jié)果與串行調(diào)度(a)的執(zhí)行結(jié)果相同,所以是正確的調(diào)度。2、如何保證并發(fā)操作的調(diào)度是正確的為了保證并行操作的正確性,DBMS的并行控制機制必須提供一定的手段來保證調(diào)度是可串行化的。從理論上講,在某一事務(wù)執(zhí)行時禁止其他事務(wù)執(zhí)行的調(diào)度策略一定是可串行化的調(diào)度,這也是最簡單的調(diào)度策略,但這種方法實際上是不可行的,因為它使用戶不能充分共享數(shù)據(jù)庫資源。如何保證并發(fā)操作的調(diào)度是正確的(續(xù))保證并發(fā)操作調(diào)度正確性的方法:封鎖方法時標(biāo)方法樂觀方法三、
封鎖?1基本封鎖類型?2封鎖粒度?3封鎖協(xié)議?
4死鎖與活鎖什么是封鎖封鎖就是事務(wù)T在對某個數(shù)據(jù)對象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖加鎖后事務(wù)T就對該數(shù)據(jù)對象有了一定的控制,在事務(wù)T釋放它的鎖之前,其它的事務(wù)不能更新此數(shù)據(jù)對象。封鎖是實現(xiàn)并發(fā)控制的一個非常重要的技術(shù)1、基本封鎖類型DBMS通常提供了多種類型的封鎖。一個事務(wù)對某個數(shù)據(jù)對象加鎖后究竟擁有什么樣的控制是由封鎖的類型決定的?;痉怄i類型排它鎖(eXclusivelock,簡記為X鎖)共享鎖(Sharelock,簡記為S鎖)排它鎖排它鎖又稱為寫鎖若事務(wù)T對數(shù)據(jù)對象A加上X鎖,則只允許T讀取和修改A,其它任何事務(wù)都不能再對A加任何類型的鎖,直到T釋放A上的鎖共享鎖共享鎖又稱為讀鎖若事務(wù)T對數(shù)據(jù)對象A加上S鎖,則其它事務(wù)只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖鎖的相容矩陣Y=Yes,相容的請求N=No,不相容的請求
T1T2XS-XNNYSNYY-YYY封鎖的粒度8.7.1封鎖粒度8.7.2多粒度封鎖8.7.3意向鎖2、
封鎖粒度(1)什么是封鎖粒度(2)選擇封鎖粒度的原則(1)什么是封鎖粒度X鎖和S鎖都是加在某一個數(shù)據(jù)對象上的封鎖的對象:邏輯單元,物理單元例:在關(guān)系數(shù)據(jù)庫中,封鎖對象:邏輯單元:屬性值、屬性值集合、元組、關(guān)系、索引項、整個索引、整個數(shù)據(jù)庫等物理單元:頁(數(shù)據(jù)頁或索引頁)、物理記錄等什么是封鎖粒度(續(xù))封鎖對象可以很大也可以很小例:對整個數(shù)據(jù)庫加鎖對某個屬性值加鎖封鎖對象的大小稱為封鎖的粒度(Granularity)多粒度封鎖(multiplegranularitylocking)在一個系統(tǒng)中同時支持多種封鎖粒度供不同的事務(wù)選擇(2)選擇封鎖粒度的原則封鎖的粒度越大,小,系統(tǒng)被封鎖的對象少,多,并發(fā)度小,高,系統(tǒng)開銷小,大,選擇封鎖粒度:考慮封鎖機構(gòu)和并發(fā)度兩個因素對系統(tǒng)開銷與并發(fā)度進行權(quán)衡選擇封鎖粒度的原則(續(xù))需要處理多個關(guān)系的大量元組的用戶事務(wù):以數(shù)據(jù)庫為封鎖單位;需要處理大量元組的用戶事務(wù):以關(guān)系為封鎖單元;只處理少量元組的用戶事務(wù):以元組為封鎖單位(3)
多粒度封鎖多粒度樹以樹形結(jié)構(gòu)來表示多級封鎖粒度根結(jié)點是整個數(shù)據(jù)庫,表示最大的數(shù)據(jù)粒度葉結(jié)點表示最小的數(shù)據(jù)粒度
多粒度封鎖(續(xù))例:三級粒度樹。根結(jié)點為數(shù)據(jù)庫,數(shù)據(jù)庫的子結(jié)點為關(guān)系,關(guān)系的子結(jié)點為元組。數(shù)據(jù)庫關(guān)系Rn關(guān)系R1元組元組元組元組………………多粒度封鎖協(xié)議
允許多粒度樹中的每個結(jié)點被獨立地加鎖對一個結(jié)點加鎖意味著這個結(jié)點的所有后裔結(jié)點也被加以同樣類型的鎖在多粒度封鎖中一個數(shù)據(jù)對象可能以兩種方式封鎖:顯式封鎖和隱式封鎖3、
封鎖協(xié)議在運用X鎖和S鎖對數(shù)據(jù)對象加鎖時,需要約定一些規(guī)則:封鎖協(xié)議(LockingProtocol)何時申請X鎖或S鎖持鎖時間、何時釋放不同的封鎖協(xié)議,在不同的程度上為并發(fā)操作的正確調(diào)度提供一定的保證常用的封鎖協(xié)議:三級封鎖協(xié)議、兩段鎖協(xié)議(1)三級封鎖協(xié)議保證數(shù)據(jù)一致性---三級封鎖協(xié)議---一定程度解決并發(fā)操作的不正確調(diào)度可能帶來的丟失修改、不可重復(fù)讀、讀“臟”數(shù)據(jù)。保證并行調(diào)度可串行性---兩段鎖協(xié)議1級封鎖協(xié)議事務(wù)T在修改數(shù)據(jù)R之前必須先對其加X鎖,直到事務(wù)結(jié)束才釋放正常結(jié)束(COMMIT)非正常結(jié)束(ROLLBACK)1級封鎖協(xié)議可防止丟失修改在1級封鎖協(xié)議中,如果是讀數(shù)據(jù),不需要加鎖的,所以它不能保證可重復(fù)讀和不讀“臟”數(shù)據(jù)。1級封鎖協(xié)議P167T1T2①
XlockA
讀A=16
③A←A-1
寫回A=15CommitUnlockA
②
XlockA等待等待等待等待④獲得XlockA讀A=15⑤A←A-1寫回A=14CommitUnlockA
沒有丟失修改1級封鎖協(xié)議
讀A=15①
XlockA
獲得②
讀A=16
A←A-1
寫回A=15③
④RollbackUnlockA
T2T1讀“臟”數(shù)據(jù)1級封鎖協(xié)議
②XlockB
獲得
讀B=100B←B*2
寫回B=200CommitUnlockB①讀A=50
讀B=100
求和=150③讀A=50
讀B=200
求和=250(驗算不對)T2T1不可重復(fù)讀
2級封鎖協(xié)議1級封鎖協(xié)議+事務(wù)T在讀取數(shù)據(jù)R前必須先加S鎖,讀完后即可釋放S鎖2級封鎖協(xié)議可以防止丟失修改和讀“臟”數(shù)據(jù)。在2級封鎖協(xié)議中,由于讀完數(shù)據(jù)后即可釋放S鎖,所以它不能保證可重復(fù)讀。2級封鎖協(xié)議不可重復(fù)讀①
SclockA
獲得讀A=50UnlockA②SclockB
獲得讀B=100UnlockB③求和=150
XlockB等待等待獲得XlockB讀B=100B←B*2寫回B=200CommitUnlockBT2T1④SclockA
獲得讀A=50UnlockA
SclockB
獲得讀B=200UnlockB
求和=250(驗算不對)
T2T1(續(xù))
3級封鎖協(xié)議1級封鎖協(xié)議+事務(wù)T在讀取數(shù)據(jù)R之前必須先對其加S鎖,直到事務(wù)結(jié)束才釋放3級封鎖協(xié)議可防止丟失修改、讀臟數(shù)據(jù)和不可重復(fù)讀。3級封鎖協(xié)議T1T2①
SlockA
讀A=50
SlockB
讀B=100
求和=150②
③讀A=50
讀B=100
求和=150CommitUnlockAUnlockB④
⑤
XlockB等待等待等待等待等待等待等待等待獲得XlockB讀B=100B←B*2寫回B=200CommitUnlockB
可重復(fù)讀3級封鎖協(xié)議T1T2①
XlockC
讀C=100C←C*2
寫回C=200②
③ROLLBACK(C恢復(fù)為100)UnlockC④
⑤
SlockC等待等待等待等待獲得SlockC讀C=100CommitCUnlockC不讀“臟”數(shù)據(jù)封鎖協(xié)議小結(jié)三級協(xié)議的主要區(qū)別什么操作需要申請封鎖何時釋放鎖(即持鎖時間)封鎖協(xié)議小結(jié)(續(xù))
(2)
兩段鎖協(xié)議兩段鎖協(xié)議的內(nèi)容??在對任何數(shù)據(jù)進行讀、寫操作之前,事務(wù)首先要獲得對該數(shù)據(jù)的封鎖??在釋放一個封鎖之后,事務(wù)不再獲得任何其他封鎖。兩段鎖協(xié)議(續(xù))“兩段”鎖的含義事務(wù)分為兩個階段
第一階段是獲得封鎖,也稱為擴展階段;第二階段是釋放封鎖,也稱為收縮階段。兩段鎖協(xié)議(續(xù))例:事務(wù)1的封鎖序列:SlockA...SlockB...XlockC...UnlockB...UnlockA...UnlockC;事務(wù)2的封鎖序列:SlockA...UnlockA...SlockB...XlockC...UnlockC...UnlockB;事務(wù)1遵守兩段鎖協(xié)議,而事務(wù)2不遵守兩段協(xié)議。兩段鎖協(xié)議(續(xù))并行執(zhí)行的所有事務(wù)均遵守兩段鎖協(xié)議,則對這些事務(wù)的所有并行調(diào)度策略都是可串行化的。
所有遵守兩段鎖協(xié)議的事務(wù),其并行執(zhí)行的結(jié)果一定是正確的事務(wù)遵守兩段鎖協(xié)議是可串行化調(diào)度的充分條件,而不是必要條件可串行化的調(diào)度中,不一定所有事務(wù)都必須符合兩段鎖協(xié)議。兩段鎖協(xié)議(續(xù))T1SlockB讀B=2Y=BXlockA
A=Y+1寫回A=3UnlockBUnlockA
T2
SlockA
等待等待等待等待等待SlockA讀A=3Y=AXlockBB=Y+1寫回B=4UnlockBUnlockA
T1SlockB讀B=2Y=BUnlockBXlockA
A=Y+1寫回A=3UnlockA
T2
SlockA等待等待等待等待SlockA讀A=3X=AUnlockAXlockBB=X+1寫回B=4UnlockB
(a)遵守兩段鎖協(xié)議
(b)不遵守兩段鎖協(xié)議T1SlockB讀B=2Y=BUnlockBXlockAA=Y+1寫回A=3UnlockAT2
SlockA讀A=2X=AUnlockAXlockB等待XlockBB=X+1寫回B=3UnlockB
(c)不遵守兩段鎖協(xié)議兩段鎖協(xié)議與三級封鎖協(xié)議的差別兩段鎖協(xié)議與三級封鎖協(xié)議兩類不同目的的協(xié)議兩段鎖協(xié)議保證并發(fā)調(diào)度的正確性三級封鎖協(xié)議在不同程度上保證數(shù)據(jù)一致性遵守第三級封鎖協(xié)議必然遵守兩段協(xié)議四、
活鎖和死鎖封鎖技術(shù)可以有效地解決并行操作的一致性問題,但也帶來一些新的問題死鎖活鎖1、
活鎖P170
活鎖如果事務(wù)T1封鎖了數(shù)據(jù)R,事務(wù)T2又請求封鎖R,于是T2等待。T3也請求封鎖R,當(dāng)T1釋放了R上的封鎖之后系統(tǒng)首先批準(zhǔn)了T3的請求,T2仍然等待。然后T4又請求封鎖R,當(dāng)T3釋放了R上的封鎖之后系統(tǒng)又批準(zhǔn)了T4的請求,...,T2有可能永遠等待,這就是活鎖的情形。避免活鎖的簡單方法是采用先來先服務(wù)的策略。如何避免活鎖采用先來先服務(wù)的策略:當(dāng)多個事務(wù)請求封鎖同一數(shù)據(jù)對象時按請求封鎖的先后次序?qū)@些事務(wù)排隊該數(shù)據(jù)對象上的鎖一旦釋放,首先批準(zhǔn)申請隊列中第一個事務(wù)獲得鎖。2、死鎖如果事務(wù)T1封鎖了數(shù)據(jù)R1,T2封鎖了數(shù)據(jù)R2,然后T1又請求封鎖R2,因T2已封鎖了R2,于是T1等待T2釋放R2上的鎖。接著T2又申請封鎖R1,因T1已封鎖了R1,T2也只能等待T1釋放R1上的鎖。這樣就出現(xiàn)了T1在等待T2,而T2又在等待T1的局面,T1和T2兩個事務(wù)永遠不能結(jié)束,形成死鎖。死鎖
T1T2
XlockR1...XlockR2等待等待等待...XlockR2..Xlock
R1等待等待.(1)產(chǎn)生死鎖的原因在數(shù)據(jù)庫中,產(chǎn)生死鎖的原因是兩個或多個事務(wù)都已封鎖了一些數(shù)據(jù)對象,然后又都請求對已為其他事務(wù)封鎖的數(shù)據(jù)對象加鎖,從而出現(xiàn)死等待。(2)解決死鎖的方法兩類方法
預(yù)防死鎖死鎖的診斷與解除死鎖的預(yù)防防止死鎖的發(fā)生其實就是要破壞產(chǎn)生死鎖的條件。預(yù)防死鎖通常有兩種方法:
一次封鎖法
順序封鎖法一次封鎖法要求每個事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行一次封鎖法存在的問題:降低并發(fā)度擴大封鎖范圍將以后要用到的全部數(shù)據(jù)加鎖,勢必擴大了封鎖的范圍,從而降低了系統(tǒng)的并發(fā)度兩段鎖協(xié)議與一次封鎖法的區(qū)別兩段鎖協(xié)議與防止死鎖的一次封鎖法一次封鎖法要求每個事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行,因此一次封鎖法遵守兩段鎖協(xié)議但是兩段鎖協(xié)議并不要求事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,因此遵守兩段鎖協(xié)議的事務(wù)可能發(fā)生死鎖順序封鎖法順序封鎖法是預(yù)先對數(shù)據(jù)對象規(guī)定一個封鎖順序,所有事務(wù)都按這個順序?qū)嵭蟹怄i。順序封鎖法可以有效地防止死鎖,但也同樣存在問題。事務(wù)的封鎖請求可以隨著事務(wù)的執(zhí)行而動態(tài)地決定,很難事先確定每一個事務(wù)要封鎖哪些對象,因此也就很難按規(guī)定的
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年楚雄道路運輸貨運從業(yè)資格證考試項目
- 2025年保定b2從業(yè)資格證模擬考試題目
- 2025年浙江貨運資格證科目一技巧口訣表
- 從理念到實踐探討企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化的教育價值
- 農(nóng)行合規(guī)文化在醫(yī)療行業(yè)的創(chuàng)新應(yīng)用
- 公共場所用電安全管理與監(jiān)控
- 以情感引導(dǎo)為核心的親子溝通培訓(xùn)
- 交通科技在商業(yè)物流中的應(yīng)用
- 企業(yè)內(nèi)訓(xùn)課程如何做好QC活動的全程管理
- 體育教學(xué)中的團隊與合作精神塑造
- GB/T 18281.3-2024醫(yī)療保健產(chǎn)品滅菌生物指示物第3部分:濕熱滅菌用生物指示物
- 消防法知識課件
- 計量經(jīng)濟學(xué)練習(xí)題
- 關(guān)于禮儀培訓(xùn)課件
- 2024年采購經(jīng)理競聘演講稿模版(2篇)
- 2024年天翼云從業(yè)者認證考試題庫大全(含答案)
- 【職教高考】專題復(fù)習(xí)卷《建筑識圖與構(gòu)造》 專題一 制圖基本知識 解析版
- 第一單元(知識點)-2024-2025學(xué)年統(tǒng)編版道德與法治七年級 上冊
- 養(yǎng)老院入住須知
- 地理熱點課件教學(xué)課件
- 《全球數(shù)字經(jīng)濟白皮書(2023年)》
評論
0/150
提交評論