MySQL?內(nèi)存使用率常用分析語(yǔ)句(收藏版)
最近連續(xù)遇到MySQL內(nèi)存占用過(guò)高導(dǎo)致服務(wù)器內(nèi)存不足的問(wèn)題,整理下收集到的常用分析語(yǔ)句。
關(guān)于MySQL內(nèi)存使用率高問(wèn)題排查過(guò)程以及解決方案,可以參考這篇文章。
一、 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庫(kù)中的視圖基于 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)存使用率常用分析語(yǔ)句的文章就介紹到這了,更多相關(guān)MySQL 內(nèi)存使用率內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Centos 5.2下安裝多個(gè)mysql數(shù)據(jù)庫(kù)配置詳解
在實(shí)際應(yīng)用中,有時(shí)候,我們需要在同一臺(tái)服務(wù)器上安裝兩個(gè)甚至多個(gè)mysql數(shù)據(jù)庫(kù),那么,如何來(lái)操作呢,今天我們就來(lái)探討下這個(gè)問(wèn)題2014-07-07
解決windows下mysql8修改my.ini設(shè)置datadir后無(wú)法啟動(dòng)問(wèn)題
在修改MySQL的my.ini文件以更改數(shù)據(jù)目錄后,可能會(huì)遇到無(wú)法啟動(dòng)的問(wèn)題,這通常是因?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ù)庫(kù),無(wú)論你是數(shù)據(jù)庫(kù)新手還是經(jīng)驗(yàn)豐富的開(kāi)發(fā)者,這篇文章都將為你提供實(shí)用的解決方案和代碼示例,幫助你解決插入3萬(wàn)條數(shù)據(jù)需要20多秒的問(wèn)題,需要的朋友可以參考下2024-08-08
MySQL之InnoDB存儲(chǔ)引擎中的索引用法及說(shuō)明
這篇文章主要介紹了MySQL之InnoDB存儲(chǔ)引擎中的索引用法及說(shuō)明,具有很好的參考價(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
Linux下編譯安裝Mysql 5.5的簡(jiǎn)單步驟
Linux下面因?yàn)閺腗ySQL 5.5開(kāi)始使用cmake來(lái)做config了,所以編譯安裝的會(huì)和5.1版本有些區(qū)別。不過(guò)總體來(lái)說(shuō)還是差別不大2015-08-08
mysql事務(wù)對(duì)效率的影響分析總結(jié)
在本篇文章里小編給大家分享的是一篇關(guān)于mysql事務(wù)對(duì)效率的影響分析總結(jié)內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。2021-10-10

