更新时间: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; |
父主题: L