MySQL資料庫的隔離級別

2021-06-26 09:28:45 字數 561 閱讀 9184

問題:innodb ,如果乙個session a開啟事務讀一條資料,另乙個session b開啟事務更新這條資料,那麼b能夠順序提交嗎?a又讀到的是什麼值呢?

mysql預設情況下,答案為:b可以立即更改這個記錄,但是a始終都讀的是b修改前的資料,即使b已經提交了。

a只有提交了之後,再select,就看到b更新之後的資料了

mysql有四種隔離級別:

1、未提交讀

就是可以讀到別人未提交的資料,顯然,這個隔離級別最低,而且完全沒意義,沒實現真正的任何隔離!

2、提交讀

事務只能讀取到別人提交過了的資料,這個是oracle的預設隔離級別,應用到上面的案例,那麼當b提交後,a能夠立即讀取到b所提交的資料,不管a是否已經提交。

3、可重複讀

可重複讀的意思就是,即使別人提交了新的記錄,當前連線依然讀到的是當前事務開始時的記錄,也就是和當前事務開始時重複的,一樣的值。mysql預設就是該級別,也就是上面這個案例所展示的樣子

4、序列化

這個級別最嚴,所有的讀和寫都會相互互斥,等待對方完成。應用到上面的案例,b將沒辦法更新記錄,除非a提交或者回滾。

mysql資料庫隔離級別

事務的隔離級別 由高到低 1.序列化 serializable 乙個事務乙個事務的執行 2.可重複讀 repeatable read 可重複讀,無論其他事務是否修改並提交了資料,在這個事務中看到的資料值始終不受其他事務影響 mysql資料庫所預設的級別 3.讀已提交 read committed 讀...

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 序列化 這四個事務隔...