公司
本质上,这些只是 pg_stat_activity 的逐秒快照,但有以下要点:
- 所有累积的信息仅存储在RAM中,并且消耗的内存量由最后存储的记录的数量来调节。
- 添加了 queryid 字段 - 与 pg_stat_statements 扩展相同的 queryid(需要预安装)。
- 添加 top_level_query 字段 - 调用当前查询的查询文本(如果使用 pl/pgsql)
pg_active_session_history 字段的完整列表:
专栏 | 类型 ------------------+------------------------ ash_time | 带有时区的时间戳 datid | oid 日期名称 | 文本 pid | 整数 usesysid | oid 用户名 | 文本应用程序名称| 文本 client_addr | 文本 client_hostname | 文本客户端端口| 整数 backend_start | 带有时区的时间戳 xact_start | 带有时区的时间戳带有时区的时间戳 state_change | 带有时区的时间戳文本等待事件| 文本状态 | 文本 backend_xid | xid backend_xmin | xid 顶级查询 | 文字查询| 文本查询ID | bigint 后端_类型 | 文本
目前还没有现成的安装包。 建议下载源代码并自行组装库。 您首先需要为您的服务器安装“devel”包,并在 PATH 变量中设置 pg_config 的路径。 我们收集:
cd pgsentinel/src
使
使安装
在postgres.conf中添加参数:
Shared_preload_libraries = 'pg_stat_statements,pgsentinel'
track_activity_query_size = 2048
pg_stat_statements.track = 全部# 内存中保存的最近记录数
pgsentinel_ash.max_entries = 10000
重新启动 PostgreSQL 并创建扩展:
创建扩展 pgsentinel;
积累的信息使我们能够回答以下问题:
- 您在哪些等待时段花费最多时间?
- 哪些会议最活跃?
- 哪些请求最活跃?
当然,您可以使用 SQL 查询获得这些问题的答案,但通过使用鼠标突出显示感兴趣的时间间隔,可以更方便地在图表上直观地看到这一点。 您可以使用免费程序来做到这一点
启动时,PASH-Viewer(从版本 0.4.0 开始)检查 pg_active_session_history 视图是否存在,如果存在,它将从中加载整个累积历史记录并继续读取新的传入数据,每 15 秒更新一次图表。
来源: habr.com