mysql佔用CPU過高的解決辦法(新增索引)
下面是MYSQL佔用CPU高處理的一個例子,希望對遇到類似問題的朋友們有點啟發。一般來說MYQL佔用CPU高,多半是資料庫查詢程式碼問題,查詢資料庫過多。所以一方面要精簡程式碼,另一方面最好對頻繁使用的程式碼設定索引。
今天早上起來 機器報警 一查負載一直都在4以上
top了一下 發現 mysql 穩居 第一 而且相當穩定 我擦
重啟一下mysql不行
mysql> show processlist;一下
發現xxx網站有兩條 查詢語句 一直 在列,我擦 該站 也就30多萬條記錄 量也不大 不可能是機器效能問題
忽然 記得以前在網上看過說是 tmp_table_size值太小會造成這種情況;
於是mysql -pxxx -e "show variables;" >tmp
一看是預設的32M(顯示出來的是位元組數)
於是翁就開心的改了起來 增加到256 重啟 mysql 。。結果很失望
不行啊 還得再來
select 一下該表 發現 裡面 都是論壇留言的東西 量還挺大
於是:
mysql> show columns from bbs_message;
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| msg_id | int(11) | NO | PRI | NULL | auto_increment |
| board_id | int(11) | NO | MUL | 0 | |
| parent_id | int(11) | NO | MUL | 0 | |
| root_id | int(11) | NO | MUL | 0 | |
一直在show processlist 裡面出現的 就是 select * from bbs_message where board_id=xxx and parent_id=xxx
和 select * from bbs_message where parent_id=xxx
只要這兩條一出現 cpu就上去了
於是 從索引入手:
增加兩條索引
mysql> alter table bbs_message add index parentid(parent_id);
alter table bbs_message add index chaxunid(board_id,parent_id);
最後檢視一下索引結果:
mysql> show index from bbs_message;
+-------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| bbs_message | 0 | PRIMARY | 1 | msg_id | A | 2037 | NULL | NULL | | BTREE | |
| bbs_message | 1 | rootid | 1 | root_id | A | 49 | NULL | NULL | | BTREE | |
| bbs_message | 1 | chaxunid | 1 | board_id | A | 3 | NULL | NULL | | BTREE | |
| bbs_message | 1 | chaxunid | 2 | parent_id | A | 135 | NULL | NULL | | BTREE | |
| bbs_message | 1 | parentid | 1 | parent_id | A | 127 | NULL | NULL | | BTREE | |
+-------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
5 rows in set (0.00 sec)
退出 在 top 一下 負載一直在0.x 很穩定
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4301/viewspace-2804020/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- win10 2004系統cpu佔用高怎麼辦_win10 2004系統佔用cpu過高解決教程Win10
- cpu佔用率100%怎麼解決 cpu佔用率高怎麼辦
- win10正式版cpu佔用高的解決方法_win10正式版cpu佔用高怎麼辦Win10
- tomcat埠被佔用解決辦法Tomcat
- 電腦記憶體佔用過高怎麼辦 電腦記憶體佔用過高解決方法記憶體
- win10開機cpu高佔用怎麼解決 win10電腦一開機cpu佔用過高處理方法Win10
- java應用CPU佔用率過高排查Java
- Win10系統下火狐瀏覽器佔用CPU過高的解決方法Win10瀏覽器
- win10system佔用磁碟高怎麼辦_win10system佔用cpu高如何解決Win10
- mysql佔用記憶體高的一種解決方法MySql記憶體
- win10系統defender antivirus cpu佔用率過高怎麼解決Win10
- 伺服器CPU跑滿的解決辦法伺服器
- win10系統Antimalware Service Executable程式佔用cpu過高如何解決Win10
- win10系統下wmiproviderhost程式佔用大量cpu過高如何解決Win10IDE
- win10解決antimalware service executable cpu佔用率高的方法Win10
- 臨時表空間使用率過高的解決辦法
- Java中的CPU佔用高和記憶體佔用高的問題排查Java記憶體
- win10開個遊戲就佔用100的CPU怎麼辦 win10玩遊戲就佔用100的CPU解決方法Win10遊戲
- win10空閒cpu很多cpu佔滿怎麼辦 win10cpu佔用率高怎麼辦Win10
- Win10系統安裝中文IME導致CPU佔用率過高的解決方法Win10
- mysql事件關閉解決辦法MySql事件
- windows10cpu佔用率高怎麼辦Windows
- chrome佔用高cpu的原因 排查大致思路Chrome
- rundll32.exe程式佔用率CPU高的原因及解決方法
- 禁用software_reporter_tool.exe 解決CPU高佔用率的問題
- 面試問題---JAVA程式CPU佔用過高怎麼定位面試Java
- win11服務和控制器應用佔用CPU過高
- win10系統BackgroundTransferHost.exe佔用CPU高怎麼辦Win10
- win10 audiodg狂佔記憶體怎麼辦_win10 audiodg佔用記憶體過高的解決方法Win10記憶體
- win10系統conhost.exe佔用cpu高怎麼辦_win10程式有很多conhost解決方法Win10
- win10系統explorer佔用cpu很高的解決方法Win10
- 如何在 Linux 中找出 CPU 佔用高的程序Linux
- 伺服器CPU佔用過高和哪些因素有關呢伺服器
- win10系統中WMI程式佔用cpu使用率高怎麼解決Win10
- 一次JVM_OLD區佔用過高、頻繁Full GC的解決過程JVMGC
- win10開機記憶體佔用60%怎麼辦 解決開機執行記憶體佔用率過高的方法Win10記憶體
- java專案cpu佔用高排查方法(chatgpt)JavaChatGPT
- Node.js 應用高 CPU 佔用率的分析方法Node.js