开启mysql慢查询

  • 发表时间:2019-03-13 19:22:06
  • 187人已阅读
摘要开启mysql慢查询

在配置文件my.cnf或my.ini中

配置

log_slow_queries

log_query_time


默认情况下,mysql不会记录慢查询

linux开启方法:

慢查询如何设置——

vim /etc/my.cnf

在[mysqld]下添加

log_slow_queries = on#开启慢查询日志记录
slow_query_log_file = /var/log/mysql/xdadb-slow.log#慢查询日志记录文件,请保证mysql能读写
long_query_time = 3#慢查询阀值

mysql重启——

service mysqld restart

cat  /var/log/mysql/xdadb-slow.log


windows开启方法:

先关闭mysql,在控制台启动

show variables是查看mysql系统变量,各个变量的含义可以从手册查到

show variables like '%quer%';查询是否开启了慢查询!!


第一步:修改my.ini(mysql配置文件)
  在my.ini中加上下面两句话
  log-slow-queries = “D:\wamp\mysql_slow_query.log”
  long_query_time=5
  第一句使用来定义慢查询日志的路径(因为是windows,所以不牵涉权限问题)
  第二句使用来定义查过多少秒的查询算是慢查询,我这里定义的是5秒
 第二步:查看关于慢查询的状态
  执行如下SQL语句来查看mysql慢查询的状态
  show variables like '%slow%';
执行结果会把是否开启慢查询、慢查询的秒数、慢查询日志等信息打印在屏幕上。
  第三步:执行一次慢查询操作
  其实想要执行一次有实际意义的慢查询比较困难,因为在自己测试的时候,就算查询有20万条数据的海量表,也只需要0.几秒。我们可以通过如下语句代替:
  SELECT SLEEP(10);
  第四步:查看慢查询的数量
  通过如下sql语句,来查看一共执行过几次慢查询:

  show global status like '%slow%';


日志分析:

Time:记录慢 查询发现的时间

Query_time:该值过大,说明记录太多,或者业务逻辑很复杂

(类似情景,某个人去银行,服务员为他服务了个把小时,别人要存钱不得不等他)

Lock_time:该值过大,说明等待的时间长,应该解决数据量吞吐量的问题,可以读写分离,来分担查询的压力

(类似情景,10点去银行取钱12点人才回来,解决办法增加柜台工位)



另外:


步骤:

1. 要这样启动mysql 

进入到 mysql安装目录 

老版本的可能是这样的cmd>mysqld.exe --safe-mode --slow-query-log

2.  启动 xx>bin\mysqld.exe –slow-query-log   这点注意 

测试 ,比如我们把

select * from emp where empno=34678 ;

***********


Top