【DB筆試面試441】事務的持久性是指?()

  • 2019 年 10 月 11 日
  • 筆記

題目部分

事務的持久性是指?()

A、事務中包括的所有操作要麼都做,要麼不做

B、事務一旦提交,對資料庫的改變是永久的

C、一個事務內部的操作及使用的數據對並發的其他事務是隔離的

D、事務必須是使資料庫從一個一致性狀態變到另一個一致性狀態

答案部分

答案:B。

事務有4個特性,一般都稱之為ACID特性,簡單記為原一隔持(諧音:願意各吃,即願意各吃各的),如下表所示:

表 2-5 事務的ACID特性

名稱

簡介

舉例

原子性(Atomicity)

所謂原子性是指事務在邏輯上是不可分割的操作單元,其所有語句要麼都執行,要麼都撤銷執行。當每個事務運行結束時,可以選擇「提交」所做的數據修改,並將這些修改永久應用到資料庫中。

假設有兩個帳號,A帳號和B帳號。A帳號轉給B帳號100元,這裡有兩個動作在裡面,①A帳號減去100元,②B帳號增加100元,這兩個動作不可分割即原子性。

一致性(Consistency)

事務是一種邏輯上的工作單元。一個事務就是一系列在邏輯上相關的操作指令的集合,用於完成一項任務,其本質是將資料庫中的數據從一種一致性狀態轉換到另一種一致性狀態,以體現現實世界中的狀況變化。至於數據處於什麼樣的狀態算是一致狀態,這取決於現實生活中的業務邏輯以及具體的資料庫內部實現。

拿轉賬來說,假設用戶A和用戶B兩者的錢加起來一共是5000,那麼不管A和B之間如何轉賬,轉幾次賬,事務結束後兩個用戶的錢相加起來應該還得是5000,這就是事務的一致性。

隔離性(Isolation)

隔離性是針對並發事務而言的,所謂並發是指資料庫伺服器同時處理多個事務,如果不採取專門的控制機制,那麼並發事務之間可能會相互干擾,進而導致數據出現不一致或錯誤的狀態。隔離性就是要隔離並發運行的多個事務間的相互影響。關於事務的隔離性,資料庫提供了多種隔離級別,後面的章節會介紹到。

隔離性即要達到這麼一種效果:對於任意兩個並發的事務T1和T2,在事務T1看來,T2要麼在T1開始之前就已經結束,要麼在T1結束之後才開始,這樣每個事務都感覺不到有其它事務在並發地執行。

持久性(Durability)

事務的持久性(也叫永久性)是指一旦事務提交成功,其對數據的修改是持久性的。數據更新的結果已經從記憶體轉存到外部存儲器上,此後即使發生了系統故障,已提交事務所做的數據更新也不會丟失。

當開發人員在使用JDBC(Java DataBase Connectivity,Java資料庫連接)操作資料庫時,在提交事務後,提示用戶事務操作完成,那麼這個時候數據就已經存儲在磁碟上了。即使資料庫重啟,該事務所做的更改操作也不會丟失。

& 說明:

有關事務ACID特性的更多內容可以參考我的BLOG:http://blog.itpub.net/26736162/viewspace-2141490/