首批通过分布式安全可靠测评,为关键业务系统打造
查询 SQL 的性能统计
更新时间:2023-08-10 11:45:58
功能说明
查询租户的 SQL 性能统计,按指定的时间区间统计 SQL 的性能。性能数据包括:集群、租户、服务器、数据库、用户、SQL_ID 、响应时间、CPU 时间、执行次数、错误次数等。可以通过 是否
内部 SQL、SQL 文本的关键词、高级搜索 等条件来查询特定 SQL 的性能指标。 说明
该接口的查询较为耗时。若响应时间较长,请适当减小查询的频次、查询的时间范围或并发请求的数量。同时可以检测 OCP Server 和 Monitor DB 的资源使用,酌情调整规格配置。
调用说明
接口约束
调用者需具备指定租户的读权限。
请求路径
GET /api/v2/ob/clusters/{clusterId}/tenants/{tenantId}/topSql
请求参数
| 参数 | 类型 | 必选 | 示例值 | 描述 |
|---|---|---|---|---|
| clusterId | Integer | 是 | 1 | 集群的 Id |
| tenantId | Integer | 是 | 1001 | 租户的 Id |
| startTime | Datetime | 是 | 2020-02-16T05:32:16+08:00 | 开始时间 |
| endTime | Datetime | 是 | 2020-02-16T07:32:16+08:00 | 结束时间 |
| serverId | Integer | 否 | 300 | 查询在指定 OB 服务器上执行的 SQL。不指定时,查询在所有 OB 服务器上执行的 SQL。 |
| inner | Boolean | 否 | false | 是否包含内部 SQL。内部 SQL 是指由 OB 发起的 SQL。 * 默认为 false,即不包含内部 SQL。 |
| sqlText | String | 否 | hello | SQL 包含的关键词。 * 关键词不区分大小写。 |
| searchAttr | String | 否 | executions | 高级搜索的指标名。需要同时传入 searchOp 和 seachVal 才会生效。 |
| searchOp | String | 否 | GT | 高级搜索的运算符。需要同时传入 searchAttr 和 searchVal 才会生效。 取值范围: * EQ:等于 * NE:不等于 * GT:大于 * GE:大于或等于 * LT:小于 * LE:小于或等于 |
| searchVal | String | 否 | 1543 | 高级搜索的值。需要同时传入 searchAttr 和 searchOp 才会生效。 |
返回结果
基础数据结构
参数 类型 说明 data Object 请求的业务数据 ├─ contents Array SQL 性能指标数据的列表,参见后表。 successful Boolean 请求是否成功 timestamp Datetime 服务端完成请求的时间戳 duration Integer 服务端处理请求的时间(毫秒) status Integer 符合 HTTP Status 规范的编码 traceId String 请求的 Trace Id,用于排查问题。 server String 响应请求的服务端的地址
SQL 性能指标的数据结构
参数 类型 说明 sqlId String SQL 的 ID。 server String OB 服务器的地址。 dbName String SQL 执行所在的数据库。 userName String 执行 SQL 的用户。 sqlType String SQL的类型,取值范围: * SELECT:查询语句 * INSERT:插入语句 * UPDATE:更新语句 * DELETE:删除语句 * REPLACE:替换语句 * EXPLAIN:计划解析 * UNKNOWN:其它语句 sqlTextShort String SQL文本的前100字符。 inner Boolean 是否为内部SQL。 waitEvent String 在指定时间区间内,该SQL最耗时的内部事件,取值范围: * system internal wait * mysql response wait client * sync rpc * db file data read executions Integer SQL在期间内的总执行次数。 execPs Float SQL在期间内的平均每秒执行次数,保留 2 位小数。 avgAffectedRows Float SQL在期间内的平均更新行数,保留 2 位小数。 avgReturnRows Float SQL在期间内的平均返回行数,保留 2 位小数。 avgPartitionCount Float SQL在期间内平均访问分区数。 failCount Integer SQL在期间内的总错误次数。 failPercentage Float SQL在期间内的错误百分比,返回值 [0, 1] ,保留四位小数。 retCode4012Count Integer SQL在期间内发生超时错误(错误码4012)的总次数。 retCode4013Count Integer SQL在期间内发生内存不足错误(错误码 4013)的总次数。 retCode5001Count Integer SQL在期间内发生语法解析错误(错误码 5001)的总次数。 retCode5024Count Integer SQL在期间内发生键值冲突错误(错误码 5024)的总次数。 retCode5167Count Integer SQL在期间内发生数据超长错误(错误码 5167)的总次数。 retCode5217Count Integer SQL在期间内发生未知列错误(错误码 5217)的总次数。 retCode6002Count Integer SQL在期间内发生事务回滚错误(错误码 6002)的总次数。 avgWaitTime Float SQL在期间内平均等待时间。 avgWaitCount Float SQL在期间内的平均等待次数。 avgRpcCount Float SQL在期间内的平均发送RPC次数。 localPlanPercentage Float SQL在期间内的本地计划百分比。 remotePlanPercentage Float SQL在期间内的远程计划百分比。 disPlanPercentage Float SQL在期间内的分布式计划百分比。 avgElapsedTime Float SQL在期间内的平均响应时间(毫秒)。 maxElapsedTime Float SQL在期间内的最大响应时间(毫秒)。 avgCpuTime Float SQL在期间内的平均CPU时间(毫秒)。 maxCpuTime Float SQL在期间内的最大CPU时间(毫秒)。 avgNetTime Float SQL在期间内的平均网络传输时间(毫秒)。 avgNetWaitTime Float SQL在期间内的平均网络入队时间(毫秒)。 avgQueueTime Float SQL在期间内的平均排队时间(毫秒)。 avgDecodeTime Float SQL在期间内的平均语法解析时间(毫秒)。 avgGetPlanTime Float SQL在期间内的平均计划生成时间(毫秒)。 avgExecuteTime Float SQL在期间内的平均计划执行时间(毫秒)。 avgExecutorRpcCount Float SQL在期间内的平均执行RPC请求次数。 missPlanPercentage Float SQL在期间内的计划未命中率,返回值 [0, 1] ,保留四位小数。 avgApplicationTime Float SQL在期间内的平均Application事件等待时间(毫秒)。 avgConcurrencyWaitTime Float SQL在期间内的平均Concurrency事件等待时间(毫秒)。 avgUserIoWaitTime Float SQL在期间内的平均UserIO事件等待时间(毫秒)。 avgScheduleTime Float SQL在期间内的平均Schedule事件等待时间(毫秒)。 avgRowCacheHit Float SQL在期间内的平均RowCache命中次数。 avgBloomFilterCacheHit Float SQL在期间内的平均BloomFilterCache命中次数。 avgBlockCacheHit Float SQL在期间内的平均BlockCache命中次数。 avgBlockIndexCacheHit Float SQL在期间内的平均BlockIndexCache命中次数。 avgDiskReads Float SQL在期间内的平均磁盘读次数。 retryCount Integer SQL在期间内的总计重试次数。 tableScanPercentage Float SQL在期间内的表扫描百分比。 strongConsistencyPercentage Float SQL在期间内的强一致性事务百分比,返回值 [0, 1] ,保留四位小数。 weakConsistencyPercentage Float SQL在期间内的弱一致性事务百分比,返回值 [0, 1] ,保留四位小数。 avgMemstoreReadRows Float SQL在期间内的平均MemStore读行数。 avgSsstoreReadRows Float SQL在期间内的平均SsStore读行数。 说明
返回的 SQL 文本只包含前 100 字符。若需要查看 SQL 全文本,可使用 查询 SQL 文本 的接口。
示例
请求示例
查询集群 Id 为 1 、租户 Id 为 1001 的 SQL 性能。时间范围为 2020-11-03T19:00:00+08:00 ~ 2020-11-03T20:00。指定高级搜索条件为:执行次数大于或等于500。
GET /api/v2/ob/clusters/1/tenants/1001/topSql?searchAttr=executions&searchOp=GE&searchVal=500&startTime=2020-11-03T19%3A00%3A00%2B08%3A00&endTime=2020-11-03T20%3A00%3A00%2B08%3A00
返回示例
实际返回性能数据的数量,跟数据库负载和查询时间区间相关,这里只展示两条性能数据。
{
"duration": 1435,
"server": "a83ad33525",
"status": 200,
"successful": true,
"timestamp": "2020-11-04T11:49:03.802+08:00",
"traceId": "ead2abb032cc464b",
"data": {
"contents": [
{
"avgAffectedRows": 0.00,
"avgApplicationWaitTime": 0.00,
"avgBlockCacheHit": 0.00,
"avgBlockIndexCacheHit": 0.00,
"avgBloomFilterCacheHit": 0.00,
"avgConcurrencyWaitTime": 0.00,
"avgCpuTime": 0.09,
"avgDecodeTime": 0.00,
"avgDiskReads": 0.00,
"avgElapsedTime": 0.09,
"avgExecuteTime": 0.04,
"avgExecutorRpcCount": 0.00,
"avgGetPlanTime": 0.05,
"avgMemstoreReadRows": 0.00,
"avgNetTime": 0.00,
"avgNetWaitTime": 0.00,
"avgPartitionCount": 1.00,
"avgQueueTime": 0.00,
"avgReturnRows": 0.00,
"avgRowCacheHit": 0.00,
"avgRpcCount": 0.00,
"avgScheduleTime": 0.00,
"avgSsstoreReadRows": 0.00,
"avgUserIoWaitTime": 0.00,
"avgWaitCount": 0.00,
"avgWaitTime": 0.00,
"dbName": "bar",
"distPlanPercentage": 0.00,
"execPs": 2.11,
"executions": 7522,
"failCount": 0,
"failPercentage": 0.00,
"inner": true,
"localPlanPercentage": 1.00,
"maxCpuTime": 0.00,
"maxElapsedTime": 0.00,
"missPlanPercentage": 0.00,
"remotePlanPercentage": 0.00,
"retCode4012Count": 0,
"retCode4013Count": 0,
"retCode5001Count": 0,
"retCode5024Count": 0,
"retCode5167Count": 0,
"retCode5217Count": 0,
"retCode6002Count": 0,
"retryCount": 0,
"server": "xxx.xxx.xxx.1:2882",
"sqlId": "89FF9AC900FA242F1DEF8B2211377F60",
"sqlTextShort": "DELETE FROM X WHERE ID = 3",
"sqlType": "DELETE",
"strongConsistencyPercentage": 1.00,
"tableScanPercentage": 0.00,
"userName": "test",
"waitEvent": "none",
"weakConsistencyPercentage": 0.00
},
{
"avgAffectedRows": 0.00,
"avgApplicationWaitTime": 0.00,
"avgBlockCacheHit": 1.00,
"avgBlockIndexCacheHit": 1.00,
"avgBloomFilterCacheHit": 0.00,
"avgConcurrencyWaitTime": 0.00,
"avgCpuTime": 0.39,
"avgDecodeTime": 0.00,
"avgDiskReads": 0.00,
"avgElapsedTime": 0.42,
"avgExecuteTime": 0.28,
"avgExecutorRpcCount": 0.00,
"avgGetPlanTime": 0.11,
"avgMemstoreReadRows": 1.00,
"avgNetTime": 0.00,
"avgNetWaitTime": 0.00,
"avgPartitionCount": 2.00,
"avgQueueTime": 0.02,
"avgReturnRows": 2.00,
"avgRowCacheHit": 0.00,
"avgRpcCount": 0.00,
"avgScheduleTime": 0.00,
"avgSsstoreReadRows": 1.00,
"avgUserIoWaitTime": 0.00,
"avgWaitCount": 0.00,
"avgWaitTime": 0.00,
"dbName": "oceanbase",
"distPlanPercentage": 0.00,
"execPs": 1.00,
"executions": 3568,
"failCount": 0,
"failPercentage": 0.00,
"inner": false,
"localPlanPercentage": 1.00,
"maxCpuTime": 0.00,
"maxElapsedTime": 0.00,
"missPlanPercentage": 0.00,
"remotePlanPercentage": 0.00,
"retCode4012Count": 0,
"retCode4013Count": 0,
"retCode5001Count": 0,
"retCode5024Count": 0,
"retCode5167Count": 0,
"retCode5217Count": 0,
"retCode6002Count": 0,
"retryCount": 0,
"server": "xxx.xxx.xxx.2:2882",
"sqlId": "9CFB17EA7B3F88B92C6BD433D845963A",
"sqlTextShort": "select 1",
"sqlType": "SELECT",
"strongConsistencyPercentage": 0.00,
"tableScanPercentage": 0.00,
"userName": "foo",
"waitEvent": "none",
"weakConsistencyPercentage": 1.00
}
]
}
}