博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql事务和隔离级别(read committed, repeatable read)
阅读量:4090 次
发布时间:2019-05-25

本文共 975 字,大约阅读时间需要 3 分钟。

Mysql事务和隔离级别(read committed, repeatable read)

所用查看并设置参数的命令

查看当前autocommit的状态

innodb引擎默认autocommit为on,也就是自动提交打开。事实上我们希望一个事务整体操作完毕后再统一提交。

查看当前autocommit的命令有:

show variables like ‘%autocommit%’;

Select @@autocommit;

如果一个事务没有commit,虽然通过select能够看到表中数据改变了,但断开数据库连接之后数据并没有改变。没有commit之前rollback能够回滚。Commit之后,rollback将不再起作用。

修改当前autocommit

set autocommit=0;

那么,一个事务的提交过程可以概括为:

Innodb引擎下,一个事务的sql语句大概如:set autocommit=0;//关闭默认的自动提交begin; //开启事务update tb_gotesting set name='hh' where id=3113; //完成指定操作commit; //提交set autocommit=1; //恢复默认的自动提交

查看当前事务隔离级别

select @@tx_isolation;

修改会话事务隔离级别

set session transaction isolation level read committed;set session transaction isolation level repeatable read;

隔离级别

mysql默认是repeatable read 隔离级别。在这种级别之下,能够有效防止脏读、幻读、不可重复读。以repeatable read作为隔离级别进行演示。

  • 对脏读的处理

    A事务没有commit的数据,在B事务中没有读到。
    对脏读的处理

  • 可重复读的效果

    这里写图片描述

read committed

提交读(不可重复读)和可重复读的区别在于,前者在本事务未提交之前其他事务的增删改操作提交后会影响读的结果。读的是最新结果。

可重复读在读的过程中数据始终是事务启动时的数据状态,未提交之前其他事物的增删改操作提交后都不会影响读的结果。读的是快照结果。
提交读的演示:

  • 改操作

    这里写图片描述

  • 增操作

    这里写图片描述

你可能感兴趣的文章
SQL练习
查看>>
Java中==的使用
查看>>
刷题总结
查看>>
Java中Date类的使用
查看>>
MySQL的日期操作
查看>>
Java中的SimpleDateFormat类
查看>>
Java时间类总结
查看>>
MySQL中时间戳的常见操作
查看>>
SpringBoot常见注解
查看>>
MyBatis中的${}和#{}
查看>>
MyBatis建立Mapper接口与Mapper.xml文件之间的映射关系
查看>>
MySQL导出远程服务器的数据库到本地
查看>>
MySQL导入大文件的问题
查看>>
MySQL的功能依赖检测功能
查看>>
HashMap
查看>>
替换空格
查看>>
得到单链表逆序遍历的结果
查看>>
反转单链表
查看>>
链表中倒数第k个节点
查看>>
合并两个有序单链表
查看>>