mysql 事務控制

2021-06-25 21:42:37 字數 774 閱讀 8615

同乙個會話中,

執行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...