diff --git a/ddl/dist_owner.go b/ddl/dist_owner.go index 94337a02ad809..588ef036ef276 100644 --- a/ddl/dist_owner.go +++ b/ddl/dist_owner.go @@ -39,7 +39,10 @@ import ( ) // CheckBackfillJobFinishInterval is export for test. -var CheckBackfillJobFinishInterval = 300 * time.Millisecond +var ( + CheckBackfillJobFinishInterval = 300 * time.Millisecond + telemetryDistReorgUsage = metrics.TelemetryDistReorgCnt +) const ( distPhysicalTableConcurrency = 16 @@ -48,6 +51,9 @@ const ( func initDistReorg(reorgMeta *model.DDLReorgMeta) { isDistReorg := variable.DDLEnableDistributeReorg.Load() reorgMeta.IsDistReorg = isDistReorg + if isDistReorg { + metrics.TelemetryDistReorgCnt.Inc() + } } // BackfillJobRangeMeta is export for test. diff --git a/metrics/telemetry.go b/metrics/telemetry.go index c133610c56189..69093252079c3 100644 --- a/metrics/telemetry.go +++ b/metrics/telemetry.go @@ -169,6 +169,13 @@ var ( Name: "compact_partition_usage", Help: "Counter of compact table partition", }) + TelemetryDistReorgCnt = prometheus.NewCounter( + prometheus.CounterOpts{ + Namespace: "tidb", + Subsystem: "telemetry", + Name: "distributed_reorg_count", + Help: "Counter of usage of distributed reorg DDL tasks count", + }) TelemetryStoreBatchedQueryCnt = prometheus.NewCounter( prometheus.CounterOpts{ Namespace: "tidb", @@ -414,6 +421,7 @@ type DDLUsageCounter struct { AddIndexIngestUsed int64 `json:"add_index_ingest_used"` MetadataLockUsed bool `json:"metadata_lock_used"` FlashbackClusterUsed int64 `json:"flashback_cluster_used"` + DistReorgUsed int64 `json:"dist_reorg_used"` } // Sub returns the difference of two counters. @@ -421,6 +429,7 @@ func (a DDLUsageCounter) Sub(rhs DDLUsageCounter) DDLUsageCounter { return DDLUsageCounter{ AddIndexIngestUsed: a.AddIndexIngestUsed - rhs.AddIndexIngestUsed, FlashbackClusterUsed: a.FlashbackClusterUsed - rhs.FlashbackClusterUsed, + DistReorgUsed: a.DistReorgUsed - rhs.DistReorgUsed, } } @@ -429,6 +438,7 @@ func GetDDLUsageCounter() DDLUsageCounter { return DDLUsageCounter{ AddIndexIngestUsed: readCounter(TelemetryAddIndexIngestCnt), FlashbackClusterUsed: readCounter(TelemetryFlashbackClusterCnt), + DistReorgUsed: readCounter(TelemetryDistReorgCnt), } } diff --git a/telemetry/data_feature_usage_test.go b/telemetry/data_feature_usage_test.go index 0630c26b31471..67d3afac74d98 100644 --- a/telemetry/data_feature_usage_test.go +++ b/telemetry/data_feature_usage_test.go @@ -585,6 +585,37 @@ func TestAddIndexAccelerationAndMDL(t *testing.T) { require.Equal(t, true, usage.DDLUsageCounter.MetadataLockUsed) } +func TestDistReorgUsage(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + usage, err := telemetry.GetFeatureUsage(tk.Session()) + require.NoError(t, err) + initCount := usage.DDLUsageCounter.DistReorgUsed + + tk.MustExec("set @@global.tidb_ddl_distribute_reorg = off") + allow := variable.DDLEnableDistributeReorg.Load() + require.Equal(t, false, allow) + tk.MustExec("use test") + tk.MustExec("drop table if exists tele_t") + tk.MustExec("create table tele_t(id int, b int)") + tk.MustExec("insert into tele_t values(1,1),(2,2);") + tk.MustExec("alter table tele_t add index idx_org(b)") + usage, err = telemetry.GetFeatureUsage(tk.Session()) + require.NoError(t, err) + require.Equal(t, initCount, usage.DDLUsageCounter.DistReorgUsed) + + tk.MustExec("set @@global.tidb_ddl_distribute_reorg = on") + allow = variable.DDLEnableDistributeReorg.Load() + require.Equal(t, true, allow) + usage, err = telemetry.GetFeatureUsage(tk.Session()) + require.NoError(t, err) + require.Equal(t, initCount, usage.DDLUsageCounter.DistReorgUsed) + tk.MustExec("alter table tele_t add index idx_new(b)") + usage, err = telemetry.GetFeatureUsage(tk.Session()) + require.NoError(t, err) + require.Equal(t, initCount+1, usage.DDLUsageCounter.DistReorgUsed) +} + func TestGlobalMemoryControl(t *testing.T) { store := testkit.CreateMockStore(t)