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操作,

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

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

  • 相关阅读:
    操作系统概念(第十一章) 文件系统实现
    Linux内核中网络数据包的接收-第一部分 概念和框架
    【技术文档】jeecg3.7-maven搭建好开发环境入门
    memcache源码编译安装
    Linux系统级日志系统
    shell流程控制
    EOF多行写入文件防止变量替换
    zip压缩解压
    shell变量的截取总结
    对linux安装中文字体库
  • 原文地址:https://www.cnblogs.com/haon/p/10849868.html
Copyright © 2011-2022 走看看