Как использовать расширение pg_stat_statements в версии с открытым исходным кодом greenplum? - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь использовать модифицированную версию с открытым исходным кодом 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. Если да, как я могу использовать его для отслеживания всех sql запросов в greeplum? Спасибо.

Ниже приведен пример не записи моего запроса на выборку.

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)

1 Ответ

0 голосов
/ 03 мая 2020

Вот что я получаю от @ leskin-in в greenplum slack:

Полагаю, в настоящее время это невозможно. Когда Greenplum выполняет «нормальные» запросы, каждый из сегментов Greenplum действует как независимый экземпляр PostgreSQL, который выполняет план, созданный мастером GPDB. pg_stat_statements отслеживает использование ресурсов для одного PostgreSQL экземпляра; в результате в GPDB он может отслеживать потребление ресурсов для каждого сегмента независимо. Есть несколько осложнений, с которыми PostgreSQL pg_stat_statements не справляется. Примером является то, что GPDB использует срезы. В сегментах GPDB это независимые части деревьев планов и выполняются как независимые запросы. Я полагаю, что при выполнении запроса к pg_stat_statemens на ведущем устройстве GPDB в текущей версии полученные результаты предназначены только для главного устройства. Поскольку «нормальные» запросы выполняются в основном сегментами, результаты не соответствуют фактическому потреблению ресурсов запросом. В Greenplum 5 & 6 с открытым исходным кодом есть утилита gpperfmon, специфицированная Greenplum c. Он предоставляет некоторые функции pg_stat_statements и поддерживает кластер (показывает фактическое потребление ресурсов для кластера в целом, а также несколько метрик c, специфичных для кластера).

...