mysql隔离级别
读未提交
一个事务可以读取到另外一个是事务没有提交的数据,容易产生脏读问题
例:事务A 添加了数据库user表一条 id=10 的记录,但是没有commit,这时事务B就可以读取到这条记录,然后事务A回滚了,事务B读取的这条id=10的记录不存在就产生了脏读
读提交
一个事务只能看见其他事务提交后的数据,解决了读未提交的脏读问题,但是可能产生不可重复读的问题
例:事务A 多次读取id=10的一条数据的过程中,事务B 修改了id=10的数据并提交了,导致 事务A 多次读取的数据不一样
可重读
解决了脏读不可重复读的问题 同时也会产生幻读的问题
跟读提交的区别在于:在 事务A 开始时就确定了查询视图,多次查询共享同一个视图 而读提交时 在 事务A 中每查询一次就会创建一个查询视图,也就是当 事务B更新数据库,事务A查询到的还是更新之前事务A开始时的数据
例:事务A 查询一个id=10的数据时没有找到,这时事务B 查询一条id=10的数据并提交了,事务A 在添加id=10的数据时就报错了,这时就产生了幻读
串行化
一个事务操作时其他事务必须等待之前的事务操作完成才能操作
mysql默认可重复读,事务与事务之间互不干扰
mysql使用redo log日志来保证事务的持久性 即使发生宕机等故障 也能使用redo log日志来提交和回滚
事务当中使用队列 一定要注意执行先后顺序。执行队列查询的时候 事务有可能还没有执行完成
                    
                
                
            
        
浙公网安备 33010602011771号