PolarDB dbatools 监控工具详解
PolarDB 源码中提供了一个监控工具: src/bin/polar_tools/dbatools.sql
, 下面详细介绍其中的SQL用法.
基础架构
该文件首先创建了一个工具管理框架 :
polar_tools_info
表存储工具的元信息(名称、示例、说明、分类)polar_load_tool_comment
过程用于注册工具信息polar_tools
视图展示所有已注册的工具
帮助命令
1. list_command
列出所有可用命令 :
execute list_command(0); -- 不显示 SQL 语句
execute list_command(1); -- 显示完整 SQL 语句
2. command_stats
显示各类别命令的统计信息 :
execute command_stats;
3. list_command_by_category
按类别列出命令 :
execute list_command_by_category('Monitor');
WAL 监控
4. wal_size_check
检查 WAL 大小的原因 :
检查 wal_keep_segments
配置的影响识别不活跃或延迟过大的复制槽 提供具体的处理建议
连接监控
5. active_session_by_waitevent
按等待事件统计活跃会话 :
execute active_session_by_waitevent;
显示各种等待事件的分布,帮助识别性能瓶颈。
6. connections_by_clients
按客户端 IP 统计连接数 :
execute connections_by_clients;
帮助识别连接来源和潜在的连接泄露。
锁监控
7. query_locking
详细的锁冲突分析 :
识别等待锁的进程(t_wait) 识别持有锁的进程(t_run) 找出存在冲突的锁对(t_overlap) 按锁模式优先级排序显示冲突详情
长查询监控
8. top_n_long_queries
运行时间最长的查询 :
execute top_n_long_queries(10);
显示当前正在执行的长时间运行的查询。
9. top_n_long_txn
运行时间最长的事务 :
execute top_n_long_txn(10);
与长查询类似,但按事务开始时间排序。
10. top_n_long_queries_in_hist
历史平均执行时间最长的查询 :
execute top_n_long_queries_in_hist(10);
基于 pg_stat_statements
的历史统计数据。
恢复信息
11. query_recovery_info
检查点和恢复 LSN 信息 :
WP (Write Position): 当前 WAL 插入位置 AP (Apply Position): 最旧的应用位置 CP (Consistent Position): 一致性位置 REDO: 检查点 REDO 位置 计算各位置间的延迟量
VACUUM 监控
12. top_n_dead_tuple_ratio_tables
死元组比例最高的表 :
execute top_n_dead_tuple_ratio_tables(10);
识别需要执行 VACUUM 的表,包含:
表大小 死元组/活元组比例 最后 VACUUM 时间
使用建议
定期执行:建议定期运行这些监控命令,建立性能基线 告警设置:对关键指标(如锁等待、长事务、死元组比例)设置告警阈值 历史记录:将监控结果保存到历史表,便于趋势分析 自动化:可以将这些命令集成到监控系统中自动执行
Notes
所有命令都使用 PREPARE
预编译,提高执行效率工具信息存储在 polar_tools_info
表中,便于管理和查询部分命令需要 pg_stat_statements
扩展支持锁监控查询较为复杂,提供了详细的锁冲突分析视图
文章转载自PolarDB,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




