前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL事务隔离级别

MySQL事务隔离级别

作者头像
关忆北.
发布2022-11-16 14:04:13
1.3K0
发布2022-11-16 14:04:13
举报
文章被收录于专栏:关忆北.关忆北.

MySQL的四种隔离级别

  • 读未提交
  • 读提交
  • 可重复读
  • 串行化

隔离级别可以通过MySQL的视图来实现。

读未提交

读未提交是一个事务仅修改了数据但还未提交时,本次修改可以便可被其他事务查询到变更后的值。读未提交隔离级别下,其他事务进行查询时,直接返回记录上的最新值,没有视图概念。

读提交

一个事务修改了数据且成功提交事务后,才可查询到更新后的数据。读提交隔离是开始执行SQL语句时创建视图。

可重复读

一个事务在执行过程中查询到的数据,总是与该事务启动时看到的数据是一致的。未提交变更对其他事务也是不可见的。可重复读视图是在事务启动时创建的,整个事务期间都使用这个视图。

代码语言:javascript
复制
insert into user value(1,"name1");
commit;
#开启事务A
#第一次查询name
select name from user where id = 1;
#开启事务B
update user set name = "name2" where id =1;
#提交事务B
commit;
#第二次查询name
select name from user where id =1;
#提交事务A
commit;
#第三次查询name
select name from user where id =1;

在三次查询过程中,第一次查询到的数据是name1,第二次查询到的数据是name1,A事务提交后,查询到的数据是name2;

串行化

对于同一行记录,写会加写锁,读会加读锁。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。串行化直接使用加锁的方式来避免并行访问。

不同数据库默认隔离级别

不同事务隔离级别下数据库的行为不同。

  • Oracle数据库的默认隔离级别是“读提交”
  • MySQL的默认隔离级别是“可重复读”

注意:数据库由Oracle迁移至MySQL时需要设置默认隔离级别为读提交。

不同事务隔离级别对脏读、不可重复读、幻读的影响

此图片引用自网络

image-20221101213611710
image-20221101213611710
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MySQL的四种隔离级别
    • 读未提交
      • 读提交
        • 可重复读
          • 串行化
          • 不同数据库默认隔离级别
          • 不同事务隔离级别对脏读、不可重复读、幻读的影响
          相关产品与服务
          云数据库 SQL Server
          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档