PostgreSQL修炼之道(唐成)

书: https://pan.baidu.com/s/1o53U8DJYBlzPKes4X47C8Q?pwd=ymj8
笔记如下:

  1. “PostgreSQL的核心优势在于可扩展性,支持自定义数据类型、函数、索引甚至编程语言(如PL/pgSQL)。”
  2. “MVCC(多版本并发控制)通过事务ID(xmin/xmax)实现读写不阻塞,避免锁竞争。”
  3. “表空间(Tablespace)将数据分布到不同磁盘,优化I/O性能,如CREATE TABLESPACE fast LOCATION '/ssd'。”
  4. “执行计划分析:EXPLAIN (ANALYZE, BUFFERS)显示实际耗时和缓存命中率,Seq Scan全表扫描需警惕。”
  5. “索引选择:B-tree适合等值查询,GIN加速数组/JSON检索,BRIN对有序大表高效。”
  6. “分区表(Partitioning)通过继承表或声明式分区(PARTITION BY RANGE/LIST)实现亿级数据管理。”
  7. “连接池工具(如PgBouncer)减少连接开销,max_connections需根据内存调整(默认100偏小)。”
  8. “WAL(预写日志)是崩溃恢复的核心,archive_mode开启归档可实现PITR(时间点恢复)。”
  9. “并行查询通过max_parallel_workers_per_gather控制,适合大表扫描和聚合操作。”
  10. “JSONB类型支持GIN索引,@>操作符实现高效JSON路径查询,替代NoSQL场景。”
  11. VACUUM (VERBOSE, ANALYZE)清理死元组并更新统计信息,autovacuum需根据负载调优。”
  12. “复制方案:流复制(Streaming Replication)保证高可用,逻辑复制(Logical Replication)支持跨版本迁移。”
  13. pg_stat_statements模块统计SQL执行耗时,定位TOP慢查询。”
  14. “扩展生态:PostGIS处理地理数据,TimescaleDB实现时序优化,Citus支持分布式。”
  15. pg_dump --jobs=4并行备份,pg_restore --single-transaction原子性恢复。”
  16. “锁监控:pg_locks视图查看阻塞会话,pg_blocking_pids()快速定位锁源头。”
  17. “参数调优:shared_buffers设为内存25%,work_mem避免复杂排序溢出到磁盘。”
  18. EXPLAINCTE(WITH子句)可能物化结果,大数据集改用子查询。”
  19. pg_prewarm预热缓存,pg_stat_activity监控实时会话,pg_cancel_backend()终止查询。”
  20. “修炼心法:先理解执行计划,再动手优化;基准测试(pgbench)比猜测更可靠。”

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注