深圳全飞鸿

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 889|回复: 2
打印 上一主题 下一主题

mysql慢查询配置

[复制链接]

800

主题

1379

帖子

7704

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7704
跳转到指定楼层
楼主
发表于 2019-9-13 18:37:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhgc 于 2019-9-13 18:51 编辑

配置慢查询前记住这四件事:

1. 检查slow_log表的引擎,如果是CSV要改为MYISAM

show create table mysql.slow_log

CREATE TABLE `slow_log` (
  `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `user_host` mediumtext NOT NULL,
  `query_time` time NOT NULL,
  `lock_time` time NOT NULL,
  `rows_sent` int(11) NOT NULL,
  `rows_examined` int(11) NOT NULL,
  `db` varchar(512) NOT NULL,
  `last_insert_id` int(11) NOT NULL,
  `insert_id` int(11) NOT NULL,
  `server_id` int(10) unsigned NOT NULL,
  `sql_text` mediumtext NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'

  1. set global slow_query_log=0;
  2. ALTER TABLE mysql.slow_log ENGINE = MYISAM
复制代码


2. slow_query_log 与 log_slow_queries  的关系
slow_query_log      :  指定是否开启慢查询日志
log_slow_queries    :  指定是否开启慢查询日志(该参数要被slow_query_log取代,做兼容性保留)

3. 输出要改为TABEL
log_output='TABLE'

show global variables like '%output%'

默认是FILE, 要改为TABLE

  1.     set global slow_query_log=0;
  2.     set global log_output='TABLE';
复制代码


4. slow_log表的数据删不掉的,只能truncate

truncate   mysql.slow_log



接下来,看下数据库中的当前配置:

  1.     show global variables like '%output%'
  2.    
  3.     show global variables like '%slow%'
  4.    
  5.     show global variables like '%long%'
复制代码



回复

使用道具 举报

800

主题

1379

帖子

7704

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7704
沙发
 楼主| 发表于 2019-9-13 18:47:41 | 只看该作者

慢查询的开启与关闭



1.可以配置my.ini文档
  1. [mysqld]
  2. log_output='TABLE'
  3.    
  4. slow_launch_time=1
  5. long_query_time=1
  6.    
  7. log_slow_queries=1
  8. slow_query_log=1
复制代码


2.可以直接修改变量
   
  1. set global slow_query_log=0; //先关闭
  2. truncate   mysql.slow_log;
  3. set global log_output='TABLE';
  4. set global slow_launch_time=1;
  5. set global long_query_time=1;  //注意啊,不是第一次遗漏了
  6. set global slow_query_log=1;    //最后打开
复制代码

        

    show global variables like '%slow_query%'
    show global variables like '%general_log%'
    select * from mysql.general_log
    select * from mysql.slow_log
        
    show warnings;
回复 支持 反对

使用道具 举报

800

主题

1379

帖子

7704

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7704
板凳
 楼主| 发表于 2019-9-13 18:53:49 | 只看该作者

MYSQL慢查询
慢查询还有一些参数,再研究一下:
  1.     long-queries-not-using-indexes   --记录所有没有使用到索引的查询语句
  2.     min_examined_row_limit=1000    --记录那些由于查找了多余1000次而引发的慢查询
  3.     long-slow-admin-statements     --记录那些慢的optimize table,analyze table和alter table语句
  4.     log-slow-Slave-statements      --记录由Slave所产生的慢查询
复制代码


long-queries-not-using-indexes
这个参数在my.ini中设置时,一样只要放置就行,不需要付值:
  1.     log_output='TABLE'
  2.     slow_launch_time=1
  3.     slow_query_log=1
  4.     long_query_time=1
  5.     skip-name-resolve
  6.     log_queries_not_using_indexes
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|nagomes  

GMT+8, 2025-5-5 04:50 , Processed in 0.025261 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表