0

我正在尝试使用修改后的 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)

4

1 回答 1

0

这是我从 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 功能,并且是集群感知的(显示整个集群的实际资源消耗,以及几个特定于集群的指标)。

于 2020-05-03T17:11:05.077 回答