慢SQL
该模块提供指定时间段内的慢SQL分析功能。从用户、IP、SQL模板等进行多维统计,展示统计结果并支持指定排序,识别慢SQL的精准来源,方便用户快速优化业务。
使用须知
- 慢SQL功能需要开启DAS收集慢日志开关,开启后,DAS会对SQL的文本内容进行存储,以便进行分析。
- 免费实例的慢日志仅保留1个小时,付费实例默认保留7天,最长可保存30天,到期后自动删除。
- 每个用户最多可以开启10个免费实例的慢SQL,付费实例无限制。
- 免费实例仅支持查看最近一个小时的慢SQL数据。
查看慢日志
1、登录管理控制台。
单击管理控制台左上角的,选择区域和项目。
单击页面左上角的,选择“数据库 > 数据管理服务 DAS”,进入数据管理服务页面。
在左侧的导航栏中单击“DBA智能运维 > 实例列表”页签,进入DBA智能运维实例列表页面。
在实例列表页面右上角,按照引擎、实例名称或者实例IP筛选实例。
选择目标实例,单击“详情”,进入DBA智能运维总览页面。
单击“慢SQL”,进入慢日志页面。
选择需要查看的时间段,查看该时间段内慢日志趋势、慢日志统计和慢日志明细。
- 慢日志趋势
在慢日志趋势图中单击某个时间点,查看该时间点的慢日志或CPU使用率。
在慢日志区域左上角通过切换实例或者节点,查看实例或指定节点的慢日志趋势。
- 慢日志明细
在慢SQL页面下方查看慢日志明细。慢日志明细提供了当前时间段的慢日志详情,包含执行时间、SQL语句、库名、客户端、用户、执行耗时、锁等待耗时、扫描行、返回行等信息。
单击导出,将慢日志明细导出到指定OBS进行存储。慢日志明细导出成功后,可以单击“查看导出列表”,查看慢日志明细导出记录,也可以通过下载将慢日志明细下载到本地进行查看。
说明导出及查看导出列表功能仅支持付费实例使用,免费实例暂不支持。
单击操作列的诊断,对当前SQL模板进行诊断。
- 慢日志统计
单击SQL模板操作列的“样本”,查看当前SQL模板的样本信息 。
在慢日志统计页面,单击“导出”将慢日志导出到指定的OBS进行存储。慢日志导出成功后,可以单击“查看导出列表”,查看慢日志导出记录,也可以通过下载将慢日志下载到本地进行查看。
说明导出及查看导出列表功能仅支持付费实例使用,免费实例暂不支持。
慢日志存储
开启DAS收集慢日志开关后,DAS会将SQL的文本内容存储到OBS中,以便进行分析。
免费实例的慢日志仅保留1个小时,付费实例默认保留7天,最长可保存30天,到期后自动删除。
对于付费实例,您可以在慢SQL页面,单击“设置慢SQL存储时长”,根据需要设置慢日志的存储时长。
对于付费实例,将免费赠送5GB的SQL存储空间,超出部分将按需计费。
删除慢日志
在慢SQL页面,您可以选择全部删除或者自定义删除指定时间段的慢日志信息。
说明慢日志删除后无法恢复,请谨慎操作。
全量SQL洞察
在实例开启DAS收集全量SQL的前提下,该模块基于全量SQL数据进行分析,并提供多维度的分析、搜索、过滤的能力,帮助用户全面洞察SQL,TOP SQL快速定位异常原因,保障数据库稳定运行。
全量SQL洞察功能在对实例性能影响极小(5%以内)的情况下,记录了全量SQL,提供了访问最频繁、更新最频繁的表,锁等待时间最长的SQL等多维度的分析、搜索、过滤能力。
使用须知
- 关闭DAS收集全量SQL后,DAS将不再采集您新产生的SQL,已经收集的SQL也会被删除,请您谨慎操作。
- 免费实例的全量SQL日志仅保留1个小时,付费实例默认保留7天,最长可保存30天,到期后自动删除。
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智能运维总览页面。
单击“全量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规则的并发度协助业务侧及时流控,保证核心业务的稳定运行。
使用须知
- 满足如下版本要求的GaussDB(for MySQL)可以使用SQL限流功能。
内核版本大于等于2.0.28.15且小于2.0.28.40
内核版本大于等于2.0.29.1
- 单个限流规则最大支持128个关键字。
- 关键字中不允许包含“\t”、“\r” 、“\n”, 关键字不能是单个反斜杠(\) 或单个空字符(' ')。
- 关键字首尾或中间的空格都会被忽略掉。
- 限流规则不能以“~”结尾。
- 限流规则对关键字有顺序要求,会按照关键字设置顺序进行匹配。如关键字设置为a
andb,“xxx a>1 and b>2”语句符合关键字顺序会被限流,“xxx b>2 and a>1”语句因不符合关键字顺序而不会被限流。 - 添加SQL限流规则后,已经执行中的SQL不会被新添加的规则限制,只有系统新收到的SQL才会进行规则匹配。
- 若主节点和只读节点设置了不一样的限流规则,实例主节点和只读节点倒换之后,新的主节点规则和原来的只读节点一样,新的只读节点规则和原来的主节点一样。
- 当SQL语句匹配多条限流规则时,优先生效最新添加的规则,之前的规则将不再生效。
- 单个SQL类型 (SELECT、UPDATE、DELETE)的所有规则和对应的并发数加起来长度不能超过1024 bytes。
- 当限流规则数量较多时,SELECT/UPDATE/DELETE语句会有小幅度的性能劣化。
- 以下场景不受SQL限流的限制:
系统表不限制。
不涉及数据查询的语句不限制,如"select sleep(xxx)"语句。
root帐号不限制。
存储过程、触发器、函数内的SQL不限制。
操作步骤
1、登录管理控制台。
单击管理控制台左上角的,选择区域和项目。
单击页面左上角的,选择“数据库 > 数据管理服务 DAS”,进入数据管理服务页面。
在左侧的导航栏中单击“DBA智能运维 > 实例列表”页签,进入DBA智能运维实例列表页面。
在实例列表页面右上角,按照引擎、实例名称或者实例IP筛选实例。
选择目标实例,单击“详情”,进入DBA智能运维总览页面。
在“SQL”页签下选择“SQL限流”。
在“SQL限流”页面,开启SQL限流开关。
单击“新增SQL限流”,选择需要限流的SQL类型,设置关键字以及最大并发数。
- 关键字:设置关键字时,您可以选择直接输入关键字,也可以选择将原始SQL拷贝到输入框中然后单击“生成关键字”,将原始SQL转换成关键字。
说明原始SQL转换成的关键字仅供参考,请谨慎使用。
关键字规则举例:
例如关键字是"SELECT~a>1", 含义为: SELECT以及a>1为该并发控制所包含的两个关键字,~为关键字间隔符,即若执行SQL命令包含SELECT与a>1两个关键字视为命中此条并发控制规则。
- 最大并发数:即满足同一规则的语句最大并发数,超过最大并发数会被拒绝执行。
确认无误后,单击“确定”。
若不再需要此条SQL限流规则,可以在SQL限流列表页单击“删除”,删除SQL限流规则。