pglock
在 PostgreSQL 内实现轻量级分布式锁服务
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pglock | 1.0.0 | UTIL | PostgreSQL | SQL |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 4140 | pglock | 否 | 否 | 否 | 是 | 否 | 否 | pglock |
| 相关扩展 | pg_cron pg_task pg_durable pg_background pg_retry pg_later pgmq pg_dispatch ulak omni_worker pg_cron |
|---|
Packaging patches the upstream pgmb.control mismatch and installs the extension as pglock.
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.0.0 | 1817161514 | pglock | pg_cron |
| RPM | PIGSTY | 1.0.0 | 1817161514 | pglock_$v | pg_cron_$v |
| DEB | PIGSTY | 1.0.0 | 1817161514 | postgresql-$v-pglock | postgresql-$v-cron |
构建
您可以使用 pig build 命令构建 pglock 扩展的 RPM / DEB 包:
安装
您可以直接安装 pglock 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
使用 pig 或者是 apt/yum/dnf 安装扩展:
安装
pig
dnf
apt
创建扩展:
用法
- 来源:README
pglock 是一个在 PostgreSQL 内实现的轻量分布式锁服务。它把锁状态保存在 pglock.locks 中,并通过基于 TTL 的清理来回收陈旧行。
创建扩展
上游 README 标明要求 PostgreSQL 9.1+ 和 plpgsql。
获取与释放锁
pglock.lock(id, resource) 在成功拿到锁时返回 true,如果锁已被其他进程持有则返回 false。文档说明 pglock.unlock(id, resource) 是幂等的。
隔离级别与过期
README 建议在并发场景下使用 serializable isolation 以保证正确性:
陈旧锁通过下面的方式过期清理:
文档给出的默认 TTL 是 5 分钟。如果环境里有 pg_cron,README 说明可以每分钟调度一次 pglock.ttl()。
锁表
上游模式中的锁表是 pglock.locks,包含 id、resource、locked、ttl、created_at 和 updated_at 列。主键为 (id, resource)。
这个页面对您有帮助吗?
感谢反馈,我们会据此改进这篇文档。
哪里没有解决?(可选)