前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >换个角度看待MySQL死锁的一点简单认识

换个角度看待MySQL死锁的一点简单认识

作者头像
jeanron100
发布2018-03-21 17:43:21
5850
发布2018-03-21 17:43:21
举报

在MySQL锁机制的部分,一般都会提到一个所模式的兼容矩阵,看起来比较枯燥,而且不大容易理解。

那我们可以换个角度,取出其中的一个冲突场景,比如下面的场景在两个会话中,就很可能出现。

会话1,会话2都添加了S锁,然后后续的操作都相继添加X锁,明细的信息就不多说了,这种情况下很可能就会触发死锁。而这个层面其实在RR,RC中都会出现。

我们举一反三,来逐步扩展一下。我们创建一个表dt1

mysql> create table dt1 (id int unique Query OK, 0 rows affected (0.03 sec)

会话1:

begin;

select *from dt1 lock in share mode;

会话2:

begin;

select *from dt1 lock in share mode;

会话1:

insert into dt1 values(1);

会话2:

insert into dt1 values(1);

这种情况下就会触发死锁。

这个例子这样看来很简单,如果我们把这个问题复杂化一下,这个S锁可以通过其他的方式引入进来。

比如下面的场景:

会话1: begin; insert into dt1 values(1); 会话2: insert into dt1 values(1); 会话3: insert into dt1 values(1); 会话1: rollback; 感兴趣可以测试一下,按照这个思路,可以扩展出很多的死锁场景,简直就手到擒来。

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

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

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

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

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