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