在 PostgreSQL 中,锁机制是保证数据一致性和并发控制的核心。PostgreSQL 采用了 MVCC(多版本并发控制) 来处理大部分的读写冲突(即“读不阻塞写,写不阻塞读”),但在涉及修改相同数据或更改表结构时,仍然需要使用锁。 PostgreSQL 的锁主要分为表级锁(Table-level Locks)和行级锁(Row-level Locks)。它们的区别主要体现在粒度、并发性能、触发场景以及底层实现机制上。 以下是详细的对比和解析: --- 1. 核心区别对比表 | 维度 | 表级锁 (Table-level Lock) | 行级锁 (Row-level Lock) | | :--- | :--- | :--- | | 锁定粒度 | 整个表 | 表中的某一行或多行 | | 并发性能 | 较低。容易阻塞其他事务对该表的操作。 | 极高。仅阻塞操作同一行的事务,其他行不受影响。 | | 触发场景 | DDL操作 (ALTER, DROP), 维护操作 (VACUUM), 显式锁表 (),以及DML的意向锁。 | DML操作 (, ),显式行锁 ()。 | | 底层存储 ...