慢日志

慢日志问题极大地影响数据库的稳定性,当数据库出现负载高、性能抖动等问题时,数据库管理员或开发首先会查看是否有慢日志在执行。数据库自治服务DAS(Database Autonomy Service)支持慢日志分析功能,会统计并分析数据库中执行时间超过阈值的请求,帮助您快速定位并解决数据库性能问题,提高系统的稳定性和可靠性。

视频介绍

前提条件

目标数据库实例为云数据库MongoDB副本集实例、分片集群实例。

背景信息

慢日志由数据库内核输出,不同数据库引擎的配置参数及阈值不相同,具体的配置参数和阈值请参见对应数据库引擎的官方文档。

操作步骤

  1. 登录DAS控制台

  2. 在左侧导航栏中,单击智能运维中心 > 实例监控

  3. 找到目标实例,单击实例ID,进入目标实例详情页。

  4. 在左侧导航栏单击请求分析 > 慢日志

  5. 选择需要查看的时间段,查看该时间段内慢日志趋势事件分布慢日志统计慢日志明细

    说明

    选择时间范围时,查询结束时间需晚于查询开始时间,且查询开始时间和查询结束时间的间隔不能超过7天,您可以查询最近一个月内的慢日志信息。

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

      说明

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

    • 对于分片集群实例,在节点ID下拉框区域,可以查看每个节点的慢请求数量。

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

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

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

      image

    • 慢日志统计区域,单击目标慢日志模板操作列的详情按钮,查看该慢日志的慢日志样本

    • 慢日志统计区域,单击目标慢日志模板操作列的优化按钮,在弹出的优化对话框中,查看诊断结果。

      说明

      当前优化功能仅支持操作类型query的慢日志场景,主要提供索引优化建议,具体支持范围如下:

      支持的场景:

      • 单字段查询:例如db.col.find({ a: 1 }),若命中慢日志,将推荐创建对应索引:db.col.createIndex({ a: 1 })

      • 多字段联合查询:例如 db.col.find({ a: 1, b: 1 }),若命中慢日志,将推荐创建复合索引:db.col.createIndex({ a: 1, b: 1 })

      暂不支持的场景:

      • 已存在的索引不会重复推荐;

      • 不支持特殊类型的索引,如 textuniquehash 等;

      • 不支持包含复杂逻辑操作符的查询,如 $or$and 等;

      • 不支持对 find 之外的操作(如排序 $sort、排序规则 $collation 等)生成索引建议。

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

      重要

      新增索引可能导致其他查询执行计划劣化,并对实例性能、存储空间等资源产生消耗。用户采纳建议前需自行评估其对其他关联查询以及实例资源消耗等潜在影响的风险。

常见问题

Q:为什么能够正常访问旧版慢日志,而访问新版慢日志时却会出现权限错误的提示(例如,NoPermissionForbidden.RAM)?

A:新版慢日志页面经过重新设计,提供了更为强大的数据过滤和筛选功能,其所需的权限策略(Action)也与旧版慢日志有所不同。若您没有对应的权限策略,则无法正常访问新版慢日志页面。请参考RAM用户授权文档,为RAM用户授予如下权限策略:

  • 必要权限:慢日志趋势图数据(DescribeSlowLogHistogramAsync)、慢日志模板统计数据(DescribeSlowLogStatistic)、慢日志明细数据(DescribeSlowLogRecords)、事件中心数据(GetInstanceEventWithGroupType)、性能趋势数据(GetPerformanceMetrics)。

  • 建议权限:对SQL进行打标(CreateSqlTag)、获取SQL标签(DescribeDasQueryTagNames)。