淺談數(shù)據(jù)庫事務(wù)四大特性
數(shù)據(jù)庫四大特性分別是:原子性、一致性、分離性、持久性。下面我們看看具體介紹。
原子性
事務(wù)的原子性指的是,事務(wù)中包含的程序作為數(shù)據(jù)庫的邏輯工作單位,它所做的對(duì)數(shù)據(jù)修改操作要么全部執(zhí)行,要么完全不執(zhí)行。這種特性稱為原子性。
事務(wù)的原子性要求,如果把一個(gè)事務(wù)可看作是一個(gè)程序,它要么完整的被執(zhí)行,要么完全不執(zhí)行。就是說事務(wù)的操縱序列或者完全應(yīng)用到數(shù)據(jù)庫或者完全不影響數(shù)據(jù)庫。這種特性稱為原子性。
假如用戶在一個(gè)事務(wù)內(nèi)完成了對(duì)數(shù)據(jù)庫的更新,這時(shí)所有的更新對(duì)外部世界必須是可見的,或者完全沒有更新。前者稱事務(wù)已提交,后者稱事務(wù)撤消(或流產(chǎn))。DBMS必須確保由成功提交的事務(wù)完成的所有操縱在數(shù)據(jù)庫內(nèi)有完全的反映,而失敗的事務(wù)對(duì)數(shù)據(jù)庫完全沒有影響。
一致性
事務(wù)的一致性指的是在一個(gè)事務(wù)執(zhí)行之前和執(zhí)行之后數(shù)據(jù)庫都必須處于一致性狀態(tài)。這種特性稱為事務(wù)的一致性。假如數(shù)據(jù)庫的狀態(tài)滿足所有的完整性約束,就說該數(shù)據(jù)庫是一致的。
一致性處理數(shù)據(jù)庫中對(duì)所有語義約束的保護(hù)。例如,當(dāng)數(shù)據(jù)庫處于一致性狀態(tài)S1時(shí),對(duì)數(shù)據(jù)庫執(zhí)行一個(gè)事務(wù),在事務(wù)執(zhí)行期間假定數(shù)據(jù)庫的狀態(tài)是不一致的,當(dāng)事務(wù)執(zhí)行結(jié)束時(shí),數(shù)據(jù)庫處在一致性狀態(tài)S2。
分離性
分離性指并發(fā)的事務(wù)是相互隔離的。即一個(gè)事務(wù)內(nèi)部的操作及正在操作的數(shù)據(jù)必須封鎖起來,不被其它企圖進(jìn)行修改的事務(wù)看到。
分離性是DBMS針對(duì)并發(fā)事務(wù)間的沖突提供的安全保證。DBMS可以通過加鎖在并發(fā)執(zhí)行的事務(wù)間提供不同級(jí)別的分離。假如并發(fā)交叉執(zhí)行的事務(wù)沒有任何控制,操縱相同的共享對(duì)象的多個(gè)并發(fā)事務(wù)的執(zhí)行可能引起異常情況。
DBMS可以在并發(fā)執(zhí)行的事務(wù)間提供不同級(jí)別的分離。分離的級(jí)別和并發(fā)事務(wù)的吞吐量之間存在反比關(guān)系。較多事務(wù)的可分離性可能會(huì)帶來較高的沖突和較多的事務(wù)流產(chǎn)。流產(chǎn)的事務(wù)要消耗資源,這些資源必須要重新被訪問。因此,確保高分離級(jí)別的DBMS需要更多的開銷。
持久性
持久性意味著當(dāng)系統(tǒng)或介質(zhì)發(fā)生故障時(shí),確保已提交事務(wù)的更新不能丟失。即一旦一個(gè)事務(wù)提交,DBMS保證它對(duì)數(shù)據(jù)庫中數(shù)據(jù)的改變應(yīng)該是永久性的,耐得住任何系統(tǒng)故障。所以,持久性主要在于DBMS的恢復(fù)性能。持久性通過數(shù)據(jù)庫備份和恢復(fù)來保證。
總結(jié)
以上就是本文淺談數(shù)據(jù)庫四大特性的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:oracle數(shù)據(jù)庫導(dǎo)入導(dǎo)出命令解析、淺談oracle rac和分布式數(shù)據(jù)庫的區(qū)別、oracle 數(shù)據(jù)庫啟動(dòng)階段分析等,如有不足之處,歡迎留言指出,小編會(huì)及時(shí)回復(fù)大家并修改,努力給廣大編程愛好者提供一個(gè)更好的閱讀體驗(yàn)和優(yōu)質(zhì)文章供參考。
相關(guān)文章
5分鐘快速了解數(shù)據(jù)庫死鎖產(chǎn)生的場(chǎng)景和解決方法
這篇文章主要給大家介紹了關(guān)于如何通過5分鐘快速理解數(shù)據(jù)庫死鎖的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Navicat數(shù)據(jù)庫如何查找篩選某個(gè)值
這篇文章主要介紹了Navicat數(shù)據(jù)庫如何查找篩選某個(gè)值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09IndexedDB瀏覽器內(nèi)建數(shù)據(jù)庫并行更新問題詳解
這篇文章主要為大家介紹了IndexedDB瀏覽器內(nèi)建數(shù)據(jù)庫并行更新問題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12MySQL與Oracle 差異比較之四條件循環(huán)語句
這篇文章主要介紹了MySQL與Oracle 差異比較之四條件循環(huán)語句,需要的朋友可以參考下2017-04-04