mysql共享锁

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: mysql共享锁

共享锁

共享锁指的就是对于多个不同的事务,对同一个资源共享同一个锁。相当于对于同一把门,它拥有多个钥匙一样。就像这样,你家有一个大门,大门的钥匙有好几把,你有一把,你女朋友有一把,你们都可能通过这把钥匙进入你们家,进去啪啪啪啥的,一下理解了哈,没错,这个就是所谓的共享锁。

刚刚说了,对于悲观锁,一般数据库已经实现了,共享锁也属于悲观锁的一种,那么共享锁在mysql中是通过什么命令来调用呢。通过查询资料,了解到通过在执行语句后面加上lock in share mode就代表对某些资源加上共享锁了。

比如,我这里通过mysql打开两个查询编辑器,在其中开启一个事务,并不执行commit语句

city表DDL如下:

CREATE TABLE `city` ( `id` BIGINT ( 20 ) NOT NULL AUTO_INCREMENT, `name` VARCHAR ( 255 ) DEFAULT NULL, `state` VARCHAR ( 255 ) DEFAULT NULL, PRIMARY KEY ( `id` ) ) ENGINE = INNODB AUTO_INCREMENT = 18 DEFAULT CHARSET = utf8;

设置一个id为1的数据

begin;

SELECT * from city where id = "1"  lock in share mode;

然后在另一个查询窗口中,对id为1的数据进行更新

update  city set name="666" where id ="1";

此时,操作界面进入了卡顿状态,过几秒后,也提示错误信息

1205 - Lock wait timeout exceeded; try restarting transaction, Time: 51.119000s

 

那么证明,对于id=1的记录加锁成功了,在上一条记录还没有commit之前,这条id=1的记录被锁住了,只有在上一个事务释放掉锁后才能进行操作,或用共享锁才能对此数据进行操作。

再实验一下:

加上共享锁后,也提示错误信息了,通过查询资料才知道,对于update,insert,delete语句会自动加排它锁的原因

 

于是,我又试了试SELECT * from city where id = "1" lock in share mode;

 

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
案例剖析,MySQL共享锁引发的死锁问题!
案例剖析,MySQL共享锁引发的死锁问题!
|
2月前
|
存储 关系型数据库 MySQL
MySQL数据库锁:共享锁和独占锁
本文详细介绍了`InnoDB`存储引擎中的两种行级别锁:共享锁(S锁)与排他锁(X锁)。通过具体示例展示了这两种锁的工作机制及其在`InnoDB`与`MyISAM`引擎中的表现差异。文章还提供了锁的兼容性矩阵,帮助读者更好地理解锁之间的互斥关系。最后总结了两种锁的特点及适用场景。适合希望深入了解`MySQL`并发控制机制的读者阅读。
62 1
|
7月前
|
关系型数据库 MySQL 数据库
|
7月前
|
SQL 存储 关系型数据库
MySQL 意向共享锁、意向排他锁、死锁
MySQL 意向共享锁、意向排他锁、死锁
84 0
MySQL 意向共享锁、意向排他锁、死锁
|
7月前
|
SQL 存储 关系型数据库
MySQL表锁、行锁、排它锁和共享锁
MySQL表锁、行锁、排它锁和共享锁
86 0
MySQL表锁、行锁、排它锁和共享锁
|
存储 SQL Oracle
解析 MySQL 锁机制:共享锁、排它锁、间隙锁、意向锁等,保障数据安全与高并发的秘密武器
解析 MySQL 锁机制:共享锁、排它锁、间隙锁、意向锁等,保障数据安全与高并发的秘密武器
449 1
|
关系型数据库 MySQL 数据库
请解释MySQL中的锁机制,包括共享锁和排他锁的概念和区别。
MySQL中的锁机制是用于管理并发访问数据库的一种技术。通过使用锁,可以确保在同一时间只有一个用户或进程能够对数据进行读取或修改,以避免数据冲突和不一致性。
|
安全 关系型数据库 MySQL
MySQL - 共享锁和排它锁初探
MySQL - 共享锁和排它锁初探
125 0
|
存储 SQL NoSQL
mysql锁(全局锁、表锁、行锁、页锁、排他锁、共享锁)
mysql锁(全局锁、表锁、行锁、页锁、排他锁、共享锁)
373 0
|
关系型数据库 MySQL 数据库
Mysql锁共享锁排它锁 (1)—mysql进阶(六十八)
Mysql锁共享锁排它锁 (1)—mysql进阶(六十八)