Add metrics for MergeTree parts types

- PartsWide
- PartsCompact
- PartsInMemory
This commit is contained in:
Azat Khuzhin 2021-01-21 21:17:00 +03:00
parent dca0cbf4eb
commit cb951c2116
3 changed files with 54 additions and 10 deletions

View File

@ -63,6 +63,9 @@
M(PartsOutdated, "Not active data part, but could be used by only current SELECTs, could be deleted after SELECTs finishes.") \
M(PartsDeleting, "Not active data part with identity refcounter, it is deleting right now by a cleaner.") \
M(PartsDeleteOnDestroy, "Part was moved to another disk and should be deleted in own destructor.") \
M(PartsWide, "Wide parts.") \
M(PartsCompact, "Compact parts.") \
M(PartsInMemory, "In-memory parts.") \
namespace CurrentMetrics
{

View File

@ -28,6 +28,10 @@ namespace CurrentMetrics
extern const Metric PartsOutdated;
extern const Metric PartsDeleting;
extern const Metric PartsDeleteOnDestroy;
extern const Metric PartsWide;
extern const Metric PartsCompact;
extern const Metric PartsInMemory;
}
namespace DB
@ -150,7 +154,7 @@ void IMergeTreeDataPart::MinMaxIndex::merge(const MinMaxIndex & other)
}
static void incrementMetric(IMergeTreeDataPart::State state)
static void incrementStateMetric(IMergeTreeDataPart::State state)
{
switch (state)
{
@ -173,11 +177,9 @@ static void incrementMetric(IMergeTreeDataPart::State state)
CurrentMetrics::add(CurrentMetrics::PartsDeleteOnDestroy);
return;
}
__builtin_unreachable();
}
static void decrementMetric(IMergeTreeDataPart::State state)
static void decrementStateMetric(IMergeTreeDataPart::State state)
{
switch (state)
{
@ -200,8 +202,42 @@ static void decrementMetric(IMergeTreeDataPart::State state)
CurrentMetrics::sub(CurrentMetrics::PartsDeleteOnDestroy);
return;
}
}
__builtin_unreachable();
static void incrementTypeMetric(MergeTreeDataPartType type)
{
switch (type.getValue())
{
case MergeTreeDataPartType::WIDE:
CurrentMetrics::add(CurrentMetrics::PartsWide);
return;
case MergeTreeDataPartType::COMPACT:
CurrentMetrics::add(CurrentMetrics::PartsCompact);
return;
case MergeTreeDataPartType::IN_MEMORY:
CurrentMetrics::add(CurrentMetrics::PartsInMemory);
return;
case MergeTreeDataPartType::UNKNOWN:
return;
}
}
static void decrementTypeMetric(MergeTreeDataPartType type)
{
switch (type.getValue())
{
case MergeTreeDataPartType::WIDE:
CurrentMetrics::sub(CurrentMetrics::PartsWide);
return;
case MergeTreeDataPartType::COMPACT:
CurrentMetrics::sub(CurrentMetrics::PartsCompact);
return;
case MergeTreeDataPartType::IN_MEMORY:
CurrentMetrics::sub(CurrentMetrics::PartsInMemory);
return;
case MergeTreeDataPartType::UNKNOWN:
return;
}
}
@ -215,7 +251,8 @@ IMergeTreeDataPart::IMergeTreeDataPart(
, index_granularity_info(storage_, part_type_)
, part_type(part_type_)
{
incrementMetric(state);
incrementStateMetric(state);
incrementTypeMetric(part_type);
}
IMergeTreeDataPart::IMergeTreeDataPart(
@ -233,12 +270,14 @@ IMergeTreeDataPart::IMergeTreeDataPart(
, index_granularity_info(storage_, part_type_)
, part_type(part_type_)
{
incrementMetric(state);
incrementStateMetric(state);
incrementTypeMetric(part_type);
}
IMergeTreeDataPart::~IMergeTreeDataPart()
{
decrementMetric(state);
decrementStateMetric(state);
decrementTypeMetric(part_type);
}
@ -270,9 +309,9 @@ std::optional<size_t> IMergeTreeDataPart::getColumnPosition(const String & colum
void IMergeTreeDataPart::setState(IMergeTreeDataPart::State new_state) const
{
decrementMetric(state);
decrementStateMetric(state);
state = new_state;
incrementMetric(state);
incrementStateMetric(state);
}
IMergeTreeDataPart::State IMergeTreeDataPart::getState() const

View File

@ -50,6 +50,8 @@ public:
void fromString(const String & str);
String toString() const;
Value getValue() const { return value; }
private:
Value value;
};