Проверка активности базы данных в Greenplum
- Проверка наличия активных сеансов (Workload)
- Проверка наличия блокировок (Contention)
- Проверка состояния запросов и использования системы
1. Проверка наличия активных сеансов (Workload)
Представление системного каталога pg_stat_activity показывает одну строку для каждого серверного процесса, отображая OID базы данных, имя базы данных, идентификатор процесса, OID пользователя, имя пользователя, текущий запрос, время начала выполнения текущего запроса, время начала процесса, а также адрес и номер порта клиента. Запрос к этому представлению может дать дополнительную информацию о текущей нагрузке на систему. Например:
SELECT * FROM pg_stat_activity;
Это представление следует запрашивать от имени суперпользователя базы данных, чтобы получить максимум информации. Также обратите внимание, что информация обновляется не мгновенно.
2. Проверка наличия блокировок (Contention)
Если транзакция удерживает блокировку на объекте, могут существовать и другие запросы, которые ждут освобождения этой блокировки. Пользователю может показаться, что его запрос завис. Представление системного каталога pg_locks позволяет просматривать информацию о невыполненных блокировках. Изучение pg_locks на предмет невыданных блокировок может помочь выявить соперничество между клиентскими сессиями базы данных. pg_locks предоставляет глобальное представление всех блокировок в системе базы данных, а не только тех, которые относятся к текущей базе данных. Хотя его столбец relation можно соединить с pg_class.oid, чтобы определить заблокированные отношения (например, таблицы), это будет корректно работать только для отношений в текущей базе данных. Столбец pid можно присоединить к pg_stat_activity.procpid, чтобы получить дополнительную информацию о сессии, удерживающей или ожидающей блокировку.
Например:
SELECT locktype, database, c.relname, l.relation, l.transactionid, l.transaction, l.pid, l.mode, l.granted, a.current_query FROM pg_locks l, pg_class c, pg_stat_activity a WHERE l.relation=c.oid AND l.pid=a.procpid ORDER BY c.relname;
Если для управления рабочей нагрузкой Вы используете очереди ресурсов, то запросы, ожидающие выполнения в очереди, также будут отображаться в pg_locks. Чтобы узнать, сколько запросов ожидает запуска из определенной очереди ресурсов, используйте представление системного каталога gp_resqueue_status.
Например:
SELECT * FROM gp_toolkit.gp_resqueue_status;
3. Проверка состояния запросов и использования системы
Утилиты системного мониторинга, такие как ps, top, iostat, vmstat, netstat и т. д., можно свободно использовать для мониторинга активности баз данных на хостах в массиве Greenplum. С помощью этих утилит можно определить процессы Greenplum (процессы postgres), запущенные в системе, и наиболее ресурсоемкие задачи в отношении процессора, памяти, дискового ввода-вывода или сетевой активности. Просмотр системной статистики может помочь выявить запросы, которые перегружают систему, потребляя чрезмерное количество ресурсов и тем самым снижая производительность базы данных. Greenplum поставляется вместе с инструментом управления под названием gpssh, который позволяет запускать команды мониторинга системы на нескольких хостах одновременно.
Командный центр Greenplum также собирает метрики запросов и использования системы.




