greenplum - 如何在 greenplum 开源版本中使用 pg_stat_statements 扩展?
问题描述
我正在尝试使用修改后的 greenplum 开源版本进行开发。greenplum 版本是 Greenplum Database 6.0.0-beta.1 build dev(基于 PostgreSQL 9.4.24)。
我想将 pg_stat_statements 扩展添加到我的数据库中,并且我确实设法按照https://www.postgresql.org/docs/9.5/pgstatstatements.html将它安装在数据库上。但是,此扩展程序无法按预期工作。它只记录不可计划的查询和实用程序查询。对于修改我的表的所有可计划查询,没有一条记录。
我的问题是,pg_stat_statements 是否与 greenplum 兼容?由于我没有使用官方版本,我想确保原始版本可以与 pg_stat_statements 一起使用。如果是这样,我如何使用它来跟踪 greeplum 中的所有 sql 查询?谢谢。
以下是不记录我的选择查询的示例。
postgres=# select pg_stat_statements_reset();
pg_stat_statements_reset
--------------------------
(1 row)
postgres=# select query from pg_stat_statements;
query
------------------------------------
select pg_stat_statements_reset();
(1 row)
postgres=# select * from test;
id | num
----+-----
1 | 2
3 | 4
(2 rows)
postgres=# select query from pg_stat_statements;
query
------------------------------------
select pg_stat_statements_reset();
(1 row)
解决方案
这是我从 greenplum slack 中的@leskin-in 得到的:
我想这目前是不可能的。当 Greenplum 执行“正常”查询时,每个 Greenplum 段都充当独立的 PostgreSQL 实例,执行由 GPDB 主节点创建的计划。pg_stat_statements 跟踪单个 PostgreSQL 实例的资源使用情况;因此,在 GPDB 中,它能够独立跟踪每个段的资源消耗。PostgreSQL有几个并发症
pg_stat_statements
不处理。一个例子是 GPDB 使用切片。在 GPDB 段上,这些是计划树的独立部分,并作为独立查询执行。我想当在当前版本的 GPDB master 上查询 pg_stat_statemens 时,检索到的结果仅适用于 master。由于“正常”查询大部分是按段执行的,结果与查询的实际资源消耗不一致。在开源 Greenplum 5 和 6 中,有一个 Greenplum 特定的实用程序 gpperfmon。它提供了一些 pg_stat_statements 功能,并且是集群感知的(显示整个集群的实际资源消耗,以及几个特定于集群的指标)。
推荐阅读
- java - 需要关于 logging.level.org.hibernate.SQL 的解释
- java - Java:如何调用在接口中实现另一个方法的方法?
- javascript - 如何使用 useState 挂钩更新状态
- reactjs - React MUI 数据表日期范围过滤器
- python - 从 sklearn.model_selection 导入 train_test_split 时,为什么会出现错误“AttributeError:模块 'attr' 没有属性 's'”?
- angular - 如何动态创建多个行为主体并订阅?
- python - 如何从 txt 文件中的字符串填写表格 - python mechanize
- java - 如果字符串包含列表中的任何项目,JAVA 返回最长值
- javascript - 将带有文本的元素添加到 DOM 树时遇到问题
- jquery - 将 jquery 中的字符串传递给 asp.net mvc ActionResult