8.12.4.2 Мониторинг использования памяти MySQL
Следующий пример демонстрирует, как использовать схему производительности и схему sys для мониторинга использования памяти MySQL.
Большинство инструментов измерения памяти Performance Schema по умолчанию отключены. Инструменты можно включить, обновив столбец ENABLED таблицы Performance Schema setup_instruments. Инструменты памяти имеют имена в форме memory/, где code_area/instrument_namecode_area — значение, такое как sql или innodb, а instrument_name — подробная информация об инструменте.
-
Чтобы просмотреть доступные инструменты измерения памяти MySQL, запросите таблицу Performance Schema
setup_instruments. Следующий запрос возвращает сотни инструментов измерения памяти для всех областей кода.mysql>
SELECT * FROM performance_schema.setup_instrumentsWHERE NAME LIKE '%memory%';Можно сузить результаты, указав область кода. Например, можно ограничить результаты инструментами измерения памяти
InnoDB, указавinnodbкак область кода.mysql>
SELECT * FROM performance_schema.setup_instrumentsWHERE 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и другие. -
Чтобы включить инструменты измерения памяти, добавьте правило
performance-schema-instrumentв файл конфигурации MySQL. Например, чтобы включить все инструменты измерения памяти, добавьте это правило в файл конфигурации и перезапустите сервер:performance-schema-instrument='memory/%=COUNTED'
ПримечаниеВключение инструментов измерения памяти при запуске гарантирует, что выделения памяти, происходящие при запуске, будут учтены.
После перезапуска сервера столбец
ENABLEDтаблицы Performance Schemasetup_instrumentsдолжен содержать значениеYESдля инструментов измерения памяти, которые вы включили. СтолбецTIMEDв таблицеsetup_instrumentsигнорируется для инструментов измерения памяти, так как операции с памятью не измеряются по времени.mysql>
SELECT * FROM performance_schema.setup_instrumentsWHERE 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 | ... -
Запросите данные инструментов измерения памяти. В этом примере данные инструмента измерения памяти запрашиваются в таблице 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_nameWHERE EVENT_NAME LIKE 'memory/innodb/buf_buf_pool'\GEVENT_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_bytesWHERE 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) AScode_area, sys.format_bytes(SUM(current_alloc))AS current_allocFROM sys.x$memory_global_by_current_bytesGROUP 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.