前提:关闭自动提交模拟多线程情形:set auto_commit=0
update:如果同时对于同一行进行update,那么后更改的线程将进入阻塞
事务1:更新成功未提交
事务2:等待事务1提交并阻塞
如果等待时间过长,则mysql会让阻塞事务自动放弃锁的争夺,需要重新发起事务
事务2阻塞等待过长报错,要求重新发起事务:
如果事务2等待没有超时,则等待过后更新成功,这时事务2没有提交,则是更新到事务2的快照中。那么如果事务1提交,并开启一个事务读取(我们在事务1中写查询语句,mysql会自动帮我们开启一个事