PostgreSQL性能分
析和诊断报告
李鹏
瀚高基础软件股份有限公司
PG官方的分析手段
• 使用Unix工具(ps,sar,iostat,iotop等)
• PG的统计收集器(pg_stat*等系统视图/表)
• 查看锁(pg_locks)
• 进程报告(pg_stat_get_progress_info,vacuum,9.6)
• Dtrace(SystemTap)
• 磁盘使用状况(pg_total_relation_size,pg_tablespace_size)
PG中统计相关的开关
•
•
•
•
•
•
语句执行时间
log_duration
log_lock_waits(deadlock_timeout)
log_statement
log_min_duration_statement
track_activities( track_counts, track_io_timing, track_functions )
log_checkpoints, log_connections, log_disconnections
记录SQL语句
锁等待超时
慢SQL
统计收集器选项
检查点,用户连接
现有分析手段的不足
• 缺少时间维度
• 缺少SQL执行时的统计信息
• 缺少等待事件
• 查找不便
• 影响性能
PG-PDR
Performance Diagnosis Report
轻量级
信息丰富
不依赖特
定内核
报表美
观易读
时间模
型统计
高性能
仅依赖一个插件,
无需web服务器
全方位收集信息,
涵盖多个维度
无需修改内核,无
需特定PG版本
HTML格式报表,
信息分类清晰
回溯任意时间段的
统计信息
内存IO代替磁盘
IO,对PG影响小
PG统计信息解读-两种统计信息
无法重置
可重置
PgStat工作原理
• 多个进程通过UDP向PgStat发
送信息。
• 接收到信息后,PgStat将其更
新到内存。并定时刷新到磁盘。
• PgStat收到INQUIRY请求时,
将当前的统计信息发送给请求者。
PgStat信息的获取
• 一个巨大的hash表存放所有数据。
• 每个数据库的节点又包含table信息的hash表。
• 通过pg_stat*视图访问。内容包括io信息,数据
分布信息,事务信息,后台活动状况,函数执行
信息等。
• 从内存中直接读取这部分信息。
164 x 500000 = 78.2 Mb
READ: 78.2 x 2 = 156.4 Mb/s
WRITE :78.2 x 2 = 156.4 Mb/s
I/O:312.8 Mb/s