髒讀
事務a更新了資料但是並未提交,事務b查詢到事務a更新的資料,事務a此時執行回滾操作,事務b讀到的資料是髒資料。
不可重複讀
事務a多次讀取同一資料。事務b在事務a多次讀取的過程中,對資料作了更新並提交,導致事務a多次讀取同一資料時,結果不一樣。
幻讀事務a多次讀取一組資料。事務b在事務a多次讀取的過程中,對資料作了插入或刪除,然後提交。導致事務a多次讀取的一組資料時,結果並不相同,好像出現了幻覺。
mysql的四種事務隔離:
讀未提交 (read-uncommitted)
讀已提交 (read-committed):解決了髒讀
可重複讀 (repeatable-read):解決不可重複讀。事務a多次讀取同一資料,即使其他事務在此期間對資料更新並提交,事務a依然會讀取到相同資料。
.序列化 (serializable):解決了幻讀。事務隔離級別為序列化時,讀寫資料都會鎖住整張表,影響效能。
注意:mysql預設的隔離級別是repeatable-read,可更改為read-committed
在/etc/mysql/mysql.con.d/mysqld.cnf檔案中配置
transaction-isolation=read-committed
重啟mysql服務
sudo service mysql restart
檢視mysql事務隔離級別
檢視當前會話隔離級別
select @@tx_isolation;
檢視當前資料庫隔離級別
select @@global.tx_isolation;
隔離級別
髒讀不可重複讀
幻讀讀未提交(read uncommitted)是是
是讀已提交(read committed)否是
是可重複讀(repeatable-read)否否
是可序列化(serializable)否否
否
mysql事務隔離最高 Mysql事務隔離級別
mysql官方文件顯示 innodb中每個隔離級別的詳細描述如下 read uncommitted select語句以非鎖定方式被執行,但是乙個可能更早期版本的記錄會被用到。因此,使用這個隔離級別,比如,讀是不連貫的。著也被稱為 髒讀 dirty read 另外,這個隔離級別象read commit...
MySQL 事務隔離
未提交讀 read uncommitted 允許髒讀,也就是可能讀取到其他會話中未提交事務修改的資料 提交讀 read committed 只能讀取到已經提交的資料。oracle等多數資料庫預設都是該級別 不重複讀 可重複讀 repeated read 可重複讀。在同乙個事務內的查詢都是事務開始時刻...
Mysql 事務隔離
1 事務的特性 原子性 一致性 隔離性 永續性 2 多事務同時執行的時候,可能會出現的問題 髒讀 不可重複讀 幻讀 3 事務隔離級別 讀未提交 讀提交 可重複讀 序列化 4 不同事務隔離級別的區別 讀未提交 乙個事務還未提交,它所做的變更就可以被別的事務看到 讀提交 乙個事務提交之後,它所做的變更才...