• day90 下单 事务中隔离级别带来的问题


    事务中隔离级别带来的问题

    read uncommitted --->不做任何隔离,具有脏读,不可重复读,幻读等问题

    read committed ---->可以防止脏读,不能防止不可重复读,幻读等问题

    repeatable read ---->可以防止脏读,不可重复读,不能防止幻读(mysql默认的隔离级别)

    serializable ---> 都可以防止

    脏读

    一个事务能读取到另一个事务还未提交的数据

    age=16

    a---->18 (把16改成18 但是没有提交),但是a 回滚了

    b---->读取的时候 age=18 然后做了业务操作 一旦a回滚了业务就有问题了

    不可重复读

    一个事务读取到另一个事务已经提交的数据

    age=16

    a--->18 把16改成了18 并提交

    b--->当a 提交后 b是能读取到18的

    幻读

    一个事务读取到另外一个事务新增或删除的数据

    修改mysql的隔离级别

    mysql的配置文件

    修改:set @@global.tx_isolation='read-committed';

    查看:SELECT @@global.tx_isolation;

    乐观锁/悲观锁

    乐观锁

    他不是锁,他觉得数据是安全的,没有数据和我抢,但是最后做校验

    查询 age=16 条件是 where id=1

    age=16+1

    update where id=1 and age=16 update age=17

    悲观锁

    他就是锁 他的态度是悲观的 我觉得有人会动数据 所以在查询的时候就锁起来

    select age from user where id=1 for update

    User.object.select_for_update(id=1).first()

  • 相关阅读:
    Azkaban的架构(三)
    Azkaban的功能特点(二)
    Hadoop工作流不足(六)
    Hadoop工作流--JobControl(五)
    ruby on rails创建的页面訪问很慢
    C#实现树的双亲表示法
    SetCapture ReleaseCapture
    HDU 4923 Room and Moor
    Spring概述
    WinMM.dll 函数汇总
  • 原文地址:https://www.cnblogs.com/zqfzqf/p/12392223.html
Copyright © 2020-2023  润新知