
PostgreSQL指南--内幕探索
文章平均质量分 94
hmxz1024
这个作者很懒,什么都没留下…
展开
-
《postgresql指南--内幕探索》第十一章 流复制
同步流复制是是从9.1版本实现的,可以是一主多从的模式,在postgresql里主节点叫master,备节点叫standby。主备是基于日志传送的技术实现同步,主节点持续发送wal数据,备节点重放接受到的wal数据。主要介绍以下几个方面:流复制如何启动的主备之间如何传送数据主节点如何管理多个备节点主节点如何发现失败的备节点开始流复制在流复制中,三个进程协同工作,walsender在主节点发送wal数据到备节点,然后,备节点启动一个walreceiver和一个startup进程接受和重放数原创 2021-08-13 15:09:28 · 1468 阅读 · 0 评论 -
《PostgreSQL指南--内幕探索》第十章 基础备份与时间点恢复
在线数据库备份大致可分为逻辑备份和物理备份两类,它们各自都有优点和缺点。逻辑备份有一个缺点,即执行需要花费大量的时间。特别是对于大型数据库而言,需要花费很长时间进行备份,而从备份数据中恢复数据库可能需要更长的时间。相反,物理备份可以在相对较短的时间内备份和恢复大型数据库,因此在实际系统中,其是一个非常重要且实用的功能。在PostgreSQL中,自8.0版本开始提供了在线的全量物理备份,整个数据库集簇(即物理备份数据)的运行时快照被称为基础备份。PostgreSQL还在8.0版中引入了时间点恢复(Poin原创 2021-08-10 09:59:58 · 1299 阅读 · 0 评论 -
《postgresql指南--内幕探索》第九章 预写式日志(WAL)
事务日志是数据库的重要组成部分,存储了数据库系统中所有更改和操作的历史,以确保数据库不会因为故障(例如掉电或其他导致服务器崩溃的故障)而丢失数据。在PostgreSQL(以下简称PG)中,事务日志文件称为Write Ahead Log(以下简称WAL)。使用WAL不仅可以保证数据库事务操作的持久性,也可以显著地减少写磁盘的次数,因为只需要把日志文件刷新到磁盘就可以保证事务被提交,而不需要把事务改动过的每一个数据文件都刷新到磁盘。日志文件是连续写的,所以同步log的花销远小于刷新数据页的花销。特别是服务器要原创 2021-08-09 17:53:17 · 2478 阅读 · 0 评论 -
《postgresql指南--内幕探索》第八章 缓冲区管理
postgresql中缓冲区管理器,存储和后端进程之间的关系:概览缓冲区管理器结构PostgreSQL缓冲区管理器包括一个缓冲区表、缓冲区描述符和缓冲池,这些将在下一节中介绍。缓冲池存储数据文件的页, 如表和索引,以及自由空间映射和可见性映射的页面。缓冲池是一个数组,数据的每个插槽存储数据文件的一页。缓冲池数组的索引称为buffer_id。缓冲区标签在PostgreSQL中,可以为所有数据文件的每个页面分配一个唯一的标记,即缓冲区标签。当缓冲区管理器收到请求时, PostgreSQL使用目标页面原创 2021-07-12 21:49:26 · 1723 阅读 · 3 评论 -
《postgresql指南--内幕探索》第七章 HOT和Index-Only扫描
本章介绍与索引扫描相关的两个功能, 即Heap Only Tuple和Index-Only Scans。Heap Only Tuple (HOT)HOT是在8.3版中引入的, 当更新的行存储在旧行所在的page时,可以有效地使用索引和表的页。HOT有效的减少了vacuum操作。源码目录README.HOT描述了HOT的细节。 本章简要介绍了HOT。更新没有HOT的行假设表 “tbl” 有两列:“id"和"data”;"id"是"tbl"的主键。testdb=# \d tbl原创 2021-05-23 11:20:53 · 658 阅读 · 0 评论 -
《postgresql指南--内幕探索》第四章 外部数据包装器
2003年,在SQL标准中增加了一个访问远程数据的规范,称为SQL外部数据管理(SQL/MED)。自9.1版本以来,PostgreSQL开发除了FDW,实现了SQL/MED的一部分特性。在SQL/MED中,远程服务器上的表称为外部表。PostgreSQL 的外部数据包装器(Foreign Data Wrappers,FDW)使用与本地表类似的方式,通过SQL/MED来管理外部表。图1:FDW的基本概念...原创 2021-05-23 10:57:11 · 853 阅读 · 0 评论 -
《postgresql指南--内幕探索》第三章查询处理
该部分内容《postgresql指南–内幕探索》一书中,写的并不太好理解。因此选择了参考博客《A Tour of PostgreSQL Internals》学习笔记——查询处理分析中的内容。至于《postgresql指南–内幕探索》中的内容,可参考:Query ProcessingPostgresql的查询处理下面这张图从整体上概括了Postgresql的查询处理的步骤以及牵涉到的各个模块。其中最重要的关键的两个数据结构是查询分析树(parse tree),和查询计划树(plan tree)。Pa转载 2021-05-19 19:31:29 · 1038 阅读 · 0 评论 -
《postgresql指南--内幕探索》第六章 清理过程
清理过程(通常简称为VACUUM)是一种维护过程,有助于 PostgreSQL 的持久运行。它的两个主要任务是删除死元组,以及冻结事务标识。为了移除死元组,清理过程有两种模式,分别是并发清理与完整清理。并发清理过程会删除表文件每个页面中的死元组,而其他事务可以在其运行时继续读取该表。相反,完整清理不仅会移除整个文件中所有的死元组,还会对整个文件中所有的活元组进行碎片整理。其他事务在完整清理运行时无法访问该表。尽管清理过程对PostgreSQL至关重要,但与其他功能相比,它的改进相对其他功能而言要慢一些。原创 2021-05-10 22:46:08 · 1154 阅读 · 0 评论 -
《postgresql指南--内幕探索》第五章并发控制(二)
可见性检查规则可见性检查规则是一组规则,用于确定一条元组是否对于一个事务可见。该规则会用到:1.tuple中的t_xmin和t_xmax字段;2.clog3.当前的snapshot为了简便起见,在此回避了子事务和有关t_ctid的问题,只讨论最简单的情形。我们选取十条规则并将他们分为三类进行说明。t_xmin的状态为ABORTED我们知道t_xmin是一个tuple被INSERT时的事务txid。如果该事务的状态为ABORTED,说明该事务被取消,那么理所当然该事务所INSERT的tup原创 2021-05-10 10:40:12 · 1068 阅读 · 0 评论 -
《postgresql指南--内幕探索》第五章并发控制(一)
当多个事务同时在数据库中运行时,并发控制是一种用于维持一致性与隔离性的技术,一致性与隔离性是ACID的两个属性。从宽泛的意义上来讲,有三种并发控制技术,分别是多版本并发控制(Multi-Version Concurrency Control,MVCC)、严格两阶段锁定(Strict Two-Phase Locking,S2PL)和乐观并发控制(Optimistic Concurrency Control,OCC),每种技术都有多种变体。在MVCC中,每个写操作都会创建一个新版本的数据项,并保留其旧版本。当原创 2021-04-25 10:42:42 · 1102 阅读 · 0 评论 -
《postgresql指南--内幕探索》第二章 进程与内存架构
本文参考书籍《postgresql指南–内幕探索》的Chapter 2:Process and Memory Architecture该书的网络内容可参考:The Internals of PostgreSQL进程架构Postgresql 是一个C/S架构的关系型数据库,由多个后台进程管理数据库,下面分别介绍一些这些进程:postgres server process :是所有进程的父进程backend process:每一个客户端的连接都有一个后端进程存在backgroud process原创 2021-03-01 21:47:42 · 945 阅读 · 0 评论 -
《postgresql指南--内幕探索》第一章 数据库集簇、数据库和数据表
本文参考书籍《postgresql指南–内幕探索》的Chapter 1:Database Cluster, Databases and Tables该书的网络内容可参考:The Internals of PostgreSQL本文内容转载自:数据库集簇、数据库和数据表数据库集簇的逻辑结构数据库集簇(database cluster)是一组数据库(database)的集合,由一个PostgreSQL服务器管理。数据库集簇与高可用数据库集群不同,并非意味着“一组数据库服务器”,一个PostgreSQL服转载 2021-03-01 21:15:19 · 1876 阅读 · 0 评论