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进程内存一直在涨,怎么办? - 墨天轮

相关推荐
万事大吉CC43 分钟前
SQL语法基础教程
数据库·oracle
betazhou1 小时前
Oracle dgbroker常规命令管理简介
数据库·oracle·adg·dbbroker
海边夕阳20062 小时前
PostgreSQL性能调优:解决表膨胀、索引碎片和无效索引问题
数据库·经验分享·postgresql·性能优化
IT教程资源C2 小时前
(N_083)基于springboot毕业设计管理系统
mysql·springboot毕业管理
一 乐2 小时前
个人理财系统|基于java+小程序+APP的个人理财系统设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·后端·小程序
m0_748248022 小时前
Redis的数据淘汰策略解读
数据库·redis·缓存
哥哥还在IT中2 小时前
让数据库更智能-大模型如何优化我们的SQL查询
数据库·sql
计算机小手2 小时前
探索 Maxwell:高效捕获 MySQL 数据变更的轻量级中间件
数据库·经验分享·mysql·开源软件
IvorySQL3 小时前
使用 PostgreSQL 时间点恢复(Point-In-Time Recovery)的多种数据恢复技术
数据库·postgresql
腾讯云云开发3 小时前
小程序数据库权限管理,一看就会!——CloudBase新手指南
前端·数据库·微信小程序