亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據庫的事務概念是什么

發布時間:2022-01-06 17:24:00 來源:億速云 閱讀:166 作者:iii 欄目:互聯網科技

這篇文章主要講解了“數據庫的事務概念是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“數據庫的事務概念是什么”吧!

事務

事務是什么?

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. 

數據庫系統概念:構成單一邏輯工作單元的操作集合稱作事務。

簡單來說,事務就是包含一些性質一系列操作。下面我們分別介紹這兩點。

一系列操作

事務的英文是 Transaction,交易。這個就是金融里的交易,交易的基本動作就是轉賬,一個最經典的事務就是 A 給 B 轉 50 元。這個事務由數據庫執行就是6行代碼:

begin transaction(事務開始標志)

read(A)

A = A - 50

write(A)

read(B)

B = B + 50

write(B)

end transaction(事務結束標志)

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

在事務開始和結束標志中間就是一系列操作。其實就是一段代碼而已,沒有任何特別的,那么為什么要提出事務的概念呢?那就要說到事務的性質了。

原子性(Atomicity)

原子性:事務中包含的各項操作要么全部執行,要么全部不執行。

為什么有這個性質?對于轉賬操作而言,普通用戶認為這就是一個動作,這個動作要么發生,要么不發生,不應該出現發生了一半的情況:即 A 的賬戶少了 50,但 B 的賬戶沒有多 50。因此,原子性是指將事務的一系列代碼當做一行代碼來執行。

那假如執行一半停電了怎么辦?數據庫重啟后需要恢復到沒執行事務的狀態,即回滾。

一致性(Consistency)

一致性:隔離執行事務時(沒有并發時),保持數據庫的一致性。

這個解釋是不是很流氓。

看看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.

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

白話一點:數據庫中有自己的規則,這些規則用來保證數據庫的狀態是正常的(一致的),事務要來執行就需要遵守數據庫的規則。

隔離性(Isolation)

隔離性:事務的隔離性是指在并發執行中,系統保證,對于兩個事務T1,T2。在T1看來,T1或者在T2開始前完成,或者在T2完成后開始。讓事務感受不到系統中有其他事務在并發執行。

隔離性與調度有關,調度就是代碼的執行順序。考慮一個動作是 A 給 B 轉 50,另一個動作是 B 給 A 轉 50。這兩個動作都是由 6 行代碼組成。

在保證事務內部代碼執行順序不變的前提下,數據庫可以有很多種調度策略來執行這 12 行代碼。最嚴格也最安全的是串行調度,即一次執行一個事務,n 個事務的串行化調度策略有 n! 種,就是個排列。下面是 2 個事務的 2 種串行調度。

數據庫的事務概念是什么

需要明確,不同的串行調度策略結果可能不一樣,但都能滿足一致性。想想為啥?因為每一個事務都滿足一致性啊,一個一個執行肯定也滿足了,不管什么順序。

除了串行調度,還有很多其他調度,但是符合要求的調度應該都可以等價為一個串行調度,這種符合要求的調度就是可串行化調度。考慮下邊 2 個調度:

數據庫的事務概念是什么

左邊的調度就是可串行化調度,右邊的調度就是不可串行化調度。

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

可串行化 > 可重復讀 > 讀已提交 > 讀未提交

不同的隔離級別對數據庫使用者的表現不一樣。將事務按照一定的隔離級別隔離是并發控制的主要目標。

持久性(Durability)

持久性:事務一旦提交(commit),對數據庫中對應數據的狀態變更就應該是永久性的。

事務的提交類似 word 的保存,保存后就不會丟失了,避免 word 崩了心態炸了。

簡單來說就是事務對數據的操作應該寫磁盤,不能僅僅停留在內存中。

四種性質的交叉

原子性和一致性的關系比較不好理解。

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

begin transaction

write(A)=50

write(B)=50

end transaction

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

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

begin transaction

write(A)=-10

write(B)=-20

end transaction

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

隔離性和一致性的關系簡單一點。隔離性是事務并發時保證一致性的必要條件。

數據庫的事務概念是什么

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

感謝各位的閱讀,以上就是“數據庫的事務概念是什么”的內容了,經過本文的學習后,相信大家對數據庫的事務概念是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桃江县| 张家港市| 阳朔县| 元谋县| 会同县| 宁国市| 偏关县| 达孜县| 庆云县| 铜川市| 上饶县| 从化市| 南投市| 海安县| 焦作市| 海晏县| 上犹县| 大新县| 武鸣县| 措美县| 贵州省| 林周县| 西充县| 莱西市| 长泰县| 阳曲县| 肃北| 潞城市| 奇台县| 武胜县| 卫辉市| 保德县| 抚顺县| 军事| 临朐县| 梁平县| 通榆县| 达尔| 睢宁县| 大渡口区| 文化|