淺談數(shù)據(jù)庫(kù)事務(wù)四大特性
數(shù)據(jù)庫(kù)四大特性分別是:原子性、一致性、分離性、持久性。下面我們看看具體介紹。
原子性
事務(wù)的原子性指的是,事務(wù)中包含的程序作為數(shù)據(jù)庫(kù)的邏輯工作單位,它所做的對(duì)數(shù)據(jù)修改操作要么全部執(zhí)行,要么完全不執(zhí)行。這種特性稱(chēng)為原子性。
事務(wù)的原子性要求,如果把一個(gè)事務(wù)可看作是一個(gè)程序,它要么完整的被執(zhí)行,要么完全不執(zhí)行。就是說(shuō)事務(wù)的操縱序列或者完全應(yīng)用到數(shù)據(jù)庫(kù)或者完全不影響數(shù)據(jù)庫(kù)。這種特性稱(chēng)為原子性。
假如用戶(hù)在一個(gè)事務(wù)內(nèi)完成了對(duì)數(shù)據(jù)庫(kù)的更新,這時(shí)所有的更新對(duì)外部世界必須是可見(jiàn)的,或者完全沒(méi)有更新。前者稱(chēng)事務(wù)已提交,后者稱(chēng)事務(wù)撤消(或流產(chǎn))。DBMS必須確保由成功提交的事務(wù)完成的所有操縱在數(shù)據(jù)庫(kù)內(nèi)有完全的反映,而失敗的事務(wù)對(duì)數(shù)據(jù)庫(kù)完全沒(méi)有影響。
一致性
事務(wù)的一致性指的是在一個(gè)事務(wù)執(zhí)行之前和執(zhí)行之后數(shù)據(jù)庫(kù)都必須處于一致性狀態(tài)。這種特性稱(chēng)為事務(wù)的一致性。假如數(shù)據(jù)庫(kù)的狀態(tài)滿足所有的完整性約束,就說(shuō)該數(shù)據(jù)庫(kù)是一致的。
一致性處理數(shù)據(jù)庫(kù)中對(duì)所有語(yǔ)義約束的保護(hù)。例如,當(dāng)數(shù)據(jù)庫(kù)處于一致性狀態(tài)S1時(shí),對(duì)數(shù)據(jù)庫(kù)執(zhí)行一個(gè)事務(wù),在事務(wù)執(zhí)行期間假定數(shù)據(jù)庫(kù)的狀態(tài)是不一致的,當(dāng)事務(wù)執(zhí)行結(jié)束時(shí),數(shù)據(jù)庫(kù)處在一致性狀態(tài)S2。
分離性
分離性指并發(fā)的事務(wù)是相互隔離的。即一個(gè)事務(wù)內(nèi)部的操作及正在操作的數(shù)據(jù)必須封鎖起來(lái),不被其它企圖進(jìn)行修改的事務(wù)看到。
分離性是DBMS針對(duì)并發(fā)事務(wù)間的沖突提供的安全保證。DBMS可以通過(guò)加鎖在并發(fā)執(zhí)行的事務(wù)間提供不同級(jí)別的分離。假如并發(fā)交叉執(zhí)行的事務(wù)沒(méi)有任何控制,操縱相同的共享對(duì)象的多個(gè)并發(fā)事務(wù)的執(zhí)行可能引起異常情況。
DBMS可以在并發(fā)執(zhí)行的事務(wù)間提供不同級(jí)別的分離。分離的級(jí)別和并發(fā)事務(wù)的吞吐量之間存在反比關(guān)系。較多事務(wù)的可分離性可能會(huì)帶來(lái)較高的沖突和較多的事務(wù)流產(chǎn)。流產(chǎn)的事務(wù)要消耗資源,這些資源必須要重新被訪問(wèn)。因此,確保高分離級(jí)別的DBMS需要更多的開(kāi)銷(xiāo)。
持久性
持久性意味著當(dāng)系統(tǒng)或介質(zhì)發(fā)生故障時(shí),確保已提交事務(wù)的更新不能丟失。即一旦一個(gè)事務(wù)提交,DBMS保證它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變應(yīng)該是永久性的,耐得住任何系統(tǒng)故障。所以,持久性主要在于DBMS的恢復(fù)性能。持久性通過(guò)數(shù)據(jù)庫(kù)備份和恢復(fù)來(lái)保證。
總結(jié)
以上就是本文淺談數(shù)據(jù)庫(kù)四大特性的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:oracle數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出命令解析、淺談oracle rac和分布式數(shù)據(jù)庫(kù)的區(qū)別、oracle 數(shù)據(jù)庫(kù)啟動(dòng)階段分析等,如有不足之處,歡迎留言指出,小編會(huì)及時(shí)回復(fù)大家并修改,努力給廣大編程愛(ài)好者提供一個(gè)更好的閱讀體驗(yàn)和優(yōu)質(zhì)文章供參考。
相關(guān)文章
使用dump transaction with no_log的危險(xiǎn)性說(shuō)明
在命令參考手冊(cè)中的dump transaction with no_log條目下,有一條警告信息告訴你,你應(yīng)該把這條命令作為沒(méi)有其它辦法時(shí)的最后一招才使用它2012-07-07
sql 左連接和右連接的使用技巧(left join and right join)
今天做項(xiàng)目,發(fā)現(xiàn)左右連接是不一樣的。主要是說(shuō)明了區(qū)別,是不是必須用左連接或右連接,大家可以根據(jù)需要選擇。2010-05-05
關(guān)系型數(shù)據(jù)庫(kù)的設(shè)計(jì)規(guī)則詳解
大家好,本篇文章主要講的是關(guān)系型數(shù)據(jù)庫(kù)的設(shè)計(jì)規(guī)則詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
常用SQL語(yǔ)句優(yōu)化技巧總結(jié)【經(jīng)典】
這篇文章主要介紹了常用SQL語(yǔ)句優(yōu)化技巧,結(jié)合實(shí)例形式對(duì)比分析,總結(jié)了各種常用的SQL優(yōu)化技巧及相關(guān)原理,需要的朋友可以參考下2017-04-04
SQLite 創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例操作
這篇文章主要介紹了SQLite 創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例操作,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-05-05
數(shù)據(jù)庫(kù)分庫(kù)分表是什么,什么情況下需要用分庫(kù)分表
這篇文章主要介紹了數(shù)據(jù)庫(kù)分庫(kù)分表是什么,什么情況下需要用分庫(kù)分表,需要的朋友可以參考下2021-03-03
SQL中NTEXT字段內(nèi)容顯示<long text>的原因
SQL中NTEXT字段內(nèi)容顯示<long text>的原因...2007-03-03
redis數(shù)據(jù)庫(kù)查找key在內(nèi)存中的位置的方法
這篇文章主要介紹了redis數(shù)據(jù)庫(kù)查找key在內(nèi)存中的位置的方法,需要的朋友可以參考下2014-03-03

