zoukankan      html  css  js  c++  java
  • mysql事务隔离级别详解

      当mysql同时执行多个事务时,就有可能出现脏读、幻读、不可重复读的现象,于是就有隔离级别的概念

    一、隔离级别的分类

      读未提交(RU):当一个事务还未提交时,他做的变更被其他事务看到(容易出现脏读)

      读已提交(RC):一个事务已经提交,其他事务才能看到他的变更。(容易出现幻读)

      可重复读(RR):一个事务在执行过程中看到的数据,总是跟执行前看到的数据是一致的,未提交时变更的内容其他事务也看不到(可防止幻读)

      串行化(SR):对同一行记录,写会加写锁,读会加读锁,当发生锁冲突时,后执行的事务要等前面执行的事务执行完成后才能执行

      举例说明:

    在实现上,数据库里面会创建一个视图,访问的时候以视图的逻辑结果为准。在“可重复读”隔离级别下,这个视图是在事务启动时创建的,整个事务存在期间都用这个视图。在“读提交”隔离级别下,这个视图是在每个SQL语句开始执行的时候创建的。这里需要注意的是,“读未提交”隔离界别下直接返回记录上的最新值,没有视图概念;而“串行化”隔离级别下直接用加锁的方式来避免并行访问。

    脏读:一个事务读到了另一个事务未提交的数据

    幻读:事务a按一定条件读取了该表的一些数据,然后事务b想该表插入了一些满足事务a查询条件的数据,当事务a再次以相同条件查询数据时,会发现多出来一些数据,就好像产生了幻觉一样,我们称为幻读

    不可重复读:事务a读取了某条数据,事务a没有提交,然后事务b修改了该条数据,这时事务a再次读取该条数据,这样两次读取的数据不同,我们成为该条数据为不可重复读。概况一句话就是一个事务多次读取某条数据,发现读取的数据不完全相同。

     参考文档:https://blog.csdn.net/xcy1193068639/article/details/85058641

  • 相关阅读:
    小程序中点击input控件键盘弹出时placeholder文字上移
    微服务学习记录-consul服务发现
    微服务学习记录-ocelot网关
    一些新了解到技术
    warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
    linux 7 创建DNS服务器
    ESXi 主机创建datastore失败
    检查MD5
    为戴尔服务器下载ESXi
    vCenter Server上的报警消除
  • 原文地址:https://www.cnblogs.com/shi-san/p/13700235.html
Copyright © 2011-2022 走看看