Mysql隔离级别有读未提交,读已提交RC),可重复读(Mysql默认,RR),可串行化
脏读是读到了没提交的脏数据(不在数据库中的数据),
不可重复读是针对update而言,两次select读到的数据不同
幻读是针对inset,同一事务中,多次查询产生了不同的结果,例如事务A两次select中间时,事务B的insert导致两次select不同。
可重复读状态下是怎么解决幻读的
select是快照读,利用了mvcc解决了幻读问题,增删改是当前读,利用next-key锁(记录锁+间隙锁)解决了幻读问题。
但是并没有完全解决,当事务A select后,事务B insert一条数据,然后事务A再update 这条insert的数据后,再select就会查出这条新数据,解决办法是select第一次时在后面加for update,给select语句加上next-ket锁。
萌新理解不深,如有错误请评论区回复,欢迎各位指点
(图片为网上转载,侵权请联系删除)