MySQL?內(nèi)存使用率常用分析語句(收藏版)
最近連續(xù)遇到MySQL內(nèi)存占用過高導(dǎo)致服務(wù)器內(nèi)存不足的問題,整理下收集到的常用分析語句。
關(guān)于MySQL內(nèi)存使用率高問題排查過程以及解決方案,可以參考這篇文章。
一、 OS層
首先需要確認(rèn)是否是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ì)值,可以根據(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Centos 5.2下安裝多個(gè)mysql數(shù)據(jù)庫配置詳解
在實(shí)際應(yīng)用中,有時(shí)候,我們需要在同一臺(tái)服務(wù)器上安裝兩個(gè)甚至多個(gè)mysql數(shù)據(jù)庫,那么,如何來操作呢,今天我們就來探討下這個(gè)問題2014-07-07
解決windows下mysql8修改my.ini設(shè)置datadir后無法啟動(dòng)問題
在修改MySQL的my.ini文件以更改數(shù)據(jù)目錄后,可能會(huì)遇到無法啟動(dòng)的問題,這通常是因?yàn)樽址幋a被改變或新路徑權(quán)限不足,正確的做法是備份my.ini文件,確保使用ANSI字符編碼修改datadir,并確保新路徑有足夠的權(quán)限,特別是SYSTEM或NETWORKSERVICE權(quán)限2025-01-01
MySQL快速插入大量數(shù)據(jù)的解決方案和代碼示例
在這篇博客中,我們將深入探討如何高效插入大量數(shù)據(jù)到MySQL數(shù)據(jù)庫,無論你是數(shù)據(jù)庫新手還是經(jīng)驗(yàn)豐富的開發(fā)者,這篇文章都將為你提供實(shí)用的解決方案和代碼示例,幫助你解決插入3萬條數(shù)據(jù)需要20多秒的問題,需要的朋友可以參考下2024-08-08
MySQL之InnoDB存儲(chǔ)引擎中的索引用法及說明
這篇文章主要介紹了MySQL之InnoDB存儲(chǔ)引擎中的索引用法及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-06-06
Mysql?8.4.0?結(jié)合?Docker?搭建GTID主從復(fù)制及傳統(tǒng)主從復(fù)制詳解
這篇文章主要介紹了Mysql?8.4.0?結(jié)合?Docker?搭建GTID主從復(fù)制,以及傳統(tǒng)主從復(fù)制,本文給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-06-06
mysql事務(wù)對(duì)效率的影響分析總結(jié)
在本篇文章里小編給大家分享的是一篇關(guān)于mysql事務(wù)對(duì)效率的影響分析總結(jié)內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。2021-10-10

