mysql cpu使用率過高解決方法


mysql cpu使用率過高解決方法

1 mysql查看正在運行的語句 並且查看運行最多的mysql語句

MySQL 打開 general log 后,所有的查詢語句都會記錄在 general log 文件,文件為只讀方式,但這樣general log文件會非常大,所以默認是關閉的。
但有時需要查錯等原因,暫時需要打開general log。
打開方法:

select version();//我的是5.6是支持一個日志的開啟。

set global general_log=1;//開啟查詢日志

set global log_output='TABLE';//general_log支持輸出到table: 如果開啟了table就會輸出到數據庫表中 不會輸出到文件中

select * from mysql.general_log\G;//查詢所有sql語句的使用

select * from (select argument, count(*) as number from mysql.general_log group by argument)t
order by number DESC;//降序排列使用最多的sql語句,值是mysql 的基本功哈。
建議開了1分鍾后可以關了 可以進行優化了 然后優化完了 可以清除表再開啟測試

set global general_log = off; // 關閉查詢日志

 


日記
2 mysql慢查詢日記

#必須寫到mysqld 注意給/tmp/showslowmysql.log 775權限 要寫入權限
[mysqld]
#開啟慢查詢日記
slow_query_log = 1
#設置日記路徑
slow_query_log_file = /tmp/showslowmysql.log
#超過1秒 就代表慢查詢記錄到日志
long_query_time=1

 

 

mysql> show variables like '%query%';
+------------------------------+------------------------+
| Variable_name | Value |
+------------------------------+------------------------+
| binlog_rows_query_log_events | OFF |
| ft_query_expansion_limit | 20 |
| have_query_cache | YES |
| long_query_time | 1.000000 |
| query_alloc_block_size | 8192 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 1048576 |
| query_cache_type | OFF |
| query_cache_wlock_invalidate | OFF |
| query_prealloc_size | 8192 |
| slow_query_log | ON |
| slow_query_log_file | /tmp/showslowmysql.log |
+------------------------------+------------------------+
13 rows in set
運行mysql語句select sleep(1);

然后查看慢查詢日志 cat /tmp/showslowmysql.log
# Time: 170516 14:46:47
# User@Host: root[root] @ [122.224.247.131] Id: 67
# Query_time: 1.000352 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0
SET timestamp=1494917207;
select sleep(1);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM