資料庫事務以及髒讀,不可重複讀,幻讀

2021-09-12 19:23:33 字數 529 閱讀 1538

4種事務:

序列讀:事務序列執行,效率最低

可重複讀:乙個事務不會去修改已經讀取但未提交的資料。也就是說它沒有提交前,怎麼讀都是那個數值。避免不了幻讀

讀未提交:即使沒有提交,也可以被別人讀到。會造成髒讀,幻讀,不可重複。

讀已提交:讀取已經提交的資料。避免不了幻讀以及不可重複讀,比如現在a讀到b為1,在它操作前,c把b+1了,那麼現在a讀到的b為2,這就亂套了。

髒讀:乙個事務讀到了另乙個事務回滾前的資料。比如讀未提交,a讀到c修改過後b的值為1,而此時c回滾b為0,那麼a髒讀了

不可重複讀:事務a首先讀取了一條資料,然後執行邏輯的時候,事務b將這條資料改變了,然後事務a再次讀取的時候,發現資料不匹配了,就是所謂的不可重複讀了。例如:讀已提交事務

幻讀:a根據條件讀取資料n條,b系統操作之後新增了m條,那麼a就幻讀了,現在結果為n+m條

mysql預設是可重複讀,至於幻讀,使用悲觀鎖去解決

不可重複讀,幻讀區別:

前者針對update、delete,後者針對insert

參考

事務以及髒讀 幻讀 不可重複讀

事務 是指資料庫中的一連串的連續操作,而且這一系列連續的操作要麼全部執行成功,要麼全部執行不成功。具有著原子性。事務的特點 1,原子性 要麼都執行成功,要麼都不成功 2,一致性 3,隔離性 不同的事務不知道對方的執行過程以及執行到了什麼程度 4,永續性 每個事務執行完畢必然會對資料庫進行資料的持久化...

事務 髒讀 不可重複讀 幻讀

建立db8資料庫 create database db8 使用db8資料庫 use db8 建立賬戶表 create table account id int primary keyauto increment 賬戶id name varchar 20 賬戶名稱 money double 賬戶餘額 ...

資料庫幻讀 髒讀 不可重複讀

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