mysql之事务隔离

2022-03-18  本文已影响0人  每天进步一点点变成更好的自己

事务:保证一组数据库操作,要么全部成功,要么全部失败。事务支持,是在引擎层实现。

事务的四大特性ACID,分别是原子性、一致性、隔离性和持久性,其中隔离性是事务的基本特性之一,他可以防止数据库在并发处理时出现数据不一致的情况。

为了在正确性和效率之间进行平衡,我们设置不同的隔离等级。SQL标准的事务隔离级别包括:读未提交(read uncommitted)、读提交(read committed)、可重复读(repeatable read)、串行化(serializable)

mysql> create table T(c int) engine=InnoDB;
insert into T(c) values(1);

问题:
1、事务并发处理可能存在的三种异常有哪些,什么是脏读、不可重复读和幻读?
2、针对可能存在的异常情况,四种事务隔离的级别分别是什么
3、如何使用MYSQL客户端来模拟脏读、不可重复读和幻读?

1、事务并发处理可能存在的异常都有哪些?

事务并发处理可能存在的异常包含3类:脏读(Dirty Read)、不可重复读(Nonrepeatable Read)、幻读(Phantom Read)。

2、事务隔离的级别有哪些?

事务隔离从低到高分别是:

查询当前会话的隔离级别:mysql> SHOW VARIABLES LIKE 'transaction_isolation';
设置当前会话的隔离级别:

mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
mysql> SET autocommit = 0;
image.png

隔离级别的实现满足下面2个条件:
正确性:只要能满足某一个隔离级别,一定能解决这个隔离级别对应的异常问题。
与实现无关:实际上 RDBMS 种类很多,这就意味着有多少种 RDBMS,就有多少种锁的实现方式,因此它们实现隔离级别的原理可能不同,然而一个好的标准不应该限制其实现的方式。

image.png
上一篇 下一篇

猜你喜欢

热点阅读