`
onlyor
  • 浏览: 388616 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

MySQL GET_LOCK RELEASE_LOCK 函数

    博客分类:
  • db2
 
阅读更多

GET_LOCK(name,time)函数定义一个名称为name、持续时间长度为time秒的锁。

  • 如果锁定成功,返回1。
  • 如果操作超时,返回0。
  • 如果发生错误,返回NULL。

假如有一个用GET_LOCK()得到的锁,当执行RELEASE_LOCK()或连接断开(正常或非正常)时,这个锁就会解除。

执行SQL:


SELECT GET_LOCK('MySQL',10) AS GetLock,
    IS_USED_LOCK('MySQL') AS ISUsedLock,
    IS_FREE_LOCK('MySQL') AS ISFreeLock,
    RELEASE_LOCK('MySQL') AS ReleaseLock;

 

 

从上图中代码执行的结果可以看出:

  • GET_LOCK('MySQL',10)返回结果为1,说明成功得到了一个名称为'MySQL'的锁,持续时间为10秒。
  • IS_USED_LOCK('MySQL')返回结果为当前连接ID,表示名称为'MySQL'的锁正在被使用。
  • IS_FREE_LOCK('MySQL')返回结果为0,说明名称为'MySQL'的锁正在被使用。
  • RELEASE_LOCK('MySQL')返回值为1,说明解锁成功。

 

 

  • 大小: 6.3 KB
分享到:
评论

相关推荐

    MySQL用户级锁操作函数.pdf

    RELEASE_LOCK函数则用于显式释放通过GET_LOCK函数获取的锁。当一个锁被释放后,其他等待获取该锁的会话才能有机会获取到锁。值得注意的是,MySQL通过元数据锁定(MDL)子系统实现GET_LOCK函数,能够允许会话获取多个...

    MySQL的锁机制

    此外,还有一种特殊的锁——**GET_LOCK()函数**,这是一种基于字符串的用户自定义锁,可以实现跨表甚至跨库的锁定。该函数支持如下操作: - **GET_LOCK(str, timeout)**:获取名为`str`的锁,其中`timeout`表示等待...

    Mysql主从同步教程

    get_lock(); is_free_lock(); is_used_lock(); master_pos_wait(); rand(); release_lock(); sleep(); version(); 2. 在日志中出现如下警告信息的不能正确地复制:[Warning] Statement is not safe to log in ...

    python基于mysql实现的简单队列以及跨进程锁实例详解

    `GET_LOCK()`函数允许我们在MySQL数据库中创建一个锁定标识,如果标识已被其他进程持有,那么调用`GET_LOCK()`的进程将会等待直到锁被释放。这是一个简单的Python类`Glock`,它封装了对`GET_LOCK()`的调用: ```...

    mysql-cheat-sheet-v1

    - **系统函数**:`LAST_INSERT_ID` 获取最后插入记录的自增ID、`FORMAT` 格式化数字、`VERSION` 获取MySQL版本、`CONNECTION_ID` 获取连接ID、`GET_LOCK`、`RELEASE_LOCK` 和 `IS_FREE_LOCK` 用于实现锁机制、`...

    高可用数据库与负载均衡案例实操手册

    (3)在多主环境下 LOCK/UNLOCK TABLES 不支持,以及锁函数 GET_LOCK(),RELEASE_LOCK()。 (4)查询日志不能保存在表中。如果开启查询日志,只能保存到文件中。 (5)允许最大的事务大小由 wsrep_max_ws_rows 和 ...

    php并发加锁示例

    锁的操作通常包含两个步骤:首先是获取锁(getLock),其次是释放锁(releaseLock)。使用锁机制可以防止多个进程或线程同时操作同一资源,保证了数据的一致性。 文章提到的策略模式是一种行为设计模式,它定义了一...

Global site tag (gtag.js) - Google Analytics