当前位置:   article > 正文

mysql 事务控制_insert mysql lock wait

insert mysql lock wait

同一个会话中,

执行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之前,无法检索到记录。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/1006755
推荐阅读
相关标签
  

闽ICP备14008679号