• MySQL中的共享锁


        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

  • 相关阅读:
    sql取每个分组的第一行数据
    PHP microtime() 函数
    笔记产品会不会被淘汰
    making an os NO.1 怎样进内核之二
    hjkhjkh
    HTTP协议理解
    hjkhjkh
    making an os NO.1 怎样进内核之一
    hjkhjkh
    笔记产品会不会被淘汰
  • 原文地址:https://www.cnblogs.com/cobbliu/p/3817370.html
Copyright © 2020-2023  润新知