mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 07:31:57 +00:00
Merge
This commit is contained in:
parent
ca6f5df30e
commit
06edb12dbe
@ -17,7 +17,7 @@ public:
|
||||
auto part_blocks = storage.writer.splitBlockIntoParts(block);
|
||||
for (auto & current_block : part_blocks)
|
||||
{
|
||||
size_t parts_count = storage.data.getDataPartsCount();
|
||||
size_t parts_count = storage.data.getMaxPartsCountForMonth();
|
||||
if (parts_count > storage.data.settings.parts_to_delay_insert)
|
||||
{
|
||||
double delay = std::pow(storage.data.settings.insert_delay_step, parts_count - storage.data.settings.parts_to_delay_insert);
|
||||
|
@ -439,7 +439,10 @@ public:
|
||||
*/
|
||||
DataParts getDataParts();
|
||||
DataParts getAllDataParts();
|
||||
size_t getDataPartsCount();
|
||||
|
||||
/** Максимальное количество кусков в одном месяце.
|
||||
*/
|
||||
size_t getMaxPartsCountForMonth();
|
||||
|
||||
/** Возвращает кусок с указанным именем или кусок, покрывающий его. Если такого нет, возвращает nullptr.
|
||||
* Если including_inactive, просматриваются также неактивные куски (all_data_parts).
|
||||
|
@ -713,11 +713,30 @@ MergeTreeData::DataParts MergeTreeData::getAllDataParts()
|
||||
return all_data_parts;
|
||||
}
|
||||
|
||||
size_t MergeTreeData::getDataPartsCount()
|
||||
size_t MergeTreeData::getMaxPartsCountForMonth()
|
||||
{
|
||||
Poco::ScopedLock<Poco::FastMutex> lock(data_parts_mutex);
|
||||
|
||||
return data_parts.size();
|
||||
size_t res = 0;
|
||||
size_t cur_count = 0;
|
||||
DayNum_t cur_month = DayNum_t(0);
|
||||
|
||||
for (const auto & part : data_parts)
|
||||
{
|
||||
if (part->left_month == cur_month)
|
||||
{
|
||||
++cur_count;
|
||||
}
|
||||
else
|
||||
{
|
||||
cur_month = part->left_month;
|
||||
cur_count = 1;
|
||||
}
|
||||
|
||||
res = std::max(res, cur_count);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
MergeTreeData::DataPartPtr MergeTreeData::getContainingPart(const String & part_name, bool including_inactive)
|
||||
|
Loading…
Reference in New Issue
Block a user