国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

事務(wù)隔離等級

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-09 15:46:36
文檔

事務(wù)隔離等級

事務(wù)隔離等級:This article needs additional citations for verification . Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.(2009年1月) 看到wikipedia中文關(guān)于數(shù)據(jù)庫相關(guān)的幾個 經(jīng)典 條 This article
推薦度:
導(dǎo)讀事務(wù)隔離等級:This article needs additional citations for verification . Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.(2009年1月) 看到wikipedia中文關(guān)于數(shù)據(jù)庫相關(guān)的幾個 經(jīng)典 條 This article

This article needs additional citations for verification . Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.(2009年1月) 看到wikipedia中文關(guān)于數(shù)據(jù)庫相關(guān)的幾個 經(jīng)典 條

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.(2009年1月)

看到wikipedia中文關(guān)于數(shù)據(jù)庫相關(guān)的幾個經(jīng)典條目有點(diǎn)老舊,尤其和英文條目相比。確定開始翻譯其中幾篇,先從事務(wù)隔離等級開始。格式采用維基Sandbox發(fā)布后的格式。翻譯完后自己校對過幾遍,質(zhì)量還可以。:-)
User:Pinuo
From Wikipedia, the free encyclopedia
Jump to: navigation, search
事務(wù)隔離(isolation)定義了數(shù)據(jù)庫系統(tǒng)中一個操作產(chǎn)生的影響什么時候以哪種方式可以對其他并發(fā)操作可見。隔離是事務(wù)ACID(原子性、一致性性、隔離性、持久性)四大屬性中的一個重要屬性。
Contents
1并發(fā)控制(Concurrency control)2隔離級別(Isolation levels)
2.1可序列化(Serializable)2.2可重復(fù)讀(Repeatable reads)2.3授權(quán)讀(Read committed)2.4未授權(quán)讀(Read uncommitted) 3默認(rèn)隔離級別4讀現(xiàn)象(Read phenomena)
4.1臟讀(Dirty reads (Uncommitted Dependency))4.2不可重復(fù)讀(non-repeatable read)4.3幻影讀(phantom read) 5隔離級別、讀現(xiàn)象和鎖(Isolation Levels, Read Phenomena and Locks)
5.1隔離級別vs讀現(xiàn)象(Isolation Levels vs Read Phenomena)5.2隔離級別vs鎖持續(xù)時間(Isolation Levels vs Lock Duration) 6參照7相關(guān)條目8外部鏈接

并發(fā)控制(Concurrency control)

并發(fā)控制描述了數(shù)據(jù)庫處理隔離以保證數(shù)據(jù)正確性的機(jī)制。為了保證并行事務(wù)執(zhí)行的準(zhǔn)確執(zhí)行數(shù)據(jù)庫和存儲引擎在設(shè)計(jì)的時候著重強(qiáng)調(diào)了這一點(diǎn)。典型的事務(wù)相關(guān)機(jī)制限制數(shù)據(jù)的訪問順序(執(zhí)行調(diào)度)以滿足可序列化 和可恢復(fù)性。限制數(shù)據(jù)訪問意味著降低了執(zhí)行的性能,并發(fā)控制機(jī)制就是要保證在滿足這些限制的前提下提供盡可能高的性能。經(jīng)常在不損害正確性的情況下,為了達(dá)到更好的性能,可序列化的的要求會減低一些,但是為了避免數(shù)據(jù)一致性的破壞,可恢復(fù)性必須保證。

兩階段鎖是關(guān)系數(shù)據(jù)庫中最常見的提供了可序列化 和可恢復(fù)性的并發(fā)控制機(jī)制,為了訪問一個數(shù)據(jù)庫對象,事務(wù)首先要獲得這個對象的鎖。對于不同的訪問類型(如對對象的讀寫操作)和鎖的類型,如果另外一個事務(wù)正持有這個對象的鎖,獲得鎖的過程會被阻塞或者延遲。

隔離級別(Isolation levels)

在數(shù)據(jù)庫事務(wù)的ACID四個屬性中,隔離性是一個最常放松的一個。為了獲取更高的隔離等級,數(shù)據(jù)庫系統(tǒng)的鎖機(jī)制或者多版本并發(fā)控制機(jī)制都會影響并發(fā)。應(yīng)用軟件也需要額外的邏輯來使其正常工作。

很多DBMS定 義了不同的“事務(wù)隔離等級”來控制鎖的程度。在很多數(shù)據(jù)庫系統(tǒng)中,多數(shù)的數(shù)據(jù)庫事務(wù)都避免高等級的隔離等級(如可序列化)從而減少對系統(tǒng)的鎖定開銷。程序 員需要小心的分析數(shù)據(jù)庫訪問部分的代碼來保證隔離級別的降低不會造成難以發(fā)現(xiàn)的代碼bug。相反的,更高的隔離級別會增加死鎖發(fā)生的幾率,同樣需要編程過程中去避免。

ANSI/ISOSQL定義的標(biāo)準(zhǔn)隔離級別如下。

可序列化(Serializable)

最高的隔離級別。

在基于鎖機(jī)制并發(fā)控制的DBMS實(shí)現(xiàn)可序列化要求在選定對象上的讀鎖和寫鎖保持直到事務(wù)結(jié)束后才能釋放。在SELECT 的查詢中使用一個“WHERE”子句來描述一個范圍時應(yīng)該獲得一個“范圍鎖(range-locks)”。這種機(jī)制可以避免“幻影讀(phantom reads)”現(xiàn)象。

當(dāng)采用不基于鎖的并發(fā)控制時不用獲取鎖。但當(dāng)系統(tǒng)探測到幾個并發(fā)事務(wù)有“寫沖突”的時候,只有其中一個是允許提交的。這種機(jī)制的詳細(xì)描述見“'快照隔離”

可重復(fù)讀(Repeatable reads)

在可重復(fù)讀(REPEATABLE READS)隔離級別中,基于鎖機(jī)制并發(fā)控制的DBMS需要對選定對象的讀鎖(read locks)和寫鎖(write locks)一直保持到事務(wù)結(jié)束,但不要求“范圍鎖(range-locks)”,因此可能會發(fā)生“幻影讀(phantom reads)”

授權(quán)讀(Read committed)

在授權(quán)讀(READ COMMITTED)級別中,基于鎖機(jī)制并發(fā)控制的DBMS需要對選定對象的寫鎖(write locks)一直保持到事務(wù)結(jié)束,但是讀鎖(read locks)在SELECT操作完成后馬上釋放(因此“不可重復(fù)讀”現(xiàn)象可能會發(fā)生,見下面描述)。和前一種隔離級別一樣,也不要求“范圍鎖(range-locks)”。

簡而言之,授權(quán)讀這種隔離級別保證了讀到的任何數(shù)據(jù)都是提交的數(shù)據(jù),避免讀到中間的未提交的數(shù)據(jù),臟讀(dirtyreads)。但是不保證事務(wù)重新讀的時候能讀到相同的數(shù)據(jù),因?yàn)樵诿看螖?shù)據(jù)讀完之后其他事務(wù)可以修改剛才讀到的數(shù)據(jù)。

未授權(quán)讀(Read uncommitted)

未授權(quán)讀(READ UNCOMMITTED)是最低的隔離級別。允許臟讀(dirty reads),事務(wù)可以看到其他事務(wù)“尚未提交”的修改。

通過比低一級的隔離級別要求更多的限制,高一級的級別提供更強(qiáng)的隔離性。標(biāo)準(zhǔn)允許事務(wù)運(yùn)行在更強(qiáng)的事務(wù)隔離級別上。(如在可重復(fù)讀(REPEATABLE READS)隔離級別上執(zhí)行授權(quán)讀(READ COMMITTED)的事務(wù)是沒有問題的)

默認(rèn)隔離級別

不同的DBMS默認(rèn)隔離級別也不同。多少數(shù)據(jù)庫允許用戶設(shè)置隔離級別。有些DBMS在執(zhí)行一個SELECT語句時使用額外的語法來獲取鎖(如SELECT ... FOR UPDATE來獲得在訪問的數(shù)據(jù)行上的排他鎖)

讀現(xiàn)象(Read phenomena)

ANSI/ISO 標(biāo)準(zhǔn)SQL 92涉及三種不同的一個事務(wù)讀取另外一個事務(wù)可能修改的數(shù)據(jù)的“讀現(xiàn)象”。

下面的例子中,兩個事務(wù),事務(wù)1執(zhí)行語句1。接著,事務(wù)2執(zhí)行語句2并且提交,最后事務(wù)1再執(zhí)行語句1. 查詢使用如下的數(shù)據(jù)表。

users

id

name

age

1

Joe

20

2

Jill

25

臟讀(Dirty reads (UncommittedDependency))

當(dāng)一個事務(wù)允許讀取另外一個事務(wù)修改但未提交的數(shù)據(jù)時,就可能發(fā)生臟讀(dirty reads)。

臟讀(dirty reads)和不可重復(fù)讀(non-repeatablereads)類似。事務(wù)2沒有提交造成事務(wù)1的語句1兩次執(zhí)行得到不同的結(jié)果集。在未授權(quán)讀(READ UNCOMMITTED)隔離級別唯一禁止的是更新混亂,即早期的更新可能出現(xiàn)在后來更新之前的結(jié)果集中。

在我們的例子中,事務(wù)2修改了一行,但是沒有提交,事務(wù)1讀了這個沒有提交的數(shù)據(jù)。現(xiàn)在如果事務(wù)2回滾了剛才的修改或者做了另外的修改的話,事務(wù)1中查到的數(shù)據(jù)就是不正確的了。

事務(wù) 1

事務(wù) 2

/* Query 1 */

SELECT age FROM users WHERE id = 1;

/* will read 20 */

/* Query 2 */

UPDATE users SET age = 21 WHERE id = 1;

/* No commit here */

/* Query 1 */

SELECT age FROM users WHERE id = 1;

/* will read 21 */

ROLLBACK; /* lock-based DIRTY READ */

在這個例子中,事務(wù)2回滾后就沒有id是1,age是21的數(shù)據(jù)行了。

不可重復(fù)讀(non-repeatable read)

在一次事務(wù)中,當(dāng)一行數(shù)據(jù)獲取兩遍得到不同的結(jié)果表示發(fā)生了“不可重復(fù)讀(non-repeatableread)”.

在基于鎖的并發(fā)控制中“不可重復(fù)讀(non-repeatable read)”現(xiàn)象發(fā)生在當(dāng)執(zhí)行SELECT 操作時沒有獲得讀鎖(read locks)或者SELECT操作執(zhí)行完后馬上釋放了讀鎖;多版本并發(fā)控制中當(dāng)沒有要求一個提交沖突的事務(wù)回滾也會發(fā)生“不可重復(fù)讀(non-repeatable read)”現(xiàn)象。

事務(wù) 1

事務(wù) 2

/* Query 1 */

SELECT * FROM users WHERE id = 1;

/* Query 2 */

UPDATE users SET age = 21 WHERE id = 1;

COMMIT; /* in multiversion concurrency

control, or lock-based READ COMMITTED */

/* Query 1 */

SELECT * FROM users WHERE id = 1;

COMMIT; /* lock-based REPEATABLE READ */

在這個例子中,事務(wù)2提交成功,因此他對id為1的行的修改就對其他事務(wù)可見了。但是事務(wù)1在此前已經(jīng)從這行讀到了另外一個“age”的值。在可序列化 (SERIALIZABLE)和可重復(fù)讀(REPEATABLE READS)的隔離級別,數(shù)據(jù)庫在第二次SELECT請求的時候應(yīng)該返回事務(wù)2更新之前的值。在授權(quán)讀(READ COMMITTED)和未授權(quán)讀(READ UNCOMMITTED),返回的是更新之后的值,這個現(xiàn)象就是不可重復(fù)讀(non-repeatableread)。

有兩種策略可以避免不可重復(fù)讀(non-repeatable read)。一個是要求事務(wù)2延遲到事務(wù)1提交或者回滾之后再執(zhí)行。這種方式實(shí)現(xiàn)了T1,T2 的串行化調(diào)度。串行化調(diào)度可以支持可重復(fù)讀(repeatablereads)。

另一種策略是多版本并發(fā)控制。為了得到更好的并發(fā)性能,允許事務(wù)2先提交。但因?yàn)槭聞?wù)1在事務(wù)2之前開始,事務(wù)1必須在其開始執(zhí)行時間點(diǎn)的數(shù)據(jù)庫的快照上面操作。當(dāng)事務(wù)1最終提交時候,數(shù)據(jù)庫會檢查其結(jié)果是否等價于T1, T2串行調(diào)度。如果等價,則允許事務(wù)1提交,如果不等價,事務(wù)1需要回滾并拋出個串行化失敗的錯誤。

使用基于鎖的并發(fā)控制,在可重復(fù)讀(REPEATABLE READS)的隔離級別中,ID=1的行會被鎖住,在事務(wù)1提交或回滾前一直阻塞語句2的執(zhí)行。在授權(quán)讀(READ COMMITTED)的級別,語句1第二次執(zhí)行,age已經(jīng)被修改了。

在多版本并發(fā)控制機(jī)制下,可序列化(SERIALIZABLE)級別,兩次SELECT語句讀到的數(shù)據(jù)都是事務(wù)1開始的快照,因此返回同樣的數(shù)據(jù)。但是,如果事務(wù)1試圖UPDATE這行數(shù)據(jù),事務(wù)1會被要求回滾并拋出一個串行化失敗的錯誤。

在授權(quán)讀(READ COMMITTED)隔離級別,每個語句讀到的是語句執(zhí)行前的快照,因此讀到更新前后不同的值。在這種級別不會有串行化的錯誤(因?yàn)檫@種級別不要求串行化),事務(wù)1也不要求重試。

幻影讀(phantom read)

在事務(wù)執(zhí)行過程中,當(dāng)兩個完全相同的查詢語句執(zhí)行得到不同的結(jié)果集。這種現(xiàn)象稱為“幻影讀(phantom read)”

當(dāng)事務(wù)沒有獲取范圍鎖的情況下執(zhí)行SELECT ... WHERE操作可能會發(fā)生“幻影讀(phantom read)”。

“幻影讀(phantom read)”是不可重復(fù)讀(Non-repeatable reads)的一種特殊場景:當(dāng)事務(wù)1兩次執(zhí)行SELECT ... WHERE檢索一定范圍內(nèi)數(shù)據(jù)的操作中間,事務(wù)2在這個表中創(chuàng)建了(如INSERT)了一行新數(shù)據(jù),這條新數(shù)據(jù)正好滿足事務(wù)1的“WHERE”子句。

事務(wù) 1

事務(wù) 2

/* Query 1 */

SELECT * FROM users

WHERE age BETWEEN 10 AND 30;

/* Query 2 */

INSERT INTO users VALUES ( 3, 'Bob', 27 );

COMMIT;

/* Query 1 */

SELECT * FROM users

WHERE age BETWEEN 10 AND 30;

需要指出的是事務(wù)1執(zhí)行了兩遍同樣的查詢語句。如果設(shè)了最高的隔離級別,兩次會得到同樣的結(jié)果集,這也正是可數(shù)據(jù)庫在序列化(SERIALIZABLE)隔離級別上需要滿足的。但是在較低的隔離級別上,第二次查詢可能會得到不同的結(jié)果集。

在可序列化(SERIALIZABLE)隔離級別,查詢語句1在age從10到30的記錄上加鎖,事務(wù)2只能阻塞直至事務(wù)1提交。在可重復(fù)讀(REPEATABLEREAD)級別,這個范圍不會被鎖定,允許記錄插入,因此第二次執(zhí)行語句1的結(jié)果中會包括新插入的行。

隔離級別、讀現(xiàn)象和鎖(Isolation Levels, ReadPhenomena and Locks)

隔離級別vs讀現(xiàn)象(IsolationLevels vs Read Phenomena)

隔離級別

臟讀

不可重復(fù)讀

幻影讀

未授權(quán)讀

可能發(fā)生

可能發(fā)生

可能發(fā)生

授權(quán)讀

-

可能發(fā)生

可能發(fā)生

可重復(fù)讀

-

-

可能發(fā)生

可序列化

-

-

-

可序列化(Serializable)隔離級別不等同于可串行化(Serializable)。可串行化調(diào)度(Serializable)是避免以上三種現(xiàn)象的必要條件,但不是充分條件。

“可能發(fā)生”表示這個隔離級別會發(fā)生對應(yīng)的現(xiàn)象,“-”表示不會發(fā)生。

隔離級別vs 鎖持續(xù)時間(IsolationLevels vs Lock Duration)

在基于鎖的并發(fā)控制中,隔離級別決定了鎖的持有時間。"C"-表示鎖會持續(xù)到事務(wù)提交。 "S" –表示鎖持續(xù)到當(dāng)前語句執(zhí)行完畢。如果鎖在語句執(zhí)行完畢就釋放則另外一個事務(wù)就可以在這個事務(wù)提交前修改鎖定的數(shù)據(jù),從而造成混亂。

隔離級別l

寫操作

讀操作

范圍操作 (...where...)

未授權(quán)讀

S

S

S

授權(quán)讀

C

S

S

可重復(fù)讀

C

C

S

可序列化

C

C

C

參照

相關(guān)條目

原子性一致性持久性鎖樂觀并發(fā)控制關(guān)系數(shù)據(jù)庫快照隔離

外部鏈接

Oracle? Database Concepts,chapter 13 Data Concurrency and Consistency, Preventable Phenomena and Transaction Isolation LevelsOracle? Database SQL Reference,chapter 19 SQL Statements: SAVEPOINT to UPDATE,SET TRANSACTIONin JDBC: Connection constant fields, Connection.getTransactionIsolation(), Connection.setTransactionIsolation(int)in Spring Framework: @Transactional, Isolation

Categories:

Data managementTransaction processing

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

事務(wù)隔離等級

事務(wù)隔離等級:This article needs additional citations for verification . Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.(2009年1月) 看到wikipedia中文關(guān)于數(shù)據(jù)庫相關(guān)的幾個 經(jīng)典 條 This article
推薦度:
標(biāo)簽: 等級 ad 事務(wù)
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 久久频道毛片免费不卡片 | 日韩综合区 | 在线观看网站国产 | 99国产精品久久久久久久成人热 | 国产成人精品久久二区二区 | 国产综合精品久久久久成人影 | 精品一区二区三区四区五区六区 | 黄色a视频 | 亚洲欧美日韩另类在线专区 | 国产成人综合久久精品红 | 国产成人精品一区二区免费视频 | 欧美在线观看一区二区 | 久久精品一区 | 偷拍第一页 | 久久se精品一区二区国产 | 91久久国产视频 | 欧美成人伊人久久综合网 | va欧美国产在线视频 | 国产日韩久久久久69影院 | 午夜国产大片免费观看 | 日韩精品一二三区 | 国产精品国产三级国产普通话一 | 免费黄a | 亚洲一区中文字幕在线观看 | 在线看欧美 | 久久精品一区二区影院 | 萌白酱喷水 | 国产欧美日韩一区二区三区 | 日本人乱人乱亲乱色视频观看 | 国产毛片在线看 | 欧美区一区 | 亚洲精品国产精品乱码不97 | 91麻精品国产91久久久久 | 日韩一级精品久久久久 | 四虎91视频 | 亚洲最新视频 | 亚洲欧美日韩中文字幕在线 | 久久亚洲精品国产亚洲老地址 | 国产福利91精品一区二区 | 在线观看国产一区二区三区 | 国产精品亚洲αv天堂2021 |