目录
1.1 读未提交:read uncommitted(最低的隔离级别)《没有提交就读到了》
1.2 读已提交:read committed《提交之后才能读到》《二档》
1.3 可重复读:repeatable read《提交之后也读不到,永远读取的都是刚开启事务时的数据》《三档》
1.4 序列化/串行化:serializable(最高的隔离级别)
2.1 验证 ---> 读未提交:read uncommited
2.2 验证 ---> 读已提交:read commited
2.3 验证 ---> 可重复读:repeatable read
2.4 验证 ---> 序列化/串行化:serializable
什么是读未提交?
这种隔离级别存在的问题就是:
什么是读已提交?
这种隔离级别解决了什么问题?
这种隔离级别存在什么问题?
什么是不可重复读取数据呢?
这种隔离级别是比较真实的数据,每一次读到的数据是绝对的真实。oracle数据库默认的隔离级别是:read committed
什么是可重复读取?
可重复读解决了什么问题?
可重复读存在的问题是什么?
mysql中默认的事务隔离级别就是这个!
isolation:隔离
查看隔离级别:select @@tx_isolation;
MySQL8.0版本之后:select@@transaction_isolation;
mysql默认的隔离级别
set global transaction isolation level read uncommitted;
select @@tx_isolation;
开启事务A,并且查询表 t_user
然后开启事务B,接着插入数据,并且没有提交事务
最后在事务A中可以读取到事务B未提交的数据
set global transaction isolation level read committed;
select @@tx_isolation;
开启事务A,并且查询表 t_user
然后开启事务B,接着插入数据,并且没有提交事务
接着在事务A中查询表 t_user
然后事务B提交事务
最后再次在事务A中查询表 t_user
set global transaction isolation level repeatable read;
select @@tx_isolation;
开启事务A
开启事务B
在事务A中查询表 t_user
然后在事务B中接着插入数据,并且提交事务
最后再次在事务A中查询表 t_user
set global transaction isolation level serializable;
select @@tx_isolation;
开启事务A
开启事务B
在事务A中查询表 t_user ,并且插入数据,但先不提交事务
在事务B中查询表 t_user,因为事务A未结束,所以查询不了。两个事务同时操作同一张表。
在事务A中提交事务
然后在事务B中立即查询出表t_user