zoukankan      html  css  js  c++  java
  • mysql事务隔离级别与设置

    mysql数据库,当且仅当引擎是InnoDB,才支持事务;

    1、隔离级别

    事务的隔离级别分为:未提交读(read uncommitted)、已提交读(read committed)、可重复读(repeatable read)、串行化(serializable)。

    未提交读

    A事务已执行,但未提交;B事务查询到A事务的更新后数据;A事务回滚;---出现脏数据

    已提交读

    A事务执行更新;B事务查询;A事务又执行更新;B事务再次查询时,前后两次数据不一致;---不可重复读

    可重复读

    A事务无论执行多少次,只要不提交,B事务查询值都不变;B事务仅查询B事务开始时那一瞬间的数据快照;

    串行化

    不允许读写并发操作,写执行时,读必须等待;

    2、数据库设置

    //查看当前事物级别:
    SELECT @@tx_isolation;
    //设置mysql的隔离级别:
    set session transaction isolation level 设置事务隔离级别
    //设置read uncommitted级别:
    set session transaction isolation level read uncommitted;
    
    //设置read committed级别:
    set session transaction isolation level read committed;
    
    //设置repeatable read级别:
    set session transaction isolation level repeatable read;
    
    //设置serializable级别:
    set session transaction isolation level serializable;

    3、Mysql 8.0+ 查询数据库事务隔离级别

    根据慕课网课程中的方法,查询事务隔离级别使用:

    select @@tx_isolation;

    我在sequal pro中,却提示错误:Unknown system variable 'tx_isolation'

    查询了官方文档,在8.0+就已经抛弃了这样的查询方法,https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html

    在MySQL 8.0.3 中,该变量已经被 transaction_isolation 替换了。

    最新的查询方法有多种,下面提供2种:

    1、select @@transaction_isolation;

    2、show variables like 'transaction_isolation';

    原文出处:

    奇天异下, mysql事务隔离级别与设置, https://www.cnblogs.com/huasky/p/11190086.html

    LXMAJS, Mysql 8.0+ 查询数据库事务隔离级别, https://www.cnblogs.com/lxmajs/p/10277901.html

  • 相关阅读:
    svn笔记
    cakephpurl生成
    cakephp加载流程
    jquery validate使用方法
    我需要具备的知识和能力总结
    cakePHP国际化和本地化
    javascript片段收集
    ecmall一个典型的操作
    9. Technical Overview 技术概述
    42. Spring Security Dependencies春季安全依赖
  • 原文地址:https://www.cnblogs.com/ryelqy/p/11434120.html
Copyright © 2011-2022 走看看