慢查询
[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分析案例
慢查询日志分析工具mysqlsla或pt-query-digest(推荐)
怎么优化:创建索引,或者复杂的让开发和专业DBA去优化

浙公网安备 33010602011771号