1. 程式人生 > >SQLSERVER中事務的基本理解

SQLSERVER中事務的基本理解

1.事務(Transaction)是併發控制的單位,是使用者定義的一個操作序列。這些操作要麼都做,要麼都不做,是一個不可分割的工作單位。  通過事務,SQL Server能將邏輯相關的一組操作繫結在一起,以便伺服器保持資料的完整性。

2.事務通常是以BEGIN TRANSACTION開始,以COMMIT或ROLLBACK結束。

    COMMIT表示提交,即提交事務的所有操作。具體地說就是將事務中所有對資料庫的更新寫回到磁碟上的物理資料庫中去,事務正常結束。

    ROLLBACK表示回滾,即在事務執行的過程中發生了某種故障,事務不能繼續進行,系統將事務中對資料庫的所有以完成的操作全部撤消,滾回到事務開始的狀態。

3.事務的四大特性:

為了進一步理解事務的特性,用比較通俗易懂的例子來解釋事務在實際使用中的處理。

    A原子性:比如說在網上轉帳從A賬戶往B賬戶轉100元,需要執行兩個操作A賬戶減少100元,B賬戶增加100元。這兩個操作如果只執行了第一個操作,那麼你是不會答應的,因為你損失了100元,而如果只執行了第二個操作,那麼銀行也不會答應。這兩個操作要麼都同時執行成功,要麼都執行失敗,否則一個成功,一個失敗都是不合理的。在一個表格中如果兩個使用者發生了類似的金額增減的時候操作,就需要將這種資料操作放在事務中。因此將這兩個操作放在一個事務中去執行,事務的原子性,保證了要麼都執行,要麼都不執行。

    B一直性:一致性的話,再舉個例子,比如說你刷卡買電影票,步驟是這樣的,首先營業員先給你打出一張票,然後你刷卡,拿電影票。這個時候,實際的電影票是資源,而資料庫中的電影票是資料。營業員如果幫你打出一張票,這個時候,資料庫中電影票實際上數目減一了,但是如果你刷卡失敗了,實際的電影票資源並沒有發生改變,這個時候執行回滾操作,恢復到打票之前的資料。這樣保證了資源和資料的一致性。

    C隔離性:隔離性的話,就是兩個事務之間的操作相互之間不會影響,即不會發生髒讀、不可重複讀和幻象。

    D永續性:永續性的話比較好理解,就是事務執行成功以後,資料將儲存在資料庫中不再發生改變。