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--创建高性能的索引
    error:0906D064:PEM routines:PEM_read_bio:bad base64 decode
    高性能MySQL--MySQL数据类型介绍和最优数据类型选择
    Elasticsearch入门和查询语法分析(ik中文分词)
    裁员浪潮,互联网人该何去何从?
    django+mysql的使用
    很详细的Django入门详解
    (2021年1月5日亲测有效)最新PyCharm 安装教程&激活破解,Pycharm激活,Pycharm破解
    (2021年1月5日更新)!最新的pycharm永久激活办法,亲测有效
    太干了!一张图整理了 Python 所有内置异常
  • 原文地址:https://www.cnblogs.com/haon/p/10849868.html
Copyright © 2011-2022 走看看