首页 > 其他分享 >mysql脏读幻读不可重复读出现原理及解决方法

mysql脏读幻读不可重复读出现原理及解决方法

时间:2023-02-07 14:56:26浏览次数:33  
标签:事务 读取 修改 幻读 重复 脏读 数据

脏读:脏读又称无效数据的读出,是指在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的。

幻读:
幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,比如这种修改涉及到表中的“全部数据行”。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入“一行新数据”。那么,以后就会发生操作第一个事务的用户发现表中还存在没有修改的数据行,就好象发生了幻觉一样。

不可重复读:
事务A首先读取了一条数据,然后执行逻辑的时候,事务B将这条数据改变了,然后事务A再次读取的时候,发现数据不匹配了,就是所谓的不可重复读了。

丢失的修改:
两个事务同时修改同一行数据并提交,其中一个事务覆盖了另一事务的修改。

解决方法
以上出现的都是数据库事务隔离级别的问题,SQL标准定义了事务隔离级别分为四种(级别递减):

Serializable (串行化):最严格的级别,事务串行执行,资源消耗最大;简言之,它是在每个读的数据行上加上共享锁,但可能导致大量的超市现象和锁竞争。

REPEATABLE READ(可重复读) :保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了“脏读取”和“不可重复读取”的情况,但不能避免“幻读”,但是带来了更多的性能损失。

READ COMMITTED (提交读):大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”,但不能避免“幻读”和“不可重复读取”。该级别适用于大多数系统。

Read Uncommitted(未提交读) :事务中的修改,即使没有提交,其他事务也可以看得到,会导致“脏读”、“幻读”和“不可重复读取”。

 

 

标签:事务,读取,修改,幻读,重复,脏读,数据
From: https://www.cnblogs.com/songyunjie/p/17098401.html

相关文章

  • 多线程查询数据库避免重复
    contriller:packagebatch;importcom.alibaba.fastjson.JSONObject;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.......
  • List<Map<String, Object>> 去出重复
    List<Map<String,Object>>去出重复publicstaticvoidmain(String[]args){String[]array={"name","age"};List<Map<String,Object>>oldList=getTe......
  • GROUP BY结合HAVING实现查询重复数据
    GROUPBY字段名,以该字段名已经分类,HAVING可以对分完类的数据使用聚合函数例如SELECT*FROMstudentWHEREstu_nameIN(SELECTstu_nameFROMstudentGROUPBY......
  • spring 重复注解和aop拦截的实现示例
    前言:1:jdk1.8开始支持重复注解@Repeatable实现2:aop拦截需要拦截当前注解和@Repeatable指向的包装注解才可以完全拦截到,因为:1.当在在方法上只有一个注解时,aop拦截......
  • 详解Spring AOP自定义可重复注解没有生效问题
    目录1.问题背景2.不啰嗦,上代码3.问题排查3.1是不是切点写得有问题,于是换成如下形式:3.2是不是使用的地方不是代理对象4.问题原因 1.问题背景工作中遇......
  • java8 list取出重复值
    @Testpublicvoidtest10(){//根据device_code去重,取出重复值List<Employee>emps=newArrayList<>();List<String>dupList=emps.stream().colle......
  • sql语句重复数据的查找和删除
    一、查找重复记录1.查找全部重复记录单字段:Select*From表Where重复字段In(Select重复字段From表GroupBy重复字段HavingCount(*)>1)多字段:selectidfrom......
  • 《剑指Offer》-3-数组中重复的数字
    我觉得这道题完全可以出难一点,可以返回有哪些数字重复了,分别重复了几次经评论区提醒,或许考察的是与面试官的沟通能力,对不同解法的衡量取舍:比如时间优先可以用set轻松解......
  • 几行Python代码自动清理电脑重复文件
    随着互联网不断的发展,众多有技术的企业都已经转入人工智能的领域,我们知道人工智能首先就是需要会python编程,因此,如果能学好Python不仅仅只限于人工智能行业,能从事的行业还很......
  • 几行Python代码自动清理电脑重复文件
    随着互联网不断的发展,众多有技术的企业都已经转入人工智能的领域,我们知道人工智能首先就是需要会python编程,因此,如果能学好Python不仅仅只限于人工智能行业,能从事的行业还......