精华内容
下载资源
问答
  • 在MySQL中,慢查询日志是经常作为我们优化数据库的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是...下面这篇文章主要给大家介绍了关于MongoDB慢日志查询(profile)的相关资料,需要的朋友可以参考下。
  • 今天处理一个case: 数据库异常,连接数突增。...想着分析一下慢日志,可是一看慢日志都好几G了,而且是短日志格式,找到那个时间点相对比较难。于是写了一个脚本从慢日志按时间提取点日志。脚本: ...
  • 详解mysql慢日志查询

    2020-12-14 07:17:19
    慢日志查询作用 慢日志查询的主要功能就是,记录sql语句中超过设定的时间阈值的查询语句。例如,一条查询sql语句,我们设置的阈值为1s,当这条查询语句的执行时间超过了1s,则将被写入到慢查询配置的日志中. 慢查询...
  • MySQL 慢日志(slow log)是 MySQL DBA 及其他开发、运维人员需经常关注的一类信息。使用慢日志可找出执行时间较长或未走索引等 SQL 语句,为进行系统调优提供依据。 本文将结合一个线上案例,分析如何正确设置 ...
  • 先查看下慢日志是否被开启 show variables like '%slow_query_log'; Mysql默认是OFF,关闭。 开启慢日志 set global slow_query_log=1; 可以看到慢日志已经被开启了 慢日志是记录慢的sql,那具体什么才算是慢的...
  • 主要介绍了nginx php-fpm中启用慢日志配置,php-fpm慢日志slowlog设置可以让我们很好的看见哪些php进程速度太慢而导致的网站问题,可以让我们方便的找到问题的所在,需要的朋友可以参考下
  • 内涵 mysqlsla-2.03.tar.tar 包 mysqlsla之linux安装及使用.docx man_mysqlsla.txt
  • mysql慢日志查询

    2018-11-07 19:58:28
    mysql慢日志查询,介绍查询mysql中哪些是慢查询的内容
  • mysqldumpslow是一个用Perl脚本写的转存储慢日志查询程序。在慢日志文件比较大的时候,用文件查看命令去分析MYSQL慢日志文件,看起来就会比较费劲,也不能快速的统计出需要优化的SQL语句。 使用mysqldumpslow就可以...
  • Slowquery图形化显示MySQL慢日志工具
  • Mysql的慢日志

    2021-02-01 00:08:27
    二、慢日志参数:slow_query_log 慢查询开启状态slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)long_query_time 查询超过多少秒才记录三、查看...

    一.开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。

    二、慢日志参数:

    slow_query_log 慢查询开启状态

    slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)

    long_query_time 查询超过多少秒才记录

    三、查看慢查询相关参数:

    show variables like 'slow_query%';

    25a982ccca84a8d3944e0003d07a7861.png

    show variables like 'long_query_time';

    8609db7b4f84f1df2673614ac3303a10.png

    四、设置方法:

    方法一:全局变量设置

    a. 将 slow_query_log 全局变量设置为“ON”状态

    mysql> set global slow_query_log='ON';

    b.设置慢查询日志存放的位置

    mysql> set global slow_query_log_file='/usr/local/mysql/data/slow.log';

    c. 设置查询超时时间

    mysql> set global long_query_time=1;

    方法二:修改配置文件my.cnf,在[mysqld]下的下方加入:

    [mysqld]

    slow_query_log = ON

    slow_query_log_file = /usr/local/mysql/data/slow.log

    long_query_time = 1

    五:重启mysql 服务

    service mysqld restart

    六. 查看设置后的参数:

    63b9dc0b5c2c8e918dae08905933e126.png

    七:测试

    1、执行一条满查询SQL语句:

    mysql> select sleep(2);

    2.  查看日志结果:

    a89c21e6d5e6a56c5e44fa4655b15a12.png

    参考学习博客:https://www.cnblogs.com/luyucheng/p/6265594.html

    展开全文
  • MySQL慢日志功能分析及优化增强

    千次阅读 2018-05-17 15:04:59
    本文由 网易云 发布MySQL慢日志(slow log)是MySQL DBA及其他开发、运维人员需经常关注的一类信息。使用慢日志可找出执行时间较长或未走索引等SQL语句,为进行系统调优提供依据。本文结合线上案例分析如何正确...

    本文由 网易云 发布


    MySQL慢日志(slow log)是MySQL DBA及其他开发、运维人员需经常关注的一类信息。使用慢日志可找出执行时间较长或未走索引等SQL语句,为进行系统调优提供依据。本文结合线上案例分析如何正确设置MySQL慢日志参数和使用慢日志功能,并介绍网易云RDS对MySQL慢日志功能增强。

     

    MySQL参数组功能

     

    网易云RDS实例提供了参数组管理功能,可通过参数管理界面查看绝大部分常用的MySQL系统参数,用户可以了解当前运行值和建议值,如下所示:

     

    用户还可通过参数管理页面对所列的参数进行修改,点击“修改参数”按钮在线设置,点击“保存修改”即可一键完成MySQL主从节点的参数修改,如下图:

     

    查看参数管理界面不难发现,与慢查询相关的参数较多,这些参数是如何起作用的呢,相互关系又是如何,满足什么条件的SQL语句才会记录到慢日志中?只有了解了这些才能更好地利用慢日志进行系统调优和问题定位。我们以一个线上案例为依托来介绍如何正确配置慢日志参数:用户报告他们使用的多个RDS 5.7版本实例慢日志异常,明明执行了一分多钟的SQL语句,却没有记录到慢日志中。还提供了用于复现的SQL语句。

     

    慢日志参数正确配置姿势

     

    首先,我们需确认该实例是否开启了慢日志功能,默认情况下,MySQL慢日志功能是关闭的。慢日志开关参数为slow_query_log,可在mysqld启动命令行或配置文件中显式指定,若指定slow_query_log=1或不指定值,则表示开启慢日志,赋值为0表示关闭。用户可以在运行时动态开启和关闭。网易云RDS实例默认开启慢日志功能,我们确认了该用户未关闭实例的慢日志开关。

     

    接下来,需确认慢日志记录位置,MySQL使用log_output参数指定以文件(FILE)还是表(TABLE)的方式来保存慢日志,需要强调的是,仅指定log_output而将slow_query_log置为0并不会记录慢日志,也就是说slow_query_log才是慢日志的开关。若使用文件形式记录慢日志,则可通过slow_query_log_file指定文件名,如果用户没有显式指定slow_query_log_file,则MySQL将其初始化为host_name-slow.log,host_name即为运行mysqld的主机名,慢日志文件默认位于MySQL数据目录。网易云RDS实例不允许用户修改日志文件路径,但可以配置log_output参数,通过查询,确认该实例以文件方式记录慢日志,查看日志文件确认没有用户所述的SQL语句。

     

    由于用户提供了复现语句,我们执行了其SQL语句,确实1分多钟才返回,通过explain命令发现其未走索引,扫描了较多的记录数,再次查看慢日志仍没有记录该SQL语句。MySQL会记录满足执行时间超过long_query_time秒,扫描记录数超过min_examined_row_limit行的SQL语句。long_query_time参数最小值和默认值分别为1和10s,该参数可以精确到微秒(ms)。如果选择将慢日志记录到文件中,那么所记录的时间精确到微秒,如果记录到慢日志表(mysql.slow_log)中,那么仅精确到秒,微秒部分被忽略。网易云RDS实例允许用户设置这两个参数值,那么是不是用户调整了上述两个阈值,导致无法满足记录条件呢,进一步查询发现也不是问题原因所在。

     

    我们注意到MySQL还有个名为log_queries_not_using_indexes的参数用于控制是否记录未走索引的SQL查询,代码如下:

     

    重点关注箭头所指内容,如果查询未走索引或者索引无效,且相关参数开启,那么warn_no_index设置为true,若同时满足扫描记录数超过阈值,也会像慢查询一样被记录,那么是不是该参数未开呢?结果仍是否定的。

     

    问题原因之所在

     

    由于数据库实例中可能有较多不走索引的SQL语句,若开启log_queries_not_using_indexes,则存在日志文件或表容量增长过快的风险,此时可通过设置log_throttle_queries_not_using_indexes来限制每分钟写入慢日志中的不走索引的SQL语句个数,该参数默认为0,表示不开启,也就是说不对写入SQL语句条数进行控制。启用后,系统会在第一条不走索引的查询执行后开启一个60s的窗口,在该窗口内,仅记录最多log_throttle_queries_not_using_indexes条SQL语句。超出部分将被抑制,在时间窗结束时,会打印该窗口内被抑制的慢查询条数以及这些慢查询一共花费的时间。下一个统计时间窗并不是马上创建,而是在下一条不走索引的查询执行后开启。对应到该线上问题,log_throttle_queries_not_using_indexes被设置为10,在日志文件中看到周期性打印了如下内容:

     

    确实符合上面描述的现象,用户的慢日志应该是被抑制了,汇总到了359里面去。我们尝试将log_throttle_queries_not_using_indexes设置为0,再执行对应的SQL语句,果然在日志文件中记录了相应的SQL语句。这个线上问题似乎已经定位到了,就是系统产生的不走索引的慢日志太多,而设置的log_throttle_queries_not_using_indexes太小,导致无法正常记录用户未走索引的慢日志。但还有一个疑惑点没有解决,那就是log_throttle_queries_not_using_indexes为0时,每分钟并没有打印超过10条慢日志,更没有throttle提示的359条这么多,那么设置为10的时候用户提供的那条SQL语句应该被记录到慢日志中才对啊,为何没有记录,原因何在?其实,仔细看下MySQL记录不走索引的日志的代码逻辑可以找到答案:

     

    上图是记录慢日志的主逻辑,是否记录日志由函数log_slow_applicable控制,该函数先前已分析了一部分,我们进一步看该函数的其他相关内容,见下图红框:

     

    suppress_logging是个决定性的变量,只有它为false,该SQL语句才可能被记录。其结果就跟log_throttle_queries_not_using_indexes相关,我们进一步看下log_throttle_qni.log相关实现,如下图:

     

    eligible即为warn_no_index,inc_log_count()函数在1分钟内不走索引的语句总数超过log_throttle_queries_not_using_indexes时返回值为true,只有warn_no_index和inc_log_count()返回值都为true,suppress_current才为true,而suppress_current即为suppress_logging。

     

    通过对上述2个截图内容进行分析,可以解答之前的疑惑点:log_throttle_queries_not_using_indexes统计的是所有不走索引的语句,其中有些语句因为不满足扫描记录数的约束而不会记录到慢日志中,这就是为什么该值为10的时候,慢日志文件中并没有10条记录。因为这10条中有8条SQL语句由于扫描记录数太少并没有被记录。

     

    这也解惑了上图中359这个数字,它这个时间窗内不走索引的SQL语句总数。所以,log_throttle_queries_not_using_indexes是个很关键的参数,设置不当会无法正常记录不走索引的慢查询,导致慢日志功能部分失效。

     

    InnoSQL慢日志功能增强

     

    还有部分RDS实例用户问我们,为什么我的SQL语句执行时间没有超过所设置的long_query_time,而且走了索引,但还是被记录到慢日志中,是不是出Bug了?其实这不是Bug,而是因为网易云RDS使用的InnoSQL(网易维护的MySQL开源分支)版本对慢日志做了优化,除了考察SQL语句的执行时间外,还关注该查询所需的磁盘页面(Disk Page)数,因为所需的页面数目过多,也可能会对系统负载造成较大影响。为了能够量化统计,我们收集了SQL查询所需读取的总页面数和这些页面中实际进行IO的次数,分别记录为logical_reads和physical_reads,前者包括命中InnoDB Buffer Pool和未命中需要进行IO的页面请求。通过引入slow_query_type和long_query_io两个参数为用户提供该功能。前者可设置为0/1/2/3。1表示启用基于执行时间来记录慢日志,2表示基于搜索总页面数来记录慢日志,3是1和2的合集。所以在InnoSQL中,SQL查询只需满足执行时间够长或所需总页面数够多即可记录到慢日志中。代码实现片段如下:

     

    页面数阈值通过long_query_io参数来衡量,用户可动态设置,如果总页面数m_logical_reads超过了该值,即使执行时间未超标,也会被记录。相应的,RDS实例慢日志表结构和慢日志文件输出内容也增加了新的字段。

     

    上图即为InnoSQL版的slow_log表结构,其中,logical_reads和physical_reads为InnoSQL增加字段。同样的,慢日志文件的输出内容也增加了两个字段,如下所示:

     

    除了以上详细描述的内容外,MySQL慢日志模块还有如下几个特性值得关注:

    1. 进行慢日志统计及慢日志中所记录的时间并不包括该SQL语句开始执行前获取锁所需等待的时间;
    2. MySQL在SQL语句执行完且所持有的锁均已释放后才将其写入慢日志中,所以慢日志中的SQL语句记录顺序并不能准确反映这些SQL语句的实际执行顺序;
    3. 每条慢日志都包含一个时间戳,若写入文件中,log_timestamps 参数用于将慢日志时间戳转化为指定时区的时间。但该参数对于mysql.slow_log表中的慢日志不起作用;
    4. 可通过设置log_slow_slave_statements来开启MySQL从库的慢日志功能;ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP INDEX, OPTIMIZE TABLE, and REPAIR TABLE等表管理操作也能够被记录到慢日志中,可通过log_slow_admin_statements选项开启。


    网易云提供RDS服务,感兴趣的朋友欢迎点击免费试用。


    了解 网易云

    网易云官网:https://www.163yun.com/

    新用户大礼包:https://www.163yun.com/gift

    网易云社区:https://sq.163yun.com/

    展开全文
  • Mysql查看慢日志

    2019-11-18 10:59:33
    1、开启慢日志查询 set global slow_query_log='ON'; [SQL]set global slow_query_log='ON'; 受影响的行: 0 时间: 0.000s 2、查看慢日志是否开启ON为开启,OFF为关闭 show variables like 'slow_query%'; ...

    1、开启慢日志查询

    set global slow_query_log='ON';

    [SQL]set global slow_query_log='ON';
    受影响的行: 0
    时间: 0.000s

    2、查看慢日志是否开启ON为开启,OFF为关闭

    show variables like 'slow_query%';

    结果:慢日志已经开启以及日志文件所在位置

    3、设置慢日志时间

    show variables like 'long_query_time';  //显示当前慢日志的触发时间
    set global long_query_time=5;           //设置慢日志触发时间

    设置完成后需要重新连接或新建会话

    慢日志触发时间设置成功

    4、慢日志使用

    执行测试语句 :SELECT SLEEP(1)

    打开慢日志文件:

    # Time: 2019-11-18T03:12:24.893627Z
    # User@Host: root[root] @ localhost [127.0.0.1]  Id:   396
    # Query_time: 1.000057  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
    SET timestamp=1574046744;
    SELECT SLEEP(1);
    展开全文
  • 主要介绍了MYSQL5.7.9开启查询日志的技巧的相关资料,需要的朋友可以参考下
  • 今天小编就为大家分享一篇关于MySQL开启查询日志功能的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • MySQL慢日志实践小结

    2020-12-16 13:27:33
    慢日志查询作用 慢日志查询的主要功能就是,记录sql语句中超过设定的时间阈值的查询语句。例如,一条查询sql语句,我们设置的阈值为1s,当这条查询语句的执行时间超过了1s,则将被写入到慢查询配置的日志中. 慢...
  • Elasticsearch:Elasticsearch 中的慢日志

    千次阅读 2020-01-20 13:27:11
    Shard 级慢速搜索日志允许将慢速搜索(查询和获取阶段)记录到专用日志文件中。日志记录是任何应用程序不可缺的一部分。 对于像Elasticsearch这样的分布式解决方案,它必须处理大量的请求,因此日志记录不可避免,其...
  • 慢日志主要用来记录在数据库中执行时间超过指定时间的SQL语句。通过慢查询日志,可以查找出哪些语句的执行效率低,以便进行优化。本文简要介绍了MySQL和TiDB中的慢日志结构,通过横向对比加深对分布式数据库慢日志...
  • Redis慢日志查询

    千次阅读 2020-03-01 17:23:30
    Redis的慢日志查询功能用于记录执行时间超过给定时长的命令,用户可以通过这个功能产生的日志来监视和优化查询速度。 二、一条客户端命令的生命周期 命令发送 命令排队 命令执行 返回结果 注意: 慢查询只统计命令...
  • 根据mysql慢日志监控SQL语句执行效率 启用MySQL的log-slow-queries(慢查询记录)。
  • TIDB慢日志查看

    千次阅读 2019-07-20 14:59:40
    1.直接去慢日志文件查看,可以通过show variables like 'tidb_slow_query_file';查看慢日志路径。可以和mysql一样,用 pt-query-digest 直接分析慢日志文件。 MySQL [(none)]> show variables like 'tidb_slow_...
  • 阿里云RDS 慢日志 钉钉报警

    千次阅读 2019-08-26 09:53:32
    需求:通过阿里云sdk把阿里云rds慢日志通过钉钉报警。 SDK是阿里云为用户提供的开发工具,支持JAVA、PHP、C#等几种不同的语言,这里我打算用Python脚本调用钉钉api。在Python SDK里提供了一些模块,我们通过调用...
  • MongoDB慢日志查询

    千次阅读 2019-06-13 16:37:50
    说到MongoDB的慢日志分析,就不得不提到profile分析器,profile分析器将记录的慢日志写到system.profile集合下,这个集合是一个固定集合。我们可以通过对这个集合的查询,来了解当前的慢日志,进而对数据库进行优化...
  • mongo 慢日志分析

    千次阅读 2019-05-18 22:34:50
    说到mongo的慢日志分析,就不得不提到profile分析器,profile分析器将记录的慢日志写到system.profile集合下,这个集合是一个固定的集合。我们可以通过这个集合的查询,来了解当前的慢日志,进而对数据库进行优化 ...
  • 慢日志

    千次阅读 2016-07-08 10:36:01
    MYSQL查询配置 1. 查询有什么用? 它能记录下所有执行超过long_query_time时间的SQL语句, 帮你找到执行的SQL, 方便我们对这些SQL进行优化. 2. 如何开启查询? 首先我们先查看MYSQL服务器的查询状态是否...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 286,419
精华内容 114,567
关键字:

慢日志