慢日志

本文档将指导您如何使用阿里云数据库自治服务(DAS)全新升级的全局慢日志分析功能。通过创建和管理用户组,您可以对多个数据库实例进行分组、集中监控和统一分析,从而高效地发现、诊断并治理慢SQL,解决因慢查询导致的数据库负载高、性能抖动等问题,保障核心业务的稳定。

核心概念:用户组

用户组是新版慢日志分析功能的核心。您可以把它理解为一个自定义的实例监控看板。通过创建用户组,您可以:

  • 逻辑分组:将不同业务线的数据库实例划分到不同的组中进行管理,每个用户组最多可管理10个实例。

  • 统一视图:在一个视图下,同时查看组内所有实例的慢日志趋势、事件分布和SQL统计。

  • 高效切换:在不同业务关注点之间快速切换,而无需反复勾选实例。

说明

DAS 会默认创建一个系统组:TOP慢日志组,每小时自动筛选您账号下最近一天有重要异常事件且慢日志数量最多的 5个实例,加入该组,便于您快速定位和处理关键问题。

前提条件

  • 支持的数据库引擎:请确保您的数据库实例属于以下支持的引擎类型:

    • 关系型数据库:

      • RDS MySQL, PolarDB MySQL版, MyBase MySQL

      • RDS SQL Server, MyBase SQL Server

      • RDS PostgreSQL, PolarDB PostgreSQL版, PolarDB PostgreSQL版(兼容Oracle)

      • PolarDB-X 2.0

    • NoSQL数据库:

      • 云数据库 Tair(兼容Redis), MyBase Redis

      • 云数据库MongoDB

  • 实例接入:目标数据库实例必须已成功接入DAS。详情请参见接入接入数据库实例

  • 地域支持:

    • 慢日志明细数据:支持所有地域。

    • 慢日志实时统计数据:支持中国内地、中国香港、新加坡、马来西亚(吉隆坡)、印度尼西亚(雅加达)、日本(东京)、德国(法兰克福)、英国(伦敦)、美国(硅谷)、美国(弗吉尼亚)地域。

  • 自建数据库:新版的慢日志分析页面目前不支持自建数据库实例。

  • 慢日志阈值:慢日志的记录由数据库内核本身控制。DAS负责分析,不负责设置阈值。您需要登录到具体的数据库实例去配置慢日志的阈值参数(例如MySQL的 long_query_time)。

操作流程

进入全局慢日志页面

  1. 登录 DAS控制台

  2. 在左侧导航栏中,选择智能运维中心 > 慢日志

  3. 点击右上角的返回旧版按钮,可切换到旧版视图,相关文档可参考慢日志(旧版)

管理与切换用户组

  1. 切换用户组:在页面左上角的下拉菜单中,可以选择不同的用户组来切换分析视图。

  2. 创建用户组:点击新增用户组按钮。在弹出的对话框中,输入用户组名称。点击确认完成创建。

    image

  3. 管理用户组:

    • 编辑/删除组:在用户组面板中,点击用户组名称旁的操作图标,可对已创建的用户组进行重命名或删除。

    • 添加实例:进入目标用户组后,点击面板下方的新增更多实例按钮,在弹出的对话框中:

      • 可选实例中单击某个实例,即可将其添加到当前用户组;

      • 已选实例中单击已选实例,可将其从当前用户组中移除。

        image

    • 删除实例:在当前用户组的实例列表中,点击实例卡片上的 × 按钮,即可移除该实例。

    • 隐藏实例:在当前用户组的实例列表中,点击实例卡片上的image按钮,即可将该实例从视图中隐藏,其慢日志信息(包括趋势、事件和慢日志列表)将不再展示;再次点击可取消隐藏,恢复显示。

    • 用户组另存为:点击另存为按钮,可基于当前用户组的实例配置创建一个新的用户组。

    • 实例权限:实例卡表蓝色代表有权限,无权限的实例将以黄色高亮显示,您只能看到其ID,无法查看具体数据。可自定义创建用户组,排除无权限的实例,确保组内仅包含可访问的实例

      image

分析趋势与事件

  1. 慢日志趋势:选择时间范围后,顶部的趋势图会展示当前用户组内所有实例的慢日志总数与趋势。这有助于您快速定位性能抖动的发生时间点。

    image

  2. 事件分布:趋势图下方展示了指定时间范围内的关键数据库事件,包括:

    • 优化事件:出现SQL优化分析或者产生优化建议的事件。

    • 安全事件:出现中高危安全风险的SQL攻击、配置漏洞等事件。

    • 限流事件:出现SQL限流、自动SQL限流动作的事件。

    • 自动扩缩容事件:出现自动配置的扩容、缩容动作的事件。

定位并诊断慢SQL

页面下方的慢日志列表是核心分析区域,它聚合了当前用户组内所有实例的慢日志信息。

  1. 全局统计:列表默认聚合所有慢SQL,展示其执行次数、最大执行耗时、最大锁等待耗时、最大扫描行数、最大返回行数及最大 CPU 耗时。

    image

  2. 单实例下钻:点击实例ID/名称旁的image箭头,可以对该实例的慢日志进行详细分析。

  3. 在实例的慢日志信息中,你可以看到慢日志趋势事件分布慢日志统计慢日志明细

    • 您可以在慢日志趋势图中选择某个时间点,查看该时间点的慢日志统计慢日志明细

      说明

      如果慢日志语句内容过长,没有完整展示,您可以将鼠标指针放置在对应的慢日志语句上,系统将以弹框的形式展示完整的慢日志语句。

    • 慢日志统计慢日志明细页签中单击image,可以将慢日志信息保存到本地查看。

    • 单击image,可携带当前已选择和输入的参数,跳转至OpenApi控制台,进行API调试。

    • 事件分布区域:可以查询到指定时间范围内的慢日志事件,单击后可查询事件详情。

      image

    • 慢日志统计区域:

      • 在列表上侧,可选择过滤条件,对数据进行筛选,不同的数据库引擎可筛选条件不同。

      • 单击目标SQL模板Query ID列的数据ID,可查看包含用户分布、客户端分布和指标趋势的相关性及明细列表。

      • 单击目标SQL模板操作列的优化,在弹出的SQL诊断优化对话框中,查看SQL诊断结果。

        若您采纳诊断建议,单击页面右上角的复制,并将优化后的SQL粘贴到数据库客户端或DMS上执行,若不采纳诊断建议,可直接单击取消结束诊断。

        说明

        DAS会根据SQL的复杂程度、对应表的数据量、数据库负载等进行SQL诊断,诊断建议的返回时间可能会超过20秒。完成诊断后,SQL诊断引擎会给出诊断结果、优化建议和预期优化收益,您可以根据诊断结果确认是否采纳建议。

      • 单击目标SQL模板操作列的限流,在SQL限流页面配置限流参数,对目标SQL进行限流。详细操作请参见SQL限流

      • 对于PolarDB MySQL数据库实例,单击目标SQL模板操作列的IMCI,查看列存索引(IMCI)的相关文档。

        说明
        • PolarDB MySQL数据库实例未购买列存索引节点,且慢日志的最大执行时间超过20秒,最大扫描行超过20万行时,显示IMCI按钮。

        • 对于大数据量复杂查询,推荐使用列存索引(IMCI)提升查询性能。

    • 慢日志明细区域,单击目标SQL操作列的优化限流,也可对目标SQL进行SQL诊断优化SQL限流

常见问题

  • Q: 为什么我看不到任何慢日志数据?

    A: 由于采用实时计算窗口聚合技术,慢日志最新统计数据会晚于当前时间3分钟展示。同时也请检查:

    • 数据库实例的慢日志功能是否开启且阈值合理;

    • 所选时间范围内是否确实有慢日志产生;

    • 当前账号是否拥有目标实例的DAS访问权限。

  • Q: 子账号没有权限查看或管理用户组怎么办?

    A: 需要管理员对子账号进行账号级别的 action 授权,该授权仅涉及对慢日志全局组的操作权限修改,不改变子账号对实例的其他数据权限。

    • 全局组管理员策略:例如:DASGlobalGroupAdmin。该策略可以增删改查全局组。

      image.png

      {
        "Version": "1",
        "Statement": [
          {
            "Action": [
              "hdm:DescribeGlobalGroups",
              "hdm:CreateGlobalGroup",
              "hdm:DeleteGlobalGroup",
              "hdm:ModifyGlobalGroup"
            ],
            "Resource": "*",
            "Effect": "Allow"
          }
        ]
      }
    • 全局组只读策略,例如:DASGlobalGroupReadOnly。该策略只能查看全局组。

      image

      {
        "Version": "1",
        "Statement": [
          {
            "Action": "hdm:DescribeGlobalGroups",
            "Resource": "*",
            "Effect": "Allow"
          }
        ]
      }
  • Q:为什么部分实例显示为黄色(当前用户无实例的访问权限)?

    A:黄色标识表示子账号无该实例的数据访问权限,可通过以下两种方式解决:

    • 联系管理员:为子账号添加该实例的访问权限;

    • 授予全局组权限:建议授予DASGlobalGroupAdmin权限,以便子账号按需创建用户组,并批量查看其有权限的实例数据。

相关文档

您可以开启DAS自动治理功能,以便在数据库实例出现慢SQL时自动进行优化。