同乙個會話中,
執行insert、update、delete操作後,在會話commit之前,此時當前回話執行select操作可以檢索到更改的內容,其他會話無法檢索到當前回話更改的內容;
進行業務處理時,
當前業務如果沒有處理成功,要rollback當前回話已經執行的insert、update、delete操作,防止下一次業務處理成功後commit時將上一次未處理成功的中間操作一併commit;
兩個會話同時請求update、delete同一條記錄時,
a會話update/delete執行後未commit之前,b會話的update/delete會阻塞,觸發資料庫的行鎖,直到a會話commit後,b會話update/delete才會執行。
如果a會話乙隻不commit,將造成b會話error code: 1205. lock wait timeout exceeded; try restarting transaction。
兩個會話同時請求insert,
create table test_db.test_serial (
name varchar(64) not null,
value serial
);insert into test_db.test_serial(name) values('hahaha');
a會話insert執行後未commit之前,b會話的insert操作可以正常進行,但是value的值會取a會話insert後的增量值,確保value的唯一性。
c會話在a、b會話commit之前,無法檢索到記錄。
mysql 多事務 MySQL多事務併發控制
mysql的預設隔離級別是可重複讀。若兩個事務a和b操作同一資源,a和b都通過begin開啟事務後,若a只存在讀操作,則b可以對資料進行寫操作,且b的寫操作不會影響a的讀,即a每次讀到的內容都是一致的 就算b已經提交 若a進行了寫操作,則b的讀操作不受影響,但b的寫操作會被阻塞,直到a提交了事務或者...
MySQL多事務併發控制
mysql的預設隔離級別是可重複讀。若兩個事務a和b操作同一資源,a和b都通過begin開啟事務後,若a只存在讀操作,則b可以對資料進行寫操作,且b的寫操作不會影響a的讀,即a每次讀到的內容都是一致的 就算b已經提交 若a進行了寫操作,則b的讀操作不受影響,但b的寫操作會被阻塞,直到a提交了事務或者...
MySQL的事務控制(二)
1.mysql 通過 set autocommit,start transaction commit rollback 等語句支援本地事務。2.語法格式 start transaction begin work commit work and no chain no release set auto...