显式锁定

PostgreSQL并发控制(MVCC, 事务,事务隔离级别)

不想你离开。 提交于 2020-01-07 20:08:07
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 基于PostgreSQL9.4 9.3中文文档: http://58.58.27.50:8079/doc/html/9.3.1_zh/mvcc.html 9.4中文文档: http://www.postgresql.org/docs/9.4/static/mvcc.html 本文描述PostgreSQL数据库系统在多个会话试图同时访问同一数据时的表现。并发控制的目标是为所有会话提供高效的访问,同时还要维护严格的数据完整性。每个数据库应用开发人员都应该熟悉本话题。 PostgreSQL的MVCC与锁 PostgreSQL为开发者提供了丰富的对数据并发访问进行管理的工具。在内部, PostgreSQL利用多版本并发控制(MVCC)来维护数据的一致性 。这就意味着当检索数据时,每个事务看到的都只是一小段时间之前的数据快照(一个 数据库版本 ),而不是数据的当前状态。这样,如果对每个数据库会话进行 事务隔离 ,就可以避免一个事务看到其它并发事务的更新而导致不一致的数据。MVCC通过避开传统数据库系统锁定的方法,最大限度地减少锁竞争以允许合理的多用户环境中的性能。 使用MVCC与使用锁定模式相比较的优缺点: 在MVCC里,对检索(读)数据的锁请求与写数据的锁请求不冲突,所以读不会阻塞写,而写也从不阻塞读。甚至当通过创新的