CentOS 7 源码编译安装高版本gcc
在编译MySQL 8.0 时,提示GCC版本过低(4.8.5),需要升级GCC到5.3及以上版本,按照网上教程,源码编译GCC 9.2.0版本,虽然遇到一点问题,不过总算顺利通过,记录一下GCC源码编译过程。环境:操作系统:CentOS 7...继续阅读
在编译MySQL 8.0 时,提示GCC版本过低(4.8.5),需要升级GCC到5.3及以上版本,按照网上教程,源码编译GCC 9.2.0版本,虽然遇到一点问题,不过总算顺利通过,记录一下GCC源码编译过程。环境:操作系统:CentOS 7...继续阅读
PostgreSQL 在很多场景下会启用并行执行计划,创建多个并行工作子进程,提升查询效率。一个常用的并行表扫描的例子:从下面的执行计划可以看出,Parallel Seq Scan 并行表扫描,并发工作进程数为 2,最上层的执行计划节点名称...继续阅读
1. shm_toc 描述shm_toc 是共享内存段表内容管理(shared memory segment table of contents),通俗点说,就是对一块内存区域的管理,能够像表格一样,按照 key-value 的形式管理内存...继续阅读
1. pg_rewind 功能描述pg_rewind 是 PostgreSQL 提供的一个工具,在主库故障切换后,用于修复旧主的流复制。PG 主备切换后,流复制的时间线会发生变化,在异步复制场景下,旧主产生的 WAL 日志可能有部分未同步到...继续阅读
关于 Linux 系统编程 IO 多路复用相关的笔记总结及示例代码。常用的 3 种 IO 复用模型:select,时间复杂度 O(n)poll,时间复杂度 O(n)epoll,时间复杂度 O(1)1. IO 复用模型对比select它仅仅知...继续阅读
对于 PG 的 full page write 和 MySQL 的 double write 机制一直有些困惑,如果没有这些机制,是不是在页断裂的情况下数据一定就有问题?如果应用 redo log 或者 wal 是幂等设计的,在刷脏页的过程...继续阅读
1. PostgreSQL HOT 技术PG 对一条数据进行更新时,并不直接在原数据上直接更新,而是采用创建一条新记录的方式间接进行更新。由于数据的行号(ctid) 发生了变化,如果字段上有索引,这种更新机制就必须要对索引也同步进行更新。在...继续阅读
1. 为什么需要 toast 技术PostgreSQL 表数据的存储以页作为基本单位,默认情况下,一个页面 8kb 大小,pg 不允许一条记录跨多个页面,那么当一条记录的大小超过 8kb 时怎么处理?这就需要引入 toast 技术,英文全称...继续阅读
源码版本:PostgreSQL 13.31. checkpoint 触发条件参数 checkpoint_timeout 控制,默认 5 分钟,范围 30s ~ 1 daywal 日志间隔,当最新的 wal 日志与上次 checkpoint ...继续阅读
MemoryContext 是 PG 内存上下文管理模块,内核代码可以在指定的 MemoryContext 上动态分配内存,扩容内存以及释放内存,使用 MemoryContext 便于内存管理,内存使用统计以及防止内存泄露。PG 内核代码中...继续阅读