1,配置开启
在mysql配置文件my.cnf中增加
log-slow-queries=/var/lib/mysql/slowquery.log (指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log)
------------------------------------
long_query_time=2 (记录超过的时间,默认为10s)//这里这点我就非常不明白,按照我在网上看的资料,都说的是单条记录的时间超过2秒才会被慢日志记录,但是实际结果却不是这样的。
-------------
例子(使用慢日志分析工具对慢日志分析的结果,按照time来排序的统计结果):
  Count: 90633  Time=0.16s (14099s)  Lock=0.00s (2s)  Rows=0.0 (0), 2users@2hosts
  
  UPDATE `t_seller_tb_account` SET `balance`=N,`create_date`='S' WHERE seller_tb_account_id =N
  
  Count: 316  Time=39.90s (12609s)  Lock=0.00s (0s)  Rows=7.8 (2480), 2users@6hosts
  
  SELECT
  COUNT(cca.fk_seller_id) AS checkin_sum,
  a1.agent_id,
  temp.vip_sum,
  a1.name,
  cca.end_date
  FROM t_agent a1
  LEFT JOIN v_all_seller_info v1
  ON a1.agent_id = v1.agent_id
  LEFT JOIN (SELECT
  COUNT(v.seller_id) AS vip_sum,
  v.agent_id
  FROM v_all_seller_info v,
  t_agent a
  WHERE v.vip_or_gen = 'S'
  AND a.deleted = N
  AND a.activated = N
  AND v.agent_id = a.agent_id
  GROUP BY v.agent_id) AS temp
  ON temp.agent_id = v1.agent_id
  LEFT JOIN t_checkin_activity cca
  ON cca.fk_seller_id = v1.seller_id
  AND cca.checkin_space_activated = N 
  AND cca.checkin_content_activated = N 
  AND DATE_FORMAT(NOW(),'S') <= DATE_FORMAT(cca.end_date,'S') 
  WHERE a1.activated = N
  AND a1.deleted = N
  AND a1.is_vno_agent = N
  GROUP BY a1.agent_id
  ORDER BY checkin_sum DESC,end_date DESC
  LIMIT N
 ---------
具体sql就不用看了,公司项目里面的,比较扯淡的一些sql(肯定跟表还是有很大关系的)。上面内容是把慢日志用一个工具分析出来的,不过我还不知道别人是用什么工具分析出来的。我现在想先弄明白这里面的慢日志配置参数
long_query_time=2
到底是什么含义。
谢谢高人指点!

解决方案 »

  1.   

    long_query_time=2 (记录超过的时间,默认为10s)//这里这点我就非常不明白,按照我在网上看的资料,都说的是单条记录的时间超过2秒才会被慢日志记录,但是实际结果却不是这样的。--------
    帖子都沉了,都没人看啊,没事来打个酱油呗!
      

  2.   

    long_query_time=2:查询超过2秒才记录单独运行此SQL要多长时间
      

  3.   

    下面有统计结果:
     Count: 90633 Time=0.16s (14099s) Lock=0.00s (2s) Rows=0.0 (0), 2users@2hosts 
      

  4.   

    这个统计只是个大概值,不能说明你的SQL实际运行时间。慢查询日志里的SQL作为参考。
      

  5.   

    Count: 90633 Time=0.16s (14099s) Lock=0.00s (2s) Rows=0.0 (0), 2users@2hosts这个时间time的值是平均值....14099/90633 得到的....
    分析慢查询的关键是分析你的SQL语句: 
    UPDATE `t_seller_tb_account` SET `balance`=N,`create_date`='S' WHERE seller_tb_account_id =N先转换成SELECT 语句用EXPLAIN子句看下执行计划,再分析...
    #****************************************#
    MySQL技术及运维自动化网:www.mysqlops.com新浪微博账号:http://weibo.com/mysqlops
    #****************************************#