MySql的四种隔离级别

一、MySql的四种隔离级别

1、Read Uncommitted:读取未提交数据

在该隔离级别,所有的事务都可以看到其他事务没有提交的执行结果。(实际生产中不可能使用这种隔离级别的)。

2、Read Committed:读取提交数据

该隔离级别是大多数数据库的默认的隔离级别(不是 MySQL 默认的)。它满足了隔离的简单定义:一个事务只能看到其他的已经提交的事务所做的改变。这种隔离级别也支持不可重复读,即同一个 select 可能得到不同的结果。

3、Repeatable Read:可重复度

这是 MySQL 默认的隔离级别,它确保同一个事务在并发读取数据时,会看到同样的数据行。不过理论上会导致另外一个问题,【幻读】。幻读:相同的条件查询一些数据,然后其他事务【新增】或者是【删除】了该条件的数据,然后导致读取的结果不一样多。InnoDB 存储引擎通过多版本控制(MVCC)机制解决了该问题。

4、serializable:可串行化

这是事务的最高隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决了幻读的问题。它在每个读的数据行上面加上共享锁,。但是可能会导致超时和锁竞争(这种隔离级别太极端,实际生产基本不使用)

二、查看和设置数据库隔离级别

-- 查看数据库隔离级别
show variables like ‘%isolation%‘

-- 设置数据库隔离级别
set session transaction isolation level Read Uncommitted;
set session transaction isolaction level Read Committed;
set session transaction isolaction level Repeatable Read;
set session transaction isolaction level serializable;

点击查看详细文档

MySql的四种隔离级别

上一篇:Docker容器MySQL5.7系统表空间数据文件ibdata1


下一篇:MySQL 解决连接不上服务器问题