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);