天天看點

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

繼續閱讀