Поделиться через


Мониторинг с помощью pg_stat_statements

Это важно

Автомасштабирование Lakebase находится в бета-версии в следующих регионах: eastus2, westeurope, westus.

Автомасштабирование Lakebase — это последняя версия Lakebase с автомасштабированием вычислений, масштабированием до нуля, ветвлением и мгновенным восстановлением. Сравнение функций с Lakebase Provisioned см. в разделе выбора между версиями.

pg_stat_statements — это расширение Postgres, которое предоставляет подробное статистическое представление о выполнении инструкций SQL в базе данных Lakebase Postgres. Он отслеживает такие сведения, как количество выполнения, общее и среднее время выполнения, а также многое другое, помогая анализировать и оптимизировать производительность SQL-запросов.

Когда следует использовать pg_stat_statements

Используйте pg_stat_statements когда требуется:

  • Подробная статистика выполнения запросов и метрики производительности
  • Идентификация медленных или часто выполняемых запросов
  • Анализ производительности запросов и аналитика оптимизации
  • Анализ рабочей нагрузки базы данных и планирование емкости
  • Интеграция с пользовательскими средствами мониторинга и панелями мониторинга

Включение pg_stat_statements

Расширение pg_stat_statements доступно в Lakebase Postgres. Для его включения выполните следующие действия.

  1. Подключитесь к базе данных с помощью редактора SQL или клиента Postgres.

  2. Выполните следующую команду SQL, чтобы создать расширение:

    CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
    
  3. Расширение начинает сбор статистики сразу после создания.

Сохраняемость данных

Статистика, собираемая pg_stat_statements расширением, хранится в памяти и не сохраняется при приостановке или перезапуске вычислений Lakebase. Например, если ваши вычисления уменьшаются в масштабе из-за отсутствия активности, все существующие статистические данные теряются. После перезапуска вычислительных ресурсов собираются новые статистические данные.

Это означает, что:

  • Сброс статистики после перезапуска вычислений или приостановки
  • Для длительного анализа производительности требуется согласованная доступность вычислений
  • Вам может потребоваться экспортировать важную статистику перед запланированным обслуживанием или перезапуском

Замечание

Рекомендуется регулярно выполнять запросы мониторинга и хранить результаты внешне, если вам нужны данные о производительности на протяжении событий жизненного цикла вычислительного процесса.

Дополнительные сведения: расширения Postgres

Статистика выполнения запросов

После включения расширения можно запросить статистику выполнения с помощью pg_stat_statements представления. Это представление содержит одну строку для отдельного запроса базы данных, показывающую различные статистические данные:

SELECT * FROM pg_stat_statements LIMIT 10;

Представление содержит такие сведения, как:

идентификатор пользователя dbid queryid query вызывает
16391 16384 -9047282044438606287 SELECT * FROM users; 10

Полный список столбцов и описаний см. в документации по PostgreSQL.

Запросы на мониторинг ключей

Используйте эти запросы для анализа производительности базы данных:

Поиск самых медленных запросов

Этот запрос определяет запросы с наибольшим средним временем выполнения, что может указывать на неэффективные запросы, требующие оптимизации:

SELECT
    query,
    calls,
    total_exec_time,
    mean_exec_time,
    (total_exec_time / calls) AS avg_time_ms
FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 20;

Поиск наиболее часто выполняемых запросов

Наиболее часто выполняемые запросы часто являются критически важными путями и кандидатами оптимизации. Этот запрос включает показатели попадания в кэш для выявления запросов, которые могут воспользоваться более эффективным индексированием.

SELECT
    query,
    calls,
    total_exec_time,
    rows,
    100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
FROM pg_stat_statements
ORDER BY calls DESC
LIMIT 20;

Поиск запросов с наибольшим числом операций ввода-вывода

Этот запрос определяет запросы, выполняющие большинство операций ввода-вывода диска, которые могут повлиять на общую производительность базы данных:

SELECT
    query,
    calls,
    shared_blks_read + shared_blks_written AS total_io,
    shared_blks_read,
    shared_blks_written
FROM pg_stat_statements
ORDER BY (shared_blks_read + shared_blks_written) DESC
LIMIT 20;

Поиск наиболее трудоемких запросов

Этот запрос определяет запросы, которые используют наибольшее общее время выполнения во всех запусках:

SELECT
    query,
    calls,
    total_exec_time,
    mean_exec_time,
    rows
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

Поиск запросов, возвращающих много строк

Этот запрос определяет запросы, возвращающие большие результирующие наборы, которые могут воспользоваться разбивкой на страницы или фильтрацией:

SELECT
    query,
    calls,
    rows,
    (rows / calls) AS avg_rows_per_call
FROM pg_stat_statements
ORDER BY rows DESC
LIMIT 10;

Сброс статистики

Чтобы сбросить статистику, собранную с помощью pg_stat_statements:

Замечание

Только databricks_superuser роли имеют привилегии, необходимые для выполнения этой функции. Роли по умолчанию, созданные с проектом Lakebase, и роли, созданные в приложении Lakebase, получают членство в роли databricks_superuser.

SELECT pg_stat_statements_reset();

Эта функция очищает все накопленные статистические данные, такие как время выполнения и подсчеты для инструкций SQL, и начинает собирать свежие данные. Это особенно полезно, когда вы хотите начать с сбора статистики производительности.

Ресурсы

Дополнительные сведения: документация по PostgreSQL