PostgreSQL 源码解读(126)- MVCC#10(vacuum过程)
本节简单介绍了PostgreSQL手工执行vacuum的主处理流程,主要分析了ExecVacuum->vacuum函数的实现逻辑。该函数是VACUUM/ANALYZE命令的内部处理入口。
PostgreSQL 源码解读(125)- MVCC#9(vacuum-主流程)
本节简单介绍了PostgreSQL手工执行vacuum的主处理流程,主要分析了ExecVacuum函数的实现逻辑。
PostgreSQL 源码解读(124)- 后台进程#4(autovacuum进程#1)
本节简单介绍了PostgreSQL的后台进程:autovacuum,主要分析CreateCheckPoint函数的实现逻辑。
PostgreSQL 源码解读(123)- MVCC#8(提交事务-实际提交过程)
本节介绍了PostgreSQL提交事务的具体实现逻辑,主要解析了函数CommitTransaction->RecordTransactionCommit的实现逻辑。
PostgreSQL 源码解读(122)- MVCC#7(提交事务-整体流程)
本节介绍了PostgreSQL提交事务的整体处理逻辑,主要解析了函数CommitTransaction的实现逻辑。
PostgreSQL 源码解读(121)- MVCC#6(获取事务号-实现函数)
本节介绍了PostgreSQL获取事务号XID的逻辑,主要解析了函数AssignTransactionId->GetNewTransactionId的实现逻辑。 在GetNewTransactionId函数中,检查是否可以安全的分配XID. 这可以防止由于XID wraparound而导致的灾难性数据丢失. 基本规则是: 如果超过了xidVacLimit,开始尝试强制autovacuum循环. 如果超过了xidWarnLimit,开始发出警告. 如果超过了xidStopLimit,拒绝执行事务,直至以单用户模式运行.
PostgreSQL 源码解读(120)- MVCC#5(获取事务号-主逻辑)
本节介绍了PostgreSQL获取事务号XID的逻辑,主要解析了函数AssignTransactionId的实现逻辑。
PostgreSQL 源码解读(119)- MVCC#4(启动事务)
本节介绍了PostgreSQL启动事务的逻辑,主要内容是函数StartTransaction的实现逻辑。
PostgreSQL MVCC快照机制浅析
快照隔离是数据库实现并发控制的一种常用技术.本节简单探讨了理论快照模型、PostgreSQL中的工程实践以及由此推广到Postgres-XL的可能改进思路等.
PostgreSQL DBA(26) - MVCC#6(Tuple可见性判断-简化版)
本节介绍了Tuple可见性判断的基本逻辑,以下判断逻辑来自于Bruce Momjian写的Mvcc Unmasked - Bruce Momjian,推荐阅读. 判断逻辑((Xmin == my-transaction && inserted by the current transaction Cmin < my-command &&
PostgreSQL DBA(25) - MVCC#5(Tuple可见性判断)
本节介绍了Tuple可见性判断的基本逻辑,包括在xmin或xmax为当前事务的情况和xmin&max非当前事务的情况.
PostgreSQL 源码解读(118)- MVCC#3(Tuple可见性判断)
本节介绍了PostgreSQL判断元组可见性的实现逻辑,重点解析了HeapTupleSatisfiesMVCC函数的处理过程。 一、数据结构宏定义 //事务ID,无符号32位整型 typedef uint32 TransactionId; /* ---------------- * Special transaction ID values * 系统保留的事
PostgreSQL 源码解读(117)- MVCC#2(获取快照#2)
本节介绍了PostgreSQL获取事务快照的实现逻辑,重点解析了GetTransactionSnapshot->GetSnapshotData的处理过程。 一、数据结构全局/静态变量 /* * Currently registered Snapshots. Ordered in a heap by xmin, so that we can * quickly find the
PostgreSQL 源码解读(116)- MVCC#1(获取快照#1)
本节介绍了PostgreSQL获取事务快照的主实现逻辑,相应的实现函数是GetTransactionSnapshot。 一、数据结构全局/静态变量 /* * Currently registered Snapshots. Ordered in a heap by xmin, so that we can * quickly find the one with lowest xmin,
PostgreSQL DBA(24) - MVCC#4(快照中的xmax)
本节通过源码解释了snapshot中的xmax的具体含义. 一、xmax上一节提到PostgreSQL通过txid_current_snapshot()函数获取快照,格式为xmin : xmax : xip_list,其中xmax应理解为最后已完结事务(COMMITTED/ABORTED)的txid + 1。详见以下PG源码: Snapshot GetSnapshotData(Snapsho
PostgreSQL DBA(23) - MVCC#3(事务快照和隔离级别)
如前所述,PostgreSQL使用一种称为快照隔离Snapshot Isolation (SI)实现并发控制,下面简单介绍PostgreSQL中与之相关的快照和隔离级别等基本概念。注意:1.简单起见,本节暂不讨论事务回滚的情况.2.如无说明,默认的事务隔离级别为READ COMMITTED 一、事务快照事务快照(简称Snapshot)存储所有事务在某个时间点是否处于活动状态(正在进行或尚未启动)
PostgreSQL 定制psql提示符
通过配置.psqlrc文件(linux平台)可定制psql提示符. .psqlrc文件cdvim .psqlrc \set PROMPT1 '%`date +%H:%M:%S` (%n@%M:%>)%/%R%#%x ' \set PROMPT2 '%M %n@%/%R%# ' 样例 [xdb@localhost ~]$ psql -d testdb psql (11.1) Ty
PostgreSQL DBA(22) - MVCC#2(commit log)
Concurrency Control并发控制是一种机制,在并发进行多个事务时维护一致性(Consistency)和隔离性(Isolation),一致性和隔离性是数据库事务ACID(Atomicity, Consistency, Isolation, Durability) 属性中的C和I。多版本并发控制(MVCC)是广泛使用的并发控制技术,其主要优势是读不会阻塞写,而写也不会阻塞读。MVCC有很
PostgreSQL 源码解读(115)- 后台进程#3(checkpointer进程#2)
本节简单介绍了PostgreSQL的后台进程:checkpointer,主要分析CreateCheckPoint函数的实现逻辑。 一、数据结构CheckPointCheckPoint XLOG record结构体. /* * Body of CheckPoint XLOG records. This is declared here because we keep * a copy
PostgreSQL DBA(21) - MVCC#1(Multi Version Heap Tuple)
Concurrency Control并发控制是一种机制,在并发进行多个事务时维护一致性(Consistency)和隔离性(Isolation),一致性和隔离性是数据库事务ACID(Atomicity, Consistency, Isolation, Durability) 属性中的C和I。多版本并发控制(MVCC)是广泛使用的并发控制技术,其主要优势是读不会阻塞写,而写也不会阻塞读。MVCC有很