⑴ 關系資料庫事務的特性是什麼
關系資料庫事務(DatabaseTransaction)是指一個可以包含多個步驟來完成所需要的任務的工作單元。通過事務將一系列不可分割的資料庫操作作為一個整體來執行,從而保證了資料庫的完整性和有效性。其包含了一組資料庫操作命令的一個操作序列,事務中所有命令作為一個整體向系統提交或撤銷操作請求(要麼完全執行,要麼完全不執行,即資料庫命令系列要麼都成功,要麼都不成功)。
2.1.1事務特性資料庫事務必須具備ACID特性,一個邏輯工作單元要成為事務,必須滿足ACID屬性。
ACID是指Atomicity(原子性)、Consistency(一致性)、Isolation(隔離性)和Durability(持久性)。事務由資料庫管理系統(DBMS)中的事務管理子系統負責處理。
1.原子性原子性指的是一個事務(Transaction)中的所有操作,要麼全部完成,要麼全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。
2.一致性一致性指的是在一個事務執行之前和執行之後資料庫都必須處於一致性狀態。如果事務成功完成,那麼系統中所有變化將正確地應用,系統處於有效狀態。如果在事務中出現錯誤,那麼系統中的所有變化將自動地回滾,系統返回到原始狀態。
3.隔離性隔離性指的是在並發環境中,當不同的事務同時操縱相同的數據時,每個事務都有各自的完整數據空間。由並發事務所做的修改必須與任何其他並發事務所做的修改隔離。事務查看數據更新時,數據所處的狀態要麼是另一事務修改它之前的狀態,要麼是另一事務修改它之後的狀態,事務不會查看到中間狀態的數據。
4.持久性持久性指的是只要事務成功結束,它對資料庫所做的更新就必須永久地保存下來。即使發生系統崩潰,重新啟動資料庫系統後,資料庫還能恢復到事務成功結束時的狀態。
⑵ 事務有什麼特性
在工作中,經常會接觸到事務這個概念。涉及到事務,大家首先想到的就是事務的四個特性:ACID。
1.原子性(Atomicity)
1.1什麼是原子性
一般來說,原子是指不能分解成小部分的東西。這個詞在計算的不同分支中意味著相似但又微妙不同的東西。例如,在多線程編程中,如果一個線程執行一個原子操作,這意味著另一個線程無法看到該操作的一半結果。系統只能處於操作之前或操作之後的狀態,而不是介於兩者之間的狀態。 ACID原子性的定義特徵是:能夠在錯誤時中止事務,丟棄該事務進行的所有寫入變更的能力。
1.2 如何實現原子性
WAL(預寫日誌) 是用於保證事務的原子性和持久性。簡單來講,事務更新數據之前,先寫日誌,然後在更新數據。當系統崩潰時,如果事務還沒寫WAL,那整個數據依然一致。如果事務只寫了WAL,未更新具體的數據頁後崩潰,那恢復流程可以根據WAL日誌,重做相關操作,保證數據一致性。
2.一致性(Consistency)
ACID一致性的概念是,對數據的一組特定陳述必須始終成立。即不變數(invariants)。例如,在會計系統中,所有賬戶整體上必須借貸相抵。如果一個事務開始於一個滿足這些不變數的有效資料庫,且在事務處理期間的任何寫入操作都保持這種有效性,那麼可以確定,不變數總是滿足的。 原子性,隔離性和持久性是資料庫的屬性,而一致性(在ACID意義上)是應用程序的屬性。應用可能依賴資料庫的原子性和隔離屬性來實現一致性,但這並不僅取決於資料庫。
3.隔離性(Isolation)
3.1什麼是隔離性
大多數資料庫都會同時被多個客戶端訪問。如果它們各自讀寫資料庫的不同部分,這是沒有問題的,但是如果它們訪問相同的資料庫記錄,則可能會遇到並發問題(競爭條件(race conditions))。 ACID意義上的隔離性意味著,同時執行的事務是相互隔離的:它們不能相互冒犯。
如果兩個事務不觸及相同的數據,它們可以安全地並行(parallel) 運行,因為兩者都不依賴於另一個。當一個事務讀取由另一個事務同時修改的數據時,或者當兩個事務試圖同時修改相同的數據時,並發問題(競爭條件)才會出現。出於這個原因,資料庫一直試圖通過提供事務隔離(transaction isolation) 來隱藏應用程序開發者的並發問題。
serializable級別的隔離,保證事務的效果與連續運行(即一次一個,沒有任何並發)是一樣的,可以保證事務地安全執行。但是在serializable隔離級別,事務並發度很低,整個資料庫的性能肯定不高。這時候,資料庫開發人員有提出了四種不同的隔離級別,來平衡事務並發度與隔離性,這四個隔離級別分別是:
讀未提交(Read Uncommitted):可以讀取未提交的記錄。
讀已提交(Read Committed):事務中只能看到已提交的修改。
可重復讀(Repeatable Read):解決了不可重復讀問題(MySQL 默認隔離級別)
序列化(Serializable):最高隔離級別。
RU,RC和RR由於降低了隔離要求,自然在讀取數據時,會產生各種異常(上帝為你打開一扇門的同時,肯定也為你關上一扇窗):
RU會讀取其他事務未提交的數據,這就產生了臟讀,臟讀取意味著另一個事務可能會只看到一部分更新,或者看到的數據已經被回滾了。
RC級別的隔離,會產生不可重復讀的問題。所謂不可重復讀是指在一個事務內根據同一個條件對行記錄進行多次查詢,但是搜出來的結果卻不一致。發生不可重復讀的原因是在多次搜索期間查詢條件覆蓋的數據被其他事務修改了。
RR級別的隔離,會產生幻讀問題。幻讀,並不是說兩次讀取獲取的結果集不同,幻讀側重的方面是某一次的 select 操作得到的結果所表徵的數據狀態無法支撐後續的業務操作。更為具體一些:select 某記錄是否存在,不存在,准備插入此記錄,但執行 insert 時發現此記錄已存在,無法插入,此時就發生了幻讀。
3.2 如何支持隔離性
一般資料庫不會考慮工作在RU隔離級別,因為讀臟數據會引起太多的問題。資料庫一般工作在RC或RR隔離級別,快照隔離級別就可以支持RC或RR隔離級別,所以資料庫一般會實現快照隔離級別。
快照隔離的實現通常使用寫鎖來防止臟寫,這意味著進行寫入的事務會阻止另一個事務修改同一個對象。但是讀取不需要任何鎖定。從性能的角度來看,快照隔離的一個關鍵原則是:讀不阻塞寫,寫不阻塞讀。這允許資料庫在處理一致性快照上的長時間查詢時,可以正常地同時處理寫入操作。且兩者間沒有任何鎖定爭用。
為了實現快照隔離,資料庫必須保留一個對象的幾個不同的提交版本,因為各種正在進行的事務可能需要看到資料庫在不同的時間點的狀態。因為它並排維護著多個版本的對象,所以這種技術被稱為多版本並發控制(MVCC, multi-version concurrentcy control)。
最高的隔離級別:Serializable,一般是通過2PL來實現, 一階段申請,一階段釋放。讀寫都要加鎖。
4.持久性(Durability)
資料庫系統的目的是,提供一個安全的地方存儲數據,而不用擔心丟失。持久性 是一個承諾,即一旦事務成功完成,即使發生硬體故障或資料庫崩潰,寫入的任何數據也不會丟失。
⑶ 資料庫事務四大特性是什麼
事務的:原子性、一致性、分離性、持久性原子性、一致性局賀運、分離性、持久性(1)原子性事務的原子性指的是,事務中包含的程序作為資料庫的邏輯工作單位,它所做的對數據修改操作要麼全部執行,要麼完全不執行
這種特性稱為原子性
事務的原子性要求,如果把一個事務可看作是一個程序,它要麼完整的被執行,要麼完全不執行
就是說事務的操縱序列或者完全應用到資料庫或者完全不影響資料庫
這種特性稱為原子性
假如用戶在一個事務內完成了對資料庫的更新,這時所有的更新對外部世界必須是可見的,或者完全沒有更新
前者稱事務已提交,後者稱事務撤消(或流產)
DBMS必須確保由成功提交的事務完成的所有操縱在資料庫內有完全的反映,而失敗的事務對資料庫完全沒有影響
(2)一致性事務的一致性指的是在一個事務執行之前和執行之後資料庫都必須處於一致性狀態
這種特拍談性稱為事務的一致性
假如資料庫的狀態滿足所有的完整性約束,就說該資料庫是一致的
一致性處理資料庫中對所有語義約束的保護
假如資料庫的狀態滿足所有的完整性約束,就說該資料庫是一致的
例如,當資料庫處於一致性狀態S1時,對資料庫執行一個事務,在事務執行期間假定資料庫的狀態是不一致的,當事務執行結束時,資料庫處在一致性狀態S2
(3)分離性分離性指並發的事務是相互隔離的
即一個事務內部的操作及正在操作的數據必須封鎖起來,不被其它企圖進行修改的事務看到
分離性是DBMS針對並發事務間的沖突提供的安全保證
DBMS可以通過加鎖在並發執行的事務間提供不同級別的分離
假如並發交叉執行的事務沒有任何控制,操縱相同的共享對象的多個並發事務的執行可能引起異常情況
DBMS可以在並發執行的事務間提供不同級別的分離
分離的級別和並發事務的吞吐量之間存在反比關系
較多事務的可分離性桐梁可能會帶來較高的沖突和較多的事務流產
流產的事務要消耗資源,這些資源必須要重新被訪問
因此,確保高分離級別的DBMS需要更多的開銷
(4)持久性持久性意味著當系統或介質發生故障時,確保已提交事務的更新不能丟失
即一旦一個事務提交,DBMS保證它對資料庫中數據的改變應該是永久性的,耐得住任何系統故障
持久性通過資料庫備份和恢復來保證
持久性意味著當系統或介質發生故障時,確保已提交事務的更新不能丟失
即對已提交事務的更新能恢復
一旦一個事務被提交,DBMS必須保證提供適當的冗餘,使其耐得住系統的故障
⑷ 資料庫事務的四大特性
資料庫事務的四大特性:原子性、一致性、分離性、持久性。事務的原子性要求,如果把一個事務可看作是一個程序,它要麼完整的被執行,要麼完全不執行。就是說事務的操縱序列或者完全應用到資料庫或者完全不影響資料庫。這種特性稱為原子性。 假如用戶在一個事務內完沖山成了對資料庫的更新,這時所有的更新對外部世界必須是可見的,或者完全沒有更新。前者稱事務已提交,後者稱事務撤消(或流產)。DBMS必須確保由成功提交的事務完成的所有操縱在資料庫內有完全的反映,而失敗的事務對資料庫完全沒有影響亂頃。
一致性事務的一致性指的是在一個事務執行之前和執行之後資料庫都必須處於一致性狀態。這種特性稱為事務的一致性。假如資料庫的`狀態滿足所有的完整性約束,就說該資料庫是一致的。 一致性處理資料庫中對所有語義約束的保護。假如資料庫的狀態滿足所有的完整性約束,就說該資料庫是一致的。例如,當數嘩判陸據庫處於一致性狀態S1時,對資料庫執行一個事務,在事務執行期間假定資料庫的狀態是不一致的,當事務執行結束時,資料庫處在一致性狀態S2。
分離性指並發的事務是相互隔離的。即一個事務內部的操作及正在操作的數據必須封鎖起來,不被其它企圖進行修改的事務看到。 分離性是DBMS針對並發事務間的沖突提供的安全保證。DBMS可以通過加鎖在並發執行的事務間提供不同級別的分離。假如並發交叉執行的事務沒有任何控制,操縱相同的共享對象的多個並發事務的執行可能引起異常情況。 DBMS可以在並發執行的事務間提供不同級別的分離。分離的級別和並發事務的吞吐量之間存在反比關系。較多事務的可分離性可能會帶來較高的沖突和較多的事務流產。流產的事務要消耗資源,這些資源必須要重新被訪問。因此,確保高分離級別的DBMS需要更多的開銷。
持久性意味著當系統或介質發生故障時,確保已提交事務的更新不能丟失。即一旦一個事務提交,DBMS保證它對資料庫中數據的改變應該是永久性的,耐得住任何系統故障。持久性通過資料庫備份和恢復來保證。 持久性意味著當系統或介質發生故障時,確保已提交事務的更新不能丟失。即對已提交事務的更新能恢復。一旦一個事務被提交,DBMS必須保證提供適當的冗餘,使其耐得住系統的故障。
⑸ 事務有哪些特性
事務(Transaction)是訪問並可能更新資料庫中各種數據項的一個程序執行單元(unit)。事務通常由高級資料庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執行所引起,並用形如begin
transaction和end
transaction語句(或函數調用)來界定。事務由事務開始(begin
transaction)和事務結束(end
transaction)之間執行的全體操作組成。
例如:在關系資料庫中,一個事務可以是一條SQL語句,一組SQL語句或整個程序。
特性事務是恢復和並發控制的基本單位。
事務應該具有4個屬性:原子性、一致性、隔離性、持續性。這四個屬性通常稱為ACID特性。
原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的操作要麼都做,要麼都不做。
一致性(consistency)。事務必須是使資料庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對並發的其他事務是隔離的,並發執行的各個事務之間不能互相干擾。
持久性(rability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對資料庫中數據的改變就應該是永久性的。接...事務(Transaction)是訪問並可能更新資料庫中各種數據項的一個程序執行單元(unit)。事務通常由高級資料庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執行所引起,並用形如begin
transaction和end
transaction語句(或函數調用)來界定。事務由事務開始(begin
transaction)和事務結束(end
transaction)之間執行的全體操作組成。
例如:在關系資料庫中,一個事務可以是一條SQL語句,一組SQL語句或整個程序。
特性事務是恢復和並發控制的基本單位。
事務應該具有4個屬性:原子性、一致性、隔離性、持續性。這四個屬性通常稱為ACID特性。
原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的操作要麼都做,要麼都不做。
一致性(consistency)。事務必須是使資料庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對並發的其他事務是隔離的,並發執行的各個事務之間不能互相干擾。
持久性(rability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對資料庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。
⑹ 資料庫系統中什麼是事務事務有什麼特性
事務就是由一系列操作組成。
在一個事物中的多個操作,要麼一起commit,要麼都rollback。
⑺ 事務的特性
事務通常由高級資料庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執行所引起,並用形如begintransaction和endtransaction語句(或函數調用舉純)來界定
特性:原子性,一致性,隔離性,持續性。納絕
原子性:事物是資料庫的邏輯工作單位,事物中包括的操作要麼都做,要麼都不做。
一致性:事務執行的結果必須是使資料庫從一個一致性狀態變到另一個一致性狀態。
隔離性:一個事務的執行不能被其它事物干擾。即一個事物內部的操作及洞答姿使用的數據對其它並發事物是隔離的,並發執行的各個事物之間不能互相煩擾。
持續性:也稱永久性,只一個事物一旦提交,它對資料庫中數據的改變就應該是永久性的。接下來的其它操作或故障不應該對其執行結果有任何影響。