Открыть сервис

Performance Insights

Performance Insights — это сервис облачной платформы Amazon Web Services (AWS), предназначенный для диагностики производительности реляционных баз данных и анализа нагрузки на них. Сервис предоставляет визуализацию рабочих нагрузок базы данных в реальном времени и за заданные промежутки времени, позволяя выявлять узкие места, аномалии и оптимизировать запросы. Performance Insights интегрирован с сервисами управления базами данных AWS, такими как Amazon RDS (Relational Database Service), Amazon Aurora и Amazon DocumentDB.

История и развитие

Сервис Performance Insights был анонсирован компанией Amazon Web Services в 2016 году на ежегодной конференции re:Invent. Первоначально он был доступен только для Amazon RDS для PostgreSQL и MySQL. Целью создания сервиса было упрощение процесса настройки производительности баз данных, который традиционно требовал глубоких знаний в области администрирования баз данных и использования специализированных инструментов, таких как pg_stat_statements для PostgreSQL или Performance Schema для MySQL.

В последующие годы функциональность сервиса была расширена. В 2017 году была добавлена поддержка Amazon Aurora (совместимых с MySQL и PostgreSQL), а также Amazon RDS for Oracle и Microsoft SQL Server. В 2019 году появилась возможность просматривать метрики производительности за последние 24 часа без дополнительной платы, а для более длительного хранения данных (до двух лет) потребовалось подключение платного тарифа. В 2021 году была внедрена интеграция с AWS CloudWatch для централизованного мониторинга и алертинга.

Архитектура и принцип работы

Performance Insights работает на уровне ядра базы данных, собирая данные из внутренних источников статистики, не оказывая значительного влияния на производительность самой базы данных. Архитектура сервиса включает несколько ключевых компонентов:

Сбор данных

Сервис использует агента, который работает на хосте базы данных (в составе сервиса AWS RDS или Aurora). Агент периодически (обычно раз в секунду) опрашивает системные представления базы данных, такие как:

  • pg_stat_activity и pg_stat_statements (для PostgreSQL);
  • performance_schema (для MySQL);
  • v$session и v$sql (для Oracle);
  • sys.dm_exec_requests и sys.dm_exec_query_stats (для SQL Server).

Собранные данные включают идентификаторы сессий, выполняемые запросы, время ожидания, количество операций ввода-вывода (I/O), использование центрального процессора (CPU) и другие метрики.

Хранение и агрегация

Данные агрегируются и хранятся в облачном хранилище AWS. По умолчанию сервис хранит метрики за последние 24 часа (бесплатный период). Для более длительного хранения (до двух лет) необходимо включить платный тариф, который оплачивается пропорционально объёму хранимых данных. Данные хранятся в виде временных рядов, что позволяет строить графики и диаграммы за любой выбранный период.

Визуализация и анализ

Интерфейс Performance Insights предоставляется через AWS Management Console. Основным элементом визуализации является Dashboard, который включает несколько панелей:

  • Database Load (Нагрузка на базу данных): график, показывающий среднюю нагрузку на базу данных в единицах Average Active Sessions (AAS). AAS — это среднее количество активных сессий за период времени. График разбит по категориям ожиданий (Wait States), таким как CPU, I/O, Lock, Network и другие.
  • Top SQL (Топ запросов): таблица, в которой перечислены наиболее ресурсоёмкие SQL-запросы за выбранный период. Для каждого запроса отображается его текст (или шаблон), количество выполнений, среднее время выполнения, потребление CPU и I/O.
  • Top Sessions (Топ сессий): список активных сессий с указанием пользователя, хоста, приложения и текущего выполняемого запроса.
  • Top Waits (Топ ожиданий): детализация по типам событий ожидания, которые вызывают задержки в работе базы данных.

Основные возможности

Мониторинг в реальном времени и ретроспективный анализ

Performance Insights позволяет просматривать нагрузку на базу данных за последние несколько минут (режим реального времени) или за любой исторический период (до двух лет при платном тарифе). Это полезно для расследования инцидентов, произошедших в прошлом, и для анализа трендов производительности.

Идентификация узких мест

Сервис автоматически классифицирует события ожидания (Wait States) по категориям. Например, если большая часть нагрузки приходится на категорию CPU, это может указывать на неэффективные запросы или недостаточную вычислительную мощность инстанса. Если преобладает IO, проблема может быть связана с медленным дисковым вводом-выводом. Если доминирует Lock, это указывает на блокировки, вызванные конкуренцией транзакций.

Анализ запросов (SQL Insights)

Для каждого запроса, попавшего в топ, сервис предоставляет:

  • Полный текст запроса (или его шаблон с параметрами).
  • Статистику выполнения: количество выполнений, среднее, минимальное и максимальное время выполнения.
  • Метрики потребления ресурсов: CPU, I/O, ожидания блокировок.
  • Возможность просмотра плана выполнения (Explain Plan) для некоторых типов баз данных (например, PostgreSQL и MySQL).

Интеграция с другими сервисами AWS

Performance Insights интегрируется с:

  • Amazon CloudWatch: метрики производительности могут быть отправлены в CloudWatch для создания алертов и дашбордов.
  • AWS Lambda: можно настроить автоматические реакции на определённые события (например, при превышении порога нагрузки).
  • AWS Systems Manager: для автоматизации задач по оптимизации.

Планы и стоимость

Сервис Performance Insights имеет два тарифа:

  1. Бесплатный (Free Tier): включает хранение метрик за последние 24 часа. Доступен для всех поддерживаемых баз данных без дополнительной платы.
  2. Платный (Paid Tier): позволяет хранить данные до двух лет. Стоимость рассчитывается на основе объёма хранимых данных (в гигабайтах в месяц). Тариф оплачивается отдельно для каждой базы данных.

Стоимость платного тарифа зависит от региона AWS и объёма данных. В среднем, для небольших баз данных (до 10 ГБ) стоимость может составлять несколько долларов в месяц.

Примеры использования

Сценарий 1: Оптимизация медленного запроса

Разработчик замечает, что веб-приложение работает медленно. Он открывает Performance Insights для базы данных и видит, что нагрузка на базу данных значительно превышает норму. На панели Top SQL он находит запрос, который выполняется дольше всего. Просмотрев его текст, разработчик обнаруживает, что в запросе отсутствует индекс по столбцу, используемому в условии WHERE. После добавления индекса нагрузка снижается, и приложение возвращается к нормальной работе.

Сценарий 2: Расследование инцидента

Администратор базы данных получает уведомление о том, что вчера в 14:00 произошёл сбой в работе приложения. Он открывает Performance Insights и выбирает временной диапазон с 13:55 по 14:10. На графике нагрузки он видит резкий пик, связанный с категорией Lock. Просмотрев Top Sessions, он находит сессию, которая удерживала блокировку на таблице, и сессию, которая пыталась её получить. Анализ показывает, что блокировка была вызвана длительной транзакцией, которая не была завершена. Администратор может отследить эту транзакцию до конкретного пользователя и приложения.

Ограничения

Несмотря на широкие возможности, Performance Insights имеет ряд ограничений:

  • Зависимость от AWS: сервис доступен только для баз данных, размещённых в AWS RDS, Aurora и DocumentDB. Для баз данных, работающих на собственных серверах (on-premises) или в других облаках, сервис недоступен.
  • Глубина анализа: сервис предоставляет информацию на уровне запросов и сессий, но не предоставляет детального анализа планов выполнения (Explain Plan) для всех типов баз данных. Для глубокого анализа может потребоваться использование дополнительных инструментов.
  • Задержка данных: данные отображаются с задержкой в несколько секунд (обычно 5–10 секунд), что делает сервис непригодным для мониторинга в реальном времени с субсекундной точностью.
  • Стоимость хранения: для длительного хранения данных требуется платный тариф, который может быть дорогим для баз данных с высокой нагрузкой и большим объёмом данных.

Сравнение с альтернативами

ИнструментПлатформаОсновные возможностиСтоимость
Performance InsightsAWSМониторинг нагрузки, топ SQL, топ ожиданий, исторический анализ до 2 летБесплатно (24 часа) / Платно (до 2 лет)
pg_stat_statementsPostgreSQL (любая платформа)Статистика выполнения запросов, планы выполненияБесплатно (встроенный модуль)
Performance SchemaMySQL (любая платформа)Мониторинг событий, блокировок, запросовБесплатно (встроенный модуль)
SQL Server ProfilerMicrosoft SQL Server (любая платформа)Трассировка запросов, анализ производительностиБесплатно (встроенный инструмент)
Oracle Enterprise ManagerOracle Database (любая платформа)Комплексное управление производительностью, мониторинг, алертыПлатно (лицензия)
DatadogКроссплатформенный (SaaS)Мониторинг инфраструктуры, APM, логи, метрикиПлатно (подписка)

Источники

  1. Документация Amazon Web Services: «Amazon RDS Performance Insights».
  2. Документация Amazon Web Services: «Monitoring with Amazon RDS Performance Insights».
  3. Статья на AWS News Blog: «Amazon RDS Performance Insights – New Tool for Database Performance Tuning».
  4. Руководство пользователя Amazon Aurora: «Monitoring Performance with Performance Insights».

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →