導航:首頁 > 數據處理 > 資料庫的acid如何實現的

資料庫的acid如何實現的

發布時間:2023-02-12 07:52:22

資料庫事務正確執行的四個基本要素包括

ACID,指資料庫事務正確執行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。一個支持事務(Transaction)的資料庫,必需要具有這四種特性,否則在事務過程(Transaction processing)當中無法保證數據的正確性,交易過程極可能達不到交易方的要求。
原子性
整個事務中的所有操作,要麼全部完成,要麼全部不完成,不可能停滯在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。
一致性
一個事務可以封裝狀態改變(除非它是一個只讀的)。事務必須始終保持系統處於一致的狀態,不管在任何給定的時間並發事務有多少。
也就是說:如果事務是並發多個,系統也必須如同串列事務一樣操作。其主要特徵是保護性和不變性(Preserving an Invariant),以轉賬案例為例,假設有五個賬戶,每個賬戶余額是100元,那麼五個賬戶總額是500元,如果在這個5個賬戶之間同時發生多個轉賬,無論並發多少個,比如在A與B賬戶之間轉賬5元,在C與D賬戶之間轉賬10元,在B與E之間轉賬15元,五個賬戶總額也應該還是500元,這就是保護性和不變性
隔離性
隔離狀態執行事務,使它們好像是系統在給定時間內執行的唯一操作。如果有兩個事務,運行在相同的時間內,執行相同的功能,事務的隔離性將確保每一事務在系統中認為只有該事務在使用系統。這種屬性有時稱為串列化,為了防止事務操作間的混淆,必須串列化或序列化請求,使得在同一時間僅有一個請求用於同一數據。
持久性
在事務完成以後,該事務對資料庫所作的更改便持久的保存在資料庫之中,並不會被回滾。
由於一項操作通常會包含許多子操作,而這些子操作可能會因為硬體的損壞或其他因素產生問題,要正確實現ACID並不容易。ACID建議資料庫將所有需要更新以及修改的資料一次操作完畢,但實際上並不可行。
目前主要有兩種方式實現ACID:第一種是Write ahead logging,也就是日誌式的方式(現代資料庫均基於這種方式)。第二種是Shadow paging。

⑵ 什麼是事務的acid性質由哪些機制保證這些性質的實現

ACID性質

ACID property

定義:ACID指資料庫事務正確執行的四個基本要素的縮寫,包含原子性(atomicity)、一致性(consistency)、隔離性(isolation)和持久性(rability)。一個支持事務的資料庫系統,必須要具有這四種特性,否則在事務執行過程中無法保證數據的正確性,處理過程極可能達不到正確要求。

學科:計算機科學技術_資料庫_資料庫管理系統及其實現

技術

相關名詞:資料庫 資料庫管理系統 事務

【延伸閱讀】

從資料庫用戶的觀點看,資料庫中某些特定操作的集合需要被認為是一個獨立單元。例如,顧客認為從支票賬戶到儲蓄賬戶的資金轉賬是一個操作單元,盡管在資料庫系統中這是由對支票賬戶資金余額的修改、對儲蓄賬戶資金余額的修改以及對本次交易的登記等幾個操作組成的。顯然,必須要求這些操作要麼全都發生,要麼由於出錯而全不發生。保證這一點非常重要。無論從系統的觀點還是從用戶的觀點,都不願意看到資金從支票賬戶支出而未轉入儲蓄賬戶的情況發生。

由上述問題,可以引入資料庫的「事務」概念。事務是構成單一邏輯工作單元的操作集合。不論有無故障,資料庫系統必須保證事務的正確執行,即該事務的整個操作集合完全被執行,或屬於該事務的操作一個也不執行。此外,資料庫系統必須以一種能避免引入不一致性的方式來管理事務的並發執行。例如,假設系統中有一個資金轉賬事務,將一筆資金從支票賬戶轉到儲蓄賬戶中,假設還有一個事務是計算顧客總金額,它和上述資金轉賬的事務在系統中並發地執行。如果計算顧客總金額的事務在資金轉賬事務從支票賬戶支出金額之前查看支票賬戶余額,而在資金存入儲蓄賬戶之後查看儲蓄賬戶余額,並對它們進行求和,該事務就會得到不正確的結果,因為同一筆資金被重復計算了兩次。所以,為了保證事務的正確執行,維護資料庫的完整性,要求資料庫系統維護以下事務特性:

原子性:事務的所有操作在資料庫中要麼全部正確反映出來,要麼全部不反映。

一致性:事務的隔離執行(即沒有並發執行的其他事務),保持資料庫的一致性。

隔離性:盡管多個事務可以並發執行,但系統必須保證,對任一對事務A和B,在A看來,B或者在A開始之前已經停止執行,或者在A完成之後開始執行。這樣,每個事務都感覺不到系統中有其他事務在並發地執行。

持久性:一個事務成功完成後,它對資料庫的改變必須是永久的,即使系統可能出現故障。

以上特性統稱為ACID特性,他們全部是由資料庫管理系統來維護的。

成功完成執行的事務稱為已提交事務。已提交事務使資料庫進入一個新的一致狀態。未能成功完成的事務稱為中止事務,中止事務必須對資料庫的狀態不造成影響。即中止事務對資料庫所做的任何改變必須撤銷。一旦中止事務造成的變更被撤銷,就說明事務已回滾。如此,才能保證資料庫當中的數據在經過操作或

⑶ acid的持久性

在事務完成以後,該事務所對資料庫所作的更改便持久的保存在資料庫之中,並不會被回滾。
由於一項操作通常會包含許多子操作,而這些子操作可能會因為硬體的損壞或其他因素產生問題,要正確實現ACID並不容易。ACID建議資料庫將所有需要更新以及修改的資料一次操作完畢,但實際上並不可行。
目前主要有兩種方式實現ACID:第一種是Write ahead logging,也就是日誌式的方式(現代資料庫均基於這種方式)。第二種是Shadow paging。

⑷ 什麼是資料庫ACID

事務在當今的企業系統無處不在,即使在高並發環境下也可以提供數據的完整性。一個事務是一個只包含所有讀/寫操作成功的集合。
一個事務本質上有四個特點ACID:
Atomicity原子性
Consistency一致性
Isolation隔離性
Durability耐久性
原子性
原子性任務是一個獨立的操作單元,是一種要麼全部是,要麼全部不是的原子單位性的操作。
一致性
一個事務可以封裝狀態改變(除非它是一個只讀的)。事務必須始終保持系統處於一致的狀態,不管在任何給定的時間並發事務有多少。
一致性有下面特點:
如果一個操作觸發輔助操作(級聯,觸發器),這些也必須成功,否則交易失敗。
如果系統是由多個節點組成,一致性規定所有的變化必須傳播到所有節點(多主復制)。如果從站節點是非同步更新,那麼我們打破一致性規則,系統成為「最終一致性」。
一個事務是數據狀態的切換,因此,如果事務是並發多個,系統也必須如同串列事務一樣操作。
在現實中,事務系統遭遇並發請求時,這種串列化是有成本的, Amdahl法則描述如下:它是描述序列串列執行和並發之間的關系。
「一個程序在並行計算情況下使用多個處理器所能提升的速度是由這個程序中串列執行部分的時間決定的。」
大多數資料庫管理系統選擇(默認情況下)是放寬一致性,以達到更好的並發性。
隔離性
事務是並發控制機制,他們交錯使用時也能提供一致性。隔離讓我們隱藏來自外部世界未提交的狀態變化,一個失敗的事務不應該破壞系統的狀態。隔離是通過用悲觀或樂觀鎖機制實現的。

耐久性
一個成功的事務將永久性地改變系統的狀態,所以在它結束之前,所有導致狀態的變化都記錄在一個持久的事務日誌中。如果我們的系統突然受到系統崩潰或斷電,那麼所有未完成已提交的事務可能會重演。

閱讀全文

與資料庫的acid如何實現的相關的資料

熱點內容
如何跟蹤小程序交互代碼 瀏覽:240
我想買個小程序在哪裡找 瀏覽:612
日照運營商大數據多少錢一條 瀏覽:80
電子表格如何設置數據下拉排序 瀏覽:610
春雪食品有什麼產品 瀏覽:229
車險怎麼代理保險 瀏覽:623
怎麼看狗幣交易了多少 瀏覽:246
微信上小程序怎麼綁定手機號 瀏覽:193
為什麼數據網路延遲一直100 瀏覽:989
喜雲怎麼添加自己的產品 瀏覽:368
車易升obd怎麼看數據 瀏覽:483
WEB應用程序設計專業學什麼 瀏覽:177
旅遊卡代理費用多少 瀏覽:191
網上怎麼代理五穀磨房 瀏覽:534
杭州職業技術學院附近哪裡住宿好 瀏覽:648
地平線3怎麼終結連續技術 瀏覽:705
如何免費試用電子產品 瀏覽:996
為什麼程序下載總是失敗 瀏覽:241
刷票小程序哪個好用 瀏覽:383
蘋果手機如何刪除定位信息 瀏覽:953