GetRequestDiagnosisResult - 查询SQL诊断的结果

更新时间:
复制 MD 格式

调用GetRequestDiagnosisResult接口,查询SQL诊断的结果。

接口说明

使用该接口需满足以下前提条件:

  • 在使用 SDK 调用 DAS 服务时,需要将地域指定为 cn-shanghai。

  • 该接口不支持查询自动 SQL 优化的诊断结果

  • 本接口适用的数据库引擎为:

    • RDS MySQL

    • RDS PostgreSQL

    • RDS SQL Server

    • PolarDB MySQL 版

    • PolarDB PostgreSQL 版(兼容 Oracle)

    • 云数据库 MongoDB 版

说明

RDS PostgreSQL 实例内核小版本为 20220130 及以上。查看和升级内核小版本,请参见升级内核小版本。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

调试

授权信息

下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:

  • 操作:是指具体的权限点。

  • 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。

  • 资源类型:是指操作中支持授权的资源类型。具体说明如下:

    • 对于必选的资源类型,用前面加 * 表示。

    • 对于不支持资源级授权的操作,用全部资源表示。

  • 条件关键字:是指云产品自身定义的条件关键字。

  • 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。

操作

访问级别

资源类型

条件关键字

关联操作

hdm:GetRequestDiagnosisResult

get

*全部资源

*

无 无

请求参数

名称

类型

必填

描述

示例值

InstanceId

string

是

实例 ID。

rm-0iwhhl8gx0ld6****

NodeId

string

否

节点 ID。

说明

对于 PolarDB MySQL 版、PolarDB PostgreSQL 版(兼容 Oracle)和云数据库 MongoDB 等集群实例,需要提供节点 ID。

202****

MessageId

string

是

诊断 ID, CreateRequestDiagnosis 接口返回的诊断唯一标识。

说明

当 MessageId 为自动 SQL 优化的诊断 ID 时,该接口无法返回诊断结果

61820b594664275c4429****

SqlId

string

否

SQL 模板 ID。

说明

此参数是 DAS 控制台调用 API 时使用,用户使用此 API 时无需传入。

None

Source

string

否

任务来源。

说明

此参数是 DAS 控制台调用 API 时使用,用户使用此 API 时无需传入。

None

返回参数

名称

类型

描述

示例值

object

Message

string

请求返回消息。

说明

请求成功时该参数返回 Successful,请求失败时会返回请求异常信息(如错误码等)。

Successful

RequestId

string

请求 ID。

800FBAF5-A539-5B97-A09E-C63AB2F7****

Data

object

返回数据

messageId

string

诊断 ID,唯一标识。

61820b594664275c4429****

uuid

string

诊断实例唯一标识。

hdm_51fe9bc19ec413f4d530431af87a****

accountId

string

用户 ID。

2093****

sqlId

string

SQL 模板 ID。

0c95dae3afef77be06572612df9b****

engine

string

数据库引擎,取值:

  • MySQL

  • PostgreSQL

  • SQLServer

  • PolarDBMySQL

  • PolarDBOracle

  • MongoDB

MySQL

dbSchema

string

数据库名。

das

param

string

额外信息。

{"":""}

state

integer

诊断状态:

  • 0:诊断中。

  • 1:诊断错误。

  • 2:诊断完成。

  • 3:SQL 错误。

  • 4:引擎错误。

2

result

string

SQL 诊断结果。

  • endTime:SQL 诊断的结束时间。

  • errorCode:错误码。
    • 0001:诊断成功。

    • 0003:诊断失败。

  • errorMessage:错误信息。

  • estimateCost:预估得消耗。
    • cpu:索引的 CPU 消耗预估值。

    • io:索引的 IO 消耗预估值。

    • rows:索引的返回列预估值。

  • improvement:性能提升比。

  • indexAdvices:索引建议。
    • columns:索引列。

    • ddlAddIndex:索引 DDL 语句。

    • indexName:索引名。

    • schemaName:数据库名。

    • tableName:表名。

    • unique:是否唯一索引。

  • ip:实例的 IP 地址。

  • messageId:诊断 ID。

  • port:实例的端口。

  • sqlTag:SQL 标签。
    • PRED_EQUAL:等值谓词。

    • CNT_QB:查询块数量。

    • CNT_TB:表数量。

    • JOIN_LEFT:左连接。

    • SEL_SMALL:小结果集选择。

    • AGGR_SEL:聚合选择。

    • PRED_LT_EQ / PRED_GT_EQ:小于等于 / 大于等于谓词。

    • PRED_LIKE_PREFIX:LIKE 前缀匹配。

    • ORDER_BY:包含 ORDER BY 子句。

    • LIMIT:包含 LIMIT 子句。

    • GROUP_BY:包含 GROUP BY 子句。

    • JOIN_INNER:内连接。

    • JOIN_RIGHT:右连接。

    • HAVING:包含 HAVING 子句。

    • UNION:包含 UNION 操作。

  • startTime:SQL 诊断的开始时间。

  • success:请求是否执行成功。

  • support:SQL 语句是否支持诊断。
    • true:支持。

    • false:不支持。

  • tuningAdvices:SQL 改写建议。

{ "endTime":1636354256000, "errorCode":"0001", "errorMessage":"TFX成功", "estimateCost":{ "cpu":1.7878745150389268, "io":9.948402604746128, "rows":8.889372575194633 }, "improvement":12933.97, "indexAdvices":[ { "columns":[ "work_no" ], "ddlAddIndex":"ALTER TABLE `test`.`work_order` ADD INDEX `idx_workno` (`work_no`)", "indexName":"idx_workno", "schemaName":"test", "tableName":"work_order", "unique":false } ], "ip":"****.mysql.rds.aliyuncs.com", "messageId":"6188c8cb2f1365b16aee****", "port":3306, "sqlTag":"{\"PRED_EQUAL\":\"Y\",\"CNT_QB\":\"1\",\"CNT_TB\":\"1\"}", "startTime":1636354252000, "success":true, "support":true, "tuningAdvices":[ ] }

gmtCreate

string

SQL 诊断创建时间,格式为 Unix 时间戳,单位为毫秒。

1633071840000

gmtModified

string

SQL 诊断修改时间,格式为 Unix 时间戳,单位为毫秒。

1633071850000

Code

string

返回的状态码。

200

Success

string

请求是否执行成功:

  • true:执行成功。

  • false:执行失败。

true

示例

正常返回示例

JSON格式

{
  "Message": "Successful",
  "RequestId": "800FBAF5-A539-5B97-A09E-C63AB2F7****",
  "Data": {
    "messageId": "61820b594664275c4429****",
    "uuid": "hdm_51fe9bc19ec413f4d530431af87a****",
    "accountId": "2093****",
    "sqlId": "0c95dae3afef77be06572612df9b****",
    "engine": "MySQL",
    "dbSchema": "das",
    "param": "{\"\":\"\"}",
    "state": 2,
    "result": "{ \"endTime\":1636354256000, \"errorCode\":\"0001\", \"errorMessage\":\"TFX成功\", \"estimateCost\":{ \"cpu\":1.7878745150389268, \"io\":9.948402604746128, \"rows\":8.889372575194633 }, \"improvement\":12933.97, \"indexAdvices\":[ { \"columns\":[ \"work_no\" ], \"ddlAddIndex\":\"ALTER TABLE `test`.`work_order` ADD INDEX `idx_workno` (`work_no`)\", \"indexName\":\"idx_workno\", \"schemaName\":\"test\", \"tableName\":\"work_order\", \"unique\":false } ], \"ip\":\"****.mysql.rds.aliyuncs.com\", \"messageId\":\"6188c8cb2f1365b16aee****\", \"port\":3306, \"sqlTag\":\"{\\\"PRED_EQUAL\\\":\\\"Y\\\",\\\"CNT_QB\\\":\\\"1\\\",\\\"CNT_TB\\\":\\\"1\\\"}\", \"startTime\":1636354252000, \"success\":true, \"support\":true, \"tuningAdvices\":[ ] }",
    "gmtCreate": "1633071840000",
    "gmtModified": "1633071850000"
  },
  "Code": "200",
  "Success": "true"
}

错误码

HTTP status code

错误码

错误信息

描述

400 InvalidParams The request parameters are invalid. 请求参数错误
403 NoPermission You are not authorized to do this action. 没有权限执行该操作

访问错误中心查看更多错误码。

变更历史

更多信息,参考变更详情。