了解多版本并发控制 (MVCC) 和快照
大多数数据库管理系统(DBMS)使用锁来强制实施并发控制,但 PostgreSQL 使用替代方法补充锁定。 PostgreSQL 使用称为多版本并发控制(MVCC)的系统,该系统允许存在同一行的多个版本以提高并发性。 使用此系统,每个查询都会看到具有事务一致性的数据的早期快照。 MVCC 确保正在读取数据的事务不会阻止正在写入数据的事务,反之亦然。
例如,连接 A 正在执行会扫描表的所有行的查询。 同时,连接 B 正在执行更新某些行的查询。 MVCC 允许这两个查询同时运行,方法是创建受影响的行的另一个版本。 这样,连接 B 就可以执行更新,而不会影响连接 A。此过程的实现方法如下:每个行版本将 xmin 值用于 visible since 事务,将 xmax 值用于 visible until 事务。 使用 MVCC,连接 A 将忽略连接 A 查询启动后发生的任何修改。

交易
DBMS 中的事务是一个原子工作单元,因此事务要么全部提交,要么完全不提交。 事务也用于并发目的。 使用隔离级别时,可以定义一个事务在其他并发事务上可能具有的效果。
通过使用 BEGIN TRANSACTION 或 START TRANSACTION 来启动事务。 使用 COMMIT 完成事务,以保存事务中所做的所有更改或 ROLLBACK,以撤消事务所做的任何更改。 例如:
BEGIN TRANSACTION;
UPDATE production.workorder
SET stockedqty=7
WHERE workorderid=1;
COMMIT;