您好,登錄后才能下訂單哦!
當系統崩潰后,發現有沒有提交的事務,有的話會回滾操作
(1)在第一個 窗口 begin; select from t where id < 7; -> 1 3 5
(2)在第二個 窗口 begin; insert into t values(2); commit;
(3)在第一個 窗口 select from t where id < 7; -> 1 3 5 commit; 把當前事務隔離級別改下
set sesstion tx_isolation='read-committed'; (讀已提交)
select from t where id < 7; 1 3 5 2
(4)在第二個 窗口 begin; insert into t values(4); commit;
(5)在第一個 窗口 select from t where id < 7; 1 3 5 2 4
第四種 隔離級別
可串行化 serializable 最高隔離級別 ,讀取的每一行數據都加鎖,會導致大量的鎖超時,所以很少使用這個隔離級別,隔離性由低到高,并發性由高到低。
innodb 默認隔離級別是 可重復讀
定義 運行時間比較長 ,操作的數據比較多的事務
風險 :
1 鎖定太多的數據,造成大量的阻塞和鎖超時,
2 回滾時所需要時間比較長,執行時間長,容易造成主從延遲,
3 如果主庫的事務執行了幾個小時后再提交,才會寫入binlog 里,從庫才會讀binlog 日志 才開始同步
4 innodb 是行級鎖,當涉及所有記錄時,就會相當于整個表鎖住,
1 避免一次處理太多的數據
2 移除不必要在事務中的select 操作
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。