事務(transaction)是併發控制的基本單位。所謂的事務,它是乙個操作序列,這些操作要麼都執行,要麼都不執行,它是乙個不可分割的工作單位。而這些邏輯工作單元需要具有原子性, 一致性,隔離性和永續性四個屬性,統稱為acid特性。
● 原子性(atomic):事務中包含的操作被看做乙個邏輯單元,這個邏輯單元中的操作要麼全部成功,要麼全部失敗。
● 一致性(consistency):只有合法的資料可以被寫入資料庫,否則事務應該將其回滾到最初狀態。
● 隔離性 (isolation):事務允許多個使用者對同乙個資料進行併發訪問,而不破壞資料的正確性和完整性。同時,並行事務的修改必須與其他並行事務的修改相互獨立。
● 永續性(durability):事務結束後,事務處理的結果必須能夠得到固化。
資料庫事務的隔離級別有4種,由低到高分別為read uncommitted 、read committed 、repeatable read 、serializable 。而且,在事務的併發操作中可能會出現髒讀,不可重複讀,幻讀。
read uncommitted
讀未提交,顧名思義,就是乙個事務可以讀取另乙個未提交事務的資料,出現髒讀;
read committed
讀提交,顧名思義,就是乙個事務要等另乙個事務提交後才能讀取資料。
若有事務對資料進行更新(update)操作時,讀操作事務要等待這個更新操作事務提交後才能讀取資料,可以解決髒讀問題。但在這個事例中,出現了乙個事務範圍內兩個相同的查詢卻返回了不同資料,這就是不可重複讀。
repeatable read
重複讀,就是在開始讀取資料(事務開啟)時,不再允許修改操作。
重複讀可以解決不可重複讀問題。寫到這裡,應該明白的一點就是,不可重複讀對應的是修改,即update操作。但是可能還會有幻讀問題。因為幻讀問題對應的是插入insert操作,而不是update操作。
serializable 序列化
是最高的事務隔離級別,在該級別下,事務序列化順序執行,可以避免髒讀、不可重複讀與幻讀。
資料庫事務特性及隔離級別
1.原子性 atomicity 2.一致性 consistency 3.隔離性 durability 4.永續性在高併發情況下,要完成保證事務acid特性是十分困難的,除非把所有的事務序列化執行,但是因此造成的影響將是系統效能大大降低。在實際開發中很多業務對事務的要求是不一樣的,因此資料庫設計了四種...
資料庫事務ACID特性及隔離級別
資料庫acid特性介紹 1 原子性 atomic 乙個事務被視為乙個不可分割的最小工作單元,這個事務裡的所有操作要麼全部成功執行,要麼全都不執行,不能只執行其中的一部分操作。實現事務的原子性,要支援回滾操作,在某個操作失敗後,回滾到事務執行之前的狀態。回滾是乙個抽象概念,大多數資料庫在實現事務時是在...
資料庫事務特性以及隔離級別
資料庫如果支援事務的操作,那麼就具備以下四個特性 原子性 atomicity 事務是資料庫的邏輯工作單位,事務中包括的諸操作要麼全做,要麼全不做。一致性 consistency 事務執行的結果必須是使資料庫從乙個一致性狀態變到另乙個一致性狀態。一致性與原子性是密切相關的。隔離性 isolation ...