隔離級別
隔離級別的值
導致的問題
read-uncommitted
0導致髒讀
read-committed
1避免髒讀,允許不可重複讀和幻讀
repeatable-read
2避免髒讀,不可重複讀,允許幻讀
serializable
3序列化讀,事務只能乙個乙個執行,避免了髒讀、不可重複讀、幻讀。執行效率慢,使用時慎重
髒讀:一事務對資料進行了增刪改,但未提交,另一事務可以讀取到未提交的資料。如果第乙個事務這時候回滾了,那麼第二個事務就讀到了髒資料。
不可重複讀:乙個事務中發生了兩次讀操作,第一次讀操作和第二次操作之間,另外乙個事務對資料進行了修改,這時候兩次讀取的資料是不一致的。
幻讀:第乙個事務對一定範圍的資料進行批量修改,第二個事務在這個範圍增加一條資料,這時候第乙個事務就會丟失對新增資料的修改。
總結:隔離級別越高,越能保證資料的完整性和一致性,但是對併發效能的影響也越大。
大多數的資料庫預設隔離級別為read commited,比如sqlserver、oracle少數資料庫預設隔離級別為:repeatable read 比如: mysql innodb
資料庫事務隔離級別詳解
資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable,這四個級別可以逐個解決髒讀 不可重複讀 幻讀這幾類問題。可能出現 不會出現 髒讀不可重複讀 幻讀read uncommitted rea...
資料庫事務隔離
資料庫事務的四大特性 acid atomicity 原子性 乙個事務必須被視為乙個不可分割的最小工作單元。consistency 一致性 資料庫總是從乙個一致性狀態轉移到另乙個一致性狀態。isolation 隔離性 乙個事務所做的修改在最終提交以前,對於其他事務是不可見的。durability 永續...
資料庫 事務隔離
1 髒讀 diety read 定義 a事務讀取b事務尚未提交的更改資料,並在這個資料的基礎上操作。如果恰巧b事務回滾,那麼a事務讀到的資料根本是不被承認的。舉個例子 在這個場景中,b希望取款500元但又撤銷,而a往賬戶中轉入100元,就因為a事務讀取b事務尚未提交的資料,賬戶白白丟失了500元。2...