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: (
+