查看mysql 事务隔离级别
mysql> show variables like '%isolation%'; +---------------+----------------+ | Variable_name | Value | +---------------+----------------+ | tx_isolation | READ-COMMITTED | +---------------+----------------+ 1 row in set (0.00 sec)
可以看到当前的事务隔离级别为 READ-COMMITTED 读提交
下面看看当前隔离级别下的事务隔离详情,开启两个查询终端A、B。
下面有一个order表,初始数据如下
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 1 | +----+--------+ 1 row in set (0.00 sec)
第一步,在A,B中都开启事务
mysql> start transaction; Query OK, 0 rows affected (0.00 sec)
第二步查询两个终端中的number值
A
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 1 | +----+--------+ 1 row in set (0.00 sec)
B
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 1 | +----+--------+ 1 row in set (0.00 sec)
第三步将B中的number修改为2,但不提交事务
mysql> update `order` set number=2; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
第四步查询A中的值
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 1 | +----+--------+ 1 row in set (0.00 sec)
发现A中的值并没有修改。
第五步,提交事务B,再次查询A中的值
B
mysql> commit; Query OK, 0 rows affected (0.01 sec)
A
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 2 | +----+--------+ 1 row in set (0.00 sec)
发现A中的值已经更改
第六步,提交A中的事务,再次查询A,B的值。
A
mysql> commit; Query OK, 0 rows affected (0.00 sec) mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 2 | +----+--------+ 1 row in set (0.00 sec)
B
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 2 | +----+--------+ 1 row in set (0.00 sec)
发现A,B中的值都更改为2了。
下面给一个简单的示意图
我们可以看到,在事务隔离级别为读已提交 的情况下,当B中事务提交了之后,即使A未提交也可以读到B事务提交的结果。这样解决了脏读的问题。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍MySQL四种事务隔离级别详解,包括了MySQL四种事务隔离级别详解的使用技巧和注意事项,需要的朋友参考一下 本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一、事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所
在我的airflow升级到2.0.0(然后是2.0.1)并且调度程序扩展到3个节点之后,奇怪的事情发生了: DAGRUNN成功,但根本没有计划任务实例 任务失败,主机名为空(https://github.com/apache/airflow/issues/13692) 任务设置为“upstream_failed”,而上游任务成功(https://github.com/apache/airflow/
本文向大家介绍MySQL事务及Spring隔离级别实现原理详解,包括了MySQL事务及Spring隔离级别实现原理详解的使用技巧和注意事项,需要的朋友参考一下 1、事务具有ACID特性 原子性(atomicity):一个事务被事务不可分割的最小工作单元,要么全部提交,要么全部失败回滚。 一致性(consistency):数据库总是从一致性状态到另一个一致性状态,它只包含成功事务提交的结果 隔离型(
本文向大家介绍MySQL的默认事务隔离级别是?相关面试题,主要包含被问及MySQL的默认事务隔离级别是?时的应答技巧和注意事项,需要的朋友参考一下 读未提交(RU): 一个事务还没提交时, 它做的变更就能被别的事务看到. 读提交(RC): 一个事务提交之后, 它做的变更才会被其他事务看到. 可重复读(RR): 一个事务执行过程中看到的数据, 总是跟这个事务在启动时看到的数据是一致的. 当然在可重复
主要内容:事务概述,事务的四大特性,并发事务问题,事务的隔离级别,演示:,总结事务概述 事务是一个或一组sql语句组成的一个执行单元,这个执行单元要么全部执行成功,要么全部执行失败。用于保证数据的完整性。 如账户转账,张三给李四转500,对应的sql语句应该是update张三的 余额-500,并且update李四的余额+500,如果先更新完张三的数据,然后出现了异常,导致李四的余额修改不了,那么就出现数据上的问题了,应该使用事务来解决这一问题,当中间出现异常后回滚,让张三的
本文向大家介绍Mysql事务隔离级别原理实例解析,包括了Mysql事务隔离级别原理实例解析的使用技巧和注意事项,需要的朋友参考一下 引言 大家在面试中一定碰到过 说说事务的隔离级别吧? 老实说,事务隔离级别这个问题,无论是校招还是社招,面试官都爱问!然而目前网上很多文章,说句实在话啊,我看了后我都怀疑作者弄懂没!因为他们对可重复读(Repeatable Read)和串行化(serializable