更新时间:2024-11-12 GMT+08:00
分享

LOCK BUCKETS

功能描述

bucket粒度的锁。

注意事项

  • 仅支持在hashbucket扩容期间调用。
  • LOCK BUCKETS只能在一个事务块的内部有用,因为锁在事务结束时就会被释放。出现在任意事务块外面的LOCK BUCKETS都会报错。

语法格式

1
LOCK BUCKETS (bucketlist) IN {ACCESS SHARE|ACCESS EXCLUSIVE} MODE [CANCELABLE];

参数说明

LOCK BUCKETS的参数说明如下所示:

  • bucketlist

    要锁定的bucket的列表。

    取值范围:对于每个bucket,取值范围为[0,1023]。

  • ACCESS SHARE

    ACCESS锁只允许对bucket进行读取,禁止对bucket进行修改。

  • ACCESS EXCLUSIVE

    这个模式保证其所有者(事务)是可以访问该bucket的唯一事务。

  • CANCELABLE

    通过指定该参数允许等锁线程给持锁线程和等锁线程发送CANCEL信号。

示例

1
2
3
4
5
gaussdb=# START TRANSACTION;

gaussdb=# LOCK BUCKETS (0,1,2,3) IN ACCESS EXCLUSIVE MODE;

gaussdb=# COMMIT;

相关文档