并行事务的问题
困难只是暂时的,放弃才是永久的。
—— 罗伯特·舒勒
MySQL服务端是允许多个客户端连接的,这意味着MySQL会出现同时处理多个事务的情况。
那么在同时处理多个事务的时候,就可能出现脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)的问题。
脏读:
如果一个事务 读到 了另一个 未提交事务修改过的数据 ,就意味着发生了 脏读 现象。
事务A读取事务B未提交的数据,事务B回滚导致事务A读到无效数据。(事务A读到事务B未提交的余额修改,但B最终回滚)
不可重复读:
在一个事务内多次读取同一个数据,如果出现前后两次读到的数据不一样的情况,就意味着发生了 不可重复读 现象
事务A多次读取同一数据,期间事务B修改了该数据,导致A两次结果不一致(事务A第一次读余额为100,事务B修改为200后,A第二次读余额为200)
幻读:
在一个事务内多次查询某个符合查询条件的 记录数量,如果出现前后两个查询到的记录数量不一样的情况,就意味着发生了 幻读 现象
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号