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

MySQL中的共享锁的更多相关文章

  1. MySQL中的共享锁与排他锁

    MySQL中的共享锁与排他锁 在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突.行级锁分为共享锁和排他锁两种,本文将详细介绍共 ...

  2. [数据库事务与锁]详解六: MySQL中的共享锁与排他锁

    注明: 本文转载自http://www.hollischuang.com/archives/923 在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大 ...

  3. 【数据库】MySQL中的共享锁与排他锁

    转载:http://www.hollischuang.com/archives/923 在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大大减少数据库 ...

  4. 【转】MySQL中的共享锁与排他锁

    在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突.行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁及排他锁的概念.使用方式及 ...

  5. 转 MySQL中的共享锁与排他锁

    原文链接在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突.行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁及排他锁的概念.使 ...

  6. MySQL 中的共享锁和排他锁的用法

    在 MySQL 中的行级锁.表级锁和页级锁中,咱们介绍过,行级锁是 MySQL 中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突.行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁和排他锁的概 ...

  7. mysql 中的共享锁和排他锁

    共享锁(share lock) 共享锁又称读锁,是读取操作创建的锁.其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上的排他锁),直到已释放所有共享锁. 如果事务T对数据A加上共享锁 ...

  8. [转]MySQL中乐观锁、悲观锁(共享锁、排他锁)简介

    InnoDB与MyISAM Mysql 在5.5之前默认使用 MyISAM 存储引擎,之后使用 InnoDB. MyISAM 操作数据都是使用的表锁,你更新一条记录就要锁整个表,导致性能较低,并发不高 ...

  9. [数据库事务与锁]详解五: MySQL中的行级锁,表级锁,页级锁

    注明: 本文转载自http://www.hollischuang.com/archives/914 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的 ...

随机推荐

  1. 试用log4jdbc

    近日发现一个好东东log4jdbc,他是一个JDBC驱动器,能够记录SQL日志和SQL执行时间等信息.log4jdbc使用SLF4J(Simple Logging Facade For Java)作为 ...

  2. 【Github教程】史上最全github使用方法:github入门到精通

    原文 http://www.eoeandroid.com/thread-274556-1-1.html git pull 命令 git pull <remote> <branch&g ...

  3. 程序员眼中的RSA算法

    RSA算法是数学应用于实际的一项伟大发明,起数学过程相对而言还是比较专业的,有兴趣可以看看. RSA算法的证明过程,详见:http://www.ruanyifeng.com/blog/2013/06/ ...

  4. ubuntu上minigui调试环境的建立

    minigui一共有两个版本:商业版()和GPL版(),问了一下飞漫软件,使用商业版前期的费用是9万,有技术支持,包括5000个licenses的费用,后期10K的量的话,每个licenses要6块, ...

  5. python中的归并排序

    本来在博客上看到用python写的归并排序的程序,然后自己跟着他写了一下,结果发现是错的,不得不自己操作.而自己对python不是非常了解所以就变百度边写,最终在花了半个小时之后就写好了. def m ...

  6. 在Java程序中使用Hibernate

    Hibernate是一种ORM框架,ORM全称为Object-Relative Database-Mapping,在Java对象与关系数据库之间建立某种映射,以实现直接存取Java对象(一般为实体类) ...

  7. Objective-C:Objective-C:文件中一些对目录进行操作的函数

    IO文件中,一些对目录进行操作的函数:获取.切分.组合 一些对目录进行操作的函数: 获取用户的姓名:(NSString*)NSUserName() ;    ———>NSString *Str ...

  8. [15] 星星(Star)图形的生成算法

    顶点数据的生成 bool YfBuildStarVertices ( Yreal radius, Yreal assistRadius, Yreal height, Yuint slices, YeO ...

  9. IDEA热部署基于maven的web项目

    第一步:首先先创建web项目 按照向导一步一步完成项目创建,我创建的示例项目为hotdeploddemo     第二步:设置项目的web资源         下图中的路径要修改正确,指向src/ma ...

  10. python3 使用openpyxl库读写excel(续)

    官网:https://openpyxl.readthedocs.io/en/stable/