數(shù)據(jù)庫的事務(wù)控制_第1頁
數(shù)據(jù)庫的事務(wù)控制_第2頁
數(shù)據(jù)庫的事務(wù)控制_第3頁
數(shù)據(jù)庫的事務(wù)控制_第4頁
數(shù)據(jù)庫的事務(wù)控制_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、1.事務(wù)控制1.1概述事務(wù)控制是保證系統(tǒng)數(shù)據(jù)完整一致性的基礎(chǔ)。也是企業(yè)應(yīng)用系統(tǒng)必須解決的一 個(gè)技術(shù)問題。不單是企業(yè)審計(jì)上需要,更重要是企業(yè)及時(shí)有效的通過數(shù)據(jù)監(jiān)控企業(yè) 當(dāng)前狀態(tài)的需要。所以對(duì)于一個(gè)企業(yè)級(jí)的應(yīng)用數(shù)據(jù)的完整一致性是必須的。那么如 何簡單快速,而又可以從全局上充分的對(duì)系統(tǒng)的事務(wù)進(jìn)行有效的控制就顯得至關(guān)重 要了。這里簡述系統(tǒng)事務(wù)控制的基本概念(數(shù)據(jù)庫的數(shù)據(jù)一致性問題,數(shù)據(jù)庫的鎖 機(jī)制,數(shù)據(jù)庫的隔離級(jí)別的實(shí)現(xiàn)),應(yīng)用程序的事務(wù)控制的實(shí)現(xiàn)方法,Spring的事 務(wù)控制這三方面進(jìn)行敘述,充分的了解事務(wù)控制的細(xì)節(jié),以幫助在架構(gòu)時(shí)候可以做 出一個(gè)有效的事務(wù)控制的框架,幫助解決事務(wù)控制問題。1.2數(shù)

2、據(jù)庫的事務(wù)管理1.2.1事務(wù)的基本概念數(shù)據(jù)庫事務(wù)有嚴(yán)格的定義,它必須同時(shí)滿足四個(gè)特性:原子性(Atomic)、一 致性(Consistency)、隔離性(Isolation)和持久性(Durabiliy),簡稱為 ACID。原子性:表示組成一個(gè)事務(wù)的多個(gè)數(shù)據(jù)庫操作是一個(gè)不可分隔的原子單元,只 有所有的操作執(zhí)行成功,整個(gè)事務(wù)才提交,事務(wù)中任何一個(gè)數(shù)據(jù)庫操作失敗,已經(jīng) 執(zhí)行的任何操作都必須撤銷,讓數(shù)據(jù)庫返回到初始狀態(tài)。一致性:事務(wù)操作成功后,數(shù)據(jù)庫所處的狀態(tài)和它的業(yè)務(wù)規(guī)則是一致的,即數(shù) 據(jù)不會(huì)被破壞。如從A賬戶轉(zhuǎn)賬100元到B賬戶,不管操作成功與否,A和B的 存款總額是不變的。隔離性:在并發(fā)數(shù)據(jù)操

3、作時(shí),不同的事務(wù)擁有各自數(shù)據(jù)空間,它們的操作不會(huì) 對(duì)對(duì)方產(chǎn)生干擾。準(zhǔn)確的說,并非要求做到完全無干擾,數(shù)據(jù)庫規(guī)定了多種事務(wù)隔 離級(jí)別,不同隔離級(jí)別對(duì)應(yīng)不同的干擾程度,隔離級(jí)別越高,數(shù)據(jù)一致性越好,但 并發(fā)性越弱。持久性:一旦事務(wù)提交成功后,事務(wù)中所有的數(shù)據(jù)操作都必須被持久化到數(shù)據(jù) 庫中,即使提交事務(wù)后,數(shù)據(jù)庫馬上崩潰,在數(shù)據(jù)庫重啟時(shí),也必須能保證能夠通 過某種機(jī)制恢復(fù)數(shù)據(jù)。在這些事務(wù)特性中,數(shù)據(jù)“一致性”是最終目標(biāo),其它的特性都是為達(dá)到這個(gè)目 標(biāo)的措施、要求或手段。數(shù)據(jù)庫管理系統(tǒng)一般采用重執(zhí)行日志保證原子性、一致 性和持久性。重執(zhí)行日志記錄了數(shù)據(jù)庫變化的每一個(gè)動(dòng)作,數(shù)據(jù)庫在一個(gè)事務(wù)中執(zhí) 行一部分

4、操作后發(fā)生錯(cuò)誤退出,數(shù)據(jù)庫即可以根據(jù)重執(zhí)行日志撤銷已經(jīng)執(zhí)行的操 作。此外,對(duì)于已經(jīng)提交的事務(wù),即使數(shù)據(jù)庫崩潰,在重啟數(shù)據(jù)庫時(shí)也能夠根據(jù)日 志對(duì)尚未持久化的數(shù)據(jù)進(jìn)行相應(yīng)的重執(zhí)行操作。和Java程序采用對(duì)象鎖機(jī)制進(jìn)行 線程同步類似,數(shù)據(jù)庫管理系統(tǒng)采用數(shù)據(jù)庫鎖機(jī)制保證事務(wù)的隔離性。當(dāng)多個(gè)事務(wù) 試圖對(duì)相同的數(shù)據(jù)進(jìn)行操作時(shí),只有持有鎖的事務(wù)才能操作數(shù)據(jù),直到前一個(gè)事務(wù) 完成后,后面的事務(wù)才有機(jī)會(huì)對(duì)數(shù)據(jù)進(jìn)行操作。1.2.2多個(gè)事務(wù)同時(shí)訪問系統(tǒng)的并發(fā)問題。1)臟讀A讀取了 B尚未提交的數(shù)據(jù),而致使賬戶損失了 500元。時(shí)間轉(zhuǎn)賬事務(wù)A取款事務(wù)BT1開始事務(wù)T2開始事務(wù)T3查詢賬戶余額為1000元T4取出500

5、元把余額改為500元T5查詢賬戶余額為500元T6撤銷事務(wù)余額恢復(fù)為1000元T7匯入100元把余額改為600元T8提交事務(wù)2)不可重復(fù)讀不可重復(fù)讀是指A事務(wù)讀取了 B事務(wù)已經(jīng)提交的更改數(shù)據(jù)。假設(shè)A在取款事 務(wù)的過程中,B往該賬戶轉(zhuǎn)賬100元,A兩次讀取賬戶的余額發(fā)生不一致。時(shí)間取款事務(wù)A轉(zhuǎn)賬事務(wù)BT1開始事務(wù)T2開始事務(wù)T3查詢賬戶余額為1000元T4查詢賬戶余額為1000元T5取出100元把余額改為900元T6提交事務(wù)T7查詢賬戶余額為900元(和 T4讀取的不一致)3)幻影讀A事務(wù)讀取B事務(wù)提交的新增數(shù)據(jù),這時(shí)A事務(wù)將出現(xiàn)幻象讀的問題?;孟?讀一般發(fā)生在計(jì)算統(tǒng)計(jì)數(shù)據(jù)的事務(wù)中,舉一個(gè)例子,

6、假設(shè)銀行系統(tǒng)在同一個(gè)事務(wù) 中,兩次統(tǒng)計(jì)存款賬戶的總金額,在兩次統(tǒng)計(jì)過程中,剛好新增了一個(gè)存款賬 戶,并存入100元,這時(shí),兩次統(tǒng)計(jì)的總金額將不一致。時(shí)間統(tǒng)計(jì)金額事務(wù)A轉(zhuǎn)賬事務(wù)BT1開始事務(wù)T2開始事務(wù)T3統(tǒng)計(jì)總存款數(shù)為10000元T4新增 個(gè)存款賬戶,存款為100元T5提交事務(wù)T6再次統(tǒng)計(jì)總存款數(shù)為10100 元(幻象讀)幻象讀和不可重復(fù)讀是兩個(gè)容易混淆的概念,幻象讀是指讀到了其它已經(jīng)提交 事務(wù)的新增數(shù)據(jù),而不可重復(fù)讀是指讀到了已經(jīng)提交事務(wù)的更改數(shù)據(jù)(更改或刪除)。為了避免這兩種情況,采取的對(duì)策是不同的,防止讀取到更改數(shù)據(jù),只需 要對(duì)操作的數(shù)據(jù)添加行級(jí)鎖,阻止操作中的數(shù)據(jù)發(fā)生變化,而防止讀取到

7、新增數(shù) 據(jù),則往往需要添加表級(jí)鎖一一將整個(gè)表鎖定,防止新增數(shù)據(jù)。4)第一類丟失更新A事務(wù)撤銷時(shí),把已經(jīng)提交的B事務(wù)的更新數(shù)據(jù)覆蓋了。時(shí)間取款事務(wù)A轉(zhuǎn)賬事務(wù)BT1開始事務(wù)T2開始事務(wù)T3查詢賬戶余額為1000元T4查詢賬戶余額為1000元T5匯入100元把余額改為1100元T6提交事務(wù)T7取出100元把余額改為900 元T8撤銷事務(wù)T9余額恢復(fù)為1000元(丟失更 新)5)第二類丟失更新A事務(wù)覆蓋B事務(wù)已經(jīng)提交的數(shù)據(jù),造成B事務(wù)所做操作丟失時(shí)間轉(zhuǎn)賬事務(wù)A取款事務(wù)BT1開始事務(wù)T2開始事務(wù)T3查詢賬戶余額為1000元T4查詢賬戶余額為1000元T5取出100元把余額改為900元T6提交事務(wù)T7匯入

8、100元T8提交事務(wù)T9把余額改為1100元(丟失更 新)1.2.3數(shù)據(jù)庫鎖機(jī)制實(shí)現(xiàn)對(duì)于上述5類問題的控制數(shù)據(jù)并發(fā)會(huì)引發(fā)很多問題,在一些場合下有些問題是允許的,但在另外一些 場合下可能卻是致命的。數(shù)據(jù)庫通過鎖的機(jī)制解決并發(fā)訪問的問題,雖然不同的數(shù) 據(jù)庫在實(shí)現(xiàn)細(xì)節(jié)上存在差別,但原理基本上是一樣的。從并發(fā)事務(wù)鎖定的關(guān)系上看,可以分為共享鎖定和獨(dú)占鎖定。共享鎖定會(huì)防止獨(dú)占鎖定,但允許其它的共享鎖定。而獨(dú)占鎖定既防止其它的獨(dú)占鎖定,也防止 其它的共享鎖定。鎖就是保護(hù)指定的資源,不被其他事務(wù)操作。為了最小化鎖的成本,自動(dòng)地以 與任務(wù)相應(yīng)等級(jí)的鎖來鎖定資源對(duì)象。鎖定比較小的對(duì)象,例如鎖定行,可以提高 并發(fā)

9、性,但是卻有較高的開支。如果鎖定許多行,那么需要占有許多鎖對(duì)象。鎖 定比較大的對(duì)象,例如鎖定表,會(huì)大大降低并發(fā)性,因?yàn)殒i定整個(gè)表就限制了其他 事務(wù)訪問該表的其他部分,但是成本開支比較低,因?yàn)橹恍杈S護(hù)比較少的鎖。鎖是定義到SQL語句上的,對(duì)數(shù)據(jù)進(jìn)行操作的SQL就是:select,Insert, update,delete。不同的事物隔離級(jí)別,在執(zhí)行SQL 的時(shí)候會(huì)向表上發(fā)送不同的 鎖。例如在SQLSERVER中的READ COMMITED隔離級(jí)別下,SELECT語句會(huì)對(duì) 所有的滿足條件的數(shù)據(jù)行加上共享鎖,而UPDATE語句則會(huì)對(duì)被UPDATE的數(shù)據(jù) 加上排他鎖。以下是一種最為簡單的方式通過對(duì)鎖的

10、應(yīng)用實(shí)現(xiàn)事務(wù)間共享數(shù)據(jù)的隔離。1)防止第一類丟失更新問題(實(shí)現(xiàn)READ_UNCOMMIT隔離級(jí)別)事務(wù)在讀取數(shù)據(jù)時(shí),對(duì)行數(shù)據(jù)加共享鎖。當(dāng)且僅當(dāng)數(shù)據(jù)沒有任何的鎖定時(shí) 候,事務(wù)才可以對(duì)數(shù)據(jù)加上獨(dú)占鎖。并且在事務(wù)更新完后立即釋放獨(dú)占鎖。2)防止臟讀問題(實(shí)現(xiàn)READ_COMMIT隔離級(jí)別)事務(wù)在讀取數(shù)據(jù)時(shí),對(duì)行數(shù)據(jù)加共享鎖。當(dāng)且僅當(dāng)數(shù)據(jù)沒有任何的鎖定時(shí) 候,事務(wù)才可以對(duì)數(shù)據(jù)加上獨(dú)占鎖。并且當(dāng)事務(wù)提交時(shí)候才釋放獨(dú)占鎖。3)防止重復(fù)讀和第二類丟失更新問題事務(wù)在讀取數(shù)據(jù)的時(shí)候直接加獨(dú)占行級(jí)鎖,并且當(dāng)事務(wù)結(jié)束的時(shí)候才釋放 鎖。同一行數(shù)據(jù)無法支持并發(fā)的讀操作。4)防止幻影讀問題事務(wù)在讀取數(shù)據(jù)的時(shí)候?qū)Ρ砑颖砑?jí)獨(dú)

11、占鎖,并且在事務(wù)結(jié)束的時(shí)候釋放注意以上的控制方法關(guān)鍵在于鎖定類型和鎖的釋放時(shí)間上進(jìn)行控制,從而實(shí)現(xiàn) 不同的隔離級(jí)別和數(shù)據(jù)庫的并發(fā)訪問性。這些方法只是個(gè)人的推測,而非數(shù)據(jù)庫的 實(shí)現(xiàn)。1.2.4數(shù)據(jù)庫的隔離級(jí)別盡管數(shù)據(jù)庫為用戶提供了鎖的DML操作方式,但直接使用鎖管理是非常麻煩 的,因此數(shù)據(jù)庫為用戶提供了自動(dòng)鎖機(jī)制。只要用戶指定會(huì)話的事務(wù)隔離級(jí)別,數(shù) 據(jù)庫就會(huì)分析事務(wù)中的SQL語句,然后自動(dòng)為事務(wù)操作的數(shù)據(jù)資源添加上適合的 鎖。此外數(shù)據(jù)庫還會(huì)維護(hù)這些鎖,當(dāng)一個(gè)資源上的鎖數(shù)目太多時(shí),自動(dòng)進(jìn)行鎖升級(jí) 以提高系統(tǒng)的運(yùn)行性能,而這一過程對(duì)用戶來說完全是透明的。ANSI/ISO SQL 92標(biāo)準(zhǔn)定義了 4個(gè)

12、等級(jí)的事務(wù)隔離級(jí)別,在相同數(shù)據(jù)環(huán)境下, 使用相同的輸入,執(zhí)行相同的工作,根據(jù)不同的隔離級(jí)別,可以導(dǎo)致不同的結(jié)果。 不同事務(wù)隔離級(jí)別能夠解決的數(shù)據(jù)并發(fā)問題的能力是不同的。數(shù)據(jù)庫一般的默認(rèn)隔 離離級(jí)別是“READ COMMITTED,它能避免臟讀,而且有較好的并發(fā)性能。盡管 它會(huì)導(dǎo)致不可重復(fù)讀、虛讀和第二類更新丟失等問題,在可能出現(xiàn)這類問題的個(gè)別 場合可以由應(yīng)用程序采用悲觀鎖或樂觀鎖來控制。SQLSERVER 可以使用 SET TRANSACTION ISOLATION LEVEL 來設(shè)置事務(wù) 的隔離級(jí)別。指定隔離級(jí)別后,sql會(huì)話中所有語句的鎖定行為都運(yùn)行于該隔離級(jí) 別上,并一直保持有效直到會(huì)話

13、終止或者將隔離級(jí)別設(shè)置為另一個(gè)級(jí)別。事務(wù)隔離級(jí)別對(duì)并發(fā)問題的解決情況隔離級(jí)別臟讀不可重復(fù)讀幻象讀第一類丟失 更新第二類丟失 更新READ UNCOMMITED允許允許允許不允許允許READ COMMITTED不允許允許允許不允許允許REPEATABLE READ不允許不允許允許不允許不允許SERIALIZABLE不允許不允許不允許不允許不允許SQL SERVER的事務(wù)管理SQL SERVER 2005的并發(fā)控制模型SQL SERVER提供了悲觀并發(fā)控制模式和樂觀并發(fā)控制模式。悲觀并發(fā)控制模式假定系統(tǒng)中存在足夠多的數(shù)據(jù)修改操作以致任何確定的讀操 作都可能會(huì)受到由別的用戶所制造的數(shù)據(jù)修改的影響。換

14、言之,數(shù)據(jù)庫系統(tǒng)具有悲 觀的行為并且假定沖突是會(huì)發(fā)生的。采用了鎖機(jī)制實(shí)現(xiàn)占有被鎖定的資源,在悲觀 并發(fā)環(huán)境中,讀者(reader)和寫者(writer)之間是會(huì)互相阻塞的。樂觀并發(fā)控制模式假定系統(tǒng)中存在非常少的相沖突的數(shù)據(jù)修改操作,以致任何 單獨(dú)的事務(wù)都不太可能修改其他事務(wù)正在修改的數(shù)據(jù)。樂觀并發(fā)控制的默認(rèn)行為是 采用行版本控制使數(shù)據(jù)讀者能夠看到修改操作發(fā)生以前的數(shù)據(jù)狀態(tài)。在樂觀并發(fā)環(huán) 境中讀者和寫者之間不會(huì)互相阻塞。寫者之間會(huì)發(fā)生阻塞,而這也就是造成沖突的 原因了。當(dāng)沖突發(fā)生時(shí),SQL Server會(huì)生成一個(gè)錯(cuò)誤消息,但這需要由上層的應(yīng)用 程序來響應(yīng)此錯(cuò)誤。SQL SERVER 2005的事

15、務(wù)隔離級(jí)別隔離級(jí)別臟讀不可重復(fù)讀幻影讀并發(fā)控制模 型未提交讀YesYesYes悲觀已提交讀NoYesYes悲觀已提交讀(快照)NoYesYes樂觀可重復(fù)讀NoNoYes悲觀快照NoNoNo樂觀可串行化NoNoNo悲觀SQL SERVER的樂觀模式樂觀鎖的主要缺點(diǎn)是當(dāng)發(fā)生沖突的時(shí)候,SQLSERVER會(huì)拋異常給應(yīng)用程序處 理,這樣的代價(jià)是增加處理的復(fù)雜性。一般應(yīng)用程序會(huì)要求重新執(zhí)行事務(wù),那么在 高沖突的系統(tǒng)中,因?yàn)椴粩嗟闹貜?fù)執(zhí)行而影響系統(tǒng)的性能。因此樂觀鎖一般使用在 并發(fā)沖突很少的系統(tǒng)中。這樣就可以提供較好的并發(fā)性??煺蘸鸵烟峤蛔x快照的主要區(qū)別在于:已提交讀快照只是在更新的時(shí)候?qū)⒈容^ 快照和原始

16、數(shù)據(jù)進(jìn)行版本比較。而快照則不僅在更新時(shí)候進(jìn)行快照比較,而且在多 次讀的事務(wù)中比較所讀取數(shù)據(jù)的版本。SQL SERVER的悲觀模式SQLSERVER的悲觀鎖模式使用鎖來實(shí)現(xiàn)了并發(fā)控制。對(duì)于SQLServer采用自 旋鎖的方式來解決互斥訪問。對(duì)于鎖需要從以下四個(gè)方面進(jìn)行理解。1)鎖的模式:包括共享鎖,排他鎖,更新鎖,意向鎖,架構(gòu)鎖,大量更新鎖2)鎖的粒度:行、分頁、索引鍵、索引鍵的范圍、擴(kuò)展或是整張表3)鎖的持續(xù)時(shí)間:事務(wù)的不同隔離級(jí)別就是通過鎖定的時(shí)間范圍來實(shí)現(xiàn)的。例 如對(duì)于READ_UNCOMMIT排他鎖在更新完成后立即釋放,而對(duì)于 READ_COMMIT則排他鎖一直會(huì)持續(xù)到事務(wù)結(jié)束才釋放。4

17、)鎖的所有權(quán):鎖可以被事務(wù),Session和游標(biāo)所持有。SQL Server的鎖定模式縮寫鎖定模式描述SShared允許其他用戶讀取但不能修改被鎖定 資源XExclusive防止別的進(jìn)程修改或者讀取被鎖定資 源的數(shù)據(jù)(除非該進(jìn)程設(shè)定為未提交 讀隔離級(jí)別)UUpdate防止其他進(jìn)程獲取更新鎖或者排他 鎖;在搜索數(shù)據(jù)并修改時(shí)使用ISIntent shared表示該資源的一個(gè)組件被一個(gè)共享鎖 鎖定住了。這類鎖只能在表級(jí)或者分 頁級(jí)才能被獲取IUIntent update表示該資源的一個(gè)組件被一個(gè)更新鎖 鎖定住了。這類鎖只能在表級(jí)或者分 頁級(jí)才能被獲取IXIntent exclusive表示該資源的一

18、個(gè)組件被一個(gè)排他鎖 鎖定住了。這類鎖只能在表級(jí)或者分 頁級(jí)才能被獲取SIXShared with intent exclusive表示一個(gè)正持有共享鎖的資源還有一 個(gè)組件(個(gè)分頁或者 行記錄)被 一個(gè)排他鎖鎖定住了UIXUpdate with intent表示 個(gè)正持有更新鎖的資源還有exclusive一個(gè)組件(一個(gè)分頁或者一行記 錄)被一個(gè)排他鎖鎖定住了Sch-SSchema stability表示個(gè)使用該表的查詢正在被編 譯Sch-MSchema modification表示表的結(jié)構(gòu)正在被修改BUBulk update在一個(gè)大容量復(fù)制操作將數(shù)據(jù)導(dǎo)入 表并且應(yīng)用了 TABLOCK查詢提示 時(shí)

19、使用(手動(dòng)或者自動(dòng)皆可)表示一個(gè)正持有共享鎖的資源還有一 個(gè)組件(一個(gè)分頁或者一行記錄)被 一個(gè)更新鎖鎖定住了Shared with intent updateSIUSQL SERVER鎖的粒度資源類型DATABASE資源描述(Resource_Description)無;每個(gè)被鎖資源的resource_database_ID 字段 都指明了數(shù)據(jù)庫例子OBJECT對(duì)象ID (可以是任何數(shù)據(jù) 庫對(duì)象,不定就是表), 其數(shù)值是由resource_associated_entity_id 字段反饋的69575286EXTENT擴(kuò)展(extent)的第一個(gè)分 頁的文件號(hào)頁號(hào)1:96PAGE實(shí)際表或者索

20、引分頁的文件 號(hào).分頁號(hào)1:104KEY由所有鍵的組成部分及定位 符得到的哈希值。對(duì)于一個(gè) 建在堆上的非聚集索引(c1 和c2是索引列),哈希將 包含來自c1,c2以及RID 的貝獻(xiàn)ac0001a10a00ROW實(shí)際數(shù)據(jù)行的文件號(hào):頁號(hào):槽號(hào)1:161:3APPLICATION 一個(gè)連接串由以下部分組成 有權(quán)訪問該鎖的數(shù)據(jù)庫主0:ProcLock:(8e14701f)體、鎖名的前32個(gè)字符以 及根據(jù)該鎖全名得到的哈希 值1.3.5鎖的使用實(shí)例SQLSERVER2005可以使用sys.dm_tran_loc來查看系統(tǒng)的的鎖定狀態(tài)。下面 將通過實(shí)例來查看系統(tǒng)中的鎖的具體的使用情況。使用附件中的 SQL 語句建立表 LOCK_TEST_NO_INDEX , LOCK_TEST_INDEX.實(shí)例中test_table_prepare.sql文件定義了進(jìn)行測試的數(shù)據(jù)表,以及相應(yīng)的測試數(shù) 據(jù)。文件lock_test.sql中將觀察各種不同的隔離級(jí)別下,SQLSERVER對(duì)于所使用的 鎖。文件XLOCK_Deadlock1.sql 一種常見的因?yàn)閄鎖而引發(fā)的死鎖。文件SLOCK_Deadlock.sql 一種常見

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論