zoukankan      html  css  js  c++  java
  • 事务的隔离性—脏读/幻读/不可重复读

    MySQL中有四个隔离等级

     1 :read uncommitted   读取没提交的数据

           事务a中执行的sql语句执行了,却没有提交数据。事务b也可以读取到这些未提交的数据,这样称为脏读

     2:read committed  读取提交的数据

          事务b能读取到事务a提交的数据,事务b还没结束,事务b的后续SQL操作会被事务a修改的数据所影响,这样成为不可重复读

     3:repeatable read 可以重复读  MySQL中默认是设置为repeatable table的。

         事务a已经查询过这些数据,事务b再修改这些数据并提交到数据库,这些修改的数据事务a是查不到的。

         也就是说一个事务只能查询一次数据,因为后面即使再次查询,查询的数据也不会随着数据库的改变而改变,但数据库的数据改变是肯定存在的,事务却查不到,这样会导致幻读

     4:serializable 串行化   这个安全等级是最高的,也是最消耗资源的

          一个cmd事务没有结束(结束就是提交数据) 另一个cmd的事务不能进行写入数据操作,这样成为串行化

    修改MySQL中的隔离等级,修改后要重启才会起作用

    set global transaction isolation level  等级

     查看MySQL中的隔离等级

    MySQL版本为8.x的

    select @@global.transaction_isolation;

    select @@transaction_isolation;

    MySQL版本为5.x的

    select @@ global.tx_isolation;

    select @@tx_isolation;

  • 相关阅读:
    Know more about RAC statistics and wait event
    再谈指针
    Manageing Undo Data
    SQL基础内容
    JavaScript高级程序设计(3版)笔记分享( ES5特性)
    HTML5布局篇( 总结 )
    温习 SQL 01(Z)
    Makefile
    SQLPLUS工具简介
    链接相关 & 预处理
  • 原文地址:https://www.cnblogs.com/zhangyang4674/p/11603578.html
Copyright © 2011-2022 走看看