數(shù)據(jù)庫的事務(wù)概念是什么

這篇文章主要講解了“數(shù)據(jù)庫的事務(wù)概念是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“數(shù)據(jù)庫的事務(wù)概念是什么”吧!

在迪慶州等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,外貿(mào)營銷網(wǎng)站建設(shè),迪慶州網(wǎng)站建設(shè)費(fèi)用合理。

事務(wù)

事務(wù)是什么?

wiki:A transaction symbolizes a unit of work performed within a database management system (or similar system) against a database, and treated in a coherent and reliable way independent of other transactions. 

數(shù)據(jù)庫系統(tǒng)概念:構(gòu)成單一邏輯工作單元的操作集合稱作事務(wù)。

簡單來說,事務(wù)就是包含一些性質(zhì)一系列操作。下面我們分別介紹這兩點(diǎn)。

一系列操作

事務(wù)的英文是 Transaction,交易。這個(gè)就是金融里的交易,交易的基本動(dòng)作就是轉(zhuǎn)賬,一個(gè)最經(jīng)典的事務(wù)就是 A 給 B 轉(zhuǎn) 50 元。這個(gè)事務(wù)由數(shù)據(jù)庫執(zhí)行就是6行代碼:

begin transaction(事務(wù)開始標(biāo)志)

read(A)

A = A - 50

write(A)

read(B)

B = B + 50

write(B)

end transaction(事務(wù)結(jié)束標(biāo)志)

其中 read 為將變量從磁盤讀到內(nèi)存,+、- 操作為內(nèi)存操作,write 為將內(nèi)存中的值寫入磁盤。

在事務(wù)開始和結(jié)束標(biāo)志中間就是一系列操作。其實(shí)就是一段代碼而已,沒有任何特別的,那么為什么要提出事務(wù)的概念呢?那就要說到事務(wù)的性質(zhì)了。

原子性(Atomicity)

原子性:事務(wù)中包含的各項(xiàng)操作要么全部執(zhí)行,要么全部不執(zhí)行。

為什么有這個(gè)性質(zhì)?對(duì)于轉(zhuǎn)賬操作而言,普通用戶認(rèn)為這就是一個(gè)動(dòng)作,這個(gè)動(dòng)作要么發(fā)生,要么不發(fā)生,不應(yīng)該出現(xiàn)發(fā)生了一半的情況:即 A 的賬戶少了 50,但 B 的賬戶沒有多 50。因此,原子性是指將事務(wù)的一系列代碼當(dāng)做一行代碼來執(zhí)行。

那假如執(zhí)行一半停電了怎么辦?數(shù)據(jù)庫重啟后需要恢復(fù)到?jīng)]執(zhí)行事務(wù)的狀態(tài),即回滾。

一致性(Consistency)

一致性:隔離執(zhí)行事務(wù)時(shí)(沒有并發(fā)時(shí)),保持?jǐn)?shù)據(jù)庫的一致性。

這個(gè)解釋是不是很流氓。

看看wiki的:Consistency ensures that a transaction can only bring the database from one valid state to another, maintaining database invariants: any data written to the database must be valid according to all defined rules, including constraints, cascades, triggers, and any combination thereof. This prevents database corruption by an illegal transaction, but does not guarantee that a transaction is correct.

一致性就是數(shù)據(jù)庫里的數(shù)據(jù)滿足數(shù)據(jù)庫的所有定義的約束,這里的約束包括對(duì)主鍵和外鍵的數(shù)據(jù)庫內(nèi)部約束,也包括人為定義的對(duì)兩個(gè)值的約束,如 A+B=10 或者高中畢業(yè)年份必須比入學(xué)年份大3。編寫出符合一致性的事務(wù)是事務(wù)程序員的任務(wù),而數(shù)據(jù)庫會(huì)做最終檢查,不符合一致性的事務(wù)會(huì)被數(shù)據(jù)庫拒絕。

白話一點(diǎn):數(shù)據(jù)庫中有自己的規(guī)則,這些規(guī)則用來保證數(shù)據(jù)庫的狀態(tài)是正常的(一致的),事務(wù)要來執(zhí)行就需要遵守?cái)?shù)據(jù)庫的規(guī)則。

隔離性(Isolation)

隔離性:事務(wù)的隔離性是指在并發(fā)執(zhí)行中,系統(tǒng)保證,對(duì)于兩個(gè)事務(wù)T1,T2。在T1看來,T1或者在T2開始前完成,或者在T2完成后開始。讓事務(wù)感受不到系統(tǒng)中有其他事務(wù)在并發(fā)執(zhí)行。

隔離性與調(diào)度有關(guān),調(diào)度就是代碼的執(zhí)行順序??紤]一個(gè)動(dòng)作是 A 給 B 轉(zhuǎn) 50,另一個(gè)動(dòng)作是 B 給 A 轉(zhuǎn) 50。這兩個(gè)動(dòng)作都是由 6 行代碼組成。

在保證事務(wù)內(nèi)部代碼執(zhí)行順序不變的前提下,數(shù)據(jù)庫可以有很多種調(diào)度策略來執(zhí)行這 12 行代碼。最嚴(yán)格也最安全的是串行調(diào)度,即一次執(zhí)行一個(gè)事務(wù),n 個(gè)事務(wù)的串行化調(diào)度策略有 n! 種,就是個(gè)排列。下面是 2 個(gè)事務(wù)的 2 種串行調(diào)度。

數(shù)據(jù)庫的事務(wù)概念是什么

需要明確,不同的串行調(diào)度策略結(jié)果可能不一樣,但都能滿足一致性。想想為啥?因?yàn)槊恳粋€(gè)事務(wù)都滿足一致性啊,一個(gè)一個(gè)執(zhí)行肯定也滿足了,不管什么順序。

除了串行調(diào)度,還有很多其他調(diào)度,但是符合要求的調(diào)度應(yīng)該都可以等價(jià)為一個(gè)串行調(diào)度,這種符合要求的調(diào)度就是可串行化調(diào)度??紤]下邊 2 個(gè)調(diào)度:

數(shù)據(jù)庫的事務(wù)概念是什么

左邊的調(diào)度就是可串行化調(diào)度,右邊的調(diào)度就是不可串行化調(diào)度。

可串行化是一種隔離級(jí)別。為了滿足性能的要求,數(shù)據(jù)庫還提供了其他隔離級(jí)別,這些隔離級(jí)別按由強(qiáng)到弱分別為:

可串行化 > 可重復(fù)讀 > 讀已提交 > 讀未提交

不同的隔離級(jí)別對(duì)數(shù)據(jù)庫使用者的表現(xiàn)不一樣。將事務(wù)按照一定的隔離級(jí)別隔離是并發(fā)控制的主要目標(biāo)。

持久性(Durability)

持久性:事務(wù)一旦提交(commit),對(duì)數(shù)據(jù)庫中對(duì)應(yīng)數(shù)據(jù)的狀態(tài)變更就應(yīng)該是永久性的。

事務(wù)的提交類似 word 的保存,保存后就不會(huì)丟失了,避免 word 崩了心態(tài)炸了。

簡單來說就是事務(wù)對(duì)數(shù)據(jù)的操作應(yīng)該寫磁盤,不能僅僅停留在內(nèi)存中。

四種性質(zhì)的交叉

原子性和一致性的關(guān)系比較不好理解。

原子性是一致性的必要條件嗎?不是,假如數(shù)據(jù)庫的約束為 A 和 B 都大于0。

begin transaction

write(A)=50

write(B)=50

end transaction

當(dāng)執(zhí)行完write(A)后,不執(zhí)行write(B),這里不符合原子性,但是滿足一致性。

原子性是一致性的充分條件嗎?不是,同上的約束,A 和 B 都大于 0,考慮下邊這個(gè)事務(wù)

begin transaction

write(A)=-10

write(B)=-20

end transaction

這里即使?jié)M足原子性,將 A 和 B 的值都改掉,也不滿足一致性。

隔離性和一致性的關(guān)系簡單一點(diǎn)。隔離性是事務(wù)并發(fā)時(shí)保證一致性的必要條件。

數(shù)據(jù)庫的事務(wù)概念是什么

原子性、隔離性、持久性是數(shù)據(jù)庫需要為所有事務(wù)提供的通用處理方式。唯有一致性是和業(yè)務(wù)掛鉤的。他們的關(guān)系大概如上圖。這樣,事務(wù)的基本定義和性質(zhì)就清楚了。

感謝各位的閱讀,以上就是“數(shù)據(jù)庫的事務(wù)概念是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)數(shù)據(jù)庫的事務(wù)概念是什么這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

網(wǎng)站名稱:數(shù)據(jù)庫的事務(wù)概念是什么
標(biāo)題來源:http://bm7419.com/article44/ipdoee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)域名注冊、品牌網(wǎng)站制作App開發(fā)、外貿(mào)建站、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)