• 事务的隔离级别


    数据库系统有四个隔离级别,分别为未提交读、已提交读、可反复读、串行化

    大多数数据库的默认级别就是Read committed。比方Sql Server , Oracle。Mysql的默认隔离级别就是Repeatable read。


    READ UNCOMMITTED(未提交读)

    事务A运行的操作未提交。可是事务B还是能看到改动,这时会产生脏读的情况。

    READ COMMITTED(提交读)

    事务A先是读取了数据,这时事务B更改了同一数据。并已提交,这时事务A再次读取这个数据时就会发现两次数据不一致,这就产生不可反复读的现象。

    REPEATABLE READ(可反复读)

    当事务A读取记录时,会对此记录加入一个共享锁,即事务B不能在事务A结束前对记录进行改动。

    可能产生的问题:当运行范围查询时,可能会产生幻读。

    如事务A先查询一个消费总量,接着事务B添加一条消费记录,这时事务A再次查询消费总量时,就会发现两次查询不一致

    SERIALIZABLE(序列化)

    加入范围锁(比方表锁,页锁等、),直到transaction A结束。以此阻止其他transaction B对此范围内的insert,update等操作。幻读,脏读,不可反复读等问题都不会发生。


    脏读

    不可反复读

    幻读

    Read uncommitted

    Read committed

    ×

    Repeatable read

    ×

    ×

    Serializable

    ×

    ×

    ×




  • 相关阅读:
    P1019 单词接龙
    最小生成树模板题POJ
    区间DP
    牛客多校第三场-A-PACM Team-多维背包的01变种
    洛谷P1004 方格取数-四维DP
    牛客多校第二场A run(基础DP)
    P1494 [国家集训队]小Z的袜子(莫队)
    洛谷:过河卒
    Codeforces Round #486 (Div. 3)-B. Substrings Sort
    判断的值是否为空
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6738354.html
Copyright © 2020-2023  润新知