什麼是資料庫的事務???

2021-07-15 05:15:33 字數 1574 閱讀 3851

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

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

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

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

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

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

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

sqlserver啟動事務有三種模式:

?自動提交:在自動提交模式下,每乙個sql語句就是乙個事務(也就是乙個操作),語句執行完成以後,事務也就完成了,這時在這模式下,sqlserver自動結束事務。sqlserver為每個單獨的語句提供這種事務模式,以保證資料的一致性。sqlserver的預設方式就是這種方式。但是如果是一組語句操作,要想使用事務模式就得採用下面的方式了。

?顯式:當明確事務開始和結束的點時,所使用的就是顯式事務模式。   開始事務語句:begin transaction;結束事務語句:commit(成功提交)、rollback(事務失敗)。

?隱式:無論何時使用某些sql語句,sqlserver就會隱式的啟動乙個事務。在這裡他也把每乙個sql語句當作乙個事務,只不過這種模式負責啟動事務,而自動提交模式負責提交事務,也就是結束事務。

舉例說明如:begin transaction update_a  //開始事務

update biao set a=2000

rollback transaction  update_a  //結束事務

上面的情況是在sql查詢分析器中執行的,可以虛擬兩個使用者,同時對biao進行訪問,乙個更新資料,乙個查詢資料,兩個使用者訪問時間交叉。

資料庫 什麼是事務?

1 事務 transaction 是併發控制的單位,是使用者定義的乙個操作序列。這些操作要麼都做,要麼都不做,是乙個不可分割的工作單位。通過事務,sql server能將邏輯相關的一組操作繫結在一起,以便伺服器保持資料的完整性。2 事務通常是以begin transaction開始,以commit或...

什麼是資料庫事務

事務是一組邏輯操作單元 包含乙個或多個dml操作 使資料從一種狀態變換到另一種狀態 保證所有的事務都做為乙個工作單元來執行,即使出現了故障,都不能改變這種執行方式。當乙個事務中執行多個操作時,要麼所有事務都被提交 commit 那麼這些修改就永久的儲存下來 要麼 資料庫管理系統 將放棄所有所做的修改...

什麼是資料庫事務?

事務是作為乙個邏輯單元執行的一系列操作,要麼一起成功,要麼一起失敗。乙個邏輯工作單元必須有四個屬性,稱為 acid 原子性 一致性 隔離性和永續性 屬性,只有這樣才能成為乙個事務。原子性 事務必須是原子工作單元 對於其資料修改,要麼全都執行,要麼全都不執行。一致性 事務在完成時,必須使所有的資料都保...