Posts in 2018
  • 第六章 垃圾清理过程

    2018年01月06日 in PG 内核

    **清理(VACUUM)**是一种维护过程,有助于PostgreSQL的持久运行。它的两个主要任务是删除死元组,以及冻结事务标识,两者都在第5.10节中简要提到过。 为了移除死元组,清理过程有两种模式:并发清理(Concurrent Vacuum) 与完整清理(Full Vacuum) 。并发清理(通常简称为VACUUM)会删除表文件每个页面中的死元组,而其他事务可以在其运行时继续读取该表。相反,完整清理不仅会移除整个文件中所有的死元组,还会对整个文件中所有的活元组进行碎片整理。而其他事务在完整 …

    Read more

  • 第七章 堆内元组与仅索引扫描

    2018年01月05日 in PG 内核

    本章中介绍两个和索引扫描有关的特性—— 堆内元组(heap only tuple, HOT)和仅索引扫描(index-only scan) 。 7.1 堆内元组(HOT) 在8.3版本中实现的HOT特性,使得更新行的时候,可以将新行放置在老行所处的同一个数据页中,从而高效地利用索引与表的数据页;HOT特性减少了不必要的清理过程。 在源码的README.HOT中有关于HOT的详细介绍,本章只是简短的介绍HOT。首先,7.1.1节描述了在没有HOT特性的时候,更新一行是怎样一个过程,以阐明要解决的问 …

    Read more

  • Wireshark抓包分析协议

    2018年01月05日 in PG 管理

    Wireshark是一个很有用的工具,特别适合用来分析网络协议。 这里简单介绍使用Wireshark抓包分析PostgreSQL协议的方法。 假设调试本地PostgreSQL实例:127.0.0.1:5432 快速开始 下载并安装Wireshark:下载地址 选择要抓包的网卡,如果是本地测试选择lo0即可。 添加抓包过滤器,如果PostgreSQL使用默认设置,使用port 5432即可。 开始抓包 添加显示过滤器pgsql,这样就可以滤除无关的TCP协议报文。 然后就可以执行一些操作,观察并分 …

    Read more

  • 第八章 缓冲区管理器

    2018年01月04日 in PG 内核

    缓冲区管理器(Buffer Manager)管理着共享内存和持久存储之间的数据传输,对于DBMS的性能有着重要的影响。PostgreSQL的缓冲区管理器十分高效。 本章介绍了PostgreSQL的缓冲区管理器。第一节概览了缓冲区管理器,后续的章节分别介绍以下内容: 缓冲区管理器的结构 缓冲区管理器的锁 缓冲区管理器是如何工作的 环形缓冲区 脏页刷写 图8.1 缓冲区管理器,存储和后端进程之间的关系 8.1 概览 本节介绍了一些关键概念,有助于理解后续章节。 8.1.1 …

    Read more

  • 第九章 预写式日志

    2018年01月03日 in PG 内核

    事务日志(transaction log)是数据库的关键组件,因为当出现系统故障时,任何数据库管理系统都不允许丢失数据。事务日志是数据库系统中所有**变更(change)与行为(action)**的历史记录,当诸如电源故障,或其他服务器错误导致服务器崩溃时,它被用于确保数据不会丢失。由于日志包含每个已执行事务的相关充分信息,因此当服务器崩溃时,数据库服务器应能通过重放事务日志中的变更与行为来恢复数据库集群。 在计算机科学领域,WAL是Write Ahead Logging的缩写,它指的是将变更与 …

    Read more

  • 第十章 基础备份与时间点恢复

    2018年01月02日 in PG 内核

    在线数据库备份大致可分为两类:逻辑备份和物理备份。它们有着各自的优点和缺点。尽管各有优劣,但逻辑备份有一个缺点:执行需要花费太多时间。特别是对于大型数据库而言,需要花费很长时间进行备份,而从备份数据中恢复数据库可能需要更长的时间。相反的是,物理备份可以在相对较短的时间内备份和恢复大型数据库,因此在实际系统中,它是一个非常重要而实用的功能。 在PostgreSQL中,自8.0版本开始提供在线的全量物理备份,整个数据库集簇(即物理备份数据)的运行时快照称为基础备份(base backup)。 …

    Read more

  • 第十一章 流复制

    2018年01月01日 in PG 内核

    PostgreSQL在9.1版本中实现了流复制。它属于所谓的一主多从类型的复制,而这两个术语 —— 主(master)和从(slave),在PostgreSQL中通常分别被称为主(primary)和备(standby)。 译注:存储数据库副本的每个节点称为副本(replica)。每一次对数据库的写入操作都需要传播到所有副本上,否则副本就会包含不一样的数据。最常见的解决方案被称为基于领导者的复制(leader-based replication),也称主动/被动(active/passive) …

    Read more

Posts in 2017
  • file_fdw妙用无穷——从数据库读取系统信息

    2017年12月01日 in PG 开发

    PostgreSQL是最先进的开源数据库,其中一个非常给力的特性就是FDW:外部数据包装器(Foreign Data Wrapper)。通过FDW,用户可以用统一的方式从Pg中访问各类外部数据源。file_fdw就是其中随数据库附赠的两个fdw之一。随着pg10的更新,file_fdw也添加了一颗赛艇的功能:从程序输出读取。 小霸王妙用无穷,我们能通过file_fdw,轻松查看操作系统信息,拉取网络数据,把各种各样的数据源轻松喂进数据库里统一查看管理。 安装与配置 file_fdw是Pg自带的组 …

    Read more

  • 源码编译安装 PostGIS

    2017年09月07日 in PG 管理

    强烈建议使用使用 yum / apt 命令从 PostgreSQL 官方二进制仓库安装 PostGIS。 参考http://www.postgresonline.com/journal/archives/362-An-almost-idiots-guide-to-install-PostgreSQL-9.5,-PostGIS-2.2-and-pgRouting-2.1.0-with-Yum.html 1. 安装环境 CentOS 7 PostgreSQL10 PostGIS2.4 …

    Read more

  • Linux 常用统计 CLI 工具

    2017年09月07日 in PG 管理

    top free vmstat iostat top 显示Linux任务 摘要 按下空格或回车强制刷新 使用h打开帮助 使用l,t,m收起摘要部分。 使用d修改刷新周期 使用z开启颜色高亮 使用u列出指定用户的进程 使用<>来改变排序列 使用P按CPU使用率排序 使用M按驻留内存大小排序 使用T按累计时间排序 批处理模式 -b参数可以用于批处理模式,配合-n参数指定批次数目。同时-d参数可以指定批次的间隔时间 例如获取机器当前的负载使用情况,以0.1秒为间隔获取三次,获取最后一次 …

    Read more