MYSQL - 加锁函数和解锁函数

136 阅读1分钟

MYSQL 加锁和解锁函数

MYSQL 加锁和解锁函数。

加锁和解锁函数

  • GET_LOCK(str, timeout);
  • RELEASE_LOCK(str);
  • IS_FREE_LOCK(str);
  • IS_USED_LOCK(str);

GET_LOCK(str, timeout)获得一个锁,名字为str,超时时间为timeout;,若成功得到锁,返回值为1;若操作超时,返回0;发生错误返回NULL;

当mysql的连接断开或者使用RELEASE_LOCK(str),锁str就会被断开;

RELEASE_LOCK(str)解锁 锁str,如果锁str被解锁,则返回1;若这个锁正在被使用,则返回0;出现错误返回NULL;

IS_FREE_LOCK(str)检查名为str的锁是否可以使用,可以使用返回1,如果锁正在被使用,返回0;出现错误返回NULL;

IS_USED_LOCK(str)检查名为str的锁是否正在被使用。若被封锁,则返回使用该锁的客户端的连接标志;否则返回NULL;

SELECT
  GET_LOCK('test_lock', 10),
  IS_USED_LOCK('test_lock'),
  IS_FREE_LOCK('test_locl'),
  RELEASE_LOCK('test_lock');
GET_LOCK('test_lock', 10)IS_USED_LOCK('test_lock')IS_FREE_LOCK('test_locl')RELEASE_LOCK('test_lock')
11811

结果表明:

  1. 成功的到test_lock锁
  2. test_lock锁正在被USERID为18的用户使用
  3. 锁不空闲,如果空闲,返回值应该为0
  4. 释放锁成功,因为返回值为1