慢查询

[root@db01-51 ~]# egrep "quer" /data/3308/my.cnf |tail -3
query_cache_min_res_unit = 2k
#long_query_time = 1
#log-slow-queries = /data/3308/slow.log
*****参数说明*****
slow-query-log = 1							#--->慢查询开启开关
long_query_time = 2							#--->记录大于2秒的SQL语句
log_queries_not_using_indexes				#--->没有使用到索引的SQL语句
slow-query-log-file = /data/3306/slow.log	#--->记录SQL语句的文件
min_examined_row_limit = 1000				#--->记录结果集大于1000行的SQL语句

设置

[root@db01-51 ~]# mysql -S /data/3308/mysql.sock -e "set slow_query_log = on;"
ERROR 1229 (HY000) at line 1: Variable 'slow_query_log' is a GLOBAL variable and should be set with SET GLOBAL  #--->error 需要set global
[root@db01-51 ~]# mysql -S /data/3308/mysql.sock -e "SET GLOBAL slow_query_log = on;"
[root@db01-51 ~]# mysql -S /data/3308/mysql.sock -e "show variables like '%slow_query%';"
+---------------------+----------------------------------+
| Variable_name       | Value                            |
+---------------------+----------------------------------+
| slow_query_log      | ON                               |
| slow_query_log_file | /data/3308/data/db01-51-slow.log |
+---------------------+----------------------------------+

慢查询切割日志

[root@db01-51 data]# mv db01-51-slow.log slow.log_$(date +%F-%H-%C).log
[root@db01-51 data]# ll
-rw-rw---- 1 mysql mysql       186 Mar 20 13:53 slow.log_2017-03-20-13-20.log  ##--->出现如下
[root@db01-51 data]# mysqladmin -S /data/3308/mysql.sock flush-log
[root@db01-51 data]# ll
-rw-rw---- 1 mysql mysql       186 Mar 20 14:01 db01-51-slow.log  ##--->flush-log后出现如下
[root@db01-51 data]# cat db01-51-slow.log    ##--->查看内容。使用mysqlsla分析慢查询,定时发给相关人员信箱
/application/mysql-5.6.34/bin/mysqld, Version: 5.6.34 (Source distribution). started with:
Tcp port: 3308  Unix socket: /data/3308/mysql.sock
Time                 Id Command    Argument

日志分析:

查看SQL语句的频率,如果语句执行2秒,但是每天执行10W次,必须优先优化。  

mysqlsla分析案例

分析mysql慢查询日志的好工具--mysqlsla 

慢查询日志分析工具mysqlslapt-query-digest(推荐)

怎么优化:创建索引,或者复杂的让开发和专业DBA去优化  

posted @ 2017-03-20 13:50  reborn枪  阅读(128)  评论(0)    收藏  举报