MySQL内存分析常用语句

一、 OS层

首先需要确认是否是MySQL占用的内存

top -p $(pidof mysqld) -n 1

或者

cat /proc/$(pidof mysqld)/status

二、 DB层

  1. 全局情况

各种buffer pool大小,是否有明显不合理的设置

SHOW GLOBAL VARIABLES LIKE '%buffer%szie%';

MySQL总占用内存

SELECT * FROM sys.memory_global_total;

  1. 内存占用详情

按内存模块

SELECT

EVENT_NAME,

CURRENT_NUMBER_OF_BYTES_USED AS memory_bytes,

CURRENT_NUMBER_OF_BYTES_USED / 1024 / 1024 AS memory_mb

FROM

performance_schema.memory_summary_global_by_event_name

WHERE

CURRENT_NUMBER_OF_BYTES_USED > 0

ORDER BY

CURRENT_NUMBER_OF_BYTES_USED DESC

LIMIT 10;

各模块内存使用变化(结果是累计值,可以根据差值观察变化情况)

多次查询,求差值

SELECT

EVENT_NAME,

SUM(SUM_NUMBER_OF_BYTES_ALLOC) / 1024 / 1024 AS total_memory_mb

FROM

performance_schema.memory_summary_global_by_event_name

GROUP BY

EVENT_NAME

ORDER BY

SUM_NUMBER_OF_BYTES_ALLOC DESC

LIMIT 10;

按线程查看内存占用

SELECT

m.EVENT_NAME,

m.COUNT_ALLOC,

m.CURRENT_NUMBER_OF_BYTES_USED AS mem_sum,

(m.CURRENT_NUMBER_OF_BYTES_USED / 1024 / 1024.0) AS mem_sum_mb,

t.NAME,

t.TYPE,

t.PROCESSLIST_ID,

LEFT(t.PROCESSLIST_INFO, 10)

FROM

performance_schema.memory_summary_by_thread_by_event_name m

JOIN performance_schema.threads t

USING (THREAD_ID)

WHERE

t.PROCESSLIST_ID != CONNECTION_ID()

ORDER BY

m.CURRENT_NUMBER_OF_BYTES_USED desc

LIMIT 10;

sys库中的视图基于 performance_schema 提供了更易读和易用的性能数据汇总

SELECT * FROM sys.memory_by_thread_by_current_bytes LIMIT 10;

​​​​​​​​​

内存分布详情

SELECT * FROM sys.memory_global_by_current_bytes order by current_alloc desc LIMIT 10;

按用户排序

SELECT * FROM sys.memory_by_user_by_current_bytes;

参考

GreatSQL 运行时内存太高,超过90%怎么办(重发,附解决办法)-CSDN博客

MySQL内存使用率高且不释放问题排查与总结_Mysql_脚本之家

MySQL 8.0不再担心被垃圾SQL搞爆内存 - GreatSQL - 博客园

MySQL内存为什么不断增高,怎么让它释放 - 墨天轮

MySQL进程内存一直在涨,怎么办? - 墨天轮

相关推荐
睡觉的时候不会困1 小时前
Redis 主从复制详解:原理、配置与主从切换实战
数据库·redis·bootstrap
程序员的世界你不懂3 小时前
【Flask】测试平台开发,新增说明书编写和展示功能 第二十三篇
java·前端·数据库
自学也学好编程3 小时前
【数据库】Redis详解:内存数据库与缓存之王
数据库·redis
福赖3 小时前
《MySQL基础——用户管理》
mysql·用户管理
JAVA不会写4 小时前
在Mybatis plus中如何使用自定义Sql
数据库·sql
IT 小阿姨(数据库)4 小时前
PgSQL监控死元组和自动清理状态的SQL语句执行报错ERROR: division by zero原因分析和解决方法
linux·运维·数据库·sql·postgresql·centos
ChinaRainbowSea4 小时前
7. LangChain4j + 记忆缓存详细说明
java·数据库·redis·后端·缓存·langchain·ai编程
小马学嵌入式~5 小时前
嵌入式 SQLite 数据库开发笔记
linux·c语言·数据库·笔记·sql·学习·sqlite
Java小白程序员6 小时前
MyBatis基础到高级实践:全方位指南(中)
数据库·mybatis
Monly216 小时前
人大金仓:merge sql error, dbType null, druid-1.2.20
数据库·sql