From 08d15afbeaff93e93f77eb890edb2b31f13b3c62 Mon Sep 17 00:00:00 2001 From: hehechen Date: Tue, 29 Nov 2022 15:24:56 +0800 Subject: [PATCH] add telemetry for alter table compact partition Signed-off-by: hehechen --- executor/adapter.go | 1 + executor/builder.go | 4 ++++ metrics/telemetry.go | 10 ++++++++++ session/session.go | 4 ++++ telemetry/data_feature_usage_test.go | 6 ++++++ 5 files changed, 25 insertions(+) diff --git a/executor/adapter.go b/executor/adapter.go index 3dd0e0ce0877e..aaa7aa8c4b8c9 100644 --- a/executor/adapter.go +++ b/executor/adapter.go @@ -215,6 +215,7 @@ type PartitionTelemetryInfo struct { UseCreateIntervalPartition bool UseAddIntervalPartition bool UseDropIntervalPartition bool + UseCompactTablePartition bool } // AccountLockTelemetryInfo records account lock/unlock information during execution diff --git a/executor/builder.go b/executor/builder.go index eb8825dd0ce99..16719583d9ea8 100644 --- a/executor/builder.go +++ b/executor/builder.go @@ -5279,6 +5279,10 @@ func (b *executorBuilder) buildCompactTable(v *plannercore.CompactTable) Executo } partitionIDs = append(partitionIDs, partitionID) } + if b.Ti.PartitionTelemetry == nil { + b.Ti.PartitionTelemetry = &PartitionTelemetryInfo{} + } + b.Ti.PartitionTelemetry.UseCompactTablePartition = true } return &CompactTableTiFlashExec{ diff --git a/metrics/telemetry.go b/metrics/telemetry.go index 486a2d43a0c59..7460ca5ceb04c 100644 --- a/metrics/telemetry.go +++ b/metrics/telemetry.go @@ -155,6 +155,13 @@ var ( Name: "flashback_cluster_usage", Help: "Counter of usage of flashback cluster", }) + TelemetryCompactPartitionCnt = prometheus.NewCounter( + prometheus.CounterOpts{ + Namespace: "tidb", + Subsystem: "telemetry", + Name: "compact_partition_usage", + Help: "Counter of compact table partition", + }) ) // readCounter reads the value of a prometheus.Counter. @@ -254,6 +261,7 @@ type TablePartitionUsageCounter struct { TablePartitionCreateIntervalPartitionsCnt int64 `json:"table_partition_create_interval_partitions_cnt"` TablePartitionAddIntervalPartitionsCnt int64 `json:"table_partition_add_interval_partitions_cnt"` TablePartitionDropIntervalPartitionsCnt int64 `json:"table_partition_drop_interval_partitions_cnt"` + TablePartitionComactCnt int64 `json:"table_TablePartitionComactCnt"` } // ExchangePartitionUsageCounter records the usages of exchange partition. @@ -291,6 +299,7 @@ func (c TablePartitionUsageCounter) Cal(rhs TablePartitionUsageCounter) TablePar TablePartitionCreateIntervalPartitionsCnt: c.TablePartitionCreateIntervalPartitionsCnt - rhs.TablePartitionCreateIntervalPartitionsCnt, TablePartitionAddIntervalPartitionsCnt: c.TablePartitionAddIntervalPartitionsCnt - rhs.TablePartitionAddIntervalPartitionsCnt, TablePartitionDropIntervalPartitionsCnt: c.TablePartitionDropIntervalPartitionsCnt - rhs.TablePartitionDropIntervalPartitionsCnt, + TablePartitionComactCnt: c.TablePartitionComactCnt - rhs.TablePartitionComactCnt, } } @@ -326,6 +335,7 @@ func GetTablePartitionCounter() TablePartitionUsageCounter { TablePartitionCreateIntervalPartitionsCnt: readCounter(TelemetryTablePartitionCreateIntervalPartitionsCnt), TablePartitionAddIntervalPartitionsCnt: readCounter(TelemetryTablePartitionAddIntervalPartitionsCnt), TablePartitionDropIntervalPartitionsCnt: readCounter(TelemetryTablePartitionDropIntervalPartitionsCnt), + TablePartitionComactCnt: readCounter(TelemetryCompactPartitionCnt), } } diff --git a/session/session.go b/session/session.go index 51a3e22d39aac..9a61e363ee977 100644 --- a/session/session.go +++ b/session/session.go @@ -144,6 +144,7 @@ var ( telemetryTablePartitionAddIntervalUsage = metrics.TelemetryTablePartitionAddIntervalPartitionsCnt telemetryTablePartitionDropIntervalUsage = metrics.TelemetryTablePartitionDropIntervalPartitionsCnt telemetryExchangePartitionUsage = metrics.TelemetryExchangePartitionCnt + telemetryTableCompactPartitionUsage = metrics.TelemetryCompactPartitionCnt telemetryLockUserUsage = metrics.TelemetryAccountLockCnt.WithLabelValues("lockUser") telemetryUnlockUserUsage = metrics.TelemetryAccountLockCnt.WithLabelValues("unlockUser") @@ -3628,6 +3629,9 @@ func (s *session) updateTelemetryMetric(es *executor.ExecStmt) { if ti.PartitionTelemetry.UseDropIntervalPartition { telemetryTablePartitionDropIntervalUsage.Inc() } + if ti.PartitionTelemetry.UseCompactTablePartition { + telemetryTableCompactPartitionUsage.Inc() + } } if ti.AccountLockTelemetry != nil { diff --git a/telemetry/data_feature_usage_test.go b/telemetry/data_feature_usage_test.go index 770f4a7d3d08e..bfb6922db7d30 100644 --- a/telemetry/data_feature_usage_test.go +++ b/telemetry/data_feature_usage_test.go @@ -286,6 +286,12 @@ func TestTablePartition(t *testing.T) { usage, err = telemetry.GetFeatureUsage(tk.Session()) require.NoError(t, err) require.Equal(t, int64(1), usage.ExchangePartition.ExchangePartitionCnt) + + require.Equal(t, int64(0), usage.TablePartition.TablePartitionComactCnt) + tk.MustExec(`alter table pt2 compact partition p0 tiflash replica;`) + usage, err = telemetry.GetFeatureUsage(tk.Session()) + require.NoError(t, err) + require.Equal(t, int64(1), usage.TablePartition.TablePartitionComactCnt) } func TestPlacementPolicies(t *testing.T) {