MySQL查询时较慢分析处理方法

一、my.cnf配置性能调优

1.  分加入下面条配置在局域网络内不解析计算机名

skip-name-resolve

skip-grant-tables

2. 加入下面配置文件将成慢日志查询记录

log-slow-queries=/data/mysql/log/mysql_slow.log   
long_query_time=10

3.重启动mysql server

 [root@uat001 log]# service mysqld restart

不重启mysql时是不会记录日志的

二、慢日志在mysql中开启

首先查看log_output参数,确认日志信息输出到操作系统文件还是数据库的表中:
mysql> show variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+
1 row in set (0.01 sec)

通过上面的结果可以发现,log_output的值为“FILE”,证明是输出到日志文件,
如果值为“TABLE”则将日志信息输出到默认“mysql”数据库中的相应日志表中(具体为:mysql.slow_log),
该表的默认引擎为CSV。

开启慢查询日志:
set global slow_query_log=on;

设置慢查询的阀值为4秒,超过4秒的查询都将记录到慢查询日志中:
set global long_query_time=4;
也可以设置得更低,例如:
set global long_query_time=5;

设置慢查询日志的名称和存储位置:
set global slow_query_log_file="/data/mysql/log/mysql_slow.log";

运行一个超过5秒的查询:
select * from ipos_lsxhd;

查询出现慢查询次数的累计值(值由0变为1):
select * from ipos_lsxhd
show global status like 'Slow_queries';


打开生成的mysql_slow_query.log文件,发现新增了如下信息:
#

[root@uat001 log]# cat mysql_slow.log
/usr/local/mysql/bin/mysqld, Version: 5.5.23-log (Source distribution). started with:
Tcp port: 3306  Unix socket: /tmp/mysql.sock
Time                 Id Command    Argument
# Time: 150720 12:07:54
# User@Host: root[root] @  [10.2.3.66]
# Query_time: 5.047617  Lock_time: 0.211879 Rows_sent: 138260  Rows_examined: 138260
use bsipos14911;
SET timestamp=1437365274;
select * from ipos_lsxhd;


其中:
“Time: ”为执行这条慢查询sql语句的日期和时间。
“Query_time:  ”为这条慢查询sql语句的执行时间(大约执行了13秒)。






你可能感兴趣的:(MySQL查询时较慢分析处理方法)