diff --git a/pkg/apiserver/slowquery/model.go b/pkg/apiserver/slowquery/model.go index 930c34086f..d85d0116b3 100644 --- a/pkg/apiserver/slowquery/model.go +++ b/pkg/apiserver/slowquery/model.go @@ -116,6 +116,10 @@ type Model struct { UnpackedBytesReceivedTiFlashTotal uint `gorm:"column:Unpacked_bytes_received_tiflash_total" json:"unpacked_bytes_received_tiflash_total"` UnpackedBytesSentTiFlashCrossZone uint `gorm:"column:Unpacked_bytes_sent_tiflash_cross_zone" json:"unpacked_bytes_sent_tiflash_cross_zone"` UnpackedBytesReceivedTiFlashCrossZone uint `gorm:"column:Unpacked_bytes_received_tiflash_cross_zone" json:"unpacked_bytes_received_tiflash_cross_zone"` + + // IA remote read + IARemoteReadSegmentSize uint64 `gorm:"column:IA_remote_read_segment_size" json:"ia_remote_read_segment_size"` + IARemoteReadSegmentWaitTime float64 `gorm:"column:IA_remote_read_segment_wait_time" json:"ia_remote_read_segment_wait_time"` } type Field struct { diff --git a/pkg/apiserver/statement/models.go b/pkg/apiserver/statement/models.go index b454460c4c..d7cf3b8a5a 100644 --- a/pkg/apiserver/statement/models.go +++ b/pkg/apiserver/statement/models.go @@ -122,6 +122,17 @@ type Model struct { SumUnpackedBytesReceivedTiFlashTotal uint `json:"sum_unpacked_bytes_received_tiflash_total" agg:"SUM(sum_unpacked_bytes_received_tiflash_total)"` SumUnpackedBytesSentTiFlashCrossZone uint `json:"sum_unpacked_bytes_sent_tiflash_cross_zone" agg:"SUM(sum_unpacked_bytes_sent_tiflash_cross_zone)"` SumUnpackedBytesReceivedTiFlashCrossZone uint `json:"sum_unpacked_bytes_received_tiflash_cross_zone" agg:"SUM(sum_unpacked_bytes_received_tiflash_cross_zone)"` + + // IA remote read segment metrics + SumIaReadSegmentCount int64 `json:"sum_ia_read_segment_count" agg:"SUM(sum_ia_read_segment_count)"` + SumIaRemoteReadSegmentSize int64 `json:"sum_ia_remote_read_segment_size" agg:"SUM(sum_ia_remote_read_segment_size)"` + SumIaRemoteReadSegmentWaitTime float64 `json:"sum_ia_remote_read_segment_wait_time" agg:"SUM(sum_ia_remote_read_segment_wait_time)"` + AvgIaReadSegmentCount float64 `json:"avg_ia_read_segment_count" agg:"SUM(exec_count * avg_ia_read_segment_count) / SUM(exec_count)"` + AvgIaRemoteReadSegmentSize float64 `json:"avg_ia_remote_read_segment_size" agg:"SUM(exec_count * avg_ia_remote_read_segment_size) / SUM(exec_count)"` + AvgIaRemoteReadSegmentWaitTime float64 `json:"avg_ia_remote_read_segment_wait_time" agg:"SUM(exec_count * avg_ia_remote_read_segment_wait_time) / SUM(exec_count)"` + MaxIaReadSegmentCount int64 `json:"max_ia_read_segment_count" agg:"MAX(max_ia_read_segment_count)"` + MaxIaRemoteReadSegmentSize int64 `json:"max_ia_remote_read_segment_size" agg:"MAX(max_ia_remote_read_segment_size)"` + MaxIaRemoteReadSegmentWaitTime float64 `json:"max_ia_remote_read_segment_wait_time" agg:"MAX(max_ia_remote_read_segment_wait_time)"` } // tableNames example: "d1.a1,d2.a2,d1.a1,d3.a3" diff --git a/ui-v2/packages/api/server/src/azores/index.zod.ts b/ui-v2/packages/api/server/src/azores/index.zod.ts index fbf2976964..e65fc5efbd 100644 --- a/ui-v2/packages/api/server/src/azores/index.zod.ts +++ b/ui-v2/packages/api/server/src/azores/index.zod.ts @@ -762,6 +762,8 @@ export const diagnosisServiceGetSlowQueryListResponse = zod.object({ "plan_from_binding": zod.number().optional(), "user": zod.string().optional(), "host": zod.string().optional(), + "ia_remote_read_segment_size": zod.number().optional(), + "ia_remote_read_segment_wait_time": zod.number().optional(), "process_time": zod.number().optional(), "wait_time": zod.number().optional(), "backoff_time": zod.number().optional(), @@ -917,6 +919,8 @@ export const diagnosisServiceGetSlowQueryDetailResponse = zod.object({ "plan_from_binding": zod.number().optional(), "user": zod.string().optional(), "host": zod.string().optional(), + "ia_remote_read_segment_size": zod.number().optional(), + "ia_remote_read_segment_wait_time": zod.number().optional(), "process_time": zod.number().optional(), "wait_time": zod.number().optional(), "backoff_time": zod.number().optional(), diff --git a/ui-v2/packages/libs/4-apps/src/slow-query/locales/preset.ts b/ui-v2/packages/libs/4-apps/src/slow-query/locales/preset.ts index 2665d32082..9980f3d41b 100644 --- a/ui-v2/packages/libs/4-apps/src/slow-query/locales/preset.ts +++ b/ui-v2/packages/libs/4-apps/src/slow-query/locales/preset.ts @@ -201,6 +201,16 @@ function useLocales() { "fields.time_queued_by_rc.desc", "The total wait time spent in the resource queue (note: {{distro.tikv}} executes requests in parallel so that this is not a wall time)", ) + tk("fields.ia_remote_read_segment_size", "IA Remote Read Segment Size") + tk( + "fields.ia_remote_read_segment_size.desc", + "Total number of bytes read from IA remote segments", + ) + tk("fields.ia_remote_read_segment_wait_time", "IA Remote Read Segment Wait Time") + tk( + "fields.ia_remote_read_segment_wait_time.desc", + "The wait time spent reading IA remote segments", + ) // additional fields tk("fields.backoff_detail", "Backoff Detail") diff --git a/ui-v2/packages/libs/4-apps/src/slow-query/models/slowquery-model.ts b/ui-v2/packages/libs/4-apps/src/slow-query/models/slowquery-model.ts index e6a3f3637f..0b70c55867 100644 --- a/ui-v2/packages/libs/4-apps/src/slow-query/models/slowquery-model.ts +++ b/ui-v2/packages/libs/4-apps/src/slow-query/models/slowquery-model.ts @@ -23,6 +23,8 @@ export interface SlowqueryModel { exec_retry_time?: number get_commit_ts_time?: number host?: string + ia_remote_read_segment_size?: number + ia_remote_read_segment_wait_time?: number index_names?: string instance?: string is_internal?: number diff --git a/ui-v2/packages/libs/4-apps/src/slow-query/pages/detail/detail-copr.tsx b/ui-v2/packages/libs/4-apps/src/slow-query/pages/detail/detail-copr.tsx index 83a65e36d3..4beac8ff1b 100644 --- a/ui-v2/packages/libs/4-apps/src/slow-query/pages/detail/detail-copr.tsx +++ b/ui-v2/packages/libs/4-apps/src/slow-query/pages/detail/detail-copr.tsx @@ -62,6 +62,19 @@ function getData( value: formatNumByUnit(data.rocksdb_key_skipped_count || 0, "short"), desc: tk("fields.rocksdb_key_skipped_count.desc"), }, + { + name: tk("fields.ia_remote_read_segment_size"), + value: formatNumByUnit(data.ia_remote_read_segment_size || 0, "bytes"), + desc: tk("fields.ia_remote_read_segment_size.desc"), + }, + { + name: tk("fields.ia_remote_read_segment_wait_time"), + value: formatNumByUnit( + data.ia_remote_read_segment_wait_time || 0, + "s", + ), + desc: tk("fields.ia_remote_read_segment_wait_time.desc"), + }, ] } diff --git a/ui-v2/packages/libs/4-apps/src/slow-query/pages/list/cols.tsx b/ui-v2/packages/libs/4-apps/src/slow-query/pages/list/cols.tsx index a9fbc6ee14..bc08c07e31 100644 --- a/ui-v2/packages/libs/4-apps/src/slow-query/pages/list/cols.tsx +++ b/ui-v2/packages/libs/4-apps/src/slow-query/pages/list/cols.tsx @@ -154,6 +154,8 @@ export function useListTableColumns() { tcf.number("ru", "short"), // @todo: fix tcf.text("resource_group"), tcf.number("time_queued_by_rc", "s"), + tcf.number("ia_remote_read_segment_size", "bytes"), + tcf.number("ia_remote_read_segment_wait_time", "s"), ]) }, [tk]) diff --git a/ui/packages/tidb-dashboard-client/src/client/api/api/default-api.ts b/ui/packages/tidb-dashboard-client/src/client/api/api/default-api.ts index 02534b5fc2..be7676d04b 100644 --- a/ui/packages/tidb-dashboard-client/src/client/api/api/default-api.ts +++ b/ui/packages/tidb-dashboard-client/src/client/api/api/default-api.ts @@ -3702,7 +3702,7 @@ export const DefaultApiAxiosParamCreator = function (configuration?: Configurati }, /** * - * @summary Get availiable instances + * @summary Get available instances * @param {string} [dataSource] * @param {string} [end] * @param {string} [start] @@ -5298,7 +5298,7 @@ export const DefaultApiFp = function(configuration?: Configuration) { }, /** * - * @summary Get availiable instances + * @summary Get available instances * @param {string} [dataSource] * @param {string} [end] * @param {string} [start] @@ -6394,7 +6394,7 @@ export const DefaultApiFactory = function (configuration?: Configuration, basePa }, /** * - * @summary Get availiable instances + * @summary Get available instances * @param {string} [dataSource] * @param {string} [end] * @param {string} [start] @@ -8908,7 +8908,7 @@ export class DefaultApi extends BaseAPI { /** * - * @summary Get availiable instances + * @summary Get available instances * @param {DefaultApiTopsqlInstancesGetRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} diff --git a/ui/packages/tidb-dashboard-client/src/client/api/models/slowquery-model.ts b/ui/packages/tidb-dashboard-client/src/client/api/models/slowquery-model.ts index 6d6f07683a..60d6edb163 100644 --- a/ui/packages/tidb-dashboard-client/src/client/api/models/slowquery-model.ts +++ b/ui/packages/tidb-dashboard-client/src/client/api/models/slowquery-model.ts @@ -164,6 +164,18 @@ export interface SlowqueryModel { * @memberof SlowqueryModel */ 'host'?: string; + /** + * IA remote read + * @type {number} + * @memberof SlowqueryModel + */ + 'ia_remote_read_segment_size'?: number; + /** + * + * @type {number} + * @memberof SlowqueryModel + */ + 'ia_remote_read_segment_wait_time'?: number; /** * * @type {string} diff --git a/ui/packages/tidb-dashboard-client/src/client/api/models/statement-model.ts b/ui/packages/tidb-dashboard-client/src/client/api/models/statement-model.ts index 99c952b30c..9693ca00ee 100644 --- a/ui/packages/tidb-dashboard-client/src/client/api/models/statement-model.ts +++ b/ui/packages/tidb-dashboard-client/src/client/api/models/statement-model.ts @@ -74,6 +74,24 @@ export interface StatementModel { * @memberof StatementModel */ 'avg_get_commit_ts_time'?: number; + /** + * + * @type {number} + * @memberof StatementModel + */ + 'avg_ia_read_segment_count'?: number; + /** + * + * @type {number} + * @memberof StatementModel + */ + 'avg_ia_remote_read_segment_size'?: number; + /** + * + * @type {number} + * @memberof StatementModel + */ + 'avg_ia_remote_read_segment_wait_time'?: number; /** * * @type {number} @@ -308,6 +326,24 @@ export interface StatementModel { * @memberof StatementModel */ 'max_get_commit_ts_time'?: number; + /** + * + * @type {number} + * @memberof StatementModel + */ + 'max_ia_read_segment_count'?: number; + /** + * + * @type {number} + * @memberof StatementModel + */ + 'max_ia_remote_read_segment_size'?: number; + /** + * + * @type {number} + * @memberof StatementModel + */ + 'max_ia_remote_read_segment_wait_time'?: number; /** * * @type {number} @@ -542,6 +578,24 @@ export interface StatementModel { * @memberof StatementModel */ 'sum_errors'?: number; + /** + * IA remote read segment metrics + * @type {number} + * @memberof StatementModel + */ + 'sum_ia_read_segment_count'?: number; + /** + * + * @type {number} + * @memberof StatementModel + */ + 'sum_ia_remote_read_segment_size'?: number; + /** + * + * @type {number} + * @memberof StatementModel + */ + 'sum_ia_remote_read_segment_wait_time'?: number; /** * * @type {number} diff --git a/ui/packages/tidb-dashboard-client/swagger/spec.json b/ui/packages/tidb-dashboard-client/swagger/spec.json index f929b5f686..1342402252 100644 --- a/ui/packages/tidb-dashboard-client/swagger/spec.json +++ b/ui/packages/tidb-dashboard-client/swagger/spec.json @@ -3459,7 +3459,7 @@ "JwtAuth": [] } ], - "summary": "Get availiable instances", + "summary": "Get available instances", "parameters": [ { "type": "string", @@ -5269,6 +5269,13 @@ "host": { "type": "string" }, + "ia_remote_read_segment_size": { + "description": "IA remote read", + "type": "integer" + }, + "ia_remote_read_segment_wait_time": { + "type": "number" + }, "index_names": { "type": "string" }, @@ -5598,6 +5605,15 @@ "avg_get_commit_ts_time": { "type": "integer" }, + "avg_ia_read_segment_count": { + "type": "number" + }, + "avg_ia_remote_read_segment_size": { + "type": "number" + }, + "avg_ia_remote_read_segment_wait_time": { + "type": "number" + }, "avg_latency": { "type": "integer" }, @@ -5720,6 +5736,15 @@ "max_get_commit_ts_time": { "type": "integer" }, + "max_ia_read_segment_count": { + "type": "integer" + }, + "max_ia_remote_read_segment_size": { + "type": "integer" + }, + "max_ia_remote_read_segment_wait_time": { + "type": "number" + }, "max_latency": { "type": "integer" }, @@ -5843,6 +5868,16 @@ "sum_errors": { "type": "integer" }, + "sum_ia_read_segment_count": { + "description": "IA remote read segment metrics", + "type": "integer" + }, + "sum_ia_remote_read_segment_size": { + "type": "integer" + }, + "sum_ia_remote_read_segment_wait_time": { + "type": "number" + }, "sum_latency": { "type": "integer" }, diff --git a/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/pages/Detail/DetailTabCopr.tsx b/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/pages/Detail/DetailTabCopr.tsx index 7c426e49f5..c9961dd984 100644 --- a/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/pages/Detail/DetailTabCopr.tsx +++ b/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/pages/Detail/DetailTabCopr.tsx @@ -107,5 +107,11 @@ export const tabCoprItems = (data: SlowqueryModel) => [ value={data.unpacked_bytes_received_tiflash_cross_zone} /> ) + }, + { + key: 'ia_remote_read_segment_size', + value: ( + + ) } ] diff --git a/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/pages/Detail/DetailTabTime.tsx b/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/pages/Detail/DetailTabTime.tsx index d0f13ce35d..cfbd829009 100644 --- a/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/pages/Detail/DetailTabTime.tsx +++ b/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/pages/Detail/DetailTabTime.tsx @@ -119,6 +119,11 @@ export const tabTimeItems = (data: SlowqueryModel, t: TFunction) => { key: 'time_queued_by_rc', value: data.time_queued_by_rc! * 10e8, indentLevel: 1 + }, + { + key: 'ia_remote_read_segment_wait_time', + value: data.ia_remote_read_segment_wait_time! * 10e8, + indentLevel: 1 } ] } diff --git a/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/translations/en.yaml b/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/translations/en.yaml index c9b3cf2a24..d0f07031c3 100644 --- a/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/translations/en.yaml +++ b/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/translations/en.yaml @@ -144,6 +144,10 @@ slow_query: unpacked_bytes_sent_tiflash_cross_zone_tooltip: The number of bytes sent to TiFlash across zones unpacked_bytes_received_tiflash_cross_zone: Cross-Zone Bytes Received from TiFlash unpacked_bytes_received_tiflash_cross_zone_tooltip: The number of bytes received from TiFlash across zones + ia_remote_read_segment_size: IA Remote Read Segment Size + ia_remote_read_segment_size_tooltip: Total number of bytes read from IA remote segments + ia_remote_read_segment_wait_time: IA Remote Read Segment Wait Time + ia_remote_read_segment_wait_time_tooltip: The wait time spent reading IA remote segments common: status: diff --git a/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/translations/zh.yaml b/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/translations/zh.yaml index 577072a871..15eb3a912e 100644 --- a/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/translations/zh.yaml +++ b/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/translations/zh.yaml @@ -147,6 +147,12 @@ slow_query: unpacked_bytes_received_tiflash_cross_zone: 跨可用区从 TiFlash 接收的字节数 unpacked_bytes_received_tiflash_cross_zone_tooltip: 跨可用区从 TiFlash 接收的字节数 + # IA remote read + ia_remote_read_segment_size: IA 远程读取数据量 + ia_remote_read_segment_size_tooltip: 从 IA 远程存储段读取的数据总量 + ia_remote_read_segment_wait_time: IA 远程读分段等待时间 + ia_remote_read_segment_wait_time_tooltip: IA 远程读分段等待时间 + common: status: success: 成功 diff --git a/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/utils/tableColumns.tsx b/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/utils/tableColumns.tsx index 73ee4986be..419bc47c88 100644 --- a/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/utils/tableColumns.tsx +++ b/ui/packages/tidb-dashboard-lib/src/apps/SlowQuery/utils/tableColumns.tsx @@ -136,6 +136,8 @@ export function slowQueryColumns( tcf.bar.single('unpacked_bytes_sent_tiflash_total', 'bytes', rows), tcf.bar.single('unpacked_bytes_received_tiflash_total', 'bytes', rows), tcf.bar.single('unpacked_bytes_sent_tiflash_cross_zone', 'bytes', rows), - tcf.bar.single('unpacked_bytes_received_tiflash_cross_zone', 'bytes', rows) + tcf.bar.single('unpacked_bytes_received_tiflash_cross_zone', 'bytes', rows), + tcf.bar.single('ia_remote_read_segment_size', 'bytes', rows), + tcf.bar.single('ia_remote_read_segment_wait_time', 's', rows) ]) } diff --git a/ui/packages/tidb-dashboard-lib/src/apps/Statement/pages/Detail/PlanDetailTabCopr.tsx b/ui/packages/tidb-dashboard-lib/src/apps/Statement/pages/Detail/PlanDetailTabCopr.tsx index 171c87679d..5d013f2a7e 100644 --- a/ui/packages/tidb-dashboard-lib/src/apps/Statement/pages/Detail/PlanDetailTabCopr.tsx +++ b/ui/packages/tidb-dashboard-lib/src/apps/Statement/pages/Detail/PlanDetailTabCopr.tsx @@ -1,4 +1,5 @@ import React from 'react' +import { getValueFormat } from '@baurine/grafana-value-formats' import { StatementModel } from '@lib/client' import { ValueWithTooltip } from '@lib/components' @@ -136,5 +137,21 @@ export const tabCoprItems = (data: StatementModel) => [ value={data.sum_unpacked_bytes_received_tiflash_cross_zone} /> ) + }, + { + key: 'avg_ia_remote_read_segment_size', + value: ( + + ) + }, + { + key: 'max_ia_remote_read_segment_size', + value: ( + + ) } ] diff --git a/ui/packages/tidb-dashboard-lib/src/apps/Statement/pages/Detail/PlanDetailTabTime.tsx b/ui/packages/tidb-dashboard-lib/src/apps/Statement/pages/Detail/PlanDetailTabTime.tsx index 13e7beab24..5ca6d2e844 100644 --- a/ui/packages/tidb-dashboard-lib/src/apps/Statement/pages/Detail/PlanDetailTabTime.tsx +++ b/ui/packages/tidb-dashboard-lib/src/apps/Statement/pages/Detail/PlanDetailTabTime.tsx @@ -70,5 +70,10 @@ export const tabTimeItems = (data: StatementModel, t: TFunction) => [ avg: data.avg_latency, min: data.min_latency, max: data.max_latency + }, + { + key: 'ia_remote_read_segment_wait_time', + avg: data.avg_ia_remote_read_segment_wait_time, + max: data.max_ia_remote_read_segment_wait_time } ] diff --git a/ui/packages/tidb-dashboard-lib/src/apps/Statement/translations/en.yaml b/ui/packages/tidb-dashboard-lib/src/apps/Statement/translations/en.yaml index 04440c590a..279ebc5c48 100755 --- a/ui/packages/tidb-dashboard-lib/src/apps/Statement/translations/en.yaml +++ b/ui/packages/tidb-dashboard-lib/src/apps/Statement/translations/en.yaml @@ -223,3 +223,17 @@ statement: sum_unpacked_bytes_sent_tiflash_cross_zone_tooltip: The total number of bytes sent to TiFlash across zones sum_unpacked_bytes_received_tiflash_cross_zone: Total Cross-Zone Bytes Received from TiFlash sum_unpacked_bytes_received_tiflash_cross_zone_tooltip: The total number of bytes received from TiFlash across zones + avg_ia_read_segment_count: Mean IA Read Segments + avg_ia_read_segment_count_tooltip: The average number of IA read segments per execution + avg_ia_remote_read_segment_size: Mean IA Remote Read Segment Size + avg_ia_remote_read_segment_size_tooltip: The average of bytes read from IA remote segments + avg_ia_remote_read_segment_wait_time: Mean IA Remote Read Segment Wait Time + avg_ia_remote_read_segment_wait_time_tooltip: The average wait time spent reading IA remote segments + max_ia_read_segment_count: Max IA Read Segments + max_ia_read_segment_count_tooltip: Maximum IA read segment count + max_ia_remote_read_segment_size: Max IA Remote Read Segment Size + max_ia_remote_read_segment_size_tooltip: Maximum number of bytes read from IA remote segments + max_ia_remote_read_segment_wait_time: Max IA Remote Read Segment Wait Time + max_ia_remote_read_segment_wait_time_tooltip: Maximum wait time spent reading IA remote segments + ia_remote_read_segment_wait_time: IA Remote Read Segment Wait Time + ia_remote_read_segment_wait_time_tooltip: The wait time spent reading IA remote segments diff --git a/ui/packages/tidb-dashboard-lib/src/apps/Statement/translations/zh.yaml b/ui/packages/tidb-dashboard-lib/src/apps/Statement/translations/zh.yaml index 194d33b9e3..eeff237cbc 100755 --- a/ui/packages/tidb-dashboard-lib/src/apps/Statement/translations/zh.yaml +++ b/ui/packages/tidb-dashboard-lib/src/apps/Statement/translations/zh.yaml @@ -231,3 +231,17 @@ statement: sum_unpacked_bytes_sent_tiflash_cross_zone_tooltip: 跨可用区发送给 TiFlash 的总字节数 sum_unpacked_bytes_received_tiflash_cross_zone: 跨可用区从 TiFlash 接收的总字节数 sum_unpacked_bytes_received_tiflash_cross_zone_tooltip: 跨可用区从 TiFlash 接收的总字节数 + avg_ia_read_segment_count: 平均 IA 读分段数 + avg_ia_read_segment_count_tooltip: 按执行次数加权的平均 IA 读分段数 + avg_ia_remote_read_segment_size: 平均 IA 远程读分段数据量 + avg_ia_remote_read_segment_size_tooltip: 按执行次数加权的平均 IA 远程读分段数据量 + avg_ia_remote_read_segment_wait_time: 平均 IA 远程读分段等待时间 + avg_ia_remote_read_segment_wait_time_tooltip: 按执行次数加权的平均 IA 远程读分段等待时间 + max_ia_read_segment_count: 最大 IA 读分段数 + max_ia_read_segment_count_tooltip: 单次执行中 IA 读分段数的最大值 + max_ia_remote_read_segment_size: 最大 IA 远程读分段数据量 + max_ia_remote_read_segment_size_tooltip: 单次执行中 IA 远程读分段数据量的最大值 + max_ia_remote_read_segment_wait_time: 最大 IA 远程读分段等待时间 + max_ia_remote_read_segment_wait_time_tooltip: 单次执行中 IA 远程读分段等待时间的最大值 + ia_remote_read_segment_wait_time: IA 远程读分段等待时间 + ia_remote_read_segment_wait_time_tooltip: IA 远程读分段数据量的最大值 diff --git a/ui/packages/tidb-dashboard-lib/src/apps/Statement/utils/tableColumns.tsx b/ui/packages/tidb-dashboard-lib/src/apps/Statement/utils/tableColumns.tsx index 933fccad1e..5a59a4a4ac 100644 --- a/ui/packages/tidb-dashboard-lib/src/apps/Statement/utils/tableColumns.tsx +++ b/ui/packages/tidb-dashboard-lib/src/apps/Statement/utils/tableColumns.tsx @@ -105,6 +105,18 @@ export const derivedFields = { avg_time_queued_by_rc: genDerivedBarSources( 'avg_time_queued_by_rc', 'max_time_queued_by_rc' + ), + avg_ia_read_segment_count: genDerivedBarSources( + 'avg_ia_read_segment_count', + 'max_ia_read_segment_count' + ), + avg_ia_remote_read_segment_size: genDerivedBarSources( + 'avg_ia_remote_read_segment_size', + 'max_ia_remote_read_segment_size' + ), + avg_ia_remote_read_segment_wait_time: genDerivedBarSources( + 'avg_ia_remote_read_segment_wait_time', + 'max_ia_remote_read_segment_wait_time' ) } @@ -310,7 +322,10 @@ export function statementColumns( 'sum_unpacked_bytes_received_tiflash_cross_zone', 'bytes', rows - ) + ), + avgMaxColumn(tcf, 'avg_ia_read_segment_count', 'short', rows), + avgMaxColumn(tcf, 'avg_ia_remote_read_segment_size', 'bytes', rows), + avgMaxColumn(tcf, 'avg_ia_remote_read_segment_wait_time', 'ns', rows) ]) } diff --git a/ui/packages/tidb-dashboard-lib/src/client/models.ts b/ui/packages/tidb-dashboard-lib/src/client/models.ts index d823980e7e..843873ea4e 100644 --- a/ui/packages/tidb-dashboard-lib/src/client/models.ts +++ b/ui/packages/tidb-dashboard-lib/src/client/models.ts @@ -2350,6 +2350,18 @@ export interface SlowqueryModel { * @memberof SlowqueryModel */ 'host'?: string; + /** + * IA remote read + * @type {number} + * @memberof SlowqueryModel + */ + 'ia_remote_read_segment_size'?: number; + /** + * + * @type {number} + * @memberof SlowqueryModel + */ + 'ia_remote_read_segment_wait_time'?: number; /** * * @type {string} @@ -2946,6 +2958,24 @@ export interface StatementModel { * @memberof StatementModel */ 'avg_get_commit_ts_time'?: number; + /** + * + * @type {number} + * @memberof StatementModel + */ + 'avg_ia_read_segment_count'?: number; + /** + * + * @type {number} + * @memberof StatementModel + */ + 'avg_ia_remote_read_segment_size'?: number; + /** + * + * @type {number} + * @memberof StatementModel + */ + 'avg_ia_remote_read_segment_wait_time'?: number; /** * * @type {number} @@ -3180,6 +3210,24 @@ export interface StatementModel { * @memberof StatementModel */ 'max_get_commit_ts_time'?: number; + /** + * + * @type {number} + * @memberof StatementModel + */ + 'max_ia_read_segment_count'?: number; + /** + * + * @type {number} + * @memberof StatementModel + */ + 'max_ia_remote_read_segment_size'?: number; + /** + * + * @type {number} + * @memberof StatementModel + */ + 'max_ia_remote_read_segment_wait_time'?: number; /** * * @type {number} @@ -3414,6 +3462,24 @@ export interface StatementModel { * @memberof StatementModel */ 'sum_errors'?: number; + /** + * IA remote read segment metrics + * @type {number} + * @memberof StatementModel + */ + 'sum_ia_read_segment_count'?: number; + /** + * + * @type {number} + * @memberof StatementModel + */ + 'sum_ia_remote_read_segment_size'?: number; + /** + * + * @type {number} + * @memberof StatementModel + */ + 'sum_ia_remote_read_segment_wait_time'?: number; /** * * @type {number} diff --git a/ui/packages/tidb-dashboard-lib/src/utils/tableColumns.tsx b/ui/packages/tidb-dashboard-lib/src/utils/tableColumns.tsx index 13a25bcecc..130b195c7b 100644 --- a/ui/packages/tidb-dashboard-lib/src/utils/tableColumns.tsx +++ b/ui/packages/tidb-dashboard-lib/src/utils/tableColumns.tsx @@ -57,8 +57,8 @@ function fieldsKeyColumn(transKeyPrefix: string): IColumn { return { name: TranslatedColumnName(TRANS_KEY_PREFIX, 'name'), key: 'key', - minWidth: 150, - maxWidth: 250, + minWidth: 200, + maxWidth: 400, onRender: (rec) => { return (