getlock mysql_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)如果查询语句放在锁之前,则数据可能是旧的,更新之后会把查询之后更新之前别的客户端更新的数据覆盖掉;
getlock mysql_mysql中的get_lock锁机制解析相关推荐
- mysql中的get_lock锁机制解析
GET_LOCK(key,timeout) 需要两个连接会话 RELEASE_LOCK(key) 锁是否释放,释放了返回1 IS_FREE_LOCK(key) 返回当前连接ID,表示名称为'xx ...
- 一文带你了解 MySQL 中的各种锁机制!
MySQL中的锁机制,按粒度分为行级锁,页级锁,表级锁,其中按用法还分为共享锁和排他锁. 行级锁 行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁. 行级锁能大大减少数据库操作 ...
- mysql 获取距离当前最新的记录_一文带你了解 MySQL 中的各种锁机制!
云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! MySQL中的锁机制,按粒度分为行级锁,页级锁,表级锁,其中按用法还分为共享锁和排他锁. 行级锁 ...
- Linux 2.6内核中新的锁机制--RCU [转]
2005 年 7 月 01 日 本文详细地介绍了 Linux 2.6 内核中新的锁机制 RCU(Read-Copy Update) 的实现机制,使用要求与典型应用. 一. 引言 众所周知,为了保护共享 ...
- 一文带你了解MySQL中的各种锁机制!
云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! MySQL中的锁机制,按粒度分为行级锁,页级锁,表级锁,其中按用法还分为共享锁和排他锁. 行级锁 ...
- Linux 2.6内核中新的锁机制--RCU
转载自: Linux 2.6内核中新的锁机制--RCU 一. 引言 众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种 ...
- Java基础-Java中常用的锁机制与使用
Java基础-Java中常用的锁机制与使用 锁lock或互斥mutex是一种同步机制,主要用于在存在多线程的环境中强制对资源进行访问限制.锁的主要作用为强制实施互斥排他以及并发控制策略.锁一般需要硬件 ...
- 并发编程中常见的锁机制:乐观锁、悲观锁、CAS、自旋锁、互斥锁、读写锁
文章目录 乐观锁 VS 悲观锁 悲观锁 乐观锁 CAS CAS机制 ABA问题 CAS的优缺点 互斥锁 VS 自旋锁 互斥锁 自旋锁 对比及应用场景 读写锁 实现方式 读写锁 VS 互斥锁 乐观锁 V ...
- 回滚机制_【巨杉数据库SequoiaDB】巨杉 Tech | 并发性与锁机制解析与实践
01 概述 数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性.加锁 ...
最新文章
- [精]Odoo 8.0深入浅出开发教程-模块开发基础
- Runtime-消息发送和消息转发
- SpringSecurity案例之认证服务搭建
- linux 单引号,双引号,反引号
- stringredistemplate设置过期时间_Redis的过期删除策略和内存淘汰机制
- jvm7 jvm8_自我修复的JVM
- 前端学习(2781):底部tabber配置
- linux mysql删除用户权限_linuxmysql增加用户,删除用户,以及用户权限_MySQL
- php5.4 升级,centos上PHP5.3升级到PHP5.4及更高版本方法
- 【直播预告】阿里特邀专家关键:Java无锁集合代码分析...
- SAP:SMARTFORM打开WORD文档出错,或无法编辑
- 十三号星期五题解 【模拟】
- TensorFlow之saved_model使用笔记
- excel合并计算机操作,Excel如何快速合并多个单元格的内容?
- Win10方便快捷键
- php面试你离职的原因,如何在面试中描述你的离职原因?
- php中mysql_assoc,在PHP中使用mysql_fetch_assoc时出现警告
- logback-spring.xml配置详解
- 坚果云和百度云哪个好?
- 阿里云RDSDRDS初探
热门文章
- Spring 定时执行任务重复执行多次
- NIS认证管理域中的用户
- 体验VMware View HTML Access
- Revip MEP二次开发之“连接弯头”
- Silverlight的诸多效果(小鸟飞,白云走,气球飘,图片展示)附源码
- 2007年河南湖北各市GDP
- WinAPI: SetRectEmpty、IsRectEmpty
- 只能建立两个虚拟服务器,创建两个虚拟主机
- java中KMP模式,Java数据结构-串及其应用-KMP模式匹配算法
- centos mysql phpmyadmin_CentOS下phpMyAdmin安装