PostgreSQL 在很多场景下会启用并行执行计划,创建多个并行工作子进程,提升查询效率。一个常用的并行表扫描的例子:从下面的执行计划可以看出,Parallel Seq Scan 并行表扫描,并发工作进程数为 2,最上层的执行计划节点名称...
- 2022-03-18 15:46:26
- 浏览(1217)
- 分类:PostgreSQL源码分析
1. shm_toc 描述shm_toc 是共享内存段表内容管理(shared memory segment table of contents),通俗点说,就是对一块内存区域的管理,能够像表格一样,按照 key-value 的形式管理内存...
- 2022-03-09 19:05:24
- 浏览(452)
- 分类:PostgreSQL源码分析
1. pg_rewind 功能描述pg_rewind 是 PostgreSQL 提供的一个工具,在主库故障切换后,用于修复旧主的流复制。PG 主备切换后,流复制的时间线会发生变化,在异步复制场景下,旧主产生的 WAL 日志可能有部分未同步到...
- 2021-11-23 10:16:09
- 浏览(519)
- 分类:PostgreSQL源码分析
对于 PG 的 full page write 和 MySQL 的 double write 机制一直有些困惑,如果没有这些机制,是不是在页断裂的情况下数据一定就有问题?如果应用 redo log 或者 wal 是幂等设计的,在刷脏页的过程...
- 2021-10-28 19:24:08
- 浏览(545)
- 分类:PostgreSQL源码分析
1. PostgreSQL HOT 技术PG 对一条数据进行更新时,并不直接在原数据上直接更新,而是采用创建一条新记录的方式间接进行更新。由于数据的行号(ctid) 发生了变化,如果字段上有索引,这种更新机制就必须要对索引也同步进行更新。在...
- 2021-10-11 14:36:41
- 浏览(746)
- 分类:PostgreSQL源码分析
1. 为什么需要 toast 技术PostgreSQL 表数据的存储以页作为基本单位,默认情况下,一个页面 8kb 大小,pg 不允许一条记录跨多个页面,那么当一条记录的大小超过 8kb 时怎么处理?这就需要引入 toast 技术,英文全称...
- 2021-09-18 14:14:12
- 浏览(671)
- 分类:PostgreSQL源码分析
源码版本:PostgreSQL 13.31. checkpoint 触发条件参数 checkpoint_timeout 控制,默认 5 分钟,范围 30s ~ 1 daywal 日志间隔,当最新的 wal 日志与上次 checkpoint ...
- 2021-08-31 10:25:47
- 浏览(576)
- 分类:PostgreSQL源码分析
MemoryContext 是 PG 内存上下文管理模块,内核代码可以在指定的 MemoryContext 上动态分配内存,扩容内存以及释放内存,使用 MemoryContext 便于内存管理,内存使用统计以及防止内存泄露。PG 内核代码中...
- 2021-07-16 14:37:10
- 浏览(828)
- 分类:PostgreSQL源码分析
1. Background Worker 简介PostgreSQL 提供了一种叫作后台工作进程(Background Worker)的特性,用来在独立的进程中执行用户提供的代码,入口函数可以是 pg 内核源码中的函数,也可以是动态库中的函数...
- 2021-06-02 16:30:43
- 浏览(786)
- 分类:PostgreSQL源码分析
PostgreSQL 支持 create extenstion 语法创建扩展,扩展能够很方便地将第三方开发的插件集成到 PostgreSQL 数据库中,比如时序数据库 timescaledb 就是作为 PG 的一个扩展集成到数据库系统中,让...
- 2021-05-28 14:03:38
- 浏览(600)
- 分类:PostgreSQL源码分析