mysql占用CPU過高的解決辦法(添加索引)_MySQL教程
推薦:MySQL自增列插入0值的解決方案基于業(yè)務(wù)邏輯的要求,需要在MySQL的自增列插入0值,針對此需求,本文給予詳細的解決方案,感興趣的你可以參考下哈,希望可以幫助到你
下面是MYSQL占用CPU高處理的一個例子,希望對遇到類似問題的朋友們有點啟發(fā)。一般來說MYQL占用CPU高,多半是數(shù)據(jù)庫查詢代碼問題,查詢數(shù)據(jù)庫過多。所以一方面要精簡代碼,另一方面最好對頻繁使用的代碼設(shè)置索引。今天早上起來 機器報警 一查負載一直都在4以上
top了一下 發(fā)現(xiàn) mysql 穩(wěn)居 第一 而且相當(dāng)穩(wěn)定 我擦
重啟一下mysql不行
mysql> show processlist;一下
發(fā)現(xiàn)xxx網(wǎng)站有兩條 查詢語句 一直 在列,我擦 該站 也就30多萬條記錄 量也不大 不可能是機器性能問題
忽然 記得以前在網(wǎng)上看過說是 tmp_table_size值太小會造成這種情況;
于是mysql -pxxx -e "show variables;" >tmp
一看是默認的32M(顯示出來的是字節(jié)數(shù))
于是翁就開心的改了起來 增加到256 重啟 mysql 。。結(jié)果很失望
不行啊 還得再來
select 一下該表 發(fā)現(xiàn) 里面 都是論壇留言的東西 量還挺大
于是:
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 里面出現(xiàn)的 就是 select * from bbs_message where board_id=xxx and parent_id=xxx
和 select * from bbs_message where parent_id=xxx
只要這兩條一出現(xiàn) cpu就上去了
于是 從索引入手:
增加兩條索引
mysql> alter table bbs_message add index parentid(parent_id);
alter table bbs_message add index chaxunid(board_id,parent_id);
最后查看一下索引結(jié)果:
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 很穩(wěn)定
分享:Mysql中的find_in_set的使用方法介紹Mysql中的find_in_set的使用方法介紹,需要的朋友可以參考一下
相關(guān)MySQL教程:
- MSSQL清空日志刪除日志文件
- 關(guān)于數(shù)據(jù)庫中保留小數(shù)位的問題
- 解析mysql與Oracle update的區(qū)別
- mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫以及函數(shù)、存儲過程的介紹
- MySQL——修改root密碼的4種方法(以windows為例)
- 解決MYSQL出現(xiàn)Can''t create/write to file ''#sql_5c0_0.MYD''的問題
- 深入理解SQL的四種連接-左外連接、右外連接、內(nèi)連接、全連接
- 解析:內(nèi)聯(lián),左外聯(lián),右外聯(lián),全連接,交叉連接的區(qū)別
- mysql出現(xiàn)“Incorrect key file for table”處理方法
- mysql重裝后出現(xiàn)亂碼設(shè)置為utf8可解決
- 淺析一個MYSQL語法(在查詢中使用count)的兼容性問題
- 解析MySQL中INSERT INTO SELECT的使用
MySQL教程Rss訂閱編程教程搜索
MySQL教程推薦
猜你也喜歡看這些
- 解讀SQL的select語句執(zhí)行順序
- 解讀SQL Server數(shù)據(jù)庫備份的方法
- 注意:在SQL SERVER中使用NChar、NVarchar和NText
- 數(shù)據(jù)庫中兩張表之間的數(shù)據(jù)同步增加、刪除與更新實現(xiàn)思路
- 解析 SQL Server 2008 的精妙之處
- 解讀微軟SQLServer密碼管理的危險判斷
- 怎樣減少SQL Server死鎖發(fā)生的情況
- 講解數(shù)據(jù)庫調(diào)優(yōu)與程序員相關(guān)的幾個方面
- SQL Server與Oracle并行訪問的本質(zhì)區(qū)別
- 怎樣用壓縮技術(shù)給SQL Server備份文件瘦身
- 相關(guān)鏈接:
- 教程說明:
MySQL教程-mysql占用CPU過高的解決辦法(添加索引)
。