MySQL–可重复读–需谨慎陷阱
MySQL事务的默认隔离级别:可重复读; 现象: 1:假设有两个进程A和B,同时读取了同一行数据name的初始值都是200,B开启事务对200减50,尚未提交事务; 2,此时A重新读取name数值,肯定还是200而不是150,因为B尚未提交,此时如果在代码层面对name进行减50然后进行update,会有什么问题呢? 答案:此时数据库的值就会产生错误值150,减了两次,为什么还是150呢? 原因:由于MySQL的事务默认隔离级别是可重复读,A开启事务之后,A不论select多少次,此时读的数据并不是数据库层面的真是数据,而是快照数据,每次都是一样的,所以产生了上述问题。 解决办法:更新数据由代
用户评论