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