PostgreSQL 内核源码分析
文章平均质量分 88
PG 内核代码分析
总想玩世不恭
这个作者很懒,什么都没留下…
展开
-
PostgreSQL计算 queryid 原理
这个 sql 中,如果将 id语义分析->生成计划->执行计划 等阶段,而 queryid 的计算就是在语义分析阶段的。上述过程完成后,就得到了一个完整的 jumble 字符串。原创 2024-06-20 11:34:18 · 919 阅读 · 0 评论 -
PostgreSQL restartpoint 原理详解
在了解 restartpoint 前,首先需要知道 checkpoint,可以参考这篇博文简单的介绍如下所示checkpoint: 主库用的,用来定期刷脏及其他一些功能,crash 后实例自动去找最新的一个 checkpoint ,从其中记录的 redo point 的 WAL 日志位点开始向后进行 redo;原创 2024-03-04 20:06:21 · 685 阅读 · 0 评论 -
PostgreSQL Log 日志模块详解
本文讲的是操作日志,非 WAL 日志。原创 2023-06-28 16:50:14 · 4204 阅读 · 5 评论 -
PG15 pg_basebackup 代码解析
PG 15 针对 pg_basebackup 这部分的重构,较好的完成了模块间的解耦。如果需要针对数据流做额外的修改操作,只需要按照其设计模式新增一个过滤器即可。例如不想直接写 tar 文件,想使用 gzip 额外进行压缩,只需要将最后的换成即可。开发者在熟悉了这一架构后,可以非常快的进行开发。原创 2023-01-30 19:04:15 · 747 阅读 · 0 评论 -
postgresql stop 模式分析及 kill -9 对比
在目前的场景下, stop -m immediate 和 kill -9 阻塞的进程都可以成功。原创 2022-12-26 19:54:48 · 1517 阅读 · 0 评论 -
PostgreSQL 同步复制原理解析
Postgresql 在主备架构的场景下,支持同步流复制功能。本文将以一主一备架构为例,介绍同步流复制(同步备机)的工作方式以及内核代码的相关原理。原创 2022-11-27 13:26:28 · 1056 阅读 · 0 评论 -
PostgreSQL 并行框架分析
PG 内核提供了并行框架,目前其主要是为并行查询服务的。本文将介绍并行框架的使用方式,并分析其设计原理。概览并行框架原创 2022-04-17 22:46:52 · 1150 阅读 · 0 评论 -
PostgreSQL 中 SELECT 的元组是如何出现的
当我们运行一句最简单的 SQL :SELECT * FROM t; 时,查询结束后会将元组一下子打印到屏幕上。那么就会有一个问题,当元组数量非常多的时候,为什么 SELECT 语句卡一会后,会一下子打印出来?背景介绍从我们日常观察中不难发现,当元组较多时,会如下图所示。一个屏幕装不下,按回车后才能继续浏览下面的元组。底下通过源码分析和 gdb 调试,一步步探索实际情况下,元组是如何被 SELECT 出来的。psql 的建立先来介绍下 psql 大致的工作原理,其主要如下图所示。当 PG 启原创 2021-08-26 12:06:59 · 516 阅读 · 1 评论 -
探索 PostgreSql 中的 checkpoint 机制
checkpoint 是 PostgreSql 中一个非常重要的概念,本文将详细的介绍什么是 checkpoint,为什么要有 checkpoint,以及 checkpoint 的运作原理。什么是 checkpoint大家在玩游戏的时候经常会需要存档,而这个存档点就是由 checkpoint 单词翻译而来的。在Postgresql 官方文档中,checkpoint 的定义如下:A checkpoint is a point in the write-ahead log sequence at wh原创 2021-03-19 19:11:02 · 1680 阅读 · 0 评论 -
PostgreSQL TopN 插件优势分析
topn 插件地址:https://github.com/citusdata/postgresql-topntopn 插件可以在秒级内求出出现频率前 n 高的元组。背景问题假如有如下一张表,我们的目标是求出以下人名中,出现频率前 n 高的人名。举个例子,n = 2 的情况下,出现频率前 2 高的是 Emily 和 Alex。NAMEBobEmilyAlexEmilyEmilyBobAndyAlexEmilyAlexSQL原创 2021-12-30 20:59:13 · 751 阅读 · 0 评论 -
PostgreSQL 内核源码分析——lazy Vacuum
本文将概要性的讲解 PostgreSQL 中 lazy vacuum 的流程和原理,代码将以 PG 10.17 版本为例。背景知识死元组和表空间膨胀在 PG 中,update/delete 语句的实现通过 MVCC 机制的多版本链实现。对于一条已经被更新/删除的元组来说,当这条元组对所有事物都不可见后,它的存在就没有意义了,理应被删除,对于这种元组,我们称之为“死元组”。当一张表有大量更新/删除时,如果不做清理的话,表里面就会积攒很多这样的“死元组”,占用大量的空间,造成表空间膨胀。事物号回卷PG原创 2022-02-03 18:58:12 · 1307 阅读 · 0 评论