Spec-Zone.ru › MySQL 5.7

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

Следующий пример демонстрирует, как использовать схему производительности и схему sys для мониторинга использования памяти 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. Описания столбцов см. в разделе 25.12.15.9, «Таблицы сводного анализа памяти».

    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, sys.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 см. в главе 26, Схема sys MySQL.

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

Spec-Zone.ru

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