Spec-Zone.ru › MySQL 8.4

10.12.3.2 Мониторинг использования памяти MySQL

Следующий пример демонстрирует, как использовать Performance Schema и sys schema для мониторинга использования памяти MySQL.

Большинство инструментов Performance Schema для измерения памяти по умолчанию отключены. Инструменты можно включить, обновив столбец ENABLED таблицы Performance Schema setup_instruments. Инструменты измерения памяти имеют имена в формате memory/code_area/instrument_name, где code_area — значение, такое как sql или innodb, а instrument_name — детали инструмента.

  1. Чтобы просмотреть доступные инструменты измерения памяти MySQL, запросите таблицу Performance Schema setup_instruments. Следующий запрос возвращает сотни инструментов измерения памяти для всех областей кода.

    mysql> SELECT * FROM performance_schema.setup_instruments
           WHERE NAME LIKE '%memory%';

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

    mysql> SELECT * FROM performance_schema.setup_instruments
           WHERE NAME LIKE '%memory/innodb%';
    +-------------------------------------------+---------+-------+
    | NAME                                      | ENABLED | TIMED |
    +-------------------------------------------+---------+-------+
    | memory/innodb/adaptive hash index         | NO      | NO    |
    | memory/innodb/buf_buf_pool                | NO      | NO    |
    | memory/innodb/dict_stats_bg_recalc_pool_t | NO      | NO    |
    | memory/innodb/dict_stats_index_map_t      | NO      | NO    |
    | memory/innodb/dict_stats_n_diff_on_level  | NO      | NO    |
    | memory/innodb/other                       | NO      | NO    |
    | memory/innodb/row_log_buf                 | NO      | NO    |
    | memory/innodb/row_merge_sort              | NO      | NO    |
    | memory/innodb/std                         | NO      | NO    |
    | memory/innodb/trx_sys_t::rw_trx_ids       | NO      | NO    |
    ...
    

    В зависимости от вашей установки MySQL, области кода могут включать performance_schema, sql, client, innodb, myisam, csv, memory, blackhole, archive, partition и другие.

  2. Чтобы включить инструменты измерения памяти, добавьте правило performance-schema-instrument в ваш конфигурационный файл MySQL. Например, чтобы включить все инструменты измерения памяти, добавьте это правило в свой конфигурационный файл и перезапустите сервер:

    performance-schema-instrument='memory/%=COUNTED'
    Примечание

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

    После перезапуска сервера столбец ENABLED таблицы Performance Schema setup_instruments должен сообщать YES для инструментов измерения памяти, которые вы включили. Столбец TIMED в таблице setup_instruments игнорируется для инструментов измерения памяти, так как операции с памятью не измеряются по времени.

    mysql> SELECT * FROM performance_schema.setup_instruments
           WHERE NAME LIKE '%memory/innodb%';
    +-------------------------------------------+---------+-------+
    | NAME                                      | ENABLED | TIMED |
    +-------------------------------------------+---------+-------+
    | memory/innodb/adaptive hash index         | NO      | NO    |
    | memory/innodb/buf_buf_pool                | NO      | NO    |
    | memory/innodb/dict_stats_bg_recalc_pool_t | NO      | NO    |
    | memory/innodb/dict_stats_index_map_t      | NO      | NO    |
    | memory/innodb/dict_stats_n_diff_on_level  | NO      | NO    |
    | memory/innodb/other                       | NO      | NO    |
    | memory/innodb/row_log_buf                 | NO      | NO    |
    | memory/innodb/row_merge_sort              | NO      | NO    |
    | memory/innodb/std                         | NO      | NO    |
    | memory/innodb/trx_sys_t::rw_trx_ids       | NO      | NO    |
    ...
    
  3. Запрос данных инструмента измерения памяти. В этом примере данные инструмента измерения памяти запрашиваются в таблице Performance Schema memory_summary_global_by_event_name, которая обобщает данные по EVENT_NAME. EVENT_NAME — это имя инструмента.

    Следующий запрос возвращает данные памяти для буфера пула InnoDB. Для описания столбцов см. Раздел 29.12.20.10, «Таблицы сводки памяти».

    mysql> SELECT * FROM performance_schema.memory_summary_global_by_event_name
           WHERE EVENT_NAME LIKE 'memory/innodb/buf_buf_pool'\G
                      EVENT_NAME: memory/innodb/buf_buf_pool
                     COUNT_ALLOC: 1
                      COUNT_FREE: 0
       SUM_NUMBER_OF_BYTES_ALLOC: 137428992
        SUM_NUMBER_OF_BYTES_FREE: 0
                  LOW_COUNT_USED: 0
              CURRENT_COUNT_USED: 1
                 HIGH_COUNT_USED: 1
        LOW_NUMBER_OF_BYTES_USED: 0
    CURRENT_NUMBER_OF_BYTES_USED: 137428992
       HIGH_NUMBER_OF_BYTES_USED: 137428992
    

    Те же самые основополагающие данные можно запросить, используя схему sys memory_global_by_current_bytes таблицу, которая показывает текущее использование памяти на глобальном уровне сервера, разбивая по типу выделения.

    mysql> SELECT * FROM sys.memory_global_by_current_bytes
           WHERE event_name LIKE 'memory/innodb/buf_buf_pool'\G
    *************************** 1. row ***************************
           event_name: memory/innodb/buf_buf_pool
        current_count: 1
        current_alloc: 131.06 MiB
    current_avg_alloc: 131.06 MiB
           high_count: 1
           high_alloc: 131.06 MiB
       high_avg_alloc: 131.06 MiB
    

    Этот запрос схемы sys агрегирует текущую выделенную память (current_alloc) по областям кода:

    mysql> SELECT SUBSTRING_INDEX(event_name,'/',2) AS
           code_area, FORMAT_BYTES(SUM(current_alloc))
           AS current_alloc
           FROM sys.x$memory_global_by_current_bytes
           GROUP BY SUBSTRING_INDEX(event_name,'/',2)
           ORDER BY SUM(current_alloc) DESC;
    +---------------------------+---------------+
    | code_area                 | current_alloc |
    +---------------------------+---------------+
    | memory/innodb             | 843.24 MiB    |
    | memory/performance_schema | 81.29 MiB     |
    | memory/mysys              | 8.20 MiB      |
    | memory/sql                | 2.47 MiB      |
    | memory/memory             | 174.01 KiB    |
    | memory/myisam             | 46.53 KiB     |
    | memory/blackhole          | 512 bytes     |
    | memory/federated          | 512 bytes     |
    | memory/csv                | 512 bytes     |
    | memory/vio                | 496 bytes     |
    +---------------------------+---------------+
    

    Дополнительную информацию о схеме sys см. в Главе 30, MySQL sys Schema.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/monitor-mysql-memory-use.html

Spec-Zone.ru

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