Skip to content

Commit 547ab19

Browse files
authored
Merge pull request ClickHouse#75738 from CurtizJ/remove-mutations-metrics
Replace metrics for on fly mutations to properties in `system.tables`
2 parents e0f9cc7 + da1a2c8 commit 547ab19

20 files changed

+110
-74
lines changed

src/Common/CurrentMetrics.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -272,8 +272,6 @@
272272
M(PartsDeleteOnDestroy, "Part was moved to another disk and should be deleted in own destructor.") \
273273
M(PartsWide, "Wide parts.") \
274274
M(PartsCompact, "Compact parts.") \
275-
M(ActiveDataMutations, "Number of data mutations in all tables that are not finished and can be applied on the fly.") \
276-
M(ActiveMetadataMutations, "Number of metadata mutations in all tables that are not finished and can be applied on the fly.") \
277275
M(MMappedFiles, "Total number of mmapped files.") \
278276
M(MMappedFileBytes, "Sum size of mmapped file regions.") \
279277
M(AsynchronousReadWait, "Number of threads waiting for asynchronous read.") \

src/Storages/MergeTree/MergeTreeData.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,6 @@ namespace ProfileEvents
150150
namespace CurrentMetrics
151151
{
152152
extern const Metric DelayedInserts;
153-
extern const Metric ActiveDataMutations;
154-
extern const Metric ActiveMetadataMutations;
155153
}
156154

157155

@@ -9219,8 +9217,6 @@ static void updateMutationsCounters(
92199217

92209218
if (num_data_mutations_to_apply < 0)
92219219
throw Exception(ErrorCodes::LOGICAL_ERROR, "On-fly data mutations counter is negative ({})", num_data_mutations_to_apply);
9222-
9223-
CurrentMetrics::add(CurrentMetrics::ActiveDataMutations, increment);
92249220
}
92259221

92269222
if (!has_metadata_mutation && AlterConversions::isSupportedMetadataMutation(command.type))
@@ -9230,8 +9226,6 @@ static void updateMutationsCounters(
92309226

92319227
if (num_metadata_mutations_to_apply < 0)
92329228
throw Exception(ErrorCodes::LOGICAL_ERROR, "On-fly metadata mutations counter is negative ({})", num_metadata_mutations_to_apply);
9233-
9234-
CurrentMetrics::add(CurrentMetrics::ActiveMetadataMutations, increment);
92359229
}
92369230
}
92379231
}

src/Storages/MergeTree/MergeTreeData.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,12 @@ class MergeTreeData : public IStorage, public WithMutableContext
555555
/// Return the number of marks in all parts
556556
size_t getTotalMarksCount() const;
557557

558+
/// Returns the number of data mutations (UPDATEs and DELETEs) suitable for applying on the fly.
559+
virtual UInt64 getNumberOnFlyDataMutations() const = 0;
560+
561+
/// Returns the number of metadata mutations (RENAMEs) suitable for applying on the fly.
562+
virtual UInt64 getNumberOnFlyMetadataMutations() const = 0;
563+
558564
/// Same as above but only returns projection parts
559565
ProjectionPartsVector getAllProjectionPartsVector(MergeTreeData::DataPartStateVector * out_states = nullptr) const;
560566

src/Storages/MergeTree/ReplicatedMergeTreeQueue.cpp

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,6 @@
2323
#include <ranges>
2424
#include <Poco/Timestamp.h>
2525

26-
namespace CurrentMetrics
27-
{
28-
extern const Metric ActiveDataMutations;
29-
extern const Metric ActiveMetadataMutations;
30-
}
31-
3226
namespace DB
3327
{
3428

@@ -62,11 +56,6 @@ ReplicatedMergeTreeQueue::ReplicatedMergeTreeQueue(StorageReplicatedMergeTree &
6256
log = getLogger(logger_name);
6357
}
6458

65-
ReplicatedMergeTreeQueue::~ReplicatedMergeTreeQueue()
66-
{
67-
clear();
68-
}
69-
7059
void ReplicatedMergeTreeQueue::clear()
7160
{
7261
auto locks = lockQueue();
@@ -78,10 +67,6 @@ void ReplicatedMergeTreeQueue::clear()
7867
mutations_by_znode.clear();
7968
mutations_by_partition.clear();
8069
mutation_pointer.clear();
81-
82-
CurrentMetrics::sub(CurrentMetrics::ActiveDataMutations, num_data_mutations_to_apply);
83-
CurrentMetrics::sub(CurrentMetrics::ActiveMetadataMutations, num_metadata_mutations_to_apply);
84-
8570
num_data_mutations_to_apply = 0;
8671
num_metadata_mutations_to_apply = 0;
8772
}
@@ -2090,6 +2075,18 @@ MergeTreeData::MutationsSnapshotPtr ReplicatedMergeTreeQueue::getMutationsSnapsh
20902075
return res;
20912076
}
20922077

2078+
UInt64 ReplicatedMergeTreeQueue::getNumberOnFlyDataMutations() const
2079+
{
2080+
std::lock_guard lock(state_mutex);
2081+
return num_data_mutations_to_apply;
2082+
}
2083+
2084+
UInt64 ReplicatedMergeTreeQueue::getNumberOnFlyMetadataMutations() const
2085+
{
2086+
std::lock_guard lock(state_mutex);
2087+
return num_metadata_mutations_to_apply;
2088+
}
2089+
20932090
MutationCommands ReplicatedMergeTreeQueue::getMutationCommands(
20942091
const MergeTreeData::DataPartPtr & part, Int64 desired_mutation_version, Strings & mutation_ids) const
20952092
{

src/Storages/MergeTree/ReplicatedMergeTreeQueue.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ class ReplicatedMergeTreeQueue
313313

314314
public:
315315
ReplicatedMergeTreeQueue(StorageReplicatedMergeTree & storage_, ReplicatedMergeTreeMergeStrategyPicker & merge_strategy_picker_);
316-
~ReplicatedMergeTreeQueue();
316+
~ReplicatedMergeTreeQueue() = default;
317317

318318
/// Clears queue state
319319
void clear();
@@ -441,6 +441,9 @@ class ReplicatedMergeTreeQueue
441441
/// without actual data modification on disk.
442442
MergeTreeData::MutationsSnapshotPtr getMutationsSnapshot(const MutationsSnapshot::Params & params) const;
443443

444+
UInt64 getNumberOnFlyDataMutations() const;
445+
UInt64 getNumberOnFlyMetadataMutations() const;
446+
444447
/// Mark finished mutations as done. If the function needs to be called again at some later time
445448
/// (because some mutations are probably done but we are not sure yet), returns true.
446449
bool tryFinalizeMutations(zkutil::ZooKeeperPtr zookeeper);

src/Storages/StorageMergeTree.cpp

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,6 @@
4848
#include "Core/Names.h"
4949
#include <IO/SharedThreadPools.h>
5050

51-
namespace CurrentMetrics
52-
{
53-
extern const Metric ActiveDataMutations;
54-
extern const Metric ActiveMetadataMutations;
55-
}
56-
5751
namespace DB
5852
{
5953

@@ -251,9 +245,6 @@ void StorageMergeTree::shutdown(bool)
251245
StorageMergeTree::~StorageMergeTree()
252246
{
253247
shutdown(false);
254-
255-
CurrentMetrics::sub(CurrentMetrics::ActiveDataMutations, num_data_mutations_to_apply);
256-
CurrentMetrics::sub(CurrentMetrics::ActiveMetadataMutations, num_metadata_mutations_to_apply);
257248
}
258249

259250
void StorageMergeTree::read(
@@ -2701,6 +2692,18 @@ MergeTreeData::MutationsSnapshotPtr StorageMergeTree::getMutationsSnapshot(const
27012692
return res;
27022693
}
27032694

2695+
UInt64 StorageMergeTree::getNumberOnFlyDataMutations() const
2696+
{
2697+
std::lock_guard lock(currently_processing_in_background_mutex);
2698+
return num_data_mutations_to_apply;
2699+
}
2700+
2701+
UInt64 StorageMergeTree::getNumberOnFlyMetadataMutations() const
2702+
{
2703+
std::lock_guard lock(currently_processing_in_background_mutex);
2704+
return num_metadata_mutations_to_apply;
2705+
}
2706+
27042707
void StorageMergeTree::startBackgroundMovesIfNeeded()
27052708
{
27062709
if (areBackgroundMovesNeeded())

src/Storages/StorageMergeTree.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ class StorageMergeTree final : public MergeTreeData
6969
std::optional<UInt64> totalBytes(const Settings &) const override;
7070
std::optional<UInt64> totalBytesUncompressed(const Settings &) const override;
7171

72+
UInt64 getNumberOnFlyDataMutations() const override;
73+
UInt64 getNumberOnFlyMetadataMutations() const override;
74+
7275
SinkToStoragePtr write(const ASTPtr & query, const StorageMetadataPtr & /*metadata_snapshot*/, ContextPtr context, bool async_insert) override;
7376

7477
/** Perform the next step in combining the parts.

src/Storages/StorageReplicatedMergeTree.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9572,6 +9572,16 @@ MergeTreeData::MutationsSnapshotPtr StorageReplicatedMergeTree::getMutationsSnap
95729572
return queue.getMutationsSnapshot(params);
95739573
}
95749574

9575+
UInt64 StorageReplicatedMergeTree::getNumberOnFlyDataMutations() const
9576+
{
9577+
return queue.getNumberOnFlyDataMutations();
9578+
}
9579+
9580+
UInt64 StorageReplicatedMergeTree::getNumberOnFlyMetadataMutations() const
9581+
{
9582+
return queue.getNumberOnFlyMetadataMutations();
9583+
}
9584+
95759585
void StorageReplicatedMergeTree::startBackgroundMovesIfNeeded()
95769586
{
95779587
if (areBackgroundMovesNeeded())

src/Storages/StorageReplicatedMergeTree.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,9 @@ class StorageReplicatedMergeTree final : public MergeTreeData
165165
std::optional<UInt64> totalBytes(const Settings & settings) const override;
166166
std::optional<UInt64> totalBytesUncompressed(const Settings & settings) const override;
167167

168+
UInt64 getNumberOnFlyDataMutations() const override;
169+
UInt64 getNumberOnFlyMetadataMutations() const override;
170+
168171
SinkToStoragePtr write(const ASTPtr & query, const StorageMetadataPtr & /*metadata_snapshot*/, ContextPtr context, bool async_insert) override;
169172

170173
std::optional<QueryPipeline> distributedWrite(const ASTInsertQuery & /*query*/, ContextPtr /*context*/) override;

src/Storages/System/StorageSystemTables.cpp

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,8 @@ StorageSystemTables::StorageSystemTables(const StorageID & table_id_)
182182
{"parts", std::make_shared<DataTypeNullable>(std::make_shared<DataTypeUInt64>()), "The total number of parts in this table."},
183183
{"active_parts", std::make_shared<DataTypeNullable>(std::make_shared<DataTypeUInt64>()), "The number of active parts in this table."},
184184
{"total_marks", std::make_shared<DataTypeNullable>(std::make_shared<DataTypeUInt64>()), "The total number of marks in all parts in this table."},
185+
{"active_on_fly_data_mutations", std::make_shared<DataTypeUInt64>(), "Total number of active data mutations (UPDATEs and DELETEs) suitable for applying on the fly."},
186+
{"active_on_fly_metadata_mutations", std::make_shared<DataTypeUInt64>(), "Total number of active metadata mutations (RENAMEs) suitable for applying on the fly."},
185187
{"lifetime_rows", std::make_shared<DataTypeNullable>(std::make_shared<DataTypeUInt64>()),
186188
"Total number of rows INSERTed since server start (only for Buffer tables)."
187189
},
@@ -662,9 +664,23 @@ class TablesBlockSource : public ISource
662664
if (columns_mask[src_index++])
663665
{
664666
if (table_merge_tree)
665-
{
666667
res_columns[res_index++]->insert(table_merge_tree->getTotalMarksCount());
667-
}
668+
else
669+
res_columns[res_index++]->insertDefault();
670+
}
671+
672+
if (columns_mask[src_index++])
673+
{
674+
if (table_merge_tree)
675+
res_columns[res_index++]->insert(table_merge_tree->getNumberOnFlyDataMutations());
676+
else
677+
res_columns[res_index++]->insertDefault();
678+
}
679+
680+
if (columns_mask[src_index++])
681+
{
682+
if (table_merge_tree)
683+
res_columns[res_index++]->insert(table_merge_tree->getNumberOnFlyMetadataMutations());
668684
else
669685
res_columns[res_index++]->insertDefault();
670686
}

0 commit comments

Comments
 (0)