原子性(atomicity)
原子性要求事務所包含的全部操作是乙個不可分割的整體,這些操作要麼全部提交成功,要麼只要其中乙個操作失敗,就全部「成仁」一致性(consistency)
一致性要求事務所包含的操作不能違反資料資源的一致性檢查,資料資源在事務執行之前處於乙個資料的一致性狀態,那麼,事務執行之後也需要依然保持資料間的一致性狀態隔離性(isolation)
事務的隔離性主要規定了各個事務之間相互影響的程度。隔離性概念主要面向對資料資源的併發訪問(concurrency),並兼顧影響事務的一致性。當兩個事務或者更多事務同時訪問同一資料資源的時候,不同的隔離級別決定了各個事務對該資料資源訪問的不同行為。我們可以為事務指定四種型別的隔離級別,隔離程度按照從弱到強分別為「read uncommitted」,「read committed」,「repeatable read」和「serializable」:
髒讀(dirty read). 如果乙個事務中對資料進行了更新,但事務還沒有提交,另乙個事務可以「看到」該事務沒有提交的更新結果,這樣造成的問題就是,如果第乙個事務回滾,那麼,第二個事務在此之前所「看到」的資料就是一筆髒資料。
不可重複讀取(non-repeatable read). 不可重複讀取是指同乙個事務在整個事務過程中對同一筆資料進行讀取,每次讀取結果都不同。如果事務1在事務2的更新操作之前讀取一次資料,在事務2的更新操作之後再讀取同一筆資料一次,兩次結果是不同的,所以,read uncommitted也無法避免不可重複讀取的問題。
幻讀(phantom read)[3]. 幻讀是指同樣一筆查詢在整個事務過程中多次執行後,查詢所得的結果集是不一樣的。幻讀針對的是多筆記錄。在read uncommitted隔離級別下, 不管事務2的插入操作是否提交,事務1在插入操作之前和之後執行相同的查詢,取得的結果集是不同的,所以,read uncommitted同樣無法避免幻讀的問題。
在具體的實踐中,我們需要根據系統的具體情況來調整隔離度以保證系統效能與資料一致性之間的乙個良好的平衡,但總的來說,保證資料的一致性的考慮應該優先於對系統效能的考慮。
永續性(durability)
事務的永續性是指一旦整個事務操作成功提交完成,對資料所做的變更將被記載並不可逆轉spring事務
Spring事務(一) Spring事務的使用
事務的經典舉例 某人要在商店使用電子貨幣購買100元的東西,當中至少包括兩個操作 該人賬戶減少100元 商店賬戶增加100元 事務就是要確保以上兩個操作 都能完成 或者 一起取消,否則就會出現100元平白消失或出現的情況。摘自wiki spring事務有兩種方式 程式設計式事務管理 宣告式事務管理 ...
spring事務整理一
工作很多年了,整理下自己的知識體系。spring為了方便事務管理,提供了註解與xml配置事務的形式。業務中事務使用時注意點 1.避免超長事務,影響效能及吞吐量,特別是一般業務在開啟事務時會加資料庫行級鎖,如果事務超長會影響其它事務的操作。2.將回滾設定為 throwable,即對於任何throwab...
spring事務配置一
通常建議採用宣告式事務管理。宣告式事務管理的優勢非常明顯 中無需關於關注事務邏輯,讓spring宣告式事務管理負責事務邏輯,宣告式事務管理無需與具體的事務邏輯耦合,可以方便地在不同事務邏輯之間切換。宣告式事務管理的配置方式,通常有如下三種 1.使用transactionproxyfactorybea...