慢日志问题极大地影响数据库的稳定性,当数据库出现负载高、性能抖动等问题时,数据库管理员或开发首先会查看是否有慢日志在执行。数据库自治服务DAS(Database Autonomy Service)支持慢日志分析功能,会统计并分析数据库中执行时间超过阈值的SQL语句,并提供相应的治理方案,帮助您快速定位并解决数据库性能问题,提高系统的稳定性和可靠性。
前提条件
数据库引擎为:
RDS MySQL、PolarDB MySQL版、MyBase MySQL、自建MySQL
RDS SQL Server、MyBase SQL Server
RDS PostgreSQL、PolarDB PostgreSQL版
云数据库 Tair(兼容 Redis)、自建Redis
PolarDB PostgreSQL版(兼容Oracle)
PolarDB-X 2.0
云数据库MongoDB、自建MongoDB
重要RDS MySQL和RDS PostgreSQL基础系列不支持慢日志分析功能。
全局慢日志趋势仅支持中国内地的RDS MySQL、MyBase MySQL和PolarDB MySQL版。
目标数据库实例已经接入DAS,详情请参见接入数据库实例。
背景信息
慢日志由数据库内核输出,不同数据库引擎慢日志的配置参数及阈值不相同,具体的配置参数和阈值请参见对应数据库引擎的官方文档。
查看单个实例的慢日志
本文以RDS MySQL数据库为例介绍如何查看单个实例的慢日志。
登录DAS控制台。
在左侧导航栏中,单击实例监控。
找到目标实例,单击实例ID,进入目标实例详情页。
在左侧导航栏单击请求分析 > 慢日志。
在慢日志分析页签,选择需要查看的时间段,查看该时间段内慢日志趋势、慢日志统计和慢日志明细。
说明选择时间范围时,查询结束时间需晚于查询开始时间,且查询开始时间和查询结束时间的间隔不能超过一天,您可以查询最近一个月内的慢日志信息。
您可以在慢日志趋势图中单击某个时间点,查看该时间点的慢日志统计和慢日志明细。
您可以单击导出慢日志,将慢日志信息保存到本地查看。
在慢日志统计区域:
单击目标SQL模板操作列的样本,查看该SQL的慢日志样本 。
单击目标SQL模板操作列的优化,在弹出的SQL诊断优化对话框中,查看SQL诊断结果。
若您采纳诊断建议,单击页面右上角的复制,并将优化后的SQL粘贴到数据库客户端或DMS上执行,若不采纳诊断建议,可直接单击取消结束诊断。
说明DAS会根据SQL的复杂程度、对应表的数据量、数据库负载等进行SQL诊断,诊断建议的返回时间可能会超过20秒。完成诊断后,SQL诊断引擎会给出诊断结果、优化建议和预期优化收益,您可以根据诊断结果确认是否采纳建议。
您也可以单击专家服务,付费购买数据库专家服务,为您提供云数据库产品本身能力范围之外的专业的数据库专家服务,主要包括紧急救援、健康诊断、性能调优、护航保障、数据迁移等。
单击目标SQL模板操作列的限流,在SQL限流页面配置限流参数,对目标SQ进行限流。详细操作请参见SQL限流。
对于PolarDB MySQL版数据库实例,单击目标SQL模板操作列的IMCI,查看列存索引(IMCI)的相关文档。
说明当PolarDB MySQL版数据库实例未购买列存索引节点,且慢日志的最大执行时间超过20秒,最大扫描行超过20万行时,显示IMCI按钮。
对于大数据量复杂查询,推荐使用列存索引(IMCI)提升查询性能。
在慢日志明细区域,单击目标SQL操作列的优化和限流,也可对目标SQL进行SQL诊断优化和SQL限流。
查看全局慢日志
若您有多个数据库实例,您可以在全局慢日志趋势页面,查看所选数据库引擎整体的慢日志趋势以及TOP10实例的慢日志统计。
全局慢日志趋势仅支持中国内地的RDS MySQL、MyBase MySQL和PolarDB MySQL版。
登录DAS控制台。
在左侧导航栏中,单击请求分析 > 慢日志,查看全局慢日志趋势和TOP 实例统计信息。
说明选择时间范围时,查询结束时间需晚于查询开始时间,您可以查询最近十四天内的慢日志信息。
常见问题
Q:对于RDS MySQL和PolarDB MySQL版数据库实例,为什么会出现慢日志记录的SQL执行完成时间与SQL语句的实际执行时间不同?
A:通常情况下是执行SQL语句修改了时区。慢日志记录的SQL执行时间的时区,存在会话级别、数据库级别和系统级别。慢日志时间设置逻辑为:当数据库存在时区时,以数据库的时区为准,否则以系统时区为准。当通过SQL语句修改了会话级别的时区时,可能导致慢日志记录的时区无法正常转换。
相关文档
您可以开启DAS的自动治理功能,以便在数据库实例出现慢SQL时自动进行优化。