赞
踩
同一个会话中,
执行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之前,无法检索到记录。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。