MySql資料庫的事務隔離級別學習

2022-06-26 20:24:14 字數 2081 閱讀 1913

1、讀未提交

事務a可以讀取到事務b未提交的資料

設定mysql資料庫的隔離級別

set session transaction

isolation

level

read

uncommitted

檢視當前資料庫事務隔離級別

客戶端a使用事務查詢資料

begin

select

*from tb_demo

查詢結果

客戶端b使用事務更新(並未提交事務)

begin

update tb_demo set math =

4000

客戶端a再次查詢得到結果,可以發現a可以查詢到b未提交的資料讀未提交會產生幻讀,不可重複讀,髒讀的問題

2、讀已提交

設定事物的隔離級別為讀已提交

set session transaction

isolation

level

read

committed

客戶端a使用事務查詢資料

begin

select * from tb_demo

查詢結果

客戶端b使用事務更新(並未提交事務)

begin

update tb_demo set math =

100

客戶端a再次查詢得到結果,可以發現a查詢不到b未提交的資料客戶端b提交事務

commit
客戶端a再次查詢結果(客戶端a能夠讀取到b已經提交的資料)讀已提交可以解決髒讀 存在不可重複讀,幻讀問題

3、可重複讀

設定資料庫的隔離級別

set session transaction

isolation

level

repeatable

read

客戶端a查詢資料

客戶端b更新資料

begin

update tb_demo set math =

100

此時使用客戶端a查詢資料(資料為之前查詢到的資料)

客戶端b提交事務

commit
此時使用客戶端a再次查詢資料(資料依然為之前查詢到的資料)在整個事務中讀取到的資料不會改變,所以稱為可重複讀

可重複讀解決髒讀,不可重複讀問題,存在幻讀問題

4、序列化

客戶端b需等待客戶端a事務完成提交後才可繼續進行。是完整的隔離級別,會鎖定對應的資料**,因而會有效率的問題。

mysql資料庫事務隔離級別

1修改事務隔離級別 全域性修改 修改mysql.ini配置檔案 mysqlid transaction isolation repeatble read 對當前session修改 登入mysql客戶端後,執行命令set session transaction isolation level read...

MYSQL 資料庫 事務 隔離級別

定義 在資料庫 中,為了有效保證併發讀取資料的正確性,提出的事務隔離級別,由低到高依次為 1 read uncommitted 未授權讀取 讀未提交 2 read committed 授權讀取 讀提交 3 repeatable read 可重複讀取 4 serializable 序列化 這四個事務隔...

MySQL資料庫事務隔離級別

一 資料庫事務併發訪問引發的問題 二 mysql資料庫的四種事務隔離級別 隔離級別 名稱髒讀 不可重複讀 幻讀資料庫預設級別 read uncommitted 讀未提交是是 是read committed 讀已提交否是 是oracle sql server repeatable read 可重複讀否...