全部产品
Search
文档中心

数据库自治服务 DAS:GetStorageAnalysisResult - 获取空间分析任务的结果

更新时间:Nov 14, 2024

调用GetStorageAnalysisResult接口,查询空间分析任务状态和分析结果。

接口说明

说明 物理文件大小获取的是文件真实大小(需实例部署形态支持);表级别其他数据基于information_schema.tables。由于 MySQL 中统计信息不是实时更新,所以可能和物理文件大小存在差异,如有需要获取最新数据,可在业务低峰时期对相关的表执行ANALYZE TABLE
  • 本接口只适用于 RDS MySQL、PolarDB MySQL 版和 MongoDB 实例。
  • 对于 RDS MySQL 和 PolarDB MySQL 版实例,本接口对应于旧版空间分析功能,该接口生成的任务无法在 DAS 控制台新版空间分析页面查看。如有需要查看任务及结果,请调用接口后自行保存数据。
  • 使用阿里云或 DAS 的 SDK 时,建议使用最新版本。
  • 在使用 SDK 调用 DAS 服务时,需要将地域指定为 cn-shanghai。

调试

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

授权信息

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

  • 操作:是指具体的权限点。
  • 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
  • 资源类型:是指操作中支持授权的资源类型。具体说明如下:
    • 对于必选的资源类型,用背景高亮的方式表示。
    • 对于不支持资源级授权的操作,用全部资源表示。
  • 条件关键字:是指云产品自身定义的条件关键字。
  • 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作访问级别资源类型条件关键字关联操作
hdm:GetStorageAnalysisResultnone
*全部资源
*

请求参数

名称类型必填描述示例值
InstanceIdstring

实例 ID。

rm-2ze1jdv45i7l6****
NodeIdstring

节点 ID。

说明 预留参数。
None
TaskIdstring

任务 ID,调用 CreateStorageAnalysisTask 接口返回的任务 ID。

910f83f4b96df0524ddc5749f615****

返回参数

名称类型描述示例值
object
Codelong

返回的状态码。

200
Messagestring

请求返回消息。

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

返回的数据。

TaskIdstring

任务 ID。

910f83f4b96df0524ddc5749f615****
TaskFinishboolean

任务是否结束:

  • true:任务结束。
  • false:任务未结束。
true
TaskSuccessboolean

任务是否成功:

  • true:执行成功。
  • false:执行失败。
说明 当任务结束时才返回该字段。
true
TaskStatestring

空间分析任务的状态:

  • INIT:初始化。
  • PENDING:等待执行。
  • RECEIVED:任务已选择。
  • RUNNING:任务执行中。
  • RETRY:重试任务。
  • SUCCESS:任务成功。
  • FAILURE:任务失败。
SUCCESS
TaskProgresslong

任务进度,取值为 0~100 的整数。

说明 例如取值为 100 时,表示任务进度 100%。
100
TotalDbCountlong

空间分析任务需要分析的数据库数量。

32
AnalyzedDbCountlong

已分析结束的数据库数量。

2
StorageAnalysisResultobject

空间分析详情。

TotalStorageSizelong

实例总空间大小,单位为 Byte。

说明 当前仅支持 RDS MySQL。
214748364800
TotalUsedStorageSizelong

已使用的空间,单位为 Byte。

68345135104
TotalFreeStorageSizelong

剩余可用空间,单位为 Byte。

说明 当前仅支持 RDS MySQL。
146403229696
DailyIncrementlong

近一周空间日均增长量估算值,单位为 Byte。

0
EstimateAvailableDayslong

剩余空间可使用天数估算值。

99
AnalysisSuccessboolean

数据库和表空间分析是否成功。

  • true:成功。
  • false:失败。
true
AnalysisErrorTypestring

数据库和表空间分析任务失败类型:

  • DB_OR_TABLE_NOT_EXIST:指定的数据库或表不存在。
  • DB_NOT_EXIST:指定的数据库不存在。
DB_NOT_EXIST
NeedOptimizeItemListarray<object>

根据 DAS 默认规则生成的待优化项列表。用户也可根据自身业务情况忽略该列表中的内容,然后根据接口返回的其他基础数据自定义规则生成待优化项列表。

needOptimizeItemListobject
DbNamestring

数据库名。

testdb01
TableNamestring

表名。

test_table
OptimizeItemNamestring

待优化项:

  • NEED_ANALYZE_TABLEinformation_schema.tables中该表空间统计数据和物理文件大小差值超过 50 GB。仅适用于 RDS MySQL 和 PolarDB MySQL 版。
  • NEED_OPTIMIZE_TABLE:表的碎片空间大于 6 GB,并且碎片率大于 30%。表的碎片率计算方式:
    • RDS MySQL 和 PolarDB MySQL 版为:DataFree/(DataSize+IndexSize+DataFree),本接口中即DataFree/PhyTotalSize
    • MongoDB 为:FragmentSize/PhyTotalSize
  • TABLE_ENGINE:表使用的存储引擎不是 InnoDB 或者 XEngine。仅适用于 RDS MySQL 和 PolarDB MySQL 版。
  • AUTO_INCREMENT_ID_BE_TO_RUN_OUT:表自增 ID 使用率超过 80%。仅适用于 RDS MySQL 和 PolarDB MySQL 版。
  • DUPLICATE_INDEX:索引冗余或者重复。仅适用于 RDS MySQL 和 PolarDB MySQL 版。
  • TABLE_SIZE:单表空间大于 50 GB。仅适用于 RDS MySQL 和 PolarDB MySQL 版。
  • TABLE_ROWS_AND_AVG_ROW_LENGTH:单表行数大于 500 万,且平均行长大于 10 KB。仅适用于 RDS MySQL 和 PolarDB MySQL 版。
  • TOTAL_DATA_FREE:实例可回收空间大于 60 GB,且总碎片率大于 5%。
  • STORAGE_USED_PERCENT:实例空间使用率大于 90%。
NEED_OPTIMIZE_TABLE
OptimizeAdvicestring

优化建议:

  • NEED_ANALYZE_TABLE:如有需要可在业务低峰时期对相关的表执行ANALYZE TABLE。仅适用于 RDS MySQL 和 PolarDB MySQL 版。
  • NEED_OPTIMIZE_TABLE:如有需要可在业务低峰时期进行表空间碎片回收。
  • CHANGE_TABLE_ENGINE_IF_NECESSARY:如果有需要可以在评估风险后更改表的存储引擎类型。仅适用于 RDS MySQL 和 PolarDB MySQL 版。
  • AUTO_INCREMENT_ID_BE_TO_RUN_OUT:注意自增 ID 使用情况。仅适用于 RDS MySQL 和 PolarDB MySQL 版。
  • DUPLICATE_INDEX:建议优化精简表上的索引。仅适用于 RDS MySQL 和 PolarDB MySQL 版。
  • TABLE_SIZE:注意表大小。仅适用于 RDS MySQL 和 PolarDB MySQL 版。
  • TABLE_ROWS_AND_AVG_ROW_LENGTH:注意表行数以及平均行长。仅适用于 RDS MySQL 和 PolarDB MySQL 版。
  • STORAGE_USED_PERCENT:注意空间使用情况,避免实例写满后锁定。
NEED_OPTIMIZE_TABLE
AssociatedDatastring

待优化项关联数据,以 JSON 格式返回。

{ "autoIncrementCurrentValue": 2147483647, "autoIncrementRatio": 1, "dbName": "testdb01", "maximumValue": 2147483647, "columnName": "id", "tableName": "test_table" }
TableStatsarray<object>

表空间数据列表。

tableStatsobject
DbNamestring

数据库名。

testdb01
TableNamestring

表名。

test_table
TableTypestring

表类型。

说明 该参数适用于 RDS MySQL 和 PolarDB MySQL 版。
BASE TABLE
Enginestring

表使用的存储引擎类型。

说明 该参数适用于 RDS MySQL 和 PolarDB MySQL 版。
InnoDB
PhysicalFileSizelong

表物理文件大小,单位为 Byte。

说明 该参数适用于 RDS MySQL 和 PolarDB MySQL 版。部分实例因部署形态的原因不支持获取该数据。
3057655808
PhyTotalSizelong

表空间大小,单位为 Byte。

说明 对于 RDS MySQL 和 PolarDB MySQL 版,取值为 DataSizeIndexSizeDataFree 之和;对于 MongoDB,取值为 DataSizeIndexSize 之和。
3012493312
TotalSizelong
  • 对于 RDS MySQL 和 PolarDB MySQL 版,该参数是表数据和索引占用空间大小,单位为 Byte。取值为 DataSizeIndexSize 之和。

  • 对于 MongoDB,该参数是 Block Manager 实际分配的空间大小,单位为 Byte。MongoDB 实例压缩率计算方式为:TotalSize/DataSize

3005153280
IndexSizelong

索引占用的空间大小,单位为 Byte。

1022296064
DataSizelong
  • 对于 RDS MySQL 和 PolarDB MySQL 版,该参数是数据占用的空间大小,单位为 Byte。
  • 对于 MongoDB,该参数是未压缩数据的大小,即数据量,单位为 Byte。
1982857216
DataFreelong

碎片空间大小,单位为 Byte。

说明 该参数适用于 RDS MySQL 和 PolarDB MySQL 版。表碎片率计算方式一般为:DataFree/(DataSize+IndexSize+DataFree),本接口中即DataFree/PhyTotalSize
7340032
TableRowslong

表行数。

12794732
AvgRowLengthlong

平均行长,单位为 Byte。

154
FragmentSizelong

可回收空间大小(碎片空间大小),单位为 Byte。

说明 该参数仅适用于 MongoDB 实例。表碎片率计算方式为:FragmentSize/PhyTotalSize
362221568
RequestIdstring

请求 ID。

B6D17591-B48B-4D31-9CD6-9B9796B2****
Successboolean

请求是否执行成功:

  • true:执行成功。
  • false:执行失败。
true

示例

正常返回示例

JSON格式

{
  "Code": 200,
  "Message": "Successful",
  "Data": {
    "TaskId": "910f83f4b96df0524ddc5749f615****",
    "TaskFinish": true,
    "TaskSuccess": true,
    "TaskState": "SUCCESS",
    "TaskProgress": 100,
    "TotalDbCount": 32,
    "AnalyzedDbCount": 2,
    "StorageAnalysisResult": {
      "TotalStorageSize": 214748364800,
      "TotalUsedStorageSize": 68345135104,
      "TotalFreeStorageSize": 146403229696,
      "DailyIncrement": 0,
      "EstimateAvailableDays": 99,
      "AnalysisSuccess": true,
      "AnalysisErrorType": "DB_NOT_EXIST",
      "NeedOptimizeItemList": [
        {
          "DbName": "testdb01",
          "TableName": "test_table",
          "OptimizeItemName": "NEED_OPTIMIZE_TABLE",
          "OptimizeAdvice": "NEED_OPTIMIZE_TABLE",
          "AssociatedData": "{\n    \"autoIncrementCurrentValue\": 2147483647,\n    \"autoIncrementRatio\": 1,\n    \"dbName\": \"testdb01\",\n    \"maximumValue\": 2147483647,\n    \"columnName\": \"id\",\n    \"tableName\": \"test_table\"\n}"
        }
      ],
      "TableStats": [
        {
          "DbName": "testdb01",
          "TableName": "test_table",
          "TableType": "BASE TABLE",
          "Engine": "InnoDB",
          "PhysicalFileSize": 3057655808,
          "PhyTotalSize": 3012493312,
          "TotalSize": 3005153280,
          "IndexSize": 1022296064,
          "DataSize": 1982857216,
          "DataFree": 7340032,
          "TableRows": 12794732,
          "AvgRowLength": 154,
          "FragmentSize": 362221568
        }
      ]
    }
  },
  "RequestId": "B6D17591-B48B-4D31-9CD6-9B9796B2****",
  "Success": true
}

错误码

HTTP status code错误码错误信息描述
400InvalidParamsThe request parameters are invalid.请求参数错误
403NoPermissionYou are not authorized to do this action.没有权限执行该操作

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

变更历史

变更时间变更内容概要操作
2024-05-14OpenAPI 错误码发生变更、OpenAPI 返回结构发生变更查看变更详情