检查内存使用情况
要在performance_schema中启用内存监测,请启用 memory 类的插桩。启用后就可以查看MySQL内部结构如何使用内存的详细信息。
UPDATE setup_instruments
SET enabled = 'YES'
WHERE name LIKE 'memory/%'
AND enabled = 'NO';
直接使用performance schema
Performance Schema将内存使用统计信息存储在摘要表中,摘要表的名称以 memory_summary_ 前缀开头。内存使用聚合统计,其参数如下表所示:
聚合表
描述
memory_summary_global_by_event_name
按事件名全局聚合
memory_summary_by_thread_by_event_name
按线程聚合:包括后台线程和用户线程
memory_summary_by_account_by_event_name
按用户账号聚合
memory_summary_by_host_by_event_name
按主机聚合
memory_summary_by_user_by_event_name
按用户名聚合
例如,要找到占用大部分内存的 InnoDB 结构,可以执行以下查询:
SELECT
event_name,
current_number_of_bytes_used / 1024 / 1024 AS current_mb,
high_number_of_bytes_used / 1024 / 1024 AS high_mb
FROM memory_summary_global_by_event_name
WHERE event_name LIKE 'memory/innodb/%'
ORDER BY current_number_of_bytes_used DESC
LIMIT 10;
使用sys schema
使用sys schema中的视图可以更好地获取内存统计信息,可以按 host、user、thread 或 global 进行聚合。
SHOW TABLES FROM sys LIKE 'memory_%';
+---------------------------------+
|Tables_in_sys (memory_%) |
+---------------------------------+
|memory_by_host_by_current_bytes |
|memory_by_thread_by_current_bytes|
|memory_by_user_by_current_bytes |
|memory_global_by_current_bytes |
|memory_global_total |
+---------------------------------+
memory_global_total 视图包含一个单独的值,显示被监测内存的总量:
SELECT * FROM sys.memory_global_total;
+---------------+
|total_allocated|
+---------------+
|143.44 MiB |
+---------------+
最后更新于