理解資料庫中的事務

2021-08-10 03:58:33 字數 1034 閱讀 1243

什麼是事務?我們知道,資料庫是乙個面向多使用者的共享機制,因此資料庫管理系統應當具備併發控制和封鎖機制,保證資料庫系統的正常執行。但是當多個使用者訪問資料庫的時候,如果每乙個使用者程式乙個乙個的序列執行,則每一時刻只有乙個使用者執行對資料庫的操作,其他使用者必須等待,這樣的話會嚴重影響資料庫資源的使用。所以資料庫管理系統必有能夠保證多個使用者同時使用資料庫。但是這樣會出現以下三個主要異常問題:

髒讀資料:當第乙個使用者修改資料時,第二個使用者在第乙個使用者沒有確認修改之前讀取了該資料,這時可能會出現髒讀現象。如果第乙個使用者確認了修改,第二個使用者檢索不到資料庫中所修改的資料,有時這種現象也稱為丟失修改。(看到的不是一回事)

不可重複讀:當某乙個使用者對某一行資料進行第一次讀取過程後,另外乙個使用者對該資料進行了修改,從第乙個使用者的角度來看,如果再次讀取原先的資料會發現與前次不同,這就是不可重複讀現象。

發生幻象:當第乙個使用者檢查某張表的時候,沒有發現某個值x,但是在該使用者還沒操作完成之前,另外乙個使用者插入了乙個x值,結果,導致第乙個使用者認為資料庫沒有x值,而實際上資料庫有這個值x。這就是幻象。

使用者之間相互干擾,出現的以上問題,後果不堪設想。因此資料庫系統採用事務的概念來解決這個問題。

事務是一系列作為乙個邏輯單元來執行的操作集合。它是資料庫維護資料一致性的單位,它將資料庫從一致狀態轉變為新的一致狀態,說的簡單一點就是,如果一組處理步驟要麼全部發生要麼一步也不執行,我們稱該組處理步驟為乙個事務。這樣就保證了資料始終一致的狀態,不至於破壞資料的完整性、可靠性。乙個事務執行以後,dbms會自動檢查資料庫中資料的一致性。

確保資料的一致性是保證資料庫裡面的資料正確反映現實世界的前提。舉個例子大家可能就清楚了,比如乙個銀行要將一筆錢從a->b;對資料庫中的操作主要有兩個步驟:一是從a賬戶中減去這筆錢;二是把b賬戶中的錢增加一筆。其實這兩個步驟操作就是乙個邏輯單元,就是乙個操作集合,就是乙個事務。這就要求兩個步驟操作同步執行,要麼它們都操作成功,要麼都操作失敗。如果乙個操作失敗,整個事務也就失敗了,並且已經執行的操作都會被撤消,也就是回滾到先前的狀態。

徹底理解資料庫事務

事務 transaction 一般是指要做的或所做的事情。在計算機術語中是指訪問並可能更新資料庫中各種資料項的乙個程式執行單元 unit 在計算機術語中,事務通常就是指資料庫事務。乙個資料庫事務通常包含對資料庫進行讀或寫的乙個操作序列。它的存在包含有以下兩個目的 1 為資料庫操作提供了乙個從失敗中恢...

簡單例子理解資料庫事務

建立表 建立農行賬戶表bank if exists select from sysobjects where name bank drop table bank gocreate table bank customername char 10 顧客姓名 currentmoney money 當前餘額...

簡單例子理解資料庫事務

簡單例子理解資料庫事務 簡單例子理解資料庫事務 sql 建立表 建立農行賬戶表bank if exists select from sysobjects where name bank drop table bank go create table bank customername char 10...