pg icon indicating copy to clipboard operation
pg copied to clipboard

PostgreSQL notes

PG

Postgres is good —— Vonng

关于PostgreSQL应用开发监控管理内核架构文章笔记.

Github Repo | Github Pages | Pigsty | 官方站点 | 测试沙箱 | 关于作者


Post / 文章

PostgreSQL

  • PostgreSQL好处都有啥?
  • 为什么说PostgreSQL前途无量?
  • 开箱即用的PostgreSQL发行版 —— Pigsty
  • PostgreSQL开发规约

行业认知

  • 认识互联网
  • 互联网之殇
  • 是时候和GPL协议说再见了【译】
  • 大众传媒对政权组织方法与行为逻辑的影响

技术文章

  • 为什么要学数据库原理和设计?
  • 将PostgreSQL容器化是个好主意吗? | EN
  • 理解字符编码
  • 理解时间

概念辨析

  • 区块链与分布式数据库
  • 一致性:一个过载的术语
  • 架构演化:成熟度模型

Application / 应用开发

应用案例

功能实现

  • IP归属地查询的高效实现
  • PostgreSQL高级模糊查询
  • UUID:性质、原理、与应用
  • PostgreSQL CDC: 变更数据捕获
  • 使用审计触发器自动记录数据变更
  • 实现基于通知触发器的逻辑复制

SQL特性

  • 并发异常那些事
  • PostgreSQL中的锁
  • PostgreSQL中的触发器
  • PostgreSQL中的序列号
  • PostgreSQL中的LOCALE
  • PostgreSQL复制标识详解
  • PostgreSQL特色:Excluded约束
  • PostgreSQL特色:Distinct On语法
  • PostgreSQL函数易变性分类
  • PostgreSQL 12新特性:JSON Path
  • PostGIS:DE9IM 空间相交模型

语言驱动

  • Go & PG:数据库使用教程
  • PostgreSQL驱动横向评测:Go语言
  • PostgreSQL Golang驱动介绍:pgx
  • PostgreSQL Golang驱动介绍:go-pg
  • PostgreSQL Python驱动介绍:psycopg2
  • psycopg2的进阶包装,让Python访问Pg更敏捷。
  • PostgreSQL Node.JS驱动介绍:node-postgres

Administration / 监控管理

规约习惯

  • PostgreSQL开发规约
  • PostgreSQL集群扩缩容规约
  • 数据库集群管理概念与实体命名规范

日常操作

  • 修改PostgreSQL配置
  • PostgreSQL 权限管理

监控系统

  • Pigsty监控系统架构
  • Pigsty监控系统使用说明
  • PostgreSQL的KPI
  • 监控PG中表的大小
  • 监控WAL生成速率
  • 关系膨胀:监控与处理
  • PG中表占用磁盘空间
  • 使用pg_repack整理表与索引
  • 监控表:空间,膨胀,年龄,IO
  • 监控索引:空间,膨胀,重复,闲置
  • 确保表没有访问

升级迁移

  • PostgreSQL逻辑复制不停机迁移方案
  • PostgreSQL原地大版本升级流程
  • PostgreSQL 10.0 与先前版本的不兼容性统计
  • 垂直拆分,分库分表:指导原则
  • 水平拆分与分片:减数分裂方法
  • 业务层逻辑复制实现不停机切换(Before 10)

备份恢复

  • PostgreSQL备份与恢复概览
  • PostgreSQL复制延迟问题
  • Postgres逻辑复制详解
  • 日志传输副本:WAL段复制
  • 备份:机制、流程、问题、方法
  • 复制拓扑设计:同步、异步、法定人数
  • 逻辑备份:pg_dump
  • PITR生产实践

运维调优

  • PostgreSQL内存相关参数调谐
  • PostgreSQL检查点相关参数调谐
  • PostgreSQL自动清理相关参数调谐
  • 操作系统内核参数调优
  • 维护表:VACUUM配置、问题、原理与实践。
  • 重建索引:细节与注意事项
  • ErrorTracking系统设计概览

故障档案

  • 故障档案:移走负载导致的性能恶化故障
  • pg_dump导致的血案
  • PostgreSQL数据页损坏修复
  • 故障档案:事务ID回卷故障
  • 故障档案:pg_repack导致的故障
  • 故障档案:从删库到跑路
  • Template0的清理与修复
  • 内存错误导致操作系统丢弃页面缓存
  • 查询参数溢出BIGINT范围导致的雪崩
  • 磁盘写满故障
  • 救火:杀查询的正确姿势
  • 存疑事务:提交日志损坏问题分析与修复
  • 客户端大量无超时查询堆积导致故障
  • 慢查询堆积导致的雪崩,定位与排查
  • 硬件故障导致的机器重启
  • Docker同一数据目录启动两个实例导致数据损坏
  • 级联复制的配置问题
  • NOFILE配置导致文件描述符不够用
  • NTP时间漂移导致的故障

Architecture / 内核架构

源码细节

  • PostgresSQL变更数据捕获
  • PostgreSQL前后端协议概述
  • PostgreSQL的逻辑结构与物理结构
  • PostgreSQL的事务隔离等级
  • 并发创建索引的实现方式(CREATE INDEX CONCURRENTLY)
  • GIN索引的实现原理
  • B树索引的原理与实现细节
  • 查询处理原理
  • JOIN类型及其内部实现
  • VACUUM原理
  • WAL:PostgreSQL WAL与检查点
  • 流复制原理与实现细节
  • 二阶段提交:原理与实践
  • R树原理与实现细节
  • PostgreSQL数据页结构
  • FDW的结构与编写
  • SSD Internal
  • GIN索引关键词匹配的时间复杂度为什么是O(n2)

FDW

  • FileFDW妙用无穷——从数据库读取系统信息
  • RedisFDW Installation
  • MongoFDW Installation
  • MongoFDW安装

Gist / 笔记

用于解决某些特定问题的代码速查片段,临时笔记

PGSQL工具

  • [psql命令速查]
  • [pg_dump命令速查]
  • [pg_basebackup命令速查]
  • psqlrc 配置基础
  • 性能压测:pgbench
  • 性能压测:sysbench
  • 组合使用psql与bash
  • pgbouncer安装
  • pgbouncer配置文件
  • pgbouncer使用方法
  • PgAdmin安装

操作系统工具

  • 查看系统任务 —— top
  • 查看内存使用 —— free
  • 查看虚拟内存使用 —— vmstat
  • 查看IO —— iostat
  • 测试磁盘性能 —— fio
  • 批量配置SSH免密登录
  • 查看硬盘信息 —— smartctl
  • 查看网卡信息 —— ethtool
  • 查看NUMA信息 —— numactl
  • 查看时间信息 —— timedatectl
  • 调整优化方案 —— tuned-adm

临时笔记

  • 逻辑复制常用命令速查
  • 使用Githook实现远程网站部署
  • 自动申请Let's Encrypt SSL证书
  • 找出并清除表中重复的记录
  • 为分区表添加索引
  • 利用统计信息分批实现大表全表更新
  • 如何在LB后面获取客户端真实IP
  • PostgreSQL 14 Release Note

工具组件

  • 使用Wireshark抓包分析PostgreSQL协议

Reference / 参考