数据库优化_定位慢查询

  修改数据库配置文件

方式一:

 

etc下修改my.cnf 数据库配置文件 ,[mysqld] 节点下面加入如下配置

 

log_slow_queries = NO
log-slow-queries = /var/run/mysqld/slow_querys.log 
long_query_time =
1 (表示超过一秒就算慢查询)
log-queries-not-using-indexes 
log-slow-admin-statements

 

 

二  重启MySql服务  

 


一、启动方式

1
、使用 service 启动:service mysqld start

2
、使用 mysqld 脚本启动:/etc/inint.d/mysqld start

3
、使用 safe_mysqld 启动:safe_mysqld&

二、停止

1
、使用 service 启动:service mysqld stop

2
、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop

3
mysqladmin shutdown 

三、重启

1
使用 service 启动:service mysqld restart

2
、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart

 

 

 

 

 

 

 

 

 

 

 

方式二: (先链接 mysql  -u admin-p  password)

方法二:通过修改myssql的全局变量来处理,这样做的好处是,不用重启mysql服务器,登陆到mysql上执行一下sql脚本即可

set global slow_query_log=ON;

set global long_query_time=3;

然后通过一下命令查看是否成功

mysql> show variables like 'long%';

+-----------------+-----------+

| Variable_name  | Value    |

+-----------------+-----------+

| long_query_time | 10.000000 |

+-----------------+-----------+

1 row in set (0.00 sec)

 

 

mysql> show variables like 'slow%';

+---------------------+---------------+

| Variable_name      | Value        |

+---------------------+---------------+

| slow_launch_time    | 2            |

| slow_query_log      | ON            |

| slow_query_log_file | /tmp/slow.log |

+---------------------+---------------+

3 rows in set (0.00 sec)

 

 

 

 

 

 

 

 

 

 

 

通过如下命令查看配置是否修改成功

 

show variables like '%slow%';

 

 

 

 

 

执行select sleep(3);

 

 

打开改文件查看是否记录select sleep(3); 的日志

 

 

 

 

语法

show variables like 'xxxx'; 固定写法

 

Like 后面加上想查询的字段

 

 

 

 

查看日志是否开启

show variables like 'log_slow_queries';

 

 

 

 

show variables like  ‘slow_query_log_file’;

 

 

 

 
set  @@global.slow_query_log = ON;

 

 

 结果:

 

 

 

 

 

 

参考链接 http://www.linuxidc.com/Linux/2013-07/87457.htm

 

 

日志分析工具

 

mysql自带了一个查看慢日志的工具mysqldumpslow

执行mysqldumpslow --h可以查看帮助信息。

主要介绍两个参数-s和-t

-s 这个是排序参数,可选的有:

al: 平均锁定时间

ar: 平均返回记录数

at: 平均查询时间

c: 计数

l: 锁定时间

r: 返回记录

t: 查询时间

 

-t n 显示头n条记录。

实例:

mysqldumpslow -s c -t 20 host-slow.log

mysqldumpslow -s r -t 20 host-slow.log

上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。

mysqldumpslow -t 10 -s t -g “left join” host-slow.log

这个是按照时间返回前10条里面含有左连接的sql语句。

 

 

 

 

 

参考链接 http://www.2cto.com/database/201306/222769.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值