zoukankan      html  css  js  c++  java
  • 数据库隔离级别(这位大哥写的清楚)

    原文:https://blog.csdn.net/xmh594603296/article/details/79676844

    脏读: (读取了未提交的新事物,然后被回滚了)

        事务A读取了事务B中尚未提交的数据。如果事务B回滚,则A读取使用了错误的数据。

        比如我给你转了100万,但是我还没有提交,此时你查询自己账户,多了100万,很开心。然后我发现转错人了,回滚了事物。然后你100万就没了。  在过程中你查到了没有提交事物的数据(多出的100万),这就是脏读。

    (解决:如果 一个事物在读的时候,禁止读取未提交的事物。是不是就解决了。)

    不可重复读: (读取了提交的新事物,指更新操作)

          不可重复读是指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了。
      不可重复读和脏读的区别是,脏读是某一事务读取了另一个事务未提交的脏数据,而不可重复读则是读取了前一事务提交的数据。
      在某些情况下,不可重复读并不是问题,比如我们多次查询某个数据当然以最后查询得到的结果为主。但在另一些情况下就有可能发生问题,例如同一个事物前后两次查询同一个数据,期望两次读的内容是一样的,但是因为读的过程中,因为令一个数据写了该数据,导致不可重复读。(解决:如果 一个事物在读的时候,禁止任何事物写。是不是就解决了。)

    幻读:(也是读取了提交的新事物,指增删操作)

        在事务A多次读取构成中,事务B对数据进行了新增操作,导致事务A多次读取的数据不一致。幻读和不可重复读的区别在于,
        不可重复是针对记录的update操作,只要在记录上加写锁,就可避免;幻读是对记录的insert操作,

        要禁止幻读必须加上全局的写锁(比如在表上加写锁)。 另外说一下两类丢失更新:

        (解决,如果一个事物加上表级锁,只要有任何东西操作这个表的时候,禁止任何操作的并发)

  • 相关阅读:
    虚拟主机导入MySQL出现Unknown character set: ‘utf8mb4’
    解决导入MySQL数据库提示"Unknown character set: 'utf8mb4'"错误
    织梦dedecms如何去除版权中的Power by DedeCms
    发送邮件常见出错代码及简单解决方法
    Hadoop集群配置(最全面总结)
    大数据下的数据分析平台架构
    跟上节奏 大数据时代十大必备IT技能
    Hive深入浅出
    深入解析:分布式系统的事务处理经典问题及模型(转载分享)
    数据分析≠Hadoop+NoSQL
  • 原文地址:https://www.cnblogs.com/haon/p/10849868.html
Copyright © 2011-2022 走看看