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

面试题-Mysql事务隔离级别

作者头像
别明天就今天吧
发布2020-09-07 01:06:04
5510
发布2020-09-07 01:06:04
举报

Mysql有四种隔离级别,这些隔离级别用来限定哪些是可见的,哪些是不可见的,隔离级别越低并发越高,Mysql中默认的隔离级别是可重复读,下面我们来一一介绍下这四种隔离级别。

1.Read uncommitted

未提交读,就是说在一个事物中可以读取另一个事务中未提交的数据,这会导致,一个事务读取另一个事务未提交的数据,然后又回滚了,读取了错误的数据,造成脏读。

2.Read committed

已提交读,是指在一个事务只能看到已经提交的事务改变,这会导致前后两次读取数据不一致的情况,造成不可重复读。

3.Repeatable read

可重复读,同一事务读取数据时,能看到相同的数据,但是这会发生另一个现象幻读。

4.Serializable

串行化,这是最高的事务隔离界别,事务按照顺序一个一个执行,这样就避免了幻读,但是这会导致超时等问题。

脏读:读到未提交可能回滚的数据。

不可重复读:多次读取间,由于其他事务改变了数据,读到了不同的数据。

幻读:读到了,读到了之前不存在的数据,或者之前存在的数据消失了。

总结:不可重复读侧重于修改,幻读侧重于新增或删除

一些概念:

快照读:读取到的是历史版本。如普通的select;

当前读:读取到的是最新版本。如update、insert、delete、select for update;

悲观锁:总是认为别人会去修改数据,比如select for update;

乐观锁:总是认为别人不会去修改数据,表中增加版本号字段,类似于cas

Records Lock记录锁:select for update

Gap Lock间隙锁:索引前后加锁

Next-Key Lock:索引记录加锁,并且索引前间隙加锁

MVCC:保证同一个事务中读取的数据是同一版本,解决了不可重复读问题;

Gap+Next-Key:可以阻止其他事务在锁定区间插入数据,解决了幻读问题;

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 别明天就今天吧 微信公众号,前往查看

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

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

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