PostgreSQL MVCC 源码实现
MVCC对每一个DBA来讲,都不陌生,即多版本控制(Multi-Version-Control)。正因为数据有了多个版本,才实现了读和写在一定程度上的分离,提高数据库每秒处理查询的能力(QPS)。 用户发起的普通查询请求(不包含select … for update语句),并不堵塞DML事务。在Read Commit事务隔离级别时...
PostgreSQL XID与virtual XID区别
PG中事务号有两个概念,一个就是通常意义上的事务号transaction id。如tuple中的xmin,xmax等。另外一个意义是虚拟事务ID,即virtual transaction ID。那么这两个有 什么区别呢? 1.Transaction Id 它是用来标识事务的顺序的,类似于Oracle的LSN(Logical Sequence Numb...
PostgreSQL vacuum原理—vacuum揭秘
在前面两个章节中,我们讲了vacuum的一些重要参数“PostgreSQL vacuum原理一功能与参数”以及PG发起vacuum的流程“PostgreSQL vacuum原理—启动机制”。这个章节我们重要讲下vacuum 的实现, 主要分为vacuum full和lazy vacuum。 1.vacumm full vacuum full会锁表和索引...