
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在前几期的文章中给大家简单介绍了MySQL数据库架构以及数据库事务的一些基础知识等内容,而本文我们就继续来学习一下,MySQL数据库并发事务常见问题分析。
脏写或者更新丢失(LostUpdate)
当两个或多个事务同一时间修改同一行,然后基于初选定的值进行业务操作更新该行时,由于每个事务都不知道其他事务的存在,就会发生丢失更新问题。
简单来说就是后的更新覆盖了由其他事务所做的更新。
脏读(DirtyReads)
一个事务读到了其他事务已经修改但是未提交的数据,未提交意味着这些数据可能会回滚,也就是可能终不一定会存到数据库中,所以读出来的数据是无效的。
不可重复读(Non-RepeatableReads)
一个事务在读取某些数据后的某个时间点,再次读取以前读过的那批数据,却发现其读出的数据已经发生了改变,可能会受到其他事务的影响,比如其他事务改了这批数据并提交了。通常针对数据更新(UPDATE)操作或者删除(DELETE)操作。
简单来说就是在一个事务中,相同查询语句在不同时刻查询出来的结果不一致,可能是结果字段值不一致,也可能是少了行数据。
幻读(PhantomReads)
对比不可重复读,幻读是针对数据新增(INSERT)来说的,在同一事务下,在读取某些数据后的某个时间点,再次读取以前读过的那批数据,二次的SQL语句返回了之前不存在的行。
简单来说就是事务A读取到了其他事务提交的新增数据。
再来区分一下经常搞混的不可重复读和幻读。
不可重复读:说的是原来存在的记录A,记录A从A变成了记录B。
幻读:出现了原来不存在的记录。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。