多用戶環(huán)境下的數(shù)據(jù)并發(fā)訪問及數(shù)據(jù)一致性簡(jiǎn)介_第1頁(yè)
多用戶環(huán)境下的數(shù)據(jù)并發(fā)訪問及數(shù)據(jù)一致性簡(jiǎn)介_第2頁(yè)
多用戶環(huán)境下的數(shù)據(jù)并發(fā)訪問及數(shù)據(jù)一致性簡(jiǎn)介_第3頁(yè)
多用戶環(huán)境下的數(shù)據(jù)并發(fā)訪問及數(shù)據(jù)一致性簡(jiǎn)介_第4頁(yè)
多用戶環(huán)境下的數(shù)據(jù)并發(fā)訪問及數(shù)據(jù)一致性簡(jiǎn)介_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余5頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、多用戶環(huán)境下的數(shù)據(jù)并發(fā)訪問 及數(shù)據(jù)一致性簡(jiǎn)介多用戶環(huán)境下的數(shù)據(jù)并發(fā)訪問及數(shù)據(jù)一致性簡(jiǎn)介在只有單一用戶的數(shù)據(jù)庫(kù)中,用戶可以任意修改數(shù)據(jù),而無(wú)需考慮同時(shí)有其他用戶正在修改相同的數(shù)據(jù)。但在一個(gè)多用戶數(shù)據(jù)庫(kù)中,多個(gè)并發(fā)事務(wù)中包含的語(yǔ)句可能 會(huì)修改相同的數(shù)據(jù)。數(shù)據(jù)庫(kù)中并發(fā)執(zhí)行的事務(wù)最終應(yīng)產(chǎn)生有意義且具備一致性的結(jié)果。 因此在多用戶數(shù)據(jù)庫(kù)中, 對(duì)數(shù)據(jù)并發(fā)訪問 ( data concurrency )及數(shù)據(jù)一致性( data consistency )進(jìn)行控制是兩項(xiàng)極為重要的工作。1、數(shù)據(jù)并發(fā)訪問指多用戶同時(shí)訪問相同的數(shù)據(jù)。2、數(shù)據(jù)一致性指系統(tǒng)中每個(gè)用戶都能夠取得具備一致性的數(shù)據(jù),同時(shí)還能夠看到自己或其他用

2、戶所提交的事務(wù)對(duì)數(shù)據(jù)的修改。為了描述同時(shí)執(zhí)行的多個(gè)事務(wù)如何實(shí)現(xiàn)數(shù)據(jù)一致性,數(shù)據(jù)庫(kù)研究人員定義了被稱為串行化處理( serializability )的事務(wù)隔離模型( transaction isolationmodel)。當(dāng)所有事務(wù)都采取用行化的模式執(zhí)行時(shí),我們可以認(rèn)為同一時(shí)間只有一個(gè)事務(wù)在運(yùn)行(串行的),而非并發(fā)的。以串行化模式對(duì)事務(wù)進(jìn)行隔離的效果很好,但在此種模式下應(yīng)用程序的效率將大大降低。將并行執(zhí)行的事務(wù)完全隔離意味著即便當(dāng)前只存在一個(gè)對(duì)表進(jìn)行查詢( query )的事務(wù),其他事務(wù)也不能再對(duì)此表進(jìn)行插入( insert )操作了。總之,為了滿足實(shí)際要求,我們需要在事務(wù)的隔離程度與應(yīng)用的性

3、能之間找出一個(gè)平衡點(diǎn)。Oracle 支持兩種事務(wù)隔離級(jí)別( isolation level ),使應(yīng)用程序開發(fā)者在對(duì)事務(wù)進(jìn)行控制時(shí),既能保證數(shù)據(jù)的一致性,又能獲得良好的性能。需要防止的現(xiàn)象和事務(wù)隔離級(jí)別ANSI/ISO SQL 標(biāo)準(zhǔn)(SQL92) 定義了四種事務(wù)隔離級(jí)別 (transaction isolationlevel ),這四種隔離級(jí)別所能提供的事務(wù)處理能力各不相同。這些事務(wù)隔離級(jí)別是針對(duì)三種現(xiàn)象定義的,在并發(fā)事務(wù)執(zhí)行時(shí),需要阻止這三種現(xiàn)象 中的一種 或多種發(fā)生。三種需要阻止的現(xiàn)象( preventable phenomena )是:1、臟讀取( dirty read ):一個(gè)事務(wù)讀取

4、了被其他事務(wù)寫入但還未提交的數(shù)據(jù)。2、不可重復(fù)讀取( nonrepeatable read ):一個(gè)事務(wù)再次讀取其之前曾經(jīng)讀取過的數(shù)據(jù)時(shí),發(fā)現(xiàn)數(shù)據(jù)已被其他已提交的事務(wù)修改或刪除。3、不存在讀取( phantom read ):事務(wù)按照之前的條件重新查詢時(shí),返回的結(jié)果集中包含其他已提交事務(wù)插入的滿足條件的新數(shù)據(jù)。SQL92標(biāo)準(zhǔn)中定義了四個(gè)隔離級(jí)別,在各隔離級(jí)別中,允許發(fā)生上述三種需要 阻止的現(xiàn)象中的一種或多種。詳情見下表現(xiàn)象隔離級(jí)別臟讀取/、可重復(fù)讀取/、存在讀取未提交讀取(read uncommitted)允許允許允許已提交讀取(read committed)不允許允許允許可重復(fù)讀取(repe

5、atable read )不允許不允許允許串行化不允許(rerializable )不允許不允許Oracle支持三種事務(wù)隔離級(jí)別:已提交讀取,串行化,以及 SQL92中沒有包 含的只讀模式(read-only mode )。已提交讀取是 Oracle 默認(rèn)使用的事務(wù)隔 離級(jí)別。Oracle如何管理數(shù)據(jù)并發(fā)訪問及數(shù)據(jù)一致性O(shè)racle 利用多版本一致性模型(multiversion consistency model ),各種類 型的鎖及事務(wù)來(lái)管理多用戶系統(tǒng)中的數(shù)據(jù)一致性(data consistency )。多版本并發(fā)訪問控制Oracle能夠自動(dòng)地實(shí)現(xiàn)一個(gè)查詢的讀一致性,即一個(gè)查詢所獲得的數(shù)據(jù)

6、來(lái)自同 一時(shí)間點(diǎn)(single point in time )(這也被稱為語(yǔ)句級(jí)讀一致性(statement-level read consistency ) ) 。 Oracle 還能令個(gè)事務(wù)內(nèi)的所有 查詢都具備讀一致性(即事務(wù)級(jí)讀一致性(transaction-level read consistency )。Oracle利用回滾段中的信息生成一個(gè)能保證一致性的數(shù)據(jù)視圖。回滾段內(nèi)保存 了未提交或最近提交的事務(wù)中所修改數(shù)據(jù)的原值。下圖展示了 Oracle如何利 用回滾段實(shí)現(xiàn)語(yǔ)句級(jí)的讀一致性。SELECT . 國(guó)在查詢開始執(zhí)行時(shí),將記錄當(dāng)前的系統(tǒng)變化編號(hào) (system change numb

7、er, SCN。 在圖中,記錄的系統(tǒng)變化編號(hào)為10023。當(dāng)查詢進(jìn)行掃描時(shí),只會(huì)使用有效 的(observed)數(shù)據(jù)塊。如果某個(gè)數(shù)據(jù)塊內(nèi)的數(shù)據(jù)被修改過 (即數(shù)據(jù)塊的SCN晚 于查詢開始執(zhí)行時(shí)記錄的SCN) , Oracle將使用回滾段中的信息重建此數(shù)據(jù)塊, 并以重建的數(shù)據(jù)塊替代被修改的數(shù)據(jù)塊供查詢使用。因此,查詢的結(jié)果集只包 含查詢開始執(zhí)行時(shí)就已經(jīng)提交的數(shù)據(jù)。在查詢執(zhí)行時(shí),其他事務(wù)修改的數(shù)據(jù)對(duì) 此查詢來(lái)說(shuō)是無(wú)效的,這保證了每個(gè)查詢都能得到滿足一致性的數(shù)據(jù)。語(yǔ)句級(jí)讀一致性O(shè)racle 強(qiáng)制實(shí)現(xiàn)語(yǔ)句級(jí)讀一致性(statement-level read consistency )。這 保證了單一查詢

8、的結(jié)果集來(lái)自一個(gè)時(shí)間點(diǎn)一一即查詢開始執(zhí)行的時(shí)間。因此, 一個(gè)查詢的結(jié)果集永遠(yuǎn)不會(huì)包含臟數(shù)據(jù)及此查詢執(zhí)行時(shí)其他事務(wù)提交的數(shù)據(jù)。在一個(gè)查詢執(zhí)行期間,只有在查詢執(zhí)行前提交的數(shù)據(jù)對(duì)此查詢才是可見的。查 詢無(wú)法看到其開始執(zhí)行后提交的數(shù)據(jù)。任何一個(gè)查詢都能得到滿足一致性的結(jié)果集,這保證了用戶無(wú)需額外操作就能 確保數(shù)據(jù)一致性。SELECT,使用子查詢的INSERT ,及包含顯式或隱式查詢 的UPDATE或DELETE語(yǔ)句,都能夠保證數(shù)據(jù)一致性。上述語(yǔ)句通過一個(gè)查詢(query)來(lái)得到她們所需的滿足一致性的結(jié)果集(分別使用 SELECT INSERT UPDATES DELETE 語(yǔ)句)。SELECT語(yǔ)句是一

9、個(gè)顯式地查詢,且其中可以包含嵌套查詢( nested query )或 連接操作(join operation )。INSERT語(yǔ)句中也能夠使用嵌套查詢。UPDATE 及DELETE語(yǔ)句能夠禾I用 WHERE?句或子查詢進(jìn)行限制,只操作數(shù)據(jù)表內(nèi)的部 分?jǐn)?shù)據(jù)行。INSERT, UPDATE,及DELETE語(yǔ)句中包含的查詢能夠獲得一致性的結(jié)果集。這些查詢無(wú)法看到其所在DML 語(yǔ)句對(duì)數(shù)據(jù)的修改。換句話說(shuō),這些查詢只能看到其所在 DML 語(yǔ)句開始之前的數(shù)據(jù)。TIPS:如果SELECT歹表中存在PL/SQL函數(shù),那么函數(shù)中包含的 SQL語(yǔ)句將 遵從其自身的語(yǔ)句級(jí)讀一致性,而非其所在SQL的讀一致性。例如

10、,SELECT語(yǔ) 句中的某個(gè)函數(shù)訪問的表可能會(huì)在語(yǔ)句執(zhí)行時(shí)被其他事務(wù)修改并提交。此函數(shù)每次執(zhí)行時(shí)都將建立一個(gè)新的一致性視圖( snapshot )。事務(wù)一致性讀Oracle 還能夠?qū)崿F(xiàn)事務(wù)級(jí)讀一致性( transaction-level read consistency )。當(dāng)一個(gè)事務(wù)運(yùn)行在串行化模式( serializable mode )下時(shí),則事務(wù)內(nèi)所有數(shù)據(jù)訪問均反映的是事務(wù)開始時(shí)的數(shù)據(jù)狀態(tài)。即事務(wù)內(nèi)的所有查詢對(duì)某個(gè)時(shí)間點(diǎn)來(lái)說(shuō)具備一致性,但是運(yùn)行在串行化模式下的事務(wù)能夠看到事務(wù)自身對(duì)數(shù)據(jù)所作的修改。事務(wù)級(jí)的讀一致性能夠保證可重復(fù)讀取并可阻止出現(xiàn)不存在讀取。RACW境下的讀一致性RAC系統(tǒng)

11、采用緩存對(duì)緩存(cache-to-cache )的數(shù)據(jù)塊傳輸機(jī)制(此技術(shù)被稱 為 Cache Fusion )在實(shí)例間傳輸滿足讀一致性( read-consistent )的數(shù)據(jù)塊 鏡像。RAC 系統(tǒng)通過高速度低延遲的內(nèi)部連接(interconnect )實(shí)現(xiàn)上述數(shù)據(jù)傳輸,從而滿足實(shí)例之間對(duì)數(shù)據(jù)塊的請(qǐng)求。Oracle 事務(wù)隔離級(jí)別Oracle 支持以下三種事務(wù)隔離級(jí)別( transaction isolation level )。隔離級(jí)別 描述Oracle 默認(rèn)使用的事務(wù)隔離級(jí)別。 事務(wù)內(nèi)執(zhí)行的查詢只能看到查詢執(zhí)行前(而非事務(wù)開始前)就已經(jīng)提交的數(shù)據(jù)。 Oracle 的查詢永遠(yuǎn)不會(huì)讀取臟數(shù)據(jù)(

12、未提交的數(shù)據(jù))。已提交讀取Oracle 不會(huì)阻止一個(gè)事務(wù)修改另一事務(wù)中的查詢正在訪問的數(shù)據(jù),因此在一個(gè)事務(wù)內(nèi)的兩個(gè)查詢的執(zhí)行間歇期間,數(shù)據(jù)有可能被其他事務(wù)修改。舉例來(lái)說(shuō),如果一個(gè)事務(wù)內(nèi)同一查詢執(zhí)行兩次,可能會(huì)遇到不可重復(fù)讀取或不存在讀取的現(xiàn)象。串行化串行化隔離的事務(wù)只能看到事務(wù)執(zhí)行前就已經(jīng)提交的數(shù)據(jù), 以及事務(wù)內(nèi) INSERT , UPDATE, 及 DELETE 語(yǔ) 句對(duì)數(shù)據(jù)的修改。串行化隔離的事務(wù)不會(huì)出現(xiàn)不可重 復(fù)讀取或不存在讀取的現(xiàn)象。 只讀事務(wù)只能看到事務(wù)執(zhí)行前就已經(jīng)提交的數(shù)據(jù),且只讀模式事務(wù)中不能執(zhí)行INSERT , UPDATE,及DELETE語(yǔ) 句。應(yīng)用程序的設(shè)計(jì)開發(fā)者及數(shù)據(jù)庫(kù)管

13、理員可以依據(jù)應(yīng)用程序的需求及系統(tǒng)負(fù)載( workload )而為不同的事務(wù)選擇不同的隔離級(jí)別( isolation level )。用戶可以在事務(wù)開始時(shí)使用以下語(yǔ)句設(shè)定事務(wù)的隔離級(jí)別:已提交讀模式:SET TRANSACTION ISOLATION LEVEREAD COMMITTED;串行模式:SET TRANSACTION ISOLATION LEVELSERIALIZABLE;只讀模式:SET TRANSACTION READ ONLY;(經(jīng)筆者實(shí)驗(yàn)以上命令在非sysdba 用戶下可以成功執(zhí)行, sysdba 下不能執(zhí)行,待驗(yàn)證正確性)如果在每個(gè)事務(wù)開始時(shí)都使用 SET TRANSACT

14、IONS旬,將加重網(wǎng)絡(luò)及處理器的 負(fù)擔(dān)。用戶可以使用ALTER SESSION語(yǔ)句改變一個(gè)會(huì)話所有內(nèi)事務(wù)的默認(rèn)隔 離級(jí)別:1、 ALTER SESSION SET ISOLATION_LEVEL SERIALIZABLE;2、 ALTER SESSION SET ISOLATION_LEVEL READ COMMITTED;(無(wú)法設(shè)置會(huì)話級(jí)別的只讀隔離模式)已提交讀取隔離Oracle 默認(rèn)使用的隔離級(jí)別( isolation level )是已提交讀取( readcommitted )隔離。這種程度的隔離適合在事務(wù)發(fā)生沖突的可能性較小的系統(tǒng)中使用。在這種隔離級(jí)別下, Oracle 能夠保證事務(wù)

15、內(nèi)每個(gè)查詢?cè)趫?zhí)行期間都擁有一個(gè)唯一的數(shù)據(jù)視圖,因此事務(wù)可能出現(xiàn)不可重復(fù)讀取或不存在讀取的現(xiàn)象,但此時(shí)系統(tǒng)的數(shù)據(jù)處理能力較高。串行化隔離符合以下特性的系統(tǒng)適合采用串行化隔離( serializable isolation ):1、數(shù)據(jù)量大,但事務(wù)短小,只會(huì)更新較少數(shù)據(jù)行的數(shù)據(jù)庫(kù)2、兩個(gè)并發(fā)事務(wù)修改相同數(shù)據(jù)的概率較小3、運(yùn)行時(shí)間相對(duì)較長(zhǎng)的事務(wù)只執(zhí)行只讀操作在串行化隔離下,并發(fā)事務(wù)對(duì)數(shù)據(jù)庫(kù)進(jìn)行修改時(shí)只能順序執(zhí)行。具體來(lái)說(shuō),在串行化隔離下, Oracle 在允許一個(gè)采用串行化隔離的事務(wù)修改某些數(shù)據(jù)行時(shí),需要判斷在此事務(wù)開始執(zhí)行之前,其他所有事務(wù)對(duì)這些數(shù)據(jù)行的修改已經(jīng)被提交。為了實(shí)現(xiàn)上述判斷, Orac

16、le 在數(shù)據(jù)塊內(nèi)存儲(chǔ)了相關(guān)的控制信息,用于記錄此塊內(nèi)數(shù)據(jù)行中所包含的數(shù)據(jù)是已提交或未提交的。即數(shù)據(jù)塊內(nèi)記錄了近期對(duì)本數(shù)據(jù)塊內(nèi)數(shù)據(jù)行進(jìn)行了修改的所有事務(wù)及事務(wù)的狀態(tài)。在一個(gè)數(shù)據(jù)塊內(nèi)能夠保留多少這樣的記錄是由 CREATE TABLED ALTER TABLE語(yǔ)句中的INITRANS參數(shù) 設(shè)定的。有些情況下, Oracle 無(wú)法獲得足夠的歷史信息來(lái)判斷某個(gè)數(shù)據(jù)行是否被一個(gè)事務(wù)修改過。當(dāng)大量事務(wù)在短時(shí)間內(nèi)并發(fā)地修改同一數(shù)據(jù)塊就會(huì)出現(xiàn)以上情況。用戶可以為可能被多個(gè)事務(wù)同時(shí)更新相同數(shù)據(jù)塊的表設(shè)置較大的 INITRANS值,以便避免上述情況。設(shè)置了較大的 INITRANS 值后, Oracle 就能為每個(gè)

17、數(shù)據(jù)塊分配足夠的空間來(lái)記錄訪問此數(shù)據(jù)塊的事務(wù)的信息。當(dāng)一個(gè)串行化事務(wù)試圖更新或刪除數(shù)據(jù),而這些數(shù)據(jù)在此事務(wù)開始后被其他事務(wù)修改并進(jìn)行了提交, Oracle 將報(bào)錯(cuò):ORA-08177: 無(wú)法進(jìn)行串行化訪問當(dāng)一個(gè)串行化事務(wù)因?yàn)?無(wú)法進(jìn)行串行化訪問 (Cannot serialize access )錯(cuò)誤而失敗時(shí),應(yīng)用程序可以 選擇以下幾種處理方式:1、將錯(cuò)誤發(fā)生之前的操作提交2、執(zhí)行其他操作(執(zhí)行前可以回滾到事務(wù)內(nèi)的某個(gè)保存點(diǎn))3、撤銷整個(gè)事務(wù)下圖顯示了一個(gè)事務(wù)遇到 無(wú)法進(jìn)行串行化訪問 后, 程序進(jìn)行回滾并嘗試重新執(zhí)行此事務(wù)的例子:SET TRANSACTION ISOLATION在奉行化事務(wù)中

18、,相同的查詢能 野君相同的結(jié)果,即使事翁執(zhí)行 過程中其他并發(fā)事嚼修改了數(shù)據(jù)LEVEL SBfilALIZABLBSELECT UPDATE 在奉行化事務(wù)內(nèi)更新教據(jù),而所 垂斯的數(shù)據(jù)在此事務(wù)開始后皺其 他事號(hào)修改并提支S:Oracle 將報(bào)錯(cuò)IFserialize AccesaTHEN ROLLBACK;LOOP and r&try圖中顯示了一個(gè)串行化事務(wù),其中首先執(zhí)行了兩個(gè)相同的SELECT語(yǔ)句,接著執(zhí)行了一個(gè)UPDATE語(yǔ)句。即便在兩個(gè) SELECT執(zhí)行之間有其他事務(wù)修改了相關(guān)數(shù)據(jù),這兩個(gè) SELECT也能 夠返回相同的結(jié)果。當(dāng) UPDATE語(yǔ)句更新數(shù)據(jù)時(shí),所更新的數(shù)據(jù)在此事務(wù)開始后

19、被其他事務(wù)修 改并提交過,Oracle 將報(bào)錯(cuò)Cannot Serialize Access 。這個(gè)錯(cuò)誤將導(dǎo)致事務(wù)回滾并嘗試重新 執(zhí)行。已提交讀取隔離與用行化隔離的區(qū)別Oracle為應(yīng)用程序開發(fā)者提供了兩種特性相異的事務(wù)隔離級(jí)別。已提交讀取隔 離和串行化隔離都能實(shí)現(xiàn)高度的數(shù)據(jù)一致性及并發(fā)訪問能力。這兩種隔離級(jí)別 都能夠利用Oracle的讀一致性多版本并發(fā)訪問控制模型及獨(dú)有的行級(jí)鎖(row-level locking )技術(shù),從而減少并發(fā)事務(wù)間的競(jìng)爭(zhēng)。應(yīng)用程序開發(fā)者可 以使用這兩種隔離級(jí)別開發(fā)符合現(xiàn)實(shí)要求的應(yīng)用系統(tǒng)。事務(wù)集數(shù)據(jù)一致性我們可以參考以下場(chǎng)景來(lái)研究 Oracle中的兩種隔離級(jí)別:假設(shè)現(xiàn)

20、有一組數(shù)據(jù) 庫(kù)表(或稱為一組數(shù)據(jù)集),一系列讀取表數(shù)據(jù)的查詢,以及一組在任意時(shí)間 提交的事務(wù)。如果一個(gè)數(shù)據(jù)庫(kù)操作(一個(gè)查詢或一個(gè)事務(wù))中所有讀取返回的 數(shù)據(jù)是由同一組已提交事務(wù)寫入的,我們就稱此操作滿足事務(wù)集數(shù)據(jù)一致性(transaction set consistent )。相反,當(dāng)一個(gè)數(shù)據(jù)庫(kù)操作內(nèi)的不同讀取反 映了不同事務(wù)集對(duì)數(shù)據(jù)的修改,此操作就不滿足事務(wù)集數(shù)據(jù)一致性。換句話說(shuō), 一個(gè)不滿足事務(wù)集數(shù)據(jù)一致性的操作所看到的數(shù)據(jù)庫(kù)的狀態(tài)是由不同的已提交 事務(wù)集決定的。在已提交讀取隔離模式下, Oracle 能保證每個(gè)語(yǔ)句的事務(wù)集數(shù)據(jù)一致性。而在串行化隔離模式下, Oracle 能保證每個(gè)事務(wù)的

21、事務(wù)集數(shù)據(jù)一致性。下表總結(jié)了 Oracle 中已提交讀取事務(wù)和串行化事務(wù)的關(guān)鍵區(qū)別。已提交讀取串行化臟寫入( dirty write )不可能不可能臟讀取( dirty read )不可能不可能不可重復(fù)讀取( nonrepeatableread ) 可能不可能不存在讀取(phantom)可能不可能與 ANSI/ISO SQL 92 標(biāo)準(zhǔn)兼容是是唯一的數(shù)據(jù)視圖的使用范圍語(yǔ)句事務(wù)事務(wù)集數(shù)據(jù)一致性語(yǔ)句級(jí)事務(wù)級(jí)行級(jí)鎖是是讀操作( reader ) 阻塞寫操作( writer)否否寫操作阻塞讀操作否否針對(duì)不同數(shù)據(jù)行的寫操作 是否相互阻塞否否針對(duì)相同數(shù)據(jù)行的寫操作 是否相互阻塞是是等待導(dǎo)致阻塞的事務(wù)( b

22、lockingtransaction )是是會(huì)出現(xiàn)無(wú)法進(jìn)行串行化訪問( Cannot serialize access )錯(cuò)誤否是在導(dǎo)致阻塞的事務(wù)結(jié)束后 將發(fā)生錯(cuò)誤否否在導(dǎo)致阻塞的事務(wù)提交后 將發(fā)生錯(cuò)誤選擇隔離級(jí)別已提交讀取隔離對(duì)于大多數(shù)應(yīng)用來(lái)說(shuō),已提交讀取隔離是最適合的事務(wù)隔離級(jí)別。已提交讀取隔離能夠最大限度地保證數(shù)據(jù)并發(fā)性,但在某些事務(wù)中可能會(huì)出現(xiàn)不可重復(fù)讀取或不存在讀取,因此略微增加了出現(xiàn)數(shù)據(jù)不一致性的風(fēng)險(xiǎn)。在對(duì)性能要求較高的系統(tǒng)中, 為了應(yīng)對(duì)較高的事務(wù)到來(lái)率( transaction arrivalrate ),系統(tǒng)需要提供更大的事務(wù)吞吐量和更快的響應(yīng)速度,此時(shí)采用串行化隔離可能難以實(shí)現(xiàn)。還有一類系統(tǒng),其事務(wù)到來(lái)率較低,出現(xiàn)不可重復(fù)讀取或不存在讀取的風(fēng)險(xiǎn)也較低。以上兩種系統(tǒng)均適合采用已提交讀取隔離。Oracle 的已提交讀取隔離能夠確保所有查詢的事務(wù)集數(shù)據(jù)一致性。即查詢獲得的數(shù)據(jù)是處于一致性狀態(tài)下的。因此在O

溫馨提示

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

評(píng)論

0/150

提交評(píng)論