↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5
历史版本PostgreSQL 7.4 已于 2010 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

第 12 章 并发控制

本章描述 PostgreSQL 数据库系统在两个或更多会话试图同时访问同一数据时的行为。在这种情况下,目标是在保持严格数据完整性的同时,为所有会话提供高效访问。每一个数据库应用开发者都应该熟悉本章涉及的主题。

12.1. 简介 #

与使用锁进行并发控制的传统数据库系统不同,PostgreSQL通过使用多版本模型(多版本并发控制,MVCC)来维护数据一致性。这意味着,在查询数据库时,每个事务看到的都是某个较早时刻的数据快照(即一个数据库版本),而不受底层数据当前状态的影响。这样可以保护事务,使其看不到由(其他)并发事务在同一数据行上执行更新所产生的不一致数据,从而为每个数据库会话提供事务隔离。

使用MVCC并发控制模型而不是加锁的主要优点在于,在MVCC中,为查询(读取)数据而获得的锁不会与为写入数据而获得的锁冲突,因此读取不会阻塞写入,写入也不会阻塞读取。

对于无法轻易适应MVCC行为的应用,PostgreSQL也提供表级和行级锁设施。不过,正确使用MVCC通常会比加锁提供更好的性能。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。