MySQL隔离级别读未提交(Read uncommitted)的妙用

2023年 8月 15日 42.0k 0

看到一个MySQL面试题,关于隔离级别,读未提交(Read uncommitted)的一个使用场景。

原始问题如下:
业务通过一个大事务在插入一批非常大的数据,这个事务已经执行了很长时间,没有提交,如何知道当前已经插入了多少条数据?

估计很少有人会想到使用读未提交隔离级别来解决这个问题。不过思路确实很新颖,因为通常情况下,读未提交,以及串行读这两个隔离级别在正常的业务场景下,都不会使用,似乎数据库对这两个隔离级别功能的实现有点多余,只是为了满足事务隔离性理论的完整性,实际生产环境几乎没有人会用。

下面我们来验证一下,读未提交隔离级别是否真的能解决上面的那个问题。

验证的MySQL版本:5.7.19

session1 session2 备注
begin;
insert into tb values(1,'1');
select * from tb; 查不到数据
set tx_isolation='read-uncommitted'; 设置隔离级别为读未提交
select * from tb; 查到了session1未提交的数据

经过验证,确实能够通过设置隔离级别为读未提交,来检查insert大事务的进度。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论