表级锁 · SUE
SHARE UPDATE EXCLUSIVE
共享更新排他锁
用于维护及部分结构变更;允许普通读写,但同一表上不能同时执行另一项持有此模式的操作。
冲突关系
以下只比较不同事务在同一个表上持有的锁。
与这些模式兼容 3
纵轴是请求的锁,横轴是另一事务已经持有的锁;只比较同一对象。
取得此模式的命令
| SQL 命令 | 取得条件与说明 |
|---|---|
| VACUUM(不含 FULL) | 常规清理持有此锁;尝试截断表尾空页时还可能短暂取得 ACCESS EXCLUSIVE。 |
| ANALYZE | 在被分析的目标表上取得此模式。 |
| CREATE INDEX CONCURRENTLY | 作用于被索引的表;多个事务阶段构建并等待旧事务,不表示无等待。 |
| CREATE STATISTICS | 在被收集统计信息的表上加锁。 |
| COMMENT ON(关系对象) | COMMENT 在所注释对象上取得此模式;不同对象上的同名锁不会互相冲突。 |
| DROP INDEX CONCURRENTLY | 在所属表上取得此模式,分阶段等待并移除索引;不在表上持有普通 DROP INDEX 的 ACCESS EXCLUSIVE。 |
| REINDEX … CONCURRENTLY | PostgreSQL 12 起;会话级 SHARE UPDATE EXCLUSIVE 锁覆盖被重建的索引及所属表,分多个事务完成构建、验证、切换与清理。 |
| LOCK TABLE … IN SHARE UPDATE EXCLUSIVE MODE | 显式请求此表级模式;省略 IN … MODE 时默认为 ACCESS EXCLUSIVE。 |
| ALTER TABLE … ALTER COLUMN … SET STATISTICS | 修改列统计目标。 |
| ALTER TABLE … ALTER COLUMN … SET (n_distinct = …) | 修改列统计选项;RESET 同样适用。 |
| ALTER TABLE … CLUSTER ON | 设置后续聚簇使用的索引;此命令本身不重写表。 |
| ALTER TABLE … SET WITHOUT CLUSTER | 清除聚簇索引标记。 |
| ALTER TABLE … VALIDATE CONSTRAINT | 在当前表上验证约束;外键验证还需要访问被引用表。 |
| ALTER TABLE … ATTACH PARTITION(父表) | 父表锁级别逐版本解析;待挂载分区另取 ACCESS EXCLUSIVE。PostgreSQL 11 起如有默认分区,也需锁定默认分区。 |
| ALTER TABLE … DETACH PARTITION … FINALIZE(父表) | 完成中断的并发分离;被分离分区另取 ACCESS EXCLUSIVE。 |
| ALTER TABLE … SET / RESET (fillfactor = …) | 表存储参数按参数定义选择锁;fillfactor 可用 SHARE UPDATE EXCLUSIVE。 |
| ALTER TABLE … SET / RESET (autovacuum_* = …) | 表的自动清理存储参数使用 SHARE UPDATE EXCLUSIVE。 |
| ALTER TABLE … SET / RESET (toast.autovacuum_* = …) | 这里给出 TOAST 自动清理参数;不存在笼统的 SET TOAST 子命令,其他参数按具体定义选择锁。 |
| ALTER TABLE … DETACH PARTITION … CONCURRENTLY(父表) | PostgreSQL 14 起,分两个事务进行;父表使用 SHARE UPDATE EXCLUSIVE,等待使用分区的事务结束后进入完成阶段。 |
| ALTER TABLE … DETACH PARTITION … CONCURRENTLY(分区,第一阶段) | 第一阶段父表与分区使用 SHARE UPDATE EXCLUSIVE;提交并等待后再升级分区锁。 |
| ALTER INDEX … RENAME | 作用于被重命名的索引本身。 |
| ALTER TABLE … INHERIT(父表) | 在新指定的继承父表上取得 SHARE UPDATE EXCLUSIVE;被修改的子表另取 ACCESS EXCLUSIVE。 |
链接指向本站 PostgreSQL 18 的 SQL 命令百科。命令也可能取得其他锁,查看完整命令关联表。
其他锁模式
数据来源
当前查看 PostgreSQL 18,采样构建 REL_18_STABLE · 753057e340da。冲突关系与命令行为按该版本的文档和源码整理。命令链接进入本站 SQL 命令百科,并保留所选版本。
资料核验日期:2026-09-26。