1. 程式人生 > >資料庫中事務詳解!

資料庫中事務詳解!

首先說一下什麼是事務!

資料庫事務(Database Transaction) ,是指作為單個邏輯工作單元執行的一系列操作,要麼完全地執行,要麼完全地不執行。 事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為一個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式更加可靠。一個邏輯工作單元要成為事務,必須滿足所謂的ACID(原子性、一致性、隔離性和永續性)屬性。事務是資料庫執行中的邏輯工作單位,由DBMS中的事務管理子系統負責事務的處理。

來自百度百科!

再說一下事務的四大特性:

1. 原子性(Atomicity)
                              原子性是指事務包含的所有操作要麼全部成功,要麼全部回滾,因此事務的操作成功就必須要完全應用到資料庫,

                  如果操作失敗則不能對資料庫又熱和影響

             2.一致性(Consistency)
                               一致性是指事務必須是資料庫從一個一致性狀態變換到另一個一致性狀態,也就是說一個事務執行之前和執行

                  之後都必須處於一致性狀態.

                                那轉賬來說,假設使用者A和使用者B兩者的錢加起來一共是5000,那麼不管A還是B如何轉賬,轉幾次帳,事務結束後

                   兩個使用者的錢加起來應該還是5000,這就是事務的一致性.

           3.隔離性(Isolation)
                                隔離性是當多個使用者併發訪問資料庫時,比如操作同一張時,資料庫為每一個使用者開啟的事務,不能被其他事務的

                   操作所幹擾,多個併發事務之間要相互隔離.

                                紀要達到這麼一種效果:對於任意兩個併發的事務T1和T2,在事務T1看來,T2要麼在T1開始之前就已經結束,要麼

                    在T1結束之後才開始,這樣每個事務都感覺不到其他事務在併發的執行.

             4.永續性(Durability)
                                永續性是指一個事務一旦被提交了,那麼對資料庫中的資料改變就是永久性的,即便是在資料庫系統遇到故障的情

                      況下也不會丟失提交事務的操作.

                                 列如我們在使用JDBC 操作資料庫時,在提交事務方法後,提示使用者事務操作完成,當我們程式執行完成直到看到提

                      示後,就可以認定事務以及正確提交,即使這時候資料庫出現了問題,也必須要將我們的事務完全執行完成,否則就會造成我

                      們看到提示事務處理完畢,但是資料庫因為故障而沒有執行事務的重大錯誤!

事務有三種模型: 1.隱式事務是指每一條資料操作語句都自動地成為一個事務,事務的開始是隱式的,事務的結束有明確的 標記。 2.顯式事務是指有顯式的開始和結束標記的事務,每個事務都有顯式的開始和結束標記。 3.自動事務是系統自動預設的,開始和結束不用標記。