事務的原子性是指?

General 更新 2024-11-23

事物的原子性是指

A 事務的原子性是指事務的所有操縱在數據庫中要麼全部正確反映出來,要麼全部不反映。選項B)指的是持久性。選項C)指的是隔離性。選項D)指的是一致性。

希望採納

數據庫事務原子性,一致性是怎樣實現的

這個問題的有趣之處,不在於問題本身(“原子性、一致性的實現機制是什麼”),而在於回答者的分歧反映出來的另外一個問題:原子性和一致性之間的關係是什麼?

我特別關注了@我練功發自真心

的答案,他正確地指出了,為了保證事務操作的原子性,必須實現基於日誌的REDO/UNDO機制。但這個答案仍然是不完整的,因為原子性並不能夠完全保證一致性。

按照我個人的理解,在事務處理的ACID屬性中,一致性是最基本的屬性,其它的三個屬性都為了保證一致性而存在的。

首先回顧一下一致性的定義。所謂一致性,指的是數據處於一種有意義的狀態,這種狀態是語義上的而不是語法上的。最常見的例子是轉帳。例如從帳戶A轉一筆錢到帳戶B上,如果帳戶A上的錢減少了,而帳戶B上的錢卻沒有增加,那麼我們認為此時數據處於不一致的狀態。

數據庫實現的場景中,一致性可以分為數據庫外部的一致性和數據庫內部的一致性。前者由外部應用的編碼來保證,即某個應用在執行轉帳的數據庫操作時,必須在

同一個事務內部調用對帳戶A和帳戶B的操作。如果在這個層次出現錯誤,這不是數據庫本身能夠解決的,也不屬於我們需要討論的範圍。後者由數據庫來保證,即

在同一個事務內部的一組操作必須全部執行成功(或者全部失敗)。這就是事務處理的原子性。

為了實現原子性,需要通過日誌:將所有對

數據的更新操作都寫入日誌,如果一個事務中的一部分操作已經成功,但以後的操作,由於斷電/系統崩潰/其它的軟硬件錯誤而無法繼續,則通過回溯日誌,將已

經執行成功的操作撤銷,從而達到“全部操作失敗”的目的。最常見的場景是,數據庫系統崩潰後重啟,此時數據庫處於不一致的狀態,必須先執行一個crash

recovery的過程:讀取日誌進行REDO(重演將所有已經執行成功但尚未寫入到磁盤的操作,保證持久性),再對所有到崩潰時尚未成功提交的事務進行

UNDO(撤銷所有執行了一部分但尚未提交的操作,保證原子性)。crash

recovery結束後,數據庫恢復到一致性狀態,可以繼續被使用。

日誌的管理和重演是數據庫實現中最複雜的部分之一。如果涉及到並行處理和分佈式系統(日誌的複製和重演是數據庫高可用性的基礎),會比上述場景還要複雜得多。

但是,原子性並不能完全保證一致性。在多個事務並行進行的情況下,即使保證了每一個事務的原子性,仍然可能導致數據不一致的結果。例如,事務1需要將100元轉入帳號A:先讀取帳號A的值,然後在這個值上加上100。但是,在這兩個操作之間,另一個事務2修改了帳號A的值,為它增加了100元。那麼最後的結果應該是A增加了200元。但事實上,

事務1最終完成後,帳號A只增加了100元,因為事務2的修改結果被事務1覆蓋掉了。

為了保證併發情況下的一致性,引入了隔離性,即保證每一個事務能夠看到的數據總是一致的,就好象其它併發事務並不存在一樣。用術語來說,就是多個事務併發執行後的狀態,和它們串行執行後的狀態是等價的。怎樣實現隔離性,已經有很多人回答過了,原則上無非是兩種類型的鎖:

種是悲觀鎖,即當前事務將所有涉及操作的對象加鎖,操作完成後釋放給其它對象使用。為了儘可能提高性能,發明了各種粒度(數據庫級/表級/行級……)/各

種性質(共享鎖/排他鎖/共享意向鎖/排他意向鎖/共享排他意向鎖……)的鎖。為了解決死鎖問題,又發明了兩階段鎖協議/死鎖檢測等一系列的技術。

一種是樂觀鎖,即不同的事務可以同時看到同一對象(一般是數據行)的不同歷史版本。如果有兩個事務同時......

什麼是事務,事務的四個特性是什麼

事務是應用程序中一系列嚴密的操作,所有操作必須成功完成,否則在每個操作中所作的所有更改都會被撤消。也就是事務具有原子性,一個事務中的一系列的操作要麼全部成功,要麼一個都不做。

事務的結束有兩種,當事務中的所以步驟全部成功執行時,事務提交。如果其中一個步驟失敗,將發生回滾操作,撤消撤消之前到事務開始時的所以操作。

二.事務的 ACID

事務具有四個特徵:原子性( Atomicity )、一致性( Consistency )、隔離性( Isolation )和持續性( Durability )。這四個特性簡稱為 ACID 特性。

1 、原子性

事務是數據庫的邏輯工作單位,事務中包含的各操作要麼都做,要麼都不做

2 、一致性

事 務執行的結果必須是使數據庫從一個一致性狀態變到另一個一致性狀態。因此當數據庫只包含成功事務提交的結果時,就說數據庫處於一致性狀態。如果數據庫系統 運行中發生故障,有些事務尚未完成就被迫中斷,這些未完成事務對數據庫所做的修改有一部分已寫入物理數據庫,這時數據庫就處於一種不正確的狀態,或者說是 不一致的狀態。

3 、隔離性

一個事務的執行不能其它事務干擾。即一個事務內部的操作及使用的數據對其它併發事務是隔離的,併發執行的各個事務之間不能互相干擾。

4 、持續性

也稱永久性,指一個事務一旦提交,它對數據庫中的數據的改變就應該是永久性的。接下來的其它操作或故障不應該對其執行結果有任何影響。

7 

sql server 事務的原子性是什麼意思,有沒有具體的例子幫忙解釋一下,謝謝

更新A表

更新B表

。。。

--------------------

更新B表時,發生錯誤,此時A表已更新完了,這樣數據就不整合了

這樣就需要用【事務】去控制了,要更新,就全部更新,發生錯誤,全部回滾

所以說不可分割,具有原子性

既然原子可以再分,為什麼說事務是原子性的

因為事物是由原子直接構成的,給你打個比方:社會是人構成的,但是人就像原子一樣,還可以再分啊,細胞還更小呢!

數據庫事務裡的原子性和一致性的區別 5分

原子性, 一個事務 要麼完全提交 要麼完全回滾,不會介於2者之間。

一致性,一個查詢發起後,不管數據發生了多少變化 多少事務,查詢結果應當為發起查詢時間一致的數據

數據庫事務四大特性是什麼?

事務的:原子性、一致性、分離性、持久性原子性、一致性、分離性、持久性(1) 原子性  事務的原子性指的是,事務中包含的程序作為數據庫的邏輯工作單位,它所做的對數據修改操作要麼全部執行,要麼完全不執行。這種特性稱為原子性。  事務的原子性要求,如果把一個事務可看作是一個程序,它要麼完整的被執行,要麼完全不執行。就是說事務的操縱序列或者完全應用到數據庫或者完全不影響數據庫。這種特性稱為原子性。假如用戶在一個事務內完成了對數據庫的更新,這時所有的更新對外部世界必須是可見的,或者完全沒有更新。前者稱事務已提交,後者稱事務撤消(或流產)。DBMS必須確保由成功提交的事務完成的所有操縱在數據庫內有完全的反映,而失敗的事務對數據庫完全沒有影響。(2) 一致性事務的一致性指的是在一個事務執行之前和執行之後數據庫都必須處於一致性狀態。這種特性稱為事務的一致性。假如數據庫的狀態滿足所有的完整性約束,就說該數據庫是一致的。  一致性處理數據庫中對所有語義約束的保護。假如數據庫的狀態滿足所有的完整性約束,就說該數據庫是一致的。例如,當數據庫處於一致性狀態S1時,對數據庫執行一個事務,在事務執行期間假定數據庫的狀態是不一致的,當事務執行結束時,數據庫處在一致性狀態S2。(3) 分離性  分離性指併發的事務是相互隔離的。即一個事務內部的操作及正在操作的數據必須封鎖起來,不被其它企圖進行修改的事務看到。分離性是DBMS針對併發事務間的衝突提供的安全保證。DBMS可以通過加鎖在併發執行的事務間提供不同級別的分離。假如併發交叉執行的事務沒有任何控制,操縱相同的共享對象的多個併發事務的執行可能引起異常情況。  DBMS可以在併發執行的事務間提供不同級別的分離。分離的級別和併發事務的吞吐量之間存在反比關係。較多事務的可分離性可能會帶來較高的衝突和較多的事務流產。流產的事務要消耗資源,這些資源必須要重新被訪問。因此,確保高分離級別的DBMS需要更多的開銷。(4)持久性  持久性意味著當系統或介質發生故障時,確保已提交事務的更新不能丟失。即一旦一個事務提交,DBMS保證它對數據庫中數據的改變應該是永久性的,耐得住任何系統故障。持久性通過數據庫備份和恢復來保證。  持久性意味著當系統或介質發生故障時,確保已提交事務的更新不能丟失。即對已提交事務的更新能恢復。一旦一個事務被提交,DBMS必須保證提供適當的冗餘,使其耐得住系統的故障。

什麼是事務?事務的特性有哪些?

事務(Transaction)是訪問並可能更新數據庫中各種數據項的一個程序執行單元(unit)。事務通常由高級數據庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執行所引起,並用形如begin transaction和end transaction語句(或函數調用)來界定。事務由事務開始(begin transaction)和事務結束(end transaction)之間執行的全體操作組成。

例如:在關係數據庫中,一個事務可以是一條SQL語句,一組SQL語句或整個程序。

特性  事務是恢復和併發控制的恭本單位。

事務應該具有4個屬性:原子性、一致性、隔離性、持續性。這四個屬性通常稱為ACID特性。

原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的操作要麼都做,要麼都不做。

一致性(consistency)。事務必須是使數據庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。

隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對併發的其他事務是隔離的,併發執行的各個事務之間不能互相干擾。

持久性(durability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。

什麼是程序的原子性

舉個例子:

A想要從自己的帳戶中轉1000塊錢到B的帳戶裡。那個從A開始轉帳,到轉帳結束的這一個過程,稱之為一個事務。在這個事務裡,要做如下操作:

1. 從A的帳戶中減去1000塊錢。如果A的帳戶原來有3000塊錢,現在就變成2000塊錢了。

2. 在B的帳戶里加1000塊錢。如果B的帳戶如果原來有2000塊錢,現在則變成3000塊錢了。

如果在A的帳戶已經減去了1000塊錢的時候,忽然發生了意外,比如停電什麼的,導致轉帳事務意外終止了,而此時B的帳戶裡還沒有增加1000塊錢。那麼,我們稱這個操作失敗了,要進行回滾。回滾就是回到事務開始之前的狀態,也就是回到A的帳戶還沒減1000塊的狀態,B的帳戶的原來的狀態。此時A的帳戶仍然有3000塊,B的帳戶仍然有2000塊。

我們把這種要麼一起成功(A帳戶成功減少1000,同時B帳戶成功增加1000),要麼一起失敗(A帳戶回到原來狀態,B帳戶也回到原來狀態)的操作叫原子性操作。

如果把一個事務可看作是一個程序,它要麼完整的被執行,要麼完全不執行。這種特性就叫原子性

面試題 java什麼叫事務,事務有什麼用

事務是什麼?

事務是作為一個邏輯單元執行的一系列操作,一個邏輯工作單元必須有四個屬性,稱為 ACID(原子性、一致性、隔離性和持久性)屬性,只有這樣才能成為一個事務:

原子性

事務必須是原子工作單元;對於其數據修改,要麼全都執行,要麼全都不執行。

一致性

事務在完成時,必須使所有的數據都保持一致狀態。在相關數據庫中,所有規則都必須應用於事務的修改,以保持所有數據的完整性。事務結束時,所有的內部數據結構(如 B 樹索引或雙向鏈表)都必須是正確的。

隔離性

由併發事務所作的修改必須與任何其它併發事務所作的修改隔離。事務查看數據時數據所處的狀態,要麼是另一併發事務修改它之前的狀態,要麼是另一 事務修改它之後的狀態,事務不會查看中間狀態的數據。這稱為可串行性,因為它能夠重新裝載起始數據,並且重播一系列事務,以使數據結束時的狀態與原始事務 執行的狀態相同。

持久性

事務完成之後,它對於系統的影響是永久性的。該修改即使出現系統故障也將一直保持。

相關問題答案
事務的原子性是指?
初二生物的多樣性是指?
人格的獨特性是指什麼?
黨的先進性是指什麼?
鋇的原子量是多少?
質變的多樣性是指什麼?
氧的原子量是多少?
哲學的黨性是指?
事物的根本性質是什麼?
酶的活性是指填空題?