MySQL?內(nèi)存使用率常用分析語句(收藏版)
最近連續(xù)遇到MySQL內(nèi)存占用過高導(dǎo)致服務(wù)器內(nèi)存不足的問題,整理下收集到的常用分析語句。
關(guān)于MySQL內(nèi)存使用率高問題排查過程以及解決方案,可以參考這篇文章。
一、 OS層
首先需要確認是否是MySQL占用的內(nèi)存
top -p $(pidof mysqld) -n 1

或者
cat /proc/$(pidof mysqld)/status

二、 DB層
1. 全局情況
- 各種buffer pool大小,是否有明顯不合理的設(shè)置
SHOW GLOBAL VARIABLES LIKE '%buffer%szie%';

- MySQL總占用內(nèi)存
SELECT * FROM sys.memory_global_total;

2. 內(nèi)存占用詳情
- 按內(nèi)存模塊
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;

- 各模塊內(nèi)存使用變化(結(jié)果是累計值,可以根據(jù)差值觀察變化情況)
多次查詢,求差值
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;

- 按線程查看內(nèi)存占用
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 提供了更易讀和易用的性能數(shù)據(jù)匯總
SELECT * FROM sys.memory_by_thread_by_current_bytes LIMIT 10;

- 內(nèi)存分布詳情
SELECT * FROM sys.memory_global_by_current_bytes order by current_alloc desc LIMIT 10;

- 按用戶排序
SELECT * FROM sys.memory_by_user_by_current_bytes;

到此這篇關(guān)于MySQL 內(nèi)存使用率常用分析語句的文章就介紹到這了,更多相關(guān)MySQL 內(nèi)存使用率內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL如何追蹤數(shù)據(jù)庫中對特定表的更新操作
這篇文章主要為大家詳細介紹了五種不同的方法 來追蹤 MySQL 數(shù)據(jù)庫中對特定表(如 statistics_test)的更新操作,并提供詳細的代碼示例和適用場景分析,希望對大家有所幫助2025-06-06
mysql error:#1062 Duplicate entry ‘***′ for key 1問題解決方法
今天公司的一個網(wǎng)站突然提示MySQL Error Duplicate entry '96624' for key 1錯誤,經(jīng)過分析這個問題是由于mysql表中的一個id自增長字段導(dǎo)致。2011-09-09

