只要跟資料庫打交道,肯定離不開事務,那什麼是事務呢?簡單來說,事務就是要保證一組對資料庫的操作,要麼成功,要麼失敗。對於mysql而言,事務是在引擎層實現的,mysql原生的myisam是不支援事務的,這也是myisam 被innodb取代的原因之一。
事務有四種特性,分別是原子性(atomicity)、一致性(consistency)、隔離性(isolation)、永續性(durability),也就是常說的acid。
當資料庫上有多個事務同時執行的時候,就可能出現髒讀(dirty read)、不可重複讀(non-repeatable read)、幻讀(phantom read)的問題。
ps:幻讀和不可重複讀都是讀取了另一條已經提交的事務(這點就髒讀不同),所不同的是不可重複讀查詢的都是同乙個資料項,而幻讀針對的是一批資料整體(比如資料的個數)。
為了解決上面提到的問題,就有了隔離級別的概念。
sql標準的事務隔離級別有以下幾種:
隔離級別越高,效率也會越低。mysql預設的隔離級別是可重複讀,而oracle、sql server預設的隔離級別是讀提交。
就可重複讀來說,它的實現是基於資料庫的多版本併發控制(mvcc),就是同一條記錄在系統中可能存在多個版本。
事務的特性和隔離級別
1.原子性 指事務必須是原子工作單元,對於其資料修改,要麼全都執行,要麼全都不執行。2.一致性 指事務在完成時,必須使所有的資料都保持一致狀態。3.隔離性 指由併發事務所做的修改必須與任何其他併發事務所做的修改隔離。4.永續性 指事務完成之後,對於系統的影響具有永久性。事務隔離級別的含義 是否在讀資...
事務的特性和隔離級別
事務特性 原子性 atomicity 原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾,一致性 consistency 一致性是指事務必須使資料庫從乙個一致性狀態變換到另乙個一致性狀態,也就是說乙個事務執行之 前和執行之後都必須處於一致性狀態。隔離性 isolation 隔離性是當多個使用...
事務的特性和隔離級別
事務的特性和隔離級別 1.事務的特性 1 原子性 atomicity 原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。2 一致性 consistency 乙個事務中,事務前後資料的完整性必須保持一致。3 隔離性 isolation 多個事務,事務的隔離性是指多個使用者併...