mysql中的get_lock锁机制解析
GET_LOCK(key,timeout) 需要两个连接会话
RELEASE_LOCK(key) 锁是否释放,释放了返回1
IS_FREE_LOCK(key) 返回当前连接ID,表示名称为'xxxx'的锁正在被使用。
key 锁的名字,timeout加锁等待时间,时间内未加锁成功则事件回滚。get_lock 加锁成功返回1,
这个锁是应用程序级别的,在不同的mysql会话之间使用,是名字锁,不是锁具体某个表名或字段,具体是锁什么完全交给应用程序。它是一种独占锁,意味着哪个会话持有这个锁,其他会话尝试拿这个锁的时候都会失败。
session A select get_lock('test',1);
session B select get_lock('test',5);
可以指定表也可以不指定
直到关闭连接会话结束,锁才会释放,但不像redis那样加了锁只要不主动释放就一直有。
但是当会话1 get_lock 后,未释放。会话2 不get_lock 同一个key,或者就不get_lock,依然可以对数据进行任何操作,所以加锁只是说人为的主观的想要让某些操作同时只有一个连接能进行操作,别的连接不调用get_lock加同一个锁,那它不会受到任何影响,想干什么干什么。
session1
session2
get_lock:但是当会话1 get_lock 后,未释放。会话2 不get_lock 同一个key,或者就不get_lock,依然可以对数据进行任何操作,所以加锁只是说人为的主观的想要让某些操作同时只有一个连接能进行操作,别的连接不调用get_lock加同一个锁,那它不会受到任何影响,想干什么干什么。
session1
session2
优缺点分析 (1)这种方式对于更新所有列比较有效,但是得把查询的语句也放在锁内执行; (2)这种方式当客户端无故断线了会自动释放锁,比较好,不像redis锁那样,如果加完锁断了,那么锁一直在; (3)这种方式是针对锁内的所有操作加锁,并不针对特定表或特定行,所以使用了同一个Key的锁但不同的操作都会共用一把锁,会导致效率低下; (4)如果查询语句放在锁之前,则数据可能是旧的,更新之后会把查询之后更新之前别的客户端更新的数据覆盖掉;
mysql中的get_lock锁机制解析相关推荐
- getlock mysql_mysql中的get_lock锁机制解析
GET_LOCK(key,timeout) 需要两个连接会话 RELEASE_LOCK(key) 锁是否释放,释放了返回1 IS_FREE_LOCK(key) 返回当前连接ID,表示名称为'xx ...
- 一文带你了解 MySQL 中的各种锁机制!
MySQL中的锁机制,按粒度分为行级锁,页级锁,表级锁,其中按用法还分为共享锁和排他锁. 行级锁 行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁. 行级锁能大大减少数据库操作 ...
- mysql 获取距离当前最新的记录_一文带你了解 MySQL 中的各种锁机制!
云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! MySQL中的锁机制,按粒度分为行级锁,页级锁,表级锁,其中按用法还分为共享锁和排他锁. 行级锁 ...
- 一文带你了解MySQL中的各种锁机制!
云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! MySQL中的锁机制,按粒度分为行级锁,页级锁,表级锁,其中按用法还分为共享锁和排他锁. 行级锁 ...
- 【MySQL进阶】MySQL事务隔离与锁机制底层原理万字总结(建议收藏!!)
[MySQL进阶]MySQL事务隔离与锁机制底层原理万字总结(建议收藏!!) 参考资料: 美团技术团队:Innodb中事务隔离级别和锁的关系 数据库的锁,到底锁的是什么? 阿里面试:说说一致性读实现原 ...
- Linux 2.6内核中新的锁机制--RCU [转]
2005 年 7 月 01 日 本文详细地介绍了 Linux 2.6 内核中新的锁机制 RCU(Read-Copy Update) 的实现机制,使用要求与典型应用. 一. 引言 众所周知,为了保护共享 ...
- 复习Java小球游戏代码分享Java面试题MySQL中常用的锁生活【记录一个咸鱼大学生三个月的奋进生活】021
记录一个咸鱼大学生三个月的奋进生活021 复习Java小球游戏 游戏界面的代码 小球运动线程的代码 运行游戏的代码 运行结果 代码分享 学习Java面试题(MySQL中常用的锁) 照片分享 复习Jav ...
- Linux 2.6内核中新的锁机制--RCU
转载自: Linux 2.6内核中新的锁机制--RCU 一. 引言 众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种 ...
- Java基础-Java中常用的锁机制与使用
Java基础-Java中常用的锁机制与使用 锁lock或互斥mutex是一种同步机制,主要用于在存在多线程的环境中强制对资源进行访问限制.锁的主要作用为强制实施互斥排他以及并发控制策略.锁一般需要硬件 ...
最新文章
- C# rdlc 报表学习总结
- tar只解压tar包中某个文件
- [渝粤教育] 西南科技大学 国际贸易理论与实务 在线考试复习资料2021版(2)
- Form各键盘触发子所对应的“按键”
- Linq Join
- testlink配置修改
- python 日历控件_PyQt5每天必学之日历控件QCalendarWidget
- c语言循环语句解鸡兔同笼,JavaScript的for循环语句练习之解决鸡兔同笼问题
- WPF与3D 模型(一)把Solidworks里的模型导入进WPF程序
- 地理信息系统专业考研 GIS专业考研 名词解释大全[转]
- 北京个人所得税计算方法
- 交叉熵损失函数以及softmax损失函数
- Windows .bat 脚本简单用法介绍
- 【资料分享】工程师必备物联网资料合集 电子书PDF
- 使用hive报 return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask解决方法
- PS唯美清新花朵调色
- 学计算机会设置路由器,Win7电脑怎么设置无线路由器上网
- 世界坐标系和图像坐标系的对应关系
- HP刀片服务器系统Flex-10 VC配置与VMware vSphere网络设计
- uploadify java 下载_uploadify java实现多文件上传和预览
热门文章
- Java知识整理——反射
- MongoDB学习笔记(二)使用Java操作MongoDB
- 容器学习 之 共享数据(十六)
- JSONObjec的作用详解——Web网络系列学习笔记
- 1041 考试座位号 (15分)——17行代码AC
- 算法竞赛入门经典(第二版) | 程序3-6 WERTYU (UVa 10082)(常量数组)
- (*长期更新)软考网络工程师学习笔记——Section 15 无线网络技术
- 苹果mac电脑修改并快速linux网络配置
- load和pageshow的区别
- 怎么把路由的#号去掉_VLAN应用篇系列:交换机VLAN间路由与传统单臂路由(子接口)方式...