mysql慢查询 , linux 优化加快访问速度 ,解决cpu

2019-08-14  本文已影响0人  端木安玉

问题背景

今日公司网站cpu 突然跑满 经过一顿操作 发现是mysqld 导致cpu跑满, 但是不知道的是什么sql语句导致的 一下是个人解决这个问题的方法 仅供参考

一,为什么要开启慢查询

数据库是很容易产生瓶颈的地方,现在Nosql大家讨论这么热,估计都被数据库搞郁闷了。mysql中最影响速度的就是那些查询非常慢的语句,这些慢的语句,可能是写的不够合理或者是大数据下多表的联合查询等等,所以我们要找出这些语句,分析原因,加以优化。

二,开启mysql的慢查询

方法1,修改mysql的配置文件
mysql的配置文件位置 用 whereis mysqld 查询,可显示出位置

long_query_time = 2   //查询时间超过2秒记录
log-slow-queries = /usr/local/mysql/mysql-slow.log   // 记录的文件 目录以及名称

方法2,用命令开启慢查询

mysql> show variables like "%long%";         //查看一下默认为慢查询的时间10秒  
+-----------------+-----------+  
| Variable_name   | Value     |  
+-----------------+-----------+  
| long_query_time | 10.000000 |  
+-----------------+-----------+  
1 row in set (0.00 sec)  
  
mysql> set global long_query_time=2;          //设置成2秒,加上global,下次进mysql已然生效  
Query OK, 0 rows affected (0.00 sec)  
  
mysql> show variables like "%slow%";          //查看一下慢查询是不是已经开启  
+---------------------+---------------------------------+  
| Variable_name       | Value                           |  
+---------------------+---------------------------------+  
| log_slow_queries    | OFF                             |  
| slow_launch_time    | 2                               |  
| slow_query_log      | OFF                             |  
| slow_query_log_file | /usr/local/mysql/mysql-slow.log |  
+---------------------+---------------------------------+  
4 rows in set (0.00 sec)  
  
mysql> set slow_query_log='ON';                        //加上global,不然会报错的。  
ERROR 1229 (HY000): Variable 'slow_query_log' is a GLOBAL variable and should be set with SET GLOBAL  
mysql> set global slow_query_log='ON';            //启用慢查询  
Query OK, 0 rows affected (0.28 sec)  
  
mysql> show variables like "%slow%";              //查看是否已经开启  
+---------------------+---------------------------------+  
| Variable_name       | Value                           |  
+---------------------+---------------------------------+  
| log_slow_queries    | ON                              |  
| slow_launch_time    | 2                               |  
| slow_query_log      | ON                              |  
| slow_query_log_file | /usr/local/mysql/mysql-slow.log |  
+---------------------+---------------------------------+  
4 rows in set (0.00 sec)  

set global general_log='ON';

//开启执行sql日志

  #show variables like "%log%"; 

//查看日志是否开启

上一篇下一篇

猜你喜欢

热点阅读