青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Shuffy

不斷的學(xué)習(xí),不斷的思考,才能不斷的進(jìn)步.Let's do better together!
posts - 102, comments - 43, trackbacks - 0, articles - 19

作者 James Leigh 譯者 曹如進(jìn) 發(fā)布于 2009年11月11日 上午2時(shí)18分

 

ACID性質(zhì)是數(shù)據(jù)庫(kù)理論中的奠基石,它定義了一個(gè)理論上可靠數(shù)據(jù)庫(kù)所必須具備的四個(gè)性質(zhì):原子性,一致性,隔離性和持久性。雖然這四個(gè)性質(zhì)都很重要,但是隔離性最為靈活。大部分?jǐn)?shù)據(jù)庫(kù)都提供了一些可供選擇的隔離級(jí)別,且現(xiàn)在許多庫(kù)都增加了附加層來(lái)創(chuàng)建顆粒度更細(xì)的隔離。隔離級(jí)別應(yīng)用范圍如此之廣主要是因?yàn)榉艑捀綦x約束往往會(huì)使得可擴(kuò)展性和性能提高幾個(gè)數(shù)量級(jí)。

串行一致性是可用的最古老最高的隔離級(jí)別之一,它之所以倍受青睞是因?yàn)槠涮峁┑暮?jiǎn)單編程模型,即每次僅能有一個(gè)事務(wù)對(duì)給定的資源進(jìn)行操作,這就避免了很多潛在的資源問(wèn)題。盡管如此,大部分應(yīng)用程序(尤其是Web應(yīng)用程序)都不采用這種級(jí)別非常高的隔離,因?yàn)閺慕K端用戶的角度來(lái)看這是不切實(shí)際的-任何一個(gè)擁有大量用戶群的應(yīng)用程序在訪問(wèn)共享資源時(shí)都將會(huì)有幾分鐘的延遲,而這會(huì)使得用戶量迅速減少。弱一致性和最終一致性在大規(guī)模分布式數(shù)據(jù)源中,例如Web中,隨處可見。好幾個(gè)成功的大型Web應(yīng)用(例如,eBay和Amazon)都顯示出樂觀的(optimistic)弱一致性要比傳統(tǒng)悲觀的(pessimistic)機(jī)制在擴(kuò)展性方面好得多。本文將一窺八種不同的隔離級(jí)別。學(xué)會(huì)適當(dāng)?shù)姆艑挃?shù)據(jù)一致性的約束,你可以在自己的應(yīng)用程序中使用這八種隔離級(jí)別來(lái)獲得更好的性能和可擴(kuò)展性。

并發(fā)控制的主要目標(biāo)是為了確保事務(wù)被隔離且不會(huì)影響到其他事務(wù)。要達(dá)到高級(jí)別的隔離需以犧牲性能為代價(jià)。并發(fā)控制可以用悲觀或者樂觀的機(jī)制來(lái)實(shí)現(xiàn)。大部分關(guān)系型數(shù)據(jù)庫(kù)都使用了悲觀機(jī)制來(lái)實(shí)現(xiàn)寫入優(yōu)化。悲觀機(jī)制采用了鎖,通過(guò)使用鎖它可以阻塞一些操作或者進(jìn)行某些形式的沖突檢測(cè)。當(dāng)一個(gè)表格,頁(yè)面或是行被修改后,悲觀機(jī)制中的鎖可以用來(lái)阻塞其他潛在的訪問(wèn)修改資源的事務(wù)。然而,樂觀機(jī)制并不采用任何鎖,它僅僅依賴于沖突檢測(cè)來(lái)維護(hù)事務(wù)隔離。樂觀機(jī)制采用的沖突檢測(cè)可以允許所有的讀操作,并在事務(wù)結(jié)束時(shí)檢驗(yàn)其一致性。如果檢測(cè)到?jīng)_突,那么事務(wù)會(huì)進(jìn)行回滾或重做。大部分web服務(wù)器都是讀入優(yōu)化,因此使用了樂觀機(jī)制。通過(guò)允許所有的讀入操作,樂觀機(jī)制既可以保證很高的讀寫吞吐量,也可以在資源不是一直改變的情況下保證數(shù)據(jù)的一致性。

下面列出的隔離級(jí)別是用來(lái)幫助Web開發(fā)人員更好的理解他們編程模型中放置的約束,幫助系統(tǒng)架構(gòu)師和開發(fā)人員共同討論如何在保持必要的數(shù)據(jù)完整性的同時(shí)選擇最有效的隔離級(jí)別。它們按照最少隔離(未提交讀)到最多隔離(串行化)的順序列出。

1、未提交讀(Read Uncommitted)

未提交讀隔離級(jí)別需要事務(wù)間很少的隔離。每一個(gè)讀操作都能看到事務(wù)中等待的寫操作(臟讀)。然而已經(jīng)提交的寫操作必須要有一個(gè)串行順序來(lái)防止臟寫。悲觀機(jī)制會(huì)阻塞有沖突的寫操作直到其他寫操作已經(jīng)被提交或已經(jīng)回滾。樂觀機(jī)制不會(huì)鎖住這些操作,它會(huì)允許所有的操作都通過(guò)。如果一個(gè)連接進(jìn)行了回滾,那么接下來(lái)修改同一塊數(shù)據(jù)的其他操作也會(huì)被回滾。在這種級(jí)別中,共享緩沖可以不加驗(yàn)證的進(jìn)行使用。這種隔離級(jí)別最好在不需要事務(wù)(比如只讀的數(shù)據(jù)集),或者事務(wù)只在獨(dú)占數(shù)據(jù)庫(kù)時(shí)才修改的情況下使用。

例子:一個(gè)只在離線情況下更新的檔案數(shù)據(jù)庫(kù),或者不在事務(wù)中使用的審核/登陸(audit/logging)表。

2、已提交讀(Read Committed)

已提交讀可以讀取系統(tǒng)中任何已經(jīng)提交的狀態(tài),并且可以不加驗(yàn)證(混合狀態(tài))的進(jìn)行緩沖,只需當(dāng)前連接中發(fā)生的改變能夠反映到結(jié)果中即可。悲觀機(jī)制將其實(shí)現(xiàn)為單調(diào)視圖。樂觀事務(wù)則隔離存儲(chǔ)所有的改動(dòng),使得它們直到提交后才可用。讀已提交使用一個(gè)非常樂觀的機(jī)制,它推遲寫入所有的變化直到事務(wù)被提交為止。這種形式的樂觀隔離可以在不阻塞讀操作的情況下實(shí)現(xiàn)復(fù)雜的寫入操作,并且它沒有驗(yàn)證模式。共享緩沖只能在已提交的狀態(tài)中使用。這種隔離級(jí)別最好在結(jié)果可以使用舊值,且事務(wù)只能用于寫入操作的情況下使用。

例子:一個(gè)不必顯示當(dāng)前最新帖子的在線論壇,且它的帖子間數(shù)據(jù)不相沖突。

3、單調(diào)視圖(Monotonic View )

單調(diào)視圖是對(duì)讀已提交的一個(gè)擴(kuò)展,它其中的事務(wù)在執(zhí)行時(shí)會(huì)觀察數(shù)據(jù)庫(kù)中一個(gè)單調(diào)上升的狀態(tài)。在這種級(jí)別中,如果有明顯的寫入事務(wù),那么悲觀事務(wù)會(huì)在讀入操作中被阻塞。樂觀事務(wù)會(huì)像在讀已提交中一樣操作,隔離保存所有的改動(dòng),并且會(huì)驗(yàn)證它們的緩沖以確保其仍然合法。這種級(jí)別可以定期地同步數(shù)據(jù)庫(kù)副本,且最好在不需要事務(wù)或者僅存在寫操作事務(wù)的情況下使用。

例子:一個(gè)僅能由一個(gè)人來(lái)修改的用戶偏好表。

4、快照讀取(Snapshot Reads)

快照讀取擴(kuò)展了單調(diào)視圖,它可以保證查詢結(jié)果都能反映到數(shù)據(jù)庫(kù)一致的快照中。悲觀機(jī)制會(huì)在讀操作時(shí)阻礙其他影響結(jié)果的寫入操作。樂觀機(jī)制則允許其他的寫入操作,并通知讀取事務(wù)某部分已經(jīng)發(fā)生改變并進(jìn)行回滾。想要實(shí)現(xiàn)一個(gè)樂觀機(jī)制,必須在讀操作結(jié)束之前驗(yàn)證是否有什么并行的寫入操作修改了結(jié)果,如果有的話,那么結(jié)果可能會(huì)重做或回滾。這個(gè)檢驗(yàn)過(guò)程可能只是簡(jiǎn)單的檢查同一張表中是否出現(xiàn)了寫入操作,或者只是檢查改動(dòng)的查詢結(jié)果。樂觀隔離級(jí)別可以很輕松地檢測(cè)出沖突,并且在允許并發(fā)讀入操作的過(guò)程中,支持寫入操作。這種級(jí)別只要能夠讀取到快照,便可以定期地同步數(shù)據(jù)庫(kù)副本。最好在寫入操作很少,不想與讀入操作沖突,且查詢結(jié)果需要一致性的時(shí)候使用這種隔離級(jí)別。

例子::一個(gè)查詢比修改頻繁,且只保留最新值的貨幣換位表或者查詢表。

5、游標(biāo)穩(wěn)定性(Cursor Stability)

游標(biāo)穩(wěn)定性隔離擴(kuò)展了讀已提交,并且是許多關(guān)系型數(shù)據(jù)默認(rèn)的隔離級(jí)別。在這種隔離級(jí)別中,悲觀事務(wù)如果在一個(gè)單獨(dú)的語(yǔ)句中執(zhí)行的話,必須得指定它將修改的記錄。這通常可以在"SELECT"查詢后附加“FOR UPDATE”關(guān)鍵字來(lái)實(shí)現(xiàn)。在這種情況下,其他沖突的讀寫悲觀事務(wù)都將被阻塞直到該事務(wù)結(jié)束為止。樂觀事務(wù)會(huì)跟蹤提交時(shí)被驗(yàn)證的所有修改記錄/實(shí)體的版本號(hào)。這是一種很流行的樂觀隔離級(jí)別,因此被所有的主流對(duì)象關(guān)系映射庫(kù)支持。在Java持久性API中,可以使用FLUSH_ON_COMMIT(盡管查詢可能不影響本地改動(dòng))來(lái)接近達(dá)到這種級(jí)別,且如果檢測(cè)到?jīng)_突的話,可以拋出OptimisticLockException 異常。這種隔離也同樣可以用在HTTP頭域的If-Match或者 If-Unmodified-Since中,它可以用來(lái)在更新前對(duì)比上一個(gè)資源的版本或者時(shí)間戳。這種級(jí)別最好在實(shí)體由外部信息(不從數(shù)據(jù)庫(kù)中讀取)更改,或者改動(dòng)不會(huì)彼此覆蓋的情況下使用。

例子:一個(gè)共享的公司目錄或者一個(gè)wiki。

6、可重復(fù)讀取(Repeatable Read)

可重復(fù)讀取級(jí)別擴(kuò)展了游標(biāo)穩(wěn)定性,它保證事務(wù)內(nèi)的任何數(shù)據(jù)在事務(wù)過(guò)程中都不會(huì)被修改或者移除。悲觀事務(wù)需要讀取所有記錄上的鎖,并阻塞其他服務(wù)來(lái)修改這些記錄。樂觀事務(wù)則會(huì)跟蹤所有的記錄或者實(shí)體,并檢查它們是否在提交時(shí)被修改過(guò)。這種級(jí)別最好在實(shí)體狀態(tài)能夠影響其他實(shí)體,或者事務(wù)由讀寫操作構(gòu)成的情況下使用。

例子:一個(gè)訂單跟蹤數(shù)據(jù)庫(kù),它從一個(gè)實(shí)體中讀取值并用它來(lái)計(jì)算其他的實(shí)體值。

7、快照隔離(Snapshot Isolation)

快照隔離擴(kuò)展了快照讀取和可重復(fù)讀取,它保證事務(wù)中所有進(jìn)行的讀操作都能看到數(shù)據(jù)庫(kù)中一致的快照。事務(wù)執(zhí)行的的任何讀操作都會(huì)有相同的結(jié)果,而不管它們?cè)谑聞?wù)中執(zhí)行的早晚。這和可重復(fù)讀取不同,因?yàn)榭煺崭綦x能夠防止幻讀(查詢結(jié)果不斷變化)。許多關(guān)系型數(shù)據(jù)庫(kù)采用多版本并發(fā)控制(也可以叫做 SERIALIZABLE)來(lái)支持這種級(jí)別,實(shí)現(xiàn)方法是通過(guò)鎖和沖突檢測(cè)的組合。在這種級(jí)別中,考慮到它可能與悲觀機(jī)制或者樂觀機(jī)制相沖突,因此事務(wù)一定要做好回滾的準(zhǔn)備。悲觀機(jī)制會(huì)通過(guò)鎖住資源來(lái)嘗試減少?zèng)_突的機(jī)會(huì),但是必須在事務(wù)提交后將這些改動(dòng)合并。樂觀機(jī)制也會(huì)使用多版本并發(fā)控制,但是它不會(huì)阻塞其他可能產(chǎn)生潛在沖突操作的事務(wù),反而是將沖突的事務(wù)進(jìn)行回滾。這種級(jí)別的隔離最好在事務(wù)可以讀取和修改多個(gè)記錄的情況下使用。

例子:一個(gè)基于系統(tǒng)狀態(tài)規(guī)則的工作流系統(tǒng)。

8、可串行性(Serializability)

串行性是快照隔離的擴(kuò)展,它要求所有的事務(wù)都必須一個(gè)接著一個(gè)的出現(xiàn),就好比它們被串行化過(guò)一樣。悲觀機(jī)制需要鎖住所有評(píng)估過(guò)的查詢,以防止寫入操作影響這些結(jié)果。而樂觀機(jī)制則跟蹤所有評(píng)估過(guò)的查詢,并在事務(wù)結(jié)束時(shí)使用一個(gè)后向驗(yàn)證或前向驗(yàn)證的模式來(lái)檢查是否有并行寫入操作影響了并行讀入操作,如果有的話,它會(huì)將沖突事務(wù)外的所有事務(wù)進(jìn)行回滾。在這種隔離級(jí)別中,任何提交事務(wù)都不會(huì)改變系統(tǒng)的表征狀態(tài)。最好在需要完整數(shù)據(jù)一致性的情況下使用這個(gè)級(jí)別的隔離。

例子:一個(gè)進(jìn)行范圍查詢來(lái)計(jì)算新值的賬目系統(tǒng)。

總結(jié)

下面是本文提到的隔離級(jí)別的匯總表,它可以幫助你找到最適合你應(yīng)用程序的級(jí)別。

事務(wù)在不同隔離級(jí)別中可能的沖突類型:

  臟寫 臟讀 混合狀態(tài) 不一致讀 覆寫 不可重復(fù) 幻讀 不一致性
未提交讀 不可以 可以 可以 可以 可以 可以 可以 可以
已提交讀 不可以 不可以 可以 可以 可以 可以 可以 可以
單調(diào)視圖 不可以 不可以 不可以 可以 可以 可以 可以 可以
快照讀取 不可以 不可以 不可以 不可以d 可以 可以 可以 可以
游標(biāo)穩(wěn)定性 不可以 不可以 可以 可以 不可以 可以 可以 可以
可重復(fù)讀取 不可以 不可以 可以 可以 不可以 不可以 可以 可以
快照隔離 不可以 不可以 不可以 不可以 不可以 不可以 不可以 可以
可串行性 不可以 不可以 不可以 不可以 不可以 不可以 不可以 不可以

不同隔離級(jí)別的最佳前提:

  緩沖 數(shù)據(jù)同步 樂觀沖突模式 建議操作 例子
未提交讀 允許緩沖 間歇的 檢測(cè)臟寫 不能并發(fā)讀寫 檔案
已提交讀 允許緩沖 間歇的 沒有沖突檢測(cè) 單調(diào)的讀/寫 Web論壇
單調(diào)視圖 必須被驗(yàn)證 周期的 沒有沖突檢測(cè) 組合讀入 用戶偏好
快照讀取 必須被驗(yàn)證 周期的 對(duì)比讀入與修改內(nèi)容 一致性讀入 查詢表
游標(biāo)穩(wěn)定性 允許緩沖 間歇的 對(duì)比修改的實(shí)體版本 CRUD服務(wù) 目錄
可重復(fù)讀取 允許緩沖 間歇的 對(duì)比讀入的實(shí)體版本 讀/寫實(shí)體 訂單跟蹤
快照隔離 必須被驗(yàn)證 周期的 對(duì)比讀入的實(shí)體版本 同步實(shí)體 工作流
可串行性 必須被驗(yàn)證 完整同步 對(duì)比查詢與修改內(nèi)容 完善數(shù)據(jù)一致性 賬目

數(shù)據(jù)一致性在數(shù)據(jù)庫(kù)應(yīng)用程序中至關(guān)重要-它允許開發(fā)者在分布式環(huán)境下使用數(shù)據(jù)。盡管強(qiáng)一致性級(jí)別如可串行性提供了一個(gè)簡(jiǎn)單的編程模型,但是它們會(huì)導(dǎo)致開銷 過(guò)大,操作阻塞或者事務(wù)回滾,這對(duì)于很多應(yīng)用程序來(lái)說(shuō)都是不必要的。如果有其他問(wèn)題的話,可以使用更加適當(dāng)?shù)母綦x級(jí)別來(lái)幫助開發(fā)人員和系統(tǒng)架構(gòu)師,讓他們 在保持性能和開銷平衡的前提下更好的理解數(shù)據(jù)一致性的需求。

查看英文原文:Eight Isolation Levels Every Web Developer Should Know

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲高清视频一区二区| 欧美激情视频一区二区三区免费| 1000部精品久久久久久久久| 欧美色精品在线视频| 欧美成va人片在线观看| 欧美亚洲一区二区在线| 最新亚洲视频| 亚洲一区二区三| 欧美jizz19性欧美| 亚洲精品国产拍免费91在线| 欧美中文在线字幕| 亚洲国产精品传媒在线观看 | 亚洲精品少妇30p| 欧美日韩国产一区二区| 国产麻豆成人精品| 亚洲第一精品电影| 亚洲经典自拍| 欧美午夜精品久久久久久人妖| 亚洲综合99| 久久久国产一区二区| 国产一区激情| 久久婷婷国产综合尤物精品| 欧美一区二区观看视频| 极品尤物一区二区三区| 亚洲小少妇裸体bbw| 性视频1819p久久| 99re66热这里只有精品4| 欧美国产日韩一区| 国产精品毛片一区二区三区| 欧美国产日韩a欧美在线观看| 亚洲高清一区二区三区| 性做久久久久久久免费看| 亚洲卡通欧美制服中文| 亚洲欧美国产77777| 亚洲国产人成综合网站| 亚洲一区二区三区激情| 亚洲电影一级黄| 亚洲最新色图| 国产日韩欧美一区| 亚洲一区免费看| 99精品国产高清一区二区| 久久综合中文色婷婷| 亚洲乱码国产乱码精品精可以看| 国产精品久久久对白| 欧美激情精品久久久久| 狠狠色伊人亚洲综合成人| 99re6热只有精品免费观看| 亚洲欧美区自拍先锋| 黄色影院成人| 欧美日韩一区二区三区在线看| 午夜日韩激情| 亚洲日本欧美日韩高观看| 欧美亚洲综合久久| 亚洲国产福利在线| 欧美日韩国产综合新一区| 久久国产福利| 日韩视频在线观看免费| 男男成人高潮片免费网站| 亚洲国产精品日韩| 亚洲第一在线视频| 亚洲激情影院| 亚洲电影观看| 国产欧美日韩一区二区三区在线观看 | 日韩视频中午一区| 亚洲精品中文字| 国产在线视频不卡二| 免费成人黄色av| 欧美在线看片| 欧美一区二区三区免费在线看| 这里是久久伊人| 一区二区三区高清| 一区二区三区 在线观看视频| 91久久精品网| 亚洲精品美女| 中文精品视频| 亚洲欧美另类国产| 久久午夜国产精品| 欧美日韩国产一级片| 国产九九视频一区二区三区| 欧美区一区二区三区| 欧美成人dvd在线视频| 久久亚洲国产成人| 欧美国产综合视频| 国产精品久久久久久久久久妞妞 | 亚洲欧洲日韩在线| 亚洲精品视频在线观看免费| 亚洲开发第一视频在线播放| 亚洲乱码精品一二三四区日韩在线| 亚洲精品国产欧美| 久久九九精品| 国产乱理伦片在线观看夜一区| 极品少妇一区二区| 亚洲素人在线| 亚洲国产欧美在线人成| 在线一区亚洲| 欧美天天影院| 亚洲国产精品va在线看黑人| 国产亚洲欧洲一区高清在线观看 | 一本久久综合亚洲鲁鲁五月天| 亚洲一区区二区| 欧美大片一区二区| 亚洲高清资源| 亚洲精品乱码久久久久| 免费91麻豆精品国产自产在线观看| 一本一本大道香蕉久在线精品| 美国成人直播| 国模私拍视频一区| 99这里只有久久精品视频| 欧美午夜剧场| 国产精品网站在线播放| 欧美一二区视频| 亚洲午夜伦理| 国产精品成人一区二区网站软件| 亚洲高清免费视频| 欧美亚洲一区二区三区| 亚洲欧美日本国产有色| 国产一区二区三区黄视频| 亚洲视频在线一区| 亚洲午夜在线视频| 国产精品一级久久久| 夜夜精品视频一区二区| 亚洲日本一区二区三区| 欧美高清视频在线观看| 久久午夜视频| 精品96久久久久久中文字幕无| 亚洲日本电影| 亚洲精品国精品久久99热一| 久久国产欧美日韩精品| 欧美大色视频| 国产精品日韩欧美一区二区| 国产精品99久久久久久宅男| 亚洲性视频h| 在线观看日韩| 国产精品av久久久久久麻豆网| 亚洲综合不卡| 欧美激情第二页| 亚洲一区二区三区四区中文| 国产欧美一级| 久久亚洲综合网| 日韩视频不卡中文| 亚洲自拍啪啪| 在线电影欧美日韩一区二区私密| 两个人的视频www国产精品| 亚洲一区二区三区精品在线| 亚洲福利视频在线| 亚洲激情电影在线| 亚洲高清成人| 在线中文字幕日韩| 亚洲狼人综合| 欧美二区在线| 午夜老司机精品| 国色天香一区二区| 一区二区毛片| 久久久久免费观看| 久久精品夜色噜噜亚洲aⅴ| 一区二区三区四区在线| 国产欧美一区二区三区在线老狼| 亚洲少妇中出一区| 国产麻豆一精品一av一免费| 欧美中文在线视频| 久久久久久夜精品精品免费| 在线日韩欧美| 久久精品一区| 欧美一区二区视频网站| 久久综合网hezyo| 亚洲国产精品专区久久| 在线一区观看| 欧美成年视频| 狠狠综合久久av一区二区小说 | 欧美激情一区二区在线| av成人免费| 在线精品一区| 国产精品久久国产精品99gif| 在线不卡欧美| 欧美系列一区| 中文精品视频| 亚洲一区在线播放| 一区二区国产在线观看| 欧美在线日韩精品| 亚洲高清久久久| 亚洲一区日韩| 亚洲三级电影在线观看 | 免费在线国产精品| 一本色道久久综合亚洲精品高清| 亚洲欧美国产一区二区三区| 亚洲国产精品一区二区第一页| 国产精品99久久99久久久二8 | 亚洲免费av电影| 亚洲高清不卡av| 欧美日韩色综合| 久久久久国产精品午夜一区| 国外精品视频| 欧美日韩视频在线一区二区观看视频| 最新国产成人av网站网址麻豆 | 蜜臀av在线播放一区二区三区| 国产精品久久久| 久久久夜精品| 国产精品一区视频| 99国产精品久久久久久久| 亚洲国产网站|