查看慢日志明细

本文介绍了RDS MySQL慢日志明细的查看方法,以及慢日志的相关问题及其解决方案,包括SQL记录规则、截断问题、时间差异原因以及统计个数差异等。

功能简介

RDS MySQL慢日志功能默认开启,详情请参见RDS MySQL慢日志的采集策略。查看其它类型日志,请参见查看错误日志和慢日志

注意事项

  • 如果一分钟内实例中产生的慢日志超过600条,可能会导致慢日志丢失。您可以通过升级内核小版本20191212版本以上减少该情况。

  • 如果SQL语句长度超过8192字节,慢SQL将无法记录完整的SQL内容。此外,SQL洞察日志也无法记录完整SQL。当前SQL截断长度限制(8192字节)无法调整。如果需要明确完整SQL内容,建议从应用端定位完整的SQL请求内容。

通过慢SQL页面查询

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏选择自治服务 > SQL

  3. 慢日志分析页签下,选择需要查看的时间范围后,即可查看到对应的慢日志统计和慢日志明细。

    说明

    您也可以访问RDS实例详情页的日志管理页面,在慢日志明细页签下查看慢日志明细。

    image

    重要
    • 慢日志明细中包含SQL语句、访问来源、数据库、执行耗时等信息。其中慢日志采集时间的统计规则在早期版本中,该时间为SQL执行结束时间,而自20211231(5.7.35)、20220530(8.0.25)起,该时间为SQL开始执行的时间。

    • 如果您需要导出慢日志明细,请参见慢日志分析

常见问题

什么样的SQL会进入RDS MySQL慢日志中?

  • 基于执行时间:执行时间超过参数long_query_time配置阈值的SQL会被记录到慢日志中。默认值为1秒,即未调整慢日志阈值的情况下,执行时间超过1秒的SQL会被记录。

  • 基于索引使用情况:如果参数log_queries_not_using_indexes=ON,即使SQL执行时间未超过long_query_time,未使用索引的SQL也会被记录到慢日志中。默认情况下,log_queries_not_using_indexes参数为OFF。

为什么RDS MySQL慢日志记录的SQL执行完成时间与实际SQL执行时间不同?

通常情况下可能是执行SQL语句修改了时区。慢日志记录的SQL执行时间的时区,存在会话级别、数据库级别和系统级别。慢日志时区设置逻辑如下:

当数据库存在时区时,以数据库的时区为准,否则以系统时区为准。当通过SQL语句修改了会话级别的时区时,可能导致慢日志记录的时区无法正常转换,从而出现时间差异。

为什么SHOW PROCESSLIST查看到的会话SQL执行时间超过了慢日志阈值,但未被记录到RDS MySQL慢日志中?

如果通过SHOW PROCESSLIST查看到的会话SQL执行时间超过慢日志阈值,但未被记录到慢日志中,通常是因为该SQL被手动或自动KILL掉。在这种情况下,对应的SQL不会被记录到慢日志明细中。