• MySQL SET TRANSACTION 设置事务隔离级别


    1. 首先说一下autocommit

    默认情况下autocommit的开关是打开的,也就是ON,查看方法

    方法1. select @@[global/session].autocommit;
    方法2. show [global/session] variables like 'autocommit';
    其中global代表的是全局,session代表的是当前。可以不写global和session,默认似乎就是session了。

    autocommit的作用

    顾名思义,自动提交,在命令行执行sql语句的时候,每输入一行语句并执行实质上就是完成了一次事务,因为他自动commit了,当把autocommit关闭后,则执行的语句并未真实提交,在不显示执行commit命令前,其实都还在当前事务中,如果另开一个窗口执行sql语句,如果该窗口的隔离级别是read committed那么将看不到之前那个窗口(会话)中未提交的对表修改。

    2. 设置隔离级别(不区分大小写)

    用户可以用SET TRANSACTION语句改变单个会话或者所有新进连接的隔离级别。它的语法如下:

    SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}
    注意:默认的行为(不带session和global)是为下一个(未开始)事务设置隔离级别。如果你使用GLOBAL关键字,语句在全局对从那点开始创建的所有新连接(除了不存在的连接)设置默认事务级别。你需要SUPER权限来做这个。使用SESSION 关键字为将来在当前连接上执行的事务设置默认事务级别。 任何客户端都能自由改变会话隔离级别(甚至在事务的中间),或者为下一个事务设置隔离级别。

    你可以用下列语句查询全局和会话事务隔离级别:

    SELECT @@global.tx_isolation;
    SELECT @@session.tx_isolation;
    SELECT @@tx_isolation;

  • 相关阅读:
    java学习day16--常用类之包装类
    String、StringBuffer、StringBuilder的异同
    java学习day15--常用类之字符串相关的类
    java学习day15--Arrays工具类
    java学习day14--二维数组
    java学习day14--可变长参数
    java学习day13--数组
    java学习day13--自定义异常类
    java学习day12--异常
    接口和抽象类的异同
  • 原文地址:https://www.cnblogs.com/vinozly/p/5255009.html
Copyright © 2020-2023  润新知