PostgreSQL活动会话历史记录-新的pgsentinel扩展

Pgsentinel发布了同名的pgsentinel扩展名( github仓库 ),该扩展将pg_active_session_history视图添加到PostgreSQL,即活动会话的历史记录(类似于Oracle v $ active_session_history)。

实际上,这些只是来自pg_stat_activity的每秒钟快照,但有一些要点:

  1. 所有累积的信息仅存储在RAM中,消耗的内存量由最后存储的记录数决定。
  2. 添加了queryid字段-与pg_stat_statements扩展名相同的queryid(需要初步安装)。
  3. 添加了top_level_query字段-从中调用当前查询的查询文本(如果使用pl / pgsql)

pg_active_session_history字段的完整列表:
      专栏 类型------------------ + -------------------------- ash_time | 带时区的时间戳记|  oid datname | 文字pid | 整数usesysid |  oid用户名| 文字application_name | 文字client_addr | 文字client_hostname | 文字client_port | 整数backend_start | 带时区的时间戳xact_start | 带时区的时间戳记query_start | 带时区的时间戳记state_change | 带时区的时间戳记wait_event_type | 文字wait_event | 文字状态| 文字backend_xid |  xid backend_xmin |  xid top_level_query | 文字查询| 文字queryid |  bigint backend_type | 文字 


尚无用于安装的现成软件包。 建议下载源代码并自己构建库。 首先,您需要为服务器安装“ 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程序执行此操作(可以在“ 发行”部分中下载收集的二进制文件)。

在启动时,PASH-Viewer(从版本0.4.0开始)检查pg_active_session_history视图是否存在,如果存在,则从其中加载整个累积的历史记录,并继续读取新的传入数据,每15秒更新一次计划。

图片

Source: https://habr.com/ru/post/zh-CN416909/


All Articles