事務有什麼特性,資料庫事務的特性是什麼?

2021-10-18 16:20:40 字數 4926 閱讀 5291

1樓:重慶新華電腦學校

在工作中,經常會接觸到事務這個概念。涉及到事務,大家首先想到的就是事務的四個特性: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)

資料庫系統的目的是,提供一個安全的地方儲存資料,而不用擔心丟失。永續性 是一個承諾,即一旦事務成功完成,即使發生硬體故障或資料庫崩潰,寫入的任何資料也不會丟失。

2樓:淘金勝手

事務,一般是指要做的或所做的事情。而且事務是應用程式中一系列嚴密的操作,所有操作必須成功完成,否則在每個操作中所作的所有更改都會被撤消。

另外,事務應該具有4個屬性:原子性、一致性、隔離性、永續性。

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

一致性。事務必須是資料庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。

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

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

什麼是事務?事務有哪些特徵?

3樓:m愛人

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

事務具有四個特徵:原子性( atomicity )、一致性( consistency )、隔離性(isolation )和持續性( durability )。

事務是為了保證對同一資料表操作的一致性。

即多條語句放在事務中執行的時候,要麼一起成功,要麼全不成功。

如果想看嚴格定義,就去隨便找一本資料庫教材看看吧,我只說我的理解:資料庫中的事務就是需要**在一起執行的操作集合,他們應不能被部分的完成。

雖然事務並不都是用在資料庫中的,但他們都有以下共同性質

事務應當具有acid性質,

a是原子性(atomic):事務中包含的各項操作必須全部成功執行或者全部不執行。任何一項操作失敗,將導致整個事務失敗,其他已經執行的任務所作的資料操作都將被撤銷,只有所有的操作全部成功,整個事務才算是成功完成。

c是一致性(consistent):保證了當事務結束後,系統狀態是一致的。那麼什麼是一致的系統狀態?

例如,如果銀行始終遵循著"銀行賬號必須保持正態平衡"的原則,那麼銀行系統的狀態就是一致的。上面的轉賬例子中,在取錢的過程中,賬戶會出現負態平衡,在事務結束之後,系統又回到一致的狀態。這樣,系統的狀態對於客戶來說,始終是一致的。

i是隔離性(isolated):使得併發執行的事務,彼此無法看到對方的中間狀態。保證了併發執行的事務順序執行,而不會導致系統狀態不一致。

d是永續性(durable):保證了事務完成後所作的改動都會被持久化,即使是發生災難性的失敗。可恢復性資源儲存了一份事務日誌,如果資源發生故障,可以通過日誌來將資料重建起來。

事務的概念及事務的四個特徵是什麼?

4樓:

事務(transaction)是併發控制的單位,是使用者定義的一個操作序列。這些操作要麼都做,要麼都不做,是一個不可分割的工作單位。通過事務,sql server能將邏輯相關的一組操作繫結在一起,以便伺服器保持資料的完整性。

事務通常是以begin transaction開始,以commit或rollback結束。

commit表示提交,即提交事務的所有操作。具體地說就是將事務中所有對資料庫的更新寫回到磁碟上的物理資料庫中去,事務正常結束。

rollback表示回滾,即在事務執行的過程中發生了某種故障,事務不能繼續進行,系統將事務中對資料庫的所有以完成的操作全部撤消,滾回到事務開始的狀態。

事務的特性(acid特性)

a:原子性(atomicity)

事務是資料庫的邏輯工作單位,事務中包括的諸操作要麼全做,要麼全不做。

b:一致性(consistency)

事務執行的結果必須是使資料庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。

c:隔離性(isolation)

一個事務的執行不能被其他事務干擾。

d:持續性/永久性(durability)

一個事務一旦提交,它對資料庫中資料的改變就應該是永久性的。

什麼是事務,事務有哪些特性?((資料庫方面)

5樓:匿名使用者

事務:所謂事務就是使用者定義的一個資料庫操作系列,這些操作要麼全不做要麼全做,是一個不可分割的工作單位。

事務有四個特性,分別是:原子性、一致性、隔離性、持續性

資料庫事務的特性是什麼?

6樓:風風風風風看風

資料庫事務包含一組資料庫操作的邏輯工作單元,在事務中包含的資料庫內操作是不可容分割的整體,這些操作要麼一起做,要麼一起回滾到執行前的狀態。

事務的acid特性:

基元性(atomicity)

一致性(consistency)

隔離性(isolation)

持續性(durability)

事務的併發性是指多個事務的並行操作輪流交叉執行,事務的併發可能會訪問和儲存不正確的資料,破壞交易的隔離性和資料庫的一致性。

資料庫中什麼叫事務其特點是什麼,簡述資料庫中事務的概念和特點?

事務 是使用者定義的一個資料庫操作序列,這些操作要麼都做,要麼都不做,是一個不可分割的工作單位。在關聯式資料庫中,一個事務可以是一條sql語句,也可以是多條sql語句。特點 原子性 一致性 隔離性 持續性 舉個例子 假設,定義了一個銀行轉賬的事務,以兩個銀行賬號裡面的金錢為例,裡面的錢要麼一個增加多...

access中web資料庫和資料庫有什麼區別

看下面的回答都應該是不如你的意,他們應該是沒有去看那個版本的新建資料庫功能。綜合得到的知識,新建web資料庫是作為共享訪問資料庫的需要,而資料庫就是普通本地開發的資料庫。開發使用安裝在伺服器上的應該都沒有限制吧 不知道你想表達的是什麼,不過他們都是資料庫的一種,只不過每中資料庫的用途和功能不太一樣而...

後設資料庫是什麼與資料庫有何區別

用來描述資料的資料就是後設資料!後設資料庫是指用來描述其他表資訊的資料表。例如 存放在學生表中的資料稱為資料 data。而在我們建立表的時候,指定的表的名字,欄位的名字,欄位的型別,表的約束資訊也是資料,這些資料稱為表的後設資料 metadata 後設資料庫是什麼?與資料庫有何區別?後設資料 met...