mysql的事物特性 MySQL事務特性及隔離級別

2021-10-17 21:46:00 字數 2391 閱讀 3194

事務的4個特性:

在mysql中,innodb和bdb型別表可以支援事務。通過innodb和bdb型別表,mysql事務能夠完全滿足事務安全的acid測試,但是並不是所有表型別都支援事務,如myisam型別表就不能支援事務,只能通過偽事務對錶實現事務處理。

acid指出每個事務型rdbms必須遵守的4個屬性,即原子性,一致性,隔離性和永續性。

原子性:事務是乙個原子操作單元,其對資料的修改要麼全都執行,要麼全都不執行。假設乙個事務由多種任務組成,其中的語句必須同時操作成功,才可以認為事務是成功的,否則將回滾到初始狀態。

一致性:事務是乙個原子操作單元,其對資料的修改要麼全都執行,要麼全都不執行。假設乙個事務由多種任務組成,其中的語句必須同時操作成功,才可以認為事務是成功的,否則將回滾到初始狀態。

隔離性:指每個事務在自己的空間發生,和其他發生在系統中的事務隔離,而且事務的結果只在他完全被執行時才能看到。即使這樣的乙個系統中同時發生多個事務,隔離性也可以保證特定的事務在完成之前,其結果是不被公布的。

永續性:事務完成之後,他對於資料的修改是永久性的,即使出現系統故障也能夠保持。通過使用日誌,系統能夠恢復在重啟前後進行的最後一次成功更新,可以反應系統崩潰時處於執行過程的事務的變化。

事務的隔離級別:

資料庫事務的隔離級別有4個,由低到高依次為read uncommitted、read committed、repeatable read、serializable,這四個級別可以逐個解決髒讀、不可重複讀、幻讀這幾類問題。

髒讀不可重複讀幻讀

read uncommitted√√√

read committed×√√

repeatable read××√

serializable×××

x表示不會出現這個問題 √表示可能會出現這個問題

serializable(序列化):顧名思義,以序列化的形式對事務進行處理,改隔離級的特點是只有當事務提交後,使用者才能從資料庫中檢視資料的變化。該隔離級執行會影響mysql的效能,因為需要占用大量資源,以保證大量事務在任意時間不被使用者看到。

repeatable read(可重讀):對於應用程式的安全性做出部分妥協,以提高其效能。事務在該隔離級上不會被看成乙個序列,不過當前在執行事務的過程中,使用者仍然看不到事務的過程。知道事務被提交為止,使用者才能看到事務的變化結果。

read committed(提交後讀):提交後讀隔離級的安全性比重復讀安全性要低。在這一級的事務,使用者可以看到其他事務新增的新紀錄。在事務處理時,如果存在其他使用者同時對事務的相應表進行修改,那麼在同一事務中不同時間內,應用select語句可能返回不同的結果集。

read uncommitted(未提交讀):該隔離級提供事務之間最小程度間隔,該隔離級容易產生虛幻讀操作,其他使用者可以在該隔離級上看到未提交的事務。

未提交讀

提交後讀:

可重讀session a:

序列化session a:

session b:

session a:

session b:

MySql 事物的四大特性

就理解的四大特性如何實現進行一下分析。首先說 四大特性指的是哪四個特性 根據定義,原子性是指乙個事務是乙個不可分割的工作單位,其中的操作要麼都做,要麼都不做。即要麼轉賬成功,要麼轉賬失敗,是不存在中間的狀態!根據定義,隔離性是指多個事務併發執行的時候,事務內部的操作與其他事務是隔離的,併發執行的各個...

關於mysql裡面的事物 mysql 事物

mysql之事物詳解 一 事務定義 事務 乙個最小的不可再分的工作單元 通常乙個事務對應乙個完整的業務 例如銀行賬戶轉賬業務,該業務就是乙個最小的工作單元 乙個完整的業務需要批量的dml insert update delete 語句共同聯合完成 事務只和dml語句有關,或者說dml語句才有事務。這...

Mysql的事物簡介

以下是銀行賬戶表t act id 賬號 餘額 進行轉賬操作 idactno balance11 6002 2100 假如1給2轉賬100,那兩個人的賬戶資訊就需要執行以下sql update t act set balance 400 where actno 1 update t act set b...