zoukankan      html  css  js  c++  java
  • 数据库事务隔离

    事物隔离:

    1 定义:多个并发线程同时操作同一条记录时,每个事物中的操作和数据不能被其他的事物干扰

    2 修改丢失:

      解决方案(同时修改同一个记录,数据库加排他锁,只能一个写)

    3 脏读: 

      定义:脏读又称无效数据读出。一个事务读取另外一个事务还没有提交的数据叫脏读

      解决方案(一个修改同一个记录,一个读同一个记录,把数据库的事务隔离级别调整到READ_COMMITTED)

      规则:有共享锁(读锁)不能修改(即不能获取排他锁),有 排他锁(写锁)不能读(即不能获取共享锁)

              

    4 不可重复读

    定义:不可重复读是指在同一个事务内,两个相同的查询返回了不同的结果。 

      解决方案(一个修改同一个记录,一个读同一个记录,把数据库的事务隔离级别调整到REPEATABLE_READ)

     释放共享锁在需要全部读完结束后在释放

                

     4 幻读

    定义:幻读是指当事务不是独立执行时发生的一种现象。

    解决方案:把数据库的事务隔离级别调整到SERIALIZABLE_READ

    事务1选择账号表中所有性别为女的行,并做了修改,修改完成后再查询下记录发现多了一条,

    原来是事务2在事务1修改的过程中又添加了一条性别为女的行,为了解决这样问题(幻读),

    只能将隔离级别再调高,每个事务按顺序执行,即串行化。

    串行化参考链接:https://blog.csdn.net/lijiaming_99/article/details/103608147

    5  第一类更新:

    A事务撤销时,把已经提交的B事务的更新数据覆盖

    这时候取款事务A撤销事务,余额恢复为1000,这就丢失了更新。(后事物先提交,前事物回滚)

    6 第二类丢失更新:事务覆盖B事务已经提交的数据,造成B事务所做的操作丢失 (前事物后提交)

    7  注意;

    脏读<可重复读<幻读

    不可重复读重点在修改,幻读重点在新增,删除 

     参考链接:https://blog.csdn.net/Yxueny/article/details/83789189?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control,

    https://blog.csdn.net/qq_41776884/article/details/81608777?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control

    参考公众号:

  • 相关阅读:
    依赖注入及AOP简述(二)——工厂和ServiceLocator .
    依赖注入及AOP简述(一)——“依赖”的概念 .
    Java程序员应该知道的10个面向对象理论
    IOC原理分析
    android.widget.FrameLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
    Android长方形图片生成正圆形,以及矩形图片生成圆角
    MATLAB新手教程
    BitNami一键安装Redmine
    VB6.0数据库开发五个实例——罗列的总结
    java绘图板
  • 原文地址:https://www.cnblogs.com/MakeChinaCreatAgain/p/14002489.html
Copyright © 2011-2022 走看看