Мониторингу производительности в MySQL

Согласно результатам опроса разработчиков Stack Overflow 2022, почти половина (46%) респондентов говорят, что они используют MySQL, что делает его наиболее широко используемой технологией баз данных среди разработчиков на сегодняшний день. Такая популярность в немалой степени обусловлена уникальными функциями MySQL, которые помогают ему легко удовлетворять потребности современных приложений, от небольших программных проектов до критически важных для бизнеса систем.

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

Пристальное наблюдение за производительностью помогает гарантировать, что ваше приложение в полной мере использует преимущества высокой степени гибкости, масштабируемости, доступности, надежности и безопасности, которые предлагает MySQL. В этой статье дается подробное введение и руководство по мониторингу производительности MySQL. В нем объясняются ключевые концепции мониторинга баз данных MySQL, имеющие решающее значение для показатели эффективности для отслеживания, а также шаги и инструменты для включения в эффективную стратегию мониторинга.

MetricFire

Такие инструменты, как MetricFire, упрощают и повышают эффективность мониторинга производительности MySQL. MetricFire - это полнофункциональная платформа мониторинга и наблюдаемости, которая идеально подходит для отслеживания производительности базы данных MySQL. С MetricFire вам не нужно самостоятельно управлять показателями временных рядов и хранить их. Вместо этого MetricFire загружает данные о производительности в размещенную базу данных временных масштабов и использует их для создания настраиваемых отчетов и информационных панелей. Узнайте больше о том, как MetricFire улучшает процесс мониторинга MySQL с помощью краткой демонстрации, или начните использовать бесплатную пробную версию MetricFire уже сегодня.

Понимание производительности MySQL

MySQL служит основой многих современных веб-, мобильных, настольных и облачных приложений. С самого начала он был построен с большим акцентом на скорость и надежность. Вот почему одним из главных преимуществ MySQL является то, что это высокопроизводительная система баз данных. Краткий обзор MySQL Официальное справочное руководство по MySQL описывает MySQL как быструю и стабильную многопользовательскую многопоточную систему управления реляционными базами данных с открытым исходным кодом (RDBMS).

Впервые выпущенный в 1995 году, MySQL теперь выпускается в двух отдельных изданиях: свободно доступном MySQL Community Server и коммерческом MySQL Enterprise Edition. MySQL поддерживает такие важные функции, как гибкая архитектура (с открытым исходным кодом, многопоточный, подключаемый механизм хранения), совместимость со стандартами ANSI SQL, высокая доступность и репликация (встроенные механизмы репликации, глобальные идентификаторы транзакций, сегментирование и т. д. ), OLTP и транзакции (соответствие ACID, ссылочная целостность, строка-блокировка уровня и т. д. ), безопасность базы данных и высокая производительность. Эти функции делают MySQL идеальной базой данных для приложений, которые полагаются на распределенные операции, веб-сайтов, веб-приложений, которым требуется быстрая доставка, и систем, которым необходимо быстрое масштабирование по требованию.

Функции MySQL, влияющие на производительность базы данных, по сравнению с другими полнофункциональными rel для традиционных баз данных, таких как PostgreSQL, MySQL предлагает относительно более легкий набор функций, поэтому он способен обеспечить более высокую скорость и надежность.

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

Группы ресурсов (используемые для назначения потоков и распределения ресурсов) оптимизированы для секционирования с высокой степенью параллелизма, оптимизированы только для чтения, оптимизированы для SSD с несколькими типами индексов (B-дерево, R-дерево, хэш, полнотекстовый и т. д. )

Серверное соединение потоков с пулом потоков, диагностика кэширования потоков и SQL Tracing Performance schema и sys Schema Благодаря этим встроенным функциям, ориентированным на производительность, MySQL продолжает пользоваться репутацией быстрого и надежного решения для баз данных, даже несмотря на то, что другие варианты СУБД начинают соответствовать производительности MySQL в рамках новых тестовых тестов.

Зачем следить за производительностью MySQL?

Ваша база данных формирует критический уровень в стеке приложений. Все в вашем приложении или веб-сайте, построенном поверх этого уровня, будет зависеть от того, насколько хорошо работает база данных. Мониторинг производительность базы данных ng помогает вам упреждающе устранять возможные проблемы в вашем приложении до того, как они затронут конечных пользователей.

Но помимо помощи в предотвращении и устранении проблем, мониторинг данных также позволяет вам: Выявлять возможности для оптимизации базы данных (например, переписывать неоптимальные запросы), определять влияние изменений (таких как миграция данных, изменение определений схем, модификация конфигурации, доставка новых функций и т. д. ), Подготавливать сервер и вычислять ресурсы в соответствии с фактическими требованиями (горизонтальное масштабирование) Выявляют потенциальные уязвимости в системе безопасности и применяют адекватные меры безопасности, обнаруживают области для роста и улучшения пользовательского опыта. Короче говоря, мониторинг производительности MySQL охватывает все критические уровни вашего приложения или веб-сайта, а не только саму базу данных.

Ключевые показатели производительности базы данных MySQL

Прежде чем мы перейдем к различным показателям производительности MySQL для отслеживания, давайте сначала разберемся, что значит измерять производительность базы данных. В конце концов, это то, чем мы занимаемся. что мы обычно делаем, когда отслеживаем показатели: мы измеряем конкретные действия и записываем эти измерения.

Измерение производительности базы данных MySQL

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

Для большинства вариантов использования наиболее важными категориями являются:

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

Задержка (время выполнения): Показатели рабочей нагрузки, которые измеряют время, необходимое базе данных для работы. для выполнения заданной единицы работы (например, времени выполнения запроса)

Подключения (параллелизм): Ресурс показатели, которые сообщают вам количество запросов, выполняющихся одновременно и не завершенных вовремя (например, количество подключенных потоков, запущенных потоков, прерванных подключений и т. д. )

Буфер (использование): Показатели ресурсов, которые оценивают использование буфера (кэша) (например, использование пула буферов)

Позже мы рассмотрим взгляните на некоторые ключевые статистические данные для мониторинга по каждой из этих категорий.

Поиск показателей производительности MySQL

Показатели мониторинга производительности MySQL могут быть запрошены из трех разных мест: переменные состояния сервера, системная схема и схема производительности.

Переменные состояния сервера: это внутренние “счетчики”, которые поддерживает MySQL для предоставления информации о своей работе. К этим переменным относятся Questions, Slow_queries, Threads_running, Com_select и другие.

Схема производительности: Это функция MySQL для мониторинга событий сервера MySQL и выполнения запросов. Показатели производительности получаются путем запроса одной или нескольких таблиц в performan'е база данных ce_schema, такая как таблица events_statements_summary_by_digest. Системная схема: Системная схема MySQL улучшает удобство использования схемы производительности (с которой, при наличии десятков таблиц, иногда может быть утомительно работать). Схема включает в себя представления, функции и процедуры, которые делают более удобным анализ данных, собранных с помощью схемы производительности. Вскоре мы увидим примеры использования каждой из этих трех функций.

Выбор показателей производительности для мониторинга

При наличии потенциально сотен показателей производительности, доступных для мониторинга вашей базы данных MySQL, за какой статистикой вам следует следить? Хотя это может варьироваться в зависимости от варианта использования, вот список некоторых критических показателей для отслеживания в каждой из четырех ключевых категорий производительности базы данных:

Пропускная способность: количество инициированных клиентом инструкций, выполняемых сервером

Запросы: количество инструкций, выполняемых сервером (включая как отправляемые клиентом инструкции, так и инструкции, выполняемые в хранимой процедуре s)

Com_select: подсчитывает, сколько инструкций SELECT было выполнено, указывает уровень активности только для чтения.

Com_insert, Com_update и Com_delete: указывают уровень операций записи, обычно суммируемых в одну переменную.

Latency:

Slow_Queries: количество запросов, превышающих long_query_time секунд для выполнения запроса. Время выполнения запроса: статистика о том, как долго выполняется запрос. запросы, принятые для выполнения, доступны в схеме производительности.

Currency:

Aborted_connects: подсчитывает, сколько попыток не удалось подключиться к серверу MySQL. Threads_connected: количество подключений, открытых в данный момент.

Threads_running: подсчитывает, сколько потоков не находятся в спящем режиме.

Буферы:

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

Сбор и мониторинг показателей производительности MySQL

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

Переменные состояния сервера

Мы узнали, что MySQL отслеживает “счетчики”, называемые переменными состояния сервера. Переменные состояния сервера предоставляют вам информацию о работе MySQL. Общее количество переменных состояния сервера варьируется в зависимости от используемой версии сервера MySQL. Доступ к этим переменным можно получить с помощью инструкции SHOW [GLOBAL | SESSION] STATUS.

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

mysql> SHOW GLOBAL STATUS;

Вы также можете просмотреть одну переменную статуса сервера, выполнив:

mysql> SHOW STATUS LIKE '%Com_select%';

В предыдущем разделе упоминалось несколько важных переменных состояния сервера, таких как вопросы, Queries, Com_insert, Com_update и т. д. Для получения полного списка доступных переменных ознакомьтесь с документацией к вашей версии сервера MySQL.

Схема производительности

MySQL perfomance schema отслеживает выполнение сервера на уровне отдельных запросов. На сервере MySQL, поддерживающем схему производительности, она доступна в виде базы данных с именем performance_schema, которая содержит таблицы, к которым можно обращаться с помощью обычных инструкций SELECT. Прежде чем вы сможете начать запрашивать схему производительности, вам сначала нужно убедиться, что она правильно установлена и включена.

База данных performance_schema группирует свои таблицы в зависимости от типа содержащейся в них информации: текущие события, истории событий и сводки, экземпляры объектов и информация о настройке. Чтобы просмотреть все доступные таблицы в performance_schema, запустите следующую инструкцию:

mysql> SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
      WHERE TABLE_SCHEMA = 'performance_schema';|

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

Приведенный ниже оператор возвращает запрос с самым длительным временем выполнения:

mysql> SELECT digest_text, avg_timer_wait
      FROM performance_schema.events_statements_summary_by_digest
      ORDER BY avg_timer_wait DESC
      LIMIT 1;

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

Системная схема

Даже с нашим довольно простым примером, приведенным выше, это несложно. o представьте, что запрос схемы производительности может стать утомительным при более сложных вариантах использования. Вот почему MySQL представила sys schema в качестве функции, начиная с версии 5. 7. 7.

Sys schema предоставляет представления, хранимые процедуры и хранимые функции, которые упрощают доступ к информации, содержащейся в таблицах базы данных performance_schema.

Используя пример из официальной документации sys schema, мы видим это в действии с представлением host_summary_by_file_io, которое суммирует файловый ввод-вывод, сгруппированный по хосту, и отображает более читаемые значения задержки:

mysql> SELECT* FROM sys. host_summary_by_file_io;

MySQL Workbench

A более удобным подходом к изучению производительности базы данных, который также поддерживается MySQL, является использование графического интерфейса Workbench. MySQL Wo rkbench предоставляет визуальный способ проектирования баз данных MySQL, управления ими и мониторинга за ними.

В дополнение к встроенной панели мониторинга, отображающей высокоуровневую статистику, MySQL Workbench также позволяет быстро детализировать показатели производительности, содержащиеся в sys schema:

Полнофункциональные инструменты мониторинга

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

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

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

Анализировать и визуализировать производительность базы данных на разных уровнях детализации;

Настраивать оповещения и уведомления для d разные события и триггеры непрерывно отслеживают производительность даже в производственных средах с большим объемом работ.

Metricfire является примером надежной полнофункциональной платформы мониторинга, которая помогает вам непрерывно отслеживать производительность базы данных в режиме реального времени. Как внешний инструмент, MetricFire прост в настройке и интеграции с вашим сервером MySQL. После подключения MetricFire выполняет всю работу по сбору и хранению данных временных рядов, предоставляя вам пользовательскую визуализацию / отчетность, проактивное оповещение и полностью управляемую поддержку.

Одной из ключевых функций MetricFire, упрощающей мониторинг MySQL, является встроенная поддержка размещенного Graphite Agent (HG-Agent). Размещенный Graphite Agent - это приложение для мониторинга, построенное поверх инструмента сбора данных Diamond metrics и Supervisor process manager. Для запуска требуется всего лишь быстрый процесс установки, а затем он автоматически отслеживает сервер, на котором он запущен, без необходимости дополнительной настройки. После установки HG-Agent собирает собирает системные показатели и публикует их в размещенном Graphite, где данные временных рядов хранятся, обрабатываются и визуализируются. С размещенным в MetricFire клиентом Graphite Agent установка и настройка HG-Agent становятся еще быстрее. Узнайте больше, заказав демо-версию сегодня, или начните использовать MetricFire бесплатно.

Заключение

В этом посте мы рассмотрели основные вещи, которые вам необходимо знать для эффективного мониторинга баз данных MySQL. Мы узнали, какие функции делают MySQL быстрой и надежной СУБД, как измеряется производительность базы данных в MySQL, какие показатели производительности следует отслеживать и как использовать различные функции и инструменты для мониторинга производительности. Помня об этих концепциях, теперь вы готовы разработать надежную стратегию мониторинга. Ваш план должен включать в себя выбор правильного инструмента мониторинга, соответствующего вашим требованиям. Объединив размещенные Graphite и Grafana в полнофункциональную платформу мониторинга, MetricFire может стать подходящим инструментом для ваших нужд мониторинга MySQL.