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

猜你喜欢

转载自www.cnblogs.com/newmiracle/p/11856441.html
今日推荐