mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-22 17:50:47 +00:00
Merge
This commit is contained in:
parent
ba9315d264
commit
758b1414a7
@ -18,7 +18,7 @@ public:
|
||||
for (auto & current_block : part_blocks)
|
||||
{
|
||||
UInt64 temp_index = storage.increment.get();
|
||||
MergeTreeData::DataPartPtr part = storage.writer.writeTempPart(current_block, temp_index, structure);
|
||||
MergeTreeData::MutableDataPartPtr part = storage.writer.writeTempPart(current_block, temp_index, structure);
|
||||
storage.data.renameTempPartAndAdd(part, &storage.increment, structure);
|
||||
storage.merge(2);
|
||||
}
|
||||
|
@ -101,9 +101,7 @@ public:
|
||||
{
|
||||
DataPart(MergeTreeData & storage_) : storage(storage_), size_in_bytes(0) {}
|
||||
|
||||
/// Не изменяйте никакие поля для кусков, уже вставленных в таблицу. TODO заменить почти везде на const DataPart.
|
||||
|
||||
MergeTreeData & storage;
|
||||
MergeTreeData & storage;
|
||||
DayNum_t left_date;
|
||||
DayNum_t right_date;
|
||||
UInt64 left;
|
||||
@ -208,7 +206,9 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
typedef SharedPtr<DataPart> DataPartPtr;
|
||||
typedef std::shared_ptr<DataPart> MutableDataPartPtr;
|
||||
/// После добавление в рабочее множество DataPart нельзя изменять.
|
||||
typedef std::shared_ptr<const DataPart> DataPartPtr;
|
||||
struct DataPartPtrLess { bool operator() (const DataPartPtr & lhs, const DataPartPtr & rhs) const { return *lhs < *rhs; } };
|
||||
typedef std::set<DataPartPtr, DataPartPtrLess> DataParts;
|
||||
typedef std::vector<DataPartPtr> DataPartsVector;
|
||||
@ -317,9 +317,9 @@ public:
|
||||
void replaceParts(DataPartsVector old_parts, DataPartPtr new_part);
|
||||
|
||||
/** Переименовывает временный кусок в постоянный и добавляет его в рабочий набор.
|
||||
* Если increment!=nullptr, индекс куска бурется из инкремента. Иначе индекс куска не меняется.
|
||||
* Если increment!=nullptr, индекс куска берется из инкремента. Иначе индекс куска не меняется.
|
||||
*/
|
||||
void renameTempPartAndAdd(DataPartPtr part, Increment * increment,
|
||||
void renameTempPartAndAdd(MutableDataPartPtr part, Increment * increment,
|
||||
const LockedTableStructurePtr & structure);
|
||||
|
||||
/** Удалить неактуальные куски.
|
||||
|
@ -43,7 +43,7 @@ public:
|
||||
* temp_index - значение left и right для нового куска. Можно будет изменить при переименовании.
|
||||
* Возвращает кусок с именем, начинающимся с tmp_, еще не добавленный в MergeTreeData.
|
||||
*/
|
||||
MergeTreeData::DataPartPtr writeTempPart(BlockWithDateInterval & block, UInt64 temp_index, const MergeTreeData::LockedTableStructurePtr & structure);
|
||||
MergeTreeData::MutableDataPartPtr writeTempPart(BlockWithDateInterval & block, UInt64 temp_index, const MergeTreeData::LockedTableStructurePtr & structure);
|
||||
|
||||
private:
|
||||
MergeTreeData & data;
|
||||
|
@ -181,7 +181,7 @@ void MergeTreeData::loadDataParts()
|
||||
if (!isPartDirectory(file_name, matches))
|
||||
continue;
|
||||
|
||||
DataPartPtr part = new DataPart(*this);
|
||||
MutableDataPartPtr part = std::make_shared<DataPart>(*this);
|
||||
parsePartName(file_name, matches, *part);
|
||||
part->name = file_name;
|
||||
|
||||
@ -285,7 +285,7 @@ void MergeTreeData::clearOldParts()
|
||||
LOG_TRACE(log, "Clearing old parts");
|
||||
for (DataParts::iterator it = all_data_parts.begin(); it != all_data_parts.end();)
|
||||
{
|
||||
int ref_count = it->referenceCount();
|
||||
int ref_count = it->use_count();
|
||||
if (ref_count == 1) /// После этого ref_count не может увеличиться.
|
||||
{
|
||||
LOG_DEBUG(log, "'Removing' part " << (*it)->name << " (prepending old_ to its name)");
|
||||
@ -628,7 +628,7 @@ void MergeTreeData::replaceParts(DataPartsVector old_parts, DataPartPtr new_part
|
||||
data_parts.erase(data_parts.find(old_parts[i]));
|
||||
}
|
||||
|
||||
void MergeTreeData::renameTempPartAndAdd(DataPartPtr part, Increment * increment,
|
||||
void MergeTreeData::renameTempPartAndAdd(MutableDataPartPtr part, Increment * increment,
|
||||
const MergeTreeData::LockedTableStructurePtr & structure)
|
||||
{
|
||||
LOG_TRACE(log, "Renaming.");
|
||||
|
@ -241,7 +241,7 @@ String MergeTreeDataMerger::mergeParts(const MergeTreeData::DataPartsVector & pa
|
||||
|
||||
DateLUTSingleton & date_lut = DateLUTSingleton::instance();
|
||||
|
||||
MergeTreeData::DataPartPtr new_data_part = new MergeTreeData::DataPart(data);
|
||||
MergeTreeData::MutableDataPartPtr new_data_part = std::make_shared<MergeTreeData::DataPart>(data);
|
||||
new_data_part->left_date = std::numeric_limits<UInt16>::max();
|
||||
new_data_part->right_date = std::numeric_limits<UInt16>::min();
|
||||
new_data_part->left = parts.front()->left;
|
||||
|
@ -69,7 +69,7 @@ BlocksWithDateIntervals MergeTreeDataWriter::splitBlockIntoParts(const Block & b
|
||||
return res;
|
||||
}
|
||||
|
||||
MergeTreeData::DataPartPtr MergeTreeDataWriter::writeTempPart(BlockWithDateInterval & block_with_dates, UInt64 temp_index,
|
||||
MergeTreeData::MutableDataPartPtr MergeTreeDataWriter::writeTempPart(BlockWithDateInterval & block_with_dates, UInt64 temp_index,
|
||||
const MergeTreeData::LockedTableStructurePtr & structure)
|
||||
{
|
||||
Block & block = block_with_dates.block;
|
||||
@ -144,7 +144,7 @@ MergeTreeData::DataPartPtr MergeTreeDataWriter::writeTempPart(BlockWithDateInter
|
||||
writeData(part_tmp_path, column.name, *column.type, *column.column, offset_columns);
|
||||
}
|
||||
|
||||
MergeTreeData::DataPartPtr new_data_part = new MergeTreeData::DataPart(data);
|
||||
MergeTreeData::MutableDataPartPtr new_data_part = std::make_shared<MergeTreeData::DataPart>(data);
|
||||
new_data_part->left_date = DayNum_t(min_date);
|
||||
new_data_part->right_date = DayNum_t(max_date);
|
||||
new_data_part->left = temp_index;
|
||||
|
Loading…
Reference in New Issue
Block a user