MST

星途 面试题库

面试题:PostgreSQL可见性判断机制基础

简述PostgreSQL中可见性判断机制的基本原理,以及它是如何利用事务ID来确定数据行对当前事务是否可见的。
14.8万 热度难度
数据库PostgreSQL

知识考点

AI 面试

面试题答案

一键面试

基本原理

PostgreSQL 通过多版本并发控制(MVCC)实现可见性判断机制。每个数据行都有与之关联的元数据,包括事务ID 等信息。不同事务操作数据时会创建数据的不同版本,而不是直接修改原有数据。这样在并发环境下,各个事务能看到数据在不同时间点的状态,而不会相互干扰。

利用事务ID确定数据行可见性

  1. 事务创建的数据行:当一个事务插入新的数据行时,会为该行分配一个唯一的事务ID(XID),标记该事务是此数据行的创建者。
  2. 事务删除数据行:删除操作并不会立即物理删除数据行,而是在该行标记删除信息,并记录执行删除操作的事务ID。
  3. 可见性判断逻辑
    • 当前事务自己创建的数据行:当前事务创建的数据行对自己始终可见,因为是自己的操作结果。
    • 其他事务创建的数据行
      • 如果创建数据行的事务已提交,且该数据行未被标记删除,或者标记删除的事务未提交,那么该行对当前事务可见。
      • 如果创建数据行的事务未提交,那么该行对当前事务不可见,因为事务具有隔离性,未提交的事务修改对其他事务不可见。
      • 如果数据行被标记删除,且执行删除操作的事务已提交,那么该行对当前事务不可见。