慢SQL
该模块提供指定时间段内的慢SQL分析功能。从用户、IP、SQL模板等进行多维统计,展示统计结果并支持指定排序,识别慢SQL的精准来源,方便用户快速优化业务。
查看慢日志
1、登录管理控制台。
单击管理控制台左上角的,选择区域和项目。
单击页面左上角的,选择“数据库 > 数据管理服务 DAS”,进入数据管理服务页面。
在左侧的导航栏中单击“DBA智能运维 > 实例列表”页签,进入DBA智能运维实例列表页面。
在实例列表页面右上角,按照引擎、实例名称筛选实例。
选择目标实例,单击“详情”,进入DBA智能运维总览页面。
单击“慢SQL”,进入慢日志页面。
选择需要查看的时间段,查看该时间段内慢日志趋势、慢日志统计和慢日志明细。
- 慢日志趋势
在慢日志趋势图中单击某个时间点,查看该时间点的慢日志或CPU使用率。
在慢日志区域左上角通过切换实例或者节点,查看实例或指定节点的慢日志趋势。
- 慢日志明细
在慢SQL页面下方查看慢日志明细。慢日志明细提供了当前时间段的慢日志详情,包含执行时间、SQL语句、库名、客户端、用户、执行耗时、锁等待耗时、扫描行、返回行等信息。
单击导出,将慢日志明细导出到指定OBS进行存储。慢日志明细导出成功后,可以单击“查看导出列表”,查看慢日志明细导出记录,也可以通过下载将慢日志明细下载到本地进行查看。
说明导出及查看导出列表功能仅支持付费实例使用,免费实例暂不支持。
单击操作列的诊断,对当前的SQL模板进行诊断。
- 慢日志统计
单击SQL模板操作列的“样本”,查看当前SQL模板的样本信息 。
在慢日志统计页面,单击“导出”将慢日志导出到指定的OBS进行存储。慢日志导出成功后,可以单击“查看导出列表”,查看慢日志导出记录,也可以通过下载将慢日志下载到本地进行查看。
说明导出及查看导出列表功能仅支持付费实例使用,免费实例暂不支持。
慢日志存储与归档
- 慢日志存储
开启DAS收集慢日志开关后,DAS会将SQL的文本内容存储到OBS中,以便进行分析。
- 慢日志归档
慢日志每三分钟会自动执行归档,您也可以通过单击“生成最新慢日志文件”立即触发归档,查看最新的数据。
慢日志归档最近10天的慢日志。
您还可以通过下载,将归档的慢日志下载到本地进行查看。
删除慢日志
在慢SQL页面,您可以选择全部删除或者自定义删除指定时间段的慢日志信息。
说明慢日志删除后无法恢复,请谨慎操作。
全量SQL洞察
在实例开启DAS收集全量SQL的前提下,该模块基于全量SQL数据进行分析,并提供多维度的分析、搜索、过滤的能力,帮助用户全面洞察SQL,TOP SQL快速定位异常原因,保障数据库稳定运行。
全量SQL洞察功能在对实例性能影响极小(5%以内)的情况下,记录了全量SQL,提供了访问最频繁、更新最频繁的表,锁等待时间最长的SQL等多维度的分析、搜索、过滤能力。
使用须知
- 关闭DAS收集全量SQL后,DAS将不再采集您新产生的SQL,已经收集的SQL也会被删除,请您谨慎操作。
- 全量SQL功能不能保证记录全部数据,针对RDS for MySQL引擎,会有如下使用限制:
当前全量SQL受内存缓冲区限制,业务量大的场景下,全量SQL有较小概率因缓冲区满,存在丢弃部分记录。
当前全量SQL单条记录超过4096字节时,会默认丢弃该条记录。
此限制在MySQL 5.7.33.3及以后版本可以通过设置参数rds_sql_tracer_reserve_big_records来选择是否丢弃。您可以在界面,将该参数设为ON,即表示单条记录超过4096字节也不被丢弃。
TOP SQL执行耗时分布
1、登录管理控制台。
单击管理控制台左上角的,选择区域和项目。
单击页面左上角的,选择“数据库 > 数据管理服务 DAS”,进入数据管理服务页面。
在左侧的导航栏中单击“DBA智能运维 > 实例列表”页签,进入DBA智能运维实例列表页面。
在实例列表页面右上角,按照引擎、实例名称或者实例IP筛选实例。
选择目标实例,单击“详情”,进入DBA智能运维总览页面。
单击“全量SQL洞察”,进入全量SQL洞察页面。
单击“开启DAS收集全量SQL”,可获取当前实例所执行过的SQL信息。
说明DAS收集全量SQL功能开启后立即生效。
在“TOP SQL”页签中,查看TOP SQL执行耗时分布情况。
您可以根据需要设置时间段,选择“近1小时”、“近3小时”、“近6小时”,查看当前时间段内的TOP SQL执行耗时分布。也可以选择上述以外时间段进行查看,间隔不得超过一天。
执行耗时分布展示了选定时间范围内所有SQL的执行耗时分布,共分为以下4个区间。
- <100ms:执行耗时<100ms的SQL执行次数
- 100ms-500ms:100ms≤执行耗时<500ms的SQL执行次数
- 500ms-1s:500ms≤执行耗时<1s的SQL执行次数
- 1s:执行耗时>1s的SQL执行次数
上述4个区间内的SQL执行次数是根据用户选择的时间段来计算的。
- 如果用户选择1小时以内(包括1小时)的时间段,执行耗时分布每10秒计算一次。
- 如果用户选择6小时以内(包括6小时)的时间段,执行耗时分布1分钟计算一次。
- 如果用户选择大于6小时的时间段,执行耗时分布每5分钟计算一次。
DAS支持查看实例级别和节点级别的执行耗时分布,当您选择“节点”时,默认显示主节点的执行耗时分布。如果您想查看其他节点的执行耗时分布,请单击切换节点按钮选择其他您想要查看的节点。
查看TOP SQL列表,获取执行耗时信息。例如平均执行耗时、总耗时、 平均锁等待耗时、平均扫描行数等。
- 单击执行耗时分布图上的某个点,查看该时间点的TOP SQL列表。
- 在执行耗时分布图上用鼠标选择一段时间,查看该段时间的Top SQL列表。
- 单击“导出”可导出当前列表里显示的TOP SQL信息。此功能仅限付费实例使用,免费实例暂不支持导出功能。
- 单击操作栏的“详情”按钮,可以查看该执行SQL的详细执行信息。例如总执行次数、平均扫描行数、平均执行耗时等信息。
- 单击操作栏的“诊断”按钮,可以查看该执行SQL的详细诊断信息。例如执行计划、索引优化建议、语句优化建议等信息。
SQL审计
1、登录管理控制台。
单击管理控制台左上角的,选择区域和项目。
单击页面左上角的,选择“数据库 > 数据管理服务 DAS”,进入数据管理服务页面。
在左侧的导航栏中单击“DBA智能运维 > 实例列表”页签,进入DBA智能运维实例列表页面。
在实例列表页面右上角,按照引擎、实例名称或者实例IP筛选实例。
选择目标实例,单击“详情”,进入DBA智能运维总览页面。
单击“全量SQL洞察”,进入全量SQL洞察页面。
单击SQL审计页签。
在“SQL审计”页签中,查看SQL审计任务。
- 您可以通过选择数据起止时间、任务创建时间、节点等查询条件获取当前实例SQL审计任务。
- 单击“新增SQL审计任务”按钮,可自选时间范围添加SQL审计任务。DAS支持添加实例级别和节点级别的SQL审计任务,您可根据业务需求自行选择添加。添加完成的SQL审计任务会显示在下方列表栏。
- 单击操作栏的“查看详情”,可查看SQL审计详情。您可以通过选择时间范围、用户、关键字、数据库等SQL查询条件单击“查询”,获取当前实例所执行过的SQL信息。选择时间范围时不可以超出新增SQL审计时的时间范围。
SQL诊断
您可以通过SQL诊断功能诊断SQL语句并查看SQL语句优化建议。
使用须知
- 仅支持MySQL InnoDB引擎。
- 仅支持select/insert/update/delete语句诊断,其中insert必须带select子句。
- 暂不支持查询information_schema、test、mysql 等保留库的语句。
- 暂不支持使用视图的语句。
- SQL诊断功能会获取相关表结构和数据分布信息(非原始数据),该信息仅用于诊断逻辑,不会存储到DAS服务器。
- 获取表结构和数据分布信息的过程中,可能会对实例带来额外负载,但对性能影响甚微。
- SQL诊断历史是唯一存储在DAS服务器上的数据,如果执行删除操作后,也将彻底从服务器上删除。
- 格式化用于提高SQL语句易读性,只是转换SQL语句的显示形式,不会修改SQL的执行逻辑和语义。
- 格式化是对整个SQL窗口内所有SQL语句进行格式化,暂不支持选中多条语句中的某一条进行格式化。
操作步骤
1、登录管理控制台。
单击管理控制台左上角的,选择区域和项目。
单击页面左上角的,选择“数据库 > 数据管理服务 DAS”,进入数据管理服务页面。
在左侧的导航栏中单击“DBA智能运维 > 实例列表”页签,进入DBA智能运维实例列表页面。
在实例列表页面右上角,按照引擎、实例名称或者实例IP筛选实例。
选择目标实例,单击“详情”,进入DBA智能运维总览页面。
在“SQL”页签下选择“SQL诊断”,您可以进行如下操作。
- 选择目标数据库,输入需要诊断的SQL语句,单击“SQL诊断”,系统将自动弹出诊断结果页面。
- 选择目标数据库,输入SQL语句,单击“执行”,系统自动执行SQL语句,并在结果集中显示。
- 选择目标数据库,输入多行SQL语句,单击“格式化”,系统自动将所有SQL语句格式化后显示。
- 选择目标数据库,输入多行SQL语句,单击“查看执行计划”,系统自动按顺序执行所有SQL语句。
SQL限流
针对新上业务不能及时发包优化的SQL和突发流量导致CPU等资源100%瓶颈的场景,SQL限流功能通过控制既定SQL规则的并发度协助业务侧及时流控,保证核心业务的稳定运行。
使用须知
- 主实例SQL限流支持的RDS for MySQL内核版本:5.6.50.3、5.7.31.4、8.0.25.1及以上。
- 只读实例SQL限流支持的RDS for MySQL内核版本:5.6.51.6、5.7.37.1、8.0.25.1及以上。
- 只读实例可以单独设置SQL限流规则,支持的RDS for MySQL内核版本:5.7.38-221000及以上,5.6和8.0暂不支持。
- 当SQL语句匹配多条限流规则时,优先生效最新添加的规则,之前的规则将不再生效。
- 限流规则对关键字有顺序要求,会按照关键字设置顺序进行匹配。如关键字设置为a-and-b,“xxx a>1 and b>2”语句符合关键字顺序会被限流,“xxx b>2 and a>1”语句因不符合关键字顺序而不会被限流。
- 若复制时延过大,只读实例新增或删除限流规则时,不会立刻生效。
- 实例如果作为基于binlog的第三方复制关系的源端,在复制过程中对实例添加或者删除SQL限流规则会导致第三方复制关系中断
- 以下场景不受SQL限流的限制:
- 系统表不限制。
- 不涉及数据查询的语句不限制,如"select sleep(xxx)"语句。
- root帐号在特定的RDS for MySQL版本范围内不限制。
- 暂不支持对存储过程、触发器、函数内的SQL做限流设置。
- 单个关键字首尾的空白字符会被忽略,包括' '、'\n'、'\r'、'\t'等。
操作步骤
1、登录管理控制台。
单击管理控制台左上角的,选择区域和项目。
单击页面左上角的,选择“数据库 > 数据管理服务 DAS”,进入数据管理服务页面。
在左侧的导航栏中单击“DBA智能运维 > 实例列表”页签,进入DBA智能运维实例列表页面。
在实例列表页面右上角,按照引擎、实例名称或者实例IP筛选实例。
选择目标实例,单击“详情”,进入DBA智能运维总览页面。
在“SQL”页签下选择“SQL限流”。
在“SQL限流”页面,开启SQL限流开关。
单击提示框里的“查看版本范围”查看SQL限流对RDS for MySQL实例的版本限制。
单击“新增SQL限流”,选择需要限流的SQL类型,设置关键字以及最大并发数。
- 关键字:设置关键字时,您可以选择直接输入关键字。
说明
原始SQL转换成的关键字仅供参考,请谨慎使用。
SQL限流最大支持128个关键字。
关键字规则举例:
例如关键字是“select-id-name-from-t3-where-age>-27”,表示顺序匹配上述select、id、name、from等9个关键字,~为关键字分隔符,若执行SQL命令中顺序包含这些关键字,就会受到并发规则限制。
- 最大并发数:即满足同一规则的语句最大并发数,超过最大并发数会被拒绝执行。
当添加上述规则,并且设定最大并发度为0,执行以下SQL命令会被限流:
"select id, name from t3 where age > 27"
"select id, name, age from t3 where age > 27"
"select id, name from t3 where age > 5 and id < 27"
而执行以下SQL命令,不会被限流:
"select name, age from t3 where age > 27"
确认无误后,单击“确定”。
若不再需要此条SQL限流规则,可以在SQL限流列表页单击“删除”,删除SQL限流规则。