数据库的ACID特性详解
ACID是指在 數(shù)據(jù)庫管理系統(tǒng)(DBMS)中事物所具有的四個特性:原子性、一致性、隔離性、持久性
事物:在數(shù)據(jù)庫系統(tǒng)中,一個事務(wù)是指由一系列連續(xù)的數(shù)據(jù)庫操作組成的一個完整的邏輯過程。這組操作執(zhí)行前后,系統(tǒng)需要處于一個可預(yù)知的、一致的狀態(tài)。
1、原子性:在一個事物中所有的操作要么都成功,要么多失敗。如銀行轉(zhuǎn)賬,A向B賬戶轉(zhuǎn)賬1000元,這里可分為三個操作,1.A向B轉(zhuǎn)賬、2.銀行處理、3.B賬戶收到轉(zhuǎn)賬。原子性就是保證這三個操作要么都成功,要么多失敗,如果1、2操作成功,3失敗了,那么1、2操作要進行回滾
2、一致性:在事務(wù)執(zhí)行前后,數(shù)據(jù)庫的一致性約束沒有被破壞。ACID中的一致性包含實體完整性約束不被破壞,完整性包含實體完整性(主屬性不為空)、參照完整性(外鍵必須存在原表中)、用戶自定義的完整性。比如列值非空(not null)、列值唯一(unique)、列值是否滿足一個bool表達式(check語句,如性別只能有兩個值、歲數(shù)是一定范圍內(nèi)的整數(shù)等),例如age smallint CHECK (age >=0 AND age <= 120).數(shù)據(jù)庫保證age的值在[0, 120]的范圍,如果不在這個范文,那么更新操作失敗,事務(wù)也會失敗。
3、隔離性:隔離性是指兩個事物之間互不干擾。實現(xiàn)事物隔離性主要有兩種方式。1.枷鎖、2.多版本控制。
sql定義了4個隔離的級別:
READ_UNCOMMITTED
READ_COMMITTED
REPEATABLE_READ
SERIALIZABLE
4、持久性:事物對數(shù)據(jù)庫所做的更改會持久的保存在數(shù)據(jù)庫中,不會被回滾。持久性需要考慮到事物在執(zhí)行過程中可能出現(xiàn)的各種異常,并對異常做出相應(yīng)的處理。
轉(zhuǎn)載于:https://www.cnblogs.com/dyfbk/p/7725051.html
總結(jié)
以上是生活随笔為你收集整理的数据库的ACID特性详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: day5 python学习
- 下一篇: 关于idea打开项目没有目录