博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL中的共享锁
阅读量:5146 次
发布时间:2019-06-13

本文共 738 字,大约阅读时间需要 2 分钟。

    MySQL对外提供了一种应用层级别的共享锁,通过这个共享锁,数据库之上的应用程序可以实现互斥功能。这个共享锁通过一组MySQL 内置函数实现。

 

   GET_LOCK(str,timeout)  这个函数的作用是获取共享锁,其中str是应用程序通信双方协商好的一个字符串,timeout是等待该锁的超时时间。如果能在timeout时间内获取到锁,则返回1;如果在timeout时间后仍然获取不到锁,则返回0;如果发生错误,则返回NULL。

   一个应用程序获取到锁后,可以通过RELEASE_LOCK(str)、执行新的GET_LOCK(str,timeout)、或者mysql连接被释放时(不管是正常释放还是异常断开)这三种方式释放锁。

   如果有多个客户端想去同时通过GET_LOCK(str, timeout)获取锁,则他们获取锁的先后顺序不可知。

 

 RELEASE_LOCK(str这个函数的作用是释放名为str的共享锁。如果锁被成功释放,返回1;如果这个进程没有占有该锁,则返回0;如果这个名为str的锁不存在,则返回NULL。

 

   还有两个函数,感觉用处不是很大:

IS_USED_LOCK(str)

检查名为str的锁是否在使用(被锁),如果被锁,则返回拥有该锁的客户端标识,否则返回NULL。

IS_FREE_LOCK(str)

检查名为str的锁是否可用(没有被锁),如果可用则返回1;如果在使用则返回0;如果有错误则返回NULL。

 

 

参考:http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html

转载于:https://www.cnblogs.com/cobbliu/p/3817370.html

你可能感兴趣的文章
codevs——T2488 绿豆蛙的归宿
查看>>
MSIL实用指南-闭包的生成和调用
查看>>
使用Roslyn脚本化C#代码,C#动态脚本实现方案
查看>>
JDK dump
查看>>
Jenkins-在windows上安装及其部署
查看>>
【推荐收藏】10个获取免费网页背景纹理的最佳网站
查看>>
素材锦囊:50套高质量的 PSD 素材免费下载《下篇》
查看>>
帮助你在 Photoshop 中轻松实现长阴影效果的工具
查看>>
hdu 4602 递推关系矩阵快速幂模
查看>>
[Dynamics 365] 关于Currency的一点随笔
查看>>
【Android】activity-alias的使用
查看>>
熟悉常用的HDFS操作
查看>>
Hadoop综合大作业
查看>>
GDB学习之道:GDB调试精粹及使用实例
查看>>
【Android】Android实现截取当前屏幕图片并保存至SDCard
查看>>
人工智能-智能创意平台架构成长之路(一)--长篇开篇
查看>>
CVE-2019-0708漏洞检测工具
查看>>
CSS最常用和实用的技巧
查看>>
系统设计基础第六周学习总结
查看>>
leetcode 11 Container with Most Water
查看>>