Spec-Zone.ru › MySQL 5.7

25.19 Использование Performance Schema для диагностики проблем

  • 25.19.1 Профилирование запросов с помощью Performance Schema

Performance Schema — это инструмент, помогающий администратору базы данных (DBA) проводить настройку производительности, используя реальные измерения, а не «догадки». Этот раздел демонстрирует несколько способов использования Performance Schema для этой цели. В данном обсуждении используются фильтры событий, описание которых представлено в разделе 25.4.2 «Фильтрование событий Performance Schema».

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

  1. Запустите сценарий использования.

  2. Используя таблицы Performance Schema, проанализируйте причину проблемы с производительностью. Этот анализ сильно зависит от пост-фильтрации.

  3. Для исключенных областей проблемы отключите соответствующие инструменты. Например, если анализ показывает, что проблема не связана с вводом-выводом файлов в определенном движке хранения, отключите инструменты ввода-вывода файлов для этого движка. Затем обнулите таблицы истории и сводки, чтобы удалить ранее собранные события.

  4. Повторите процесс на шаге 1.

    На каждой итерации выходные данные Performance Schema, особенно таблица events_waits_history_long, содержит все меньше «шума», вызванного несущественными инструментами, и, учитывая, что эта таблица имеет фиксированный размер, содержит все больше данных, относящихся к анализу текущей проблемы.

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

  5. После определения первопричины узкого места производительности примите соответствующие корректирующие действия, например:

    • Настройте параметры сервера (размеры кэша, память и т. д.).

    • Настройте запрос, написав его по-другому.

    • Настройте схему базы данных (таблицы, индексы и т. д.).

    • Настройте код (это относится только к разработчикам движка хранения или сервера).

  6. Начните снова с шага 1, чтобы увидеть влияние изменений на производительность.

Столбцы mutex_instances.LOCKED_BY_THREAD_ID и rwlock_instances.WRITE_LOCKED_BY_THREAD_ID имеют чрезвычайную важность для расследования узких мест производительности или тупиков. Это становится возможным благодаря средствам измерения Performance Schema следующим образом:

  1. Предположим, что поток 1 застрял в ожидании мьютекса.

  2. Вы можете определить, чего ожидает поток:

    SELECT * FROM performance_schema.events_waits_current
    WHERE THREAD_ID = thread_1;
    

    Допустим, результат запроса указывает, что поток ожидает мьютекса A, который находится в events_waits_current.OBJECT_INSTANCE_BEGIN.

  3. Вы можете определить, какой поток держит мьютекс A:

    SELECT * FROM performance_schema.mutex_instances
    WHERE OBJECT_INSTANCE_BEGIN = mutex_A;
    

    Допустим, результат запроса показывает, что это поток 2, удерживающий мьютекс A, как указано в mutex_instances.LOCKED_BY_THREAD_ID.

  4. Вы можете увидеть, чем занимается поток 2:

    SELECT * FROM performance_schema.events_waits_current
    WHERE THREAD_ID = thread_2;
    

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/performance-schema-examples.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API