未验证 提交 5c37a9fa 编写于 作者: G groot 提交者: GitHub

refine insert code (#3090)

* refine code
Signed-off-by: Nyhmo <yihua.mo@zilliz.com>

* refine insert code
Signed-off-by: Ngroot <yihua.mo@zilliz.com>
Co-authored-by: NWang XiangYu <xy.wang@zilliz.com>
上级 6f441fee
...@@ -251,7 +251,7 @@ DBImpl::DropCollection(const std::string& name) { ...@@ -251,7 +251,7 @@ DBImpl::DropCollection(const std::string& name) {
/* wal_mgr_->DropCollection(ss->GetCollectionId()); */ /* wal_mgr_->DropCollection(ss->GetCollectionId()); */
} }
mem_mgr_->EraseMemVector(ss->GetCollectionId()); // not allow insert mem_mgr_->EraseMem(ss->GetCollectionId()); // not allow insert
return snapshots.DropCollection(ss->GetCollectionId(), std::numeric_limits<snapshot::LSN_TYPE>::max()); return snapshots.DropCollection(ss->GetCollectionId(), std::numeric_limits<snapshot::LSN_TYPE>::max());
} }
...@@ -342,7 +342,7 @@ DBImpl::DropPartition(const std::string& collection_name, const std::string& par ...@@ -342,7 +342,7 @@ DBImpl::DropPartition(const std::string& collection_name, const std::string& par
STATUS_CHECK(snapshot::Snapshots::GetInstance().GetSnapshot(ss, collection_name)); STATUS_CHECK(snapshot::Snapshots::GetInstance().GetSnapshot(ss, collection_name));
// SS TODO: Is below step needed? Or How to implement it? // SS TODO: Is below step needed? Or How to implement it?
/* mem_mgr_->EraseMemVector(partition_name); */ /* mem_mgr_->EraseMem(partition_name); */
snapshot::PartitionContext context; snapshot::PartitionContext context;
context.name = partition_name; context.name = partition_name;
......
...@@ -26,24 +26,29 @@ ...@@ -26,24 +26,29 @@
namespace milvus { namespace milvus {
namespace engine { namespace engine {
MemCollection::MemCollection(int64_t collection_id, int64_t partition_id, const DBOptions& options) MemCollection::MemCollection(int64_t collection_id, const DBOptions& options)
: collection_id_(collection_id), partition_id_(partition_id), options_(options) { : collection_id_(collection_id), options_(options) {
} }
Status Status
MemCollection::Add(const milvus::engine::VectorSourcePtr& source) { MemCollection::Add(int64_t partition_id, const milvus::engine::VectorSourcePtr& source) {
while (!source->AllAdded()) { while (!source->AllAdded()) {
std::lock_guard<std::mutex> lock(mutex_);
MemSegmentPtr current_mem_segment; MemSegmentPtr current_mem_segment;
if (!mem_segment_list_.empty()) { auto pair = mem_segments_.find(partition_id);
current_mem_segment = mem_segment_list_.back(); if (pair != mem_segments_.end()) {
MemSegmentList& segments = pair->second;
if (!segments.empty()) {
current_mem_segment = segments.back();
}
} }
Status status; Status status;
if (mem_segment_list_.empty() || current_mem_segment->IsFull()) { if (current_mem_segment == nullptr || current_mem_segment->IsFull()) {
MemSegmentPtr new_mem_segment = std::make_shared<MemSegment>(collection_id_, partition_id_, options_); MemSegmentPtr new_mem_segment = std::make_shared<MemSegment>(collection_id_, partition_id, options_);
status = new_mem_segment->Add(source); status = new_mem_segment->Add(source);
if (status.ok()) { if (status.ok()) {
mem_segment_list_.emplace_back(new_mem_segment); mem_segments_[partition_id].emplace_back(new_mem_segment);
} else { } else {
return status; return status;
} }
...@@ -60,23 +65,17 @@ MemCollection::Add(const milvus::engine::VectorSourcePtr& source) { ...@@ -60,23 +65,17 @@ MemCollection::Add(const milvus::engine::VectorSourcePtr& source) {
return Status::OK(); return Status::OK();
} }
Status
MemCollection::Delete(segment::doc_id_t doc_id) {
// Locate which collection file the doc id lands in
for (auto& mem_segment : mem_segment_list_) {
mem_segment->Delete(doc_id);
}
// Add the id to delete list so it can be applied to other segments on disk during the next flush
doc_ids_to_delete_.insert(doc_id);
return Status::OK();
}
Status Status
MemCollection::Delete(const std::vector<segment::doc_id_t>& doc_ids) { MemCollection::Delete(const std::vector<segment::doc_id_t>& doc_ids) {
// Locate which collection file the doc id lands in // Locate which collection file the doc id lands in
for (auto& mem_segment : mem_segment_list_) { {
mem_segment->Delete(doc_ids); std::lock_guard<std::mutex> lock(mutex_);
for (auto partition_segments : mem_segments_) {
MemSegmentList& segments = partition_segments.second;
for (auto& segment : segments) {
segment->Delete(doc_ids);
}
}
} }
// Add the id to delete list so it can be applied to other segments on disk during the next flush // Add the id to delete list so it can be applied to other segments on disk during the next flush
for (auto& id : doc_ids) { for (auto& id : doc_ids) {
...@@ -86,14 +85,15 @@ MemCollection::Delete(const std::vector<segment::doc_id_t>& doc_ids) { ...@@ -86,14 +85,15 @@ MemCollection::Delete(const std::vector<segment::doc_id_t>& doc_ids) {
return Status::OK(); return Status::OK();
} }
void Status
MemCollection::GetCurrentMemSegment(MemSegmentPtr& mem_segment) { MemCollection::EraseMem(int64_t partition_id) {
mem_segment = mem_segment_list_.back(); std::lock_guard<std::mutex> lock(mutex_);
} auto pair = mem_segments_.find(partition_id);
if (pair != mem_segments_.end()) {
mem_segments_.erase(pair);
}
size_t return Status::OK();
MemCollection::GetTableFileCount() {
return mem_segment_list_.size();
} }
Status Status
...@@ -107,46 +107,39 @@ MemCollection::Serialize(uint64_t wal_lsn) { ...@@ -107,46 +107,39 @@ MemCollection::Serialize(uint64_t wal_lsn) {
} }
} }
for (auto mem_segment = mem_segment_list_.begin(); mem_segment != mem_segment_list_.end();) { std::lock_guard<std::mutex> lock(mutex_);
auto status = (*mem_segment)->Serialize(wal_lsn); for (auto partition_segments : mem_segments_) {
MemSegmentList& segments = partition_segments.second;
for (auto& segment : segments) {
auto status = segment->Serialize(wal_lsn);
if (!status.ok()) { if (!status.ok()) {
return status; return status;
} }
LOG_ENGINE_DEBUG_ << "Flushed segment " << segment->GetSegmentId() << " of collection " << collection_id_;
LOG_ENGINE_DEBUG_ << "Flushed segment " << (*mem_segment)->GetSegmentId();
{
std::lock_guard<std::mutex> lock(mutex_);
mem_segment = mem_segment_list_.erase(mem_segment);
} }
} }
mem_segments_.clear();
recorder.RecordSection("Finished flushing"); recorder.RecordSection("Finished flushing");
return Status::OK(); return Status::OK();
} }
bool
MemCollection::Empty() {
return mem_segment_list_.empty() && doc_ids_to_delete_.empty();
}
int64_t int64_t
MemCollection::GetCollectionId() const { MemCollection::GetCollectionId() const {
return collection_id_; return collection_id_;
} }
int64_t
MemCollection::GetPartitionId() const {
return partition_id_;
}
size_t size_t
MemCollection::GetCurrentMem() { MemCollection::GetCurrentMem() {
std::lock_guard<std::mutex> lock(mutex_); std::lock_guard<std::mutex> lock(mutex_);
size_t total_mem = 0; size_t total_mem = 0;
for (auto& mem_table_file : mem_segment_list_) { for (auto& partition_segments : mem_segments_) {
total_mem += mem_table_file->GetCurrentMem(); MemSegmentList& segments = partition_segments.second;
for (auto& segment : segments) {
total_mem += segment->GetCurrentMem();
}
} }
return total_mem; return total_mem;
} }
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <mutex> #include <mutex>
#include <set> #include <set>
#include <string> #include <string>
#include <unordered_map>
#include <vector> #include <vector>
#include "config/ConfigMgr.h" #include "config/ConfigMgr.h"
...@@ -28,39 +29,28 @@ namespace engine { ...@@ -28,39 +29,28 @@ namespace engine {
class MemCollection { class MemCollection {
public: public:
using MemCollectionFileList = std::vector<MemSegmentPtr>; using MemSegmentList = std::vector<MemSegmentPtr>;
using MemSegmentMap = std::unordered_map<int64_t, MemSegmentList>; // partition id mapping to segments
MemCollection(int64_t collection_id, int64_t partition_id, const DBOptions& options); MemCollection(int64_t collection_id, const DBOptions& options);
~MemCollection() = default; ~MemCollection() = default;
Status Status
Add(const VectorSourcePtr& source); Add(int64_t partition_id, const VectorSourcePtr& source);
Status
Delete(segment::doc_id_t doc_id);
Status Status
Delete(const std::vector<segment::doc_id_t>& doc_ids); Delete(const std::vector<segment::doc_id_t>& doc_ids);
void Status
GetCurrentMemSegment(MemSegmentPtr& mem_segment); EraseMem(int64_t partition_id);
size_t
GetTableFileCount();
Status Status
Serialize(uint64_t wal_lsn); Serialize(uint64_t wal_lsn);
bool
Empty();
int64_t int64_t
GetCollectionId() const; GetCollectionId() const;
int64_t
GetPartitionId() const;
size_t size_t
GetCurrentMem(); GetCurrentMem();
...@@ -76,9 +66,8 @@ class MemCollection { ...@@ -76,9 +66,8 @@ class MemCollection {
private: private:
int64_t collection_id_; int64_t collection_id_;
int64_t partition_id_;
MemCollectionFileList mem_segment_list_; MemSegmentMap mem_segments_;
DBOptions options_; DBOptions options_;
......
...@@ -24,8 +24,6 @@ ...@@ -24,8 +24,6 @@
namespace milvus { namespace milvus {
namespace engine { namespace engine {
extern const char* VECTOR_FIELD;
class MemManager { class MemManager {
public: public:
virtual Status virtual Status
...@@ -43,14 +41,11 @@ class MemManager { ...@@ -43,14 +41,11 @@ class MemManager {
virtual Status virtual Status
Flush(std::set<int64_t>& collection_ids) = 0; Flush(std::set<int64_t>& collection_ids) = 0;
// virtual Status
// Serialize(std::set<std::string>& table_ids) = 0;
virtual Status virtual Status
EraseMemVector(int64_t collection_id) = 0; EraseMem(int64_t collection_id) = 0;
virtual Status virtual Status
EraseMemVector(int64_t collection_id, int64_t partition_id) = 0; EraseMem(int64_t collection_id, int64_t partition_id) = 0;
virtual size_t virtual size_t
GetCurrentMutableMem() = 0; GetCurrentMutableMem() = 0;
......
...@@ -23,38 +23,21 @@ ...@@ -23,38 +23,21 @@
namespace milvus { namespace milvus {
namespace engine { namespace engine {
const char* VECTOR_FIELD = "vector"; // hard code
MemCollectionPtr MemCollectionPtr
MemManagerImpl::GetMemByTable(int64_t collection_id, int64_t partition_id) { MemManagerImpl::GetMemByCollection(int64_t collection_id) {
auto mem_collection = mem_map_.find(collection_id); auto mem_collection = mem_map_.find(collection_id);
if (mem_collection != mem_map_.end()) { if (mem_collection != mem_map_.end()) {
auto mem_partition = mem_collection->second.find(partition_id); return mem_collection->second;
if (mem_partition != mem_collection->second.end()) {
return mem_partition->second;
}
} }
auto mem = std::make_shared<MemCollection>(collection_id, partition_id, options_); auto mem = std::make_shared<MemCollection>(collection_id, options_);
mem_map_[collection_id][partition_id] = mem; mem_map_[collection_id] = mem;
return mem; return mem;
} }
std::vector<MemCollectionPtr>
MemManagerImpl::GetMemByTable(int64_t collection_id) {
std::vector<MemCollectionPtr> result;
auto mem_collection = mem_map_.find(collection_id);
if (mem_collection != mem_map_.end()) {
for (auto& pair : mem_collection->second) {
result.push_back(pair.second);
}
}
return result;
}
Status Status
MemManagerImpl::InsertEntities(int64_t collection_id, int64_t partition_id, const DataChunkPtr& chunk, uint64_t lsn) { MemManagerImpl::InsertEntities(int64_t collection_id, int64_t partition_id, const DataChunkPtr& chunk, uint64_t lsn) {
auto status = ValidateChunk(collection_id, partition_id, chunk); auto status = ValidateChunk(collection_id, chunk);
if (!status.ok()) { if (!status.ok()) {
return status; return status;
} }
...@@ -65,7 +48,7 @@ MemManagerImpl::InsertEntities(int64_t collection_id, int64_t partition_id, cons ...@@ -65,7 +48,7 @@ MemManagerImpl::InsertEntities(int64_t collection_id, int64_t partition_id, cons
} }
Status Status
MemManagerImpl::ValidateChunk(int64_t collection_id, int64_t partition_id, const DataChunkPtr& chunk) { MemManagerImpl::ValidateChunk(int64_t collection_id, const DataChunkPtr& chunk) {
if (chunk == nullptr) { if (chunk == nullptr) {
return Status(DB_ERROR, "Null chunk pointer"); return Status(DB_ERROR, "Null chunk pointer");
} }
...@@ -155,46 +138,43 @@ MemManagerImpl::ValidateChunk(int64_t collection_id, int64_t partition_id, const ...@@ -155,46 +138,43 @@ MemManagerImpl::ValidateChunk(int64_t collection_id, int64_t partition_id, const
Status Status
MemManagerImpl::InsertEntitiesNoLock(int64_t collection_id, int64_t partition_id, MemManagerImpl::InsertEntitiesNoLock(int64_t collection_id, int64_t partition_id,
const milvus::engine::VectorSourcePtr& source, uint64_t lsn) { const milvus::engine::VectorSourcePtr& source, uint64_t lsn) {
MemCollectionPtr mem = GetMemByTable(collection_id, partition_id); MemCollectionPtr mem = GetMemByCollection(collection_id);
mem->SetLSN(lsn); mem->SetLSN(lsn);
auto status = mem->Add(source); auto status = mem->Add(partition_id, source);
return status; return status;
} }
Status Status
MemManagerImpl::DeleteEntity(int64_t collection_id, IDNumber vector_id, uint64_t lsn) { MemManagerImpl::DeleteEntity(int64_t collection_id, IDNumber engity_id, uint64_t lsn) {
std::unique_lock<std::mutex> lock(mutex_); std::unique_lock<std::mutex> lock(mutex_);
std::vector<MemCollectionPtr> mems = GetMemByTable(collection_id); MemCollectionPtr mem = GetMemByCollection(collection_id);
for (auto& mem : mems) {
mem->SetLSN(lsn); mem->SetLSN(lsn);
auto status = mem->Delete(vector_id); IDNumbers ids = {engity_id};
auto status = mem->Delete(ids);
if (status.ok()) { if (status.ok()) {
return status; return status;
} }
}
return Status::OK(); return Status::OK();
} }
Status Status
MemManagerImpl::DeleteEntities(int64_t collection_id, int64_t length, const IDNumber* vector_ids, uint64_t lsn) { MemManagerImpl::DeleteEntities(int64_t collection_id, int64_t length, const IDNumber* engity_ids, uint64_t lsn) {
std::unique_lock<std::mutex> lock(mutex_); std::unique_lock<std::mutex> lock(mutex_);
std::vector<MemCollectionPtr> mems = GetMemByTable(collection_id); MemCollectionPtr mem = GetMemByCollection(collection_id);
for (auto& mem : mems) {
mem->SetLSN(lsn); mem->SetLSN(lsn);
IDNumbers ids; IDNumbers ids;
ids.resize(length); ids.resize(length);
memcpy(ids.data(), vector_ids, length * sizeof(IDNumber)); memcpy(ids.data(), engity_ids, length * sizeof(IDNumber));
auto status = mem->Delete(ids); auto status = mem->Delete(ids);
if (!status.ok()) { if (!status.ok()) {
return status; return status;
} }
}
return Status::OK(); return Status::OK();
} }
...@@ -202,7 +182,7 @@ MemManagerImpl::DeleteEntities(int64_t collection_id, int64_t length, const IDNu ...@@ -202,7 +182,7 @@ MemManagerImpl::DeleteEntities(int64_t collection_id, int64_t length, const IDNu
Status Status
MemManagerImpl::Flush(int64_t collection_id) { MemManagerImpl::Flush(int64_t collection_id) {
ToImmutable(collection_id); ToImmutable(collection_id);
// TODO: There is actually only one memTable in the immutable list
MemList temp_immutable_list; MemList temp_immutable_list;
{ {
std::unique_lock<std::mutex> lock(mutex_); std::unique_lock<std::mutex> lock(mutex_);
...@@ -260,20 +240,9 @@ MemManagerImpl::ToImmutable(int64_t collection_id) { ...@@ -260,20 +240,9 @@ MemManagerImpl::ToImmutable(int64_t collection_id) {
auto mem_collection = mem_map_.find(collection_id); auto mem_collection = mem_map_.find(collection_id);
if (mem_collection != mem_map_.end()) { if (mem_collection != mem_map_.end()) {
MemPartitionMap temp_map; immu_mem_list_.push_back(mem_collection->second);
for (auto& mem : mem_collection->second) {
if (mem.second->Empty()) {
temp_map.insert(mem);
} else {
immu_mem_list_.push_back(mem.second);
}
}
mem_collection->second.swap(temp_map);
if (temp_map.empty()) {
mem_map_.erase(mem_collection); mem_map_.erase(mem_collection);
} }
}
return Status::OK(); return Status::OK();
} }
...@@ -283,23 +252,15 @@ MemManagerImpl::ToImmutable() { ...@@ -283,23 +252,15 @@ MemManagerImpl::ToImmutable() {
std::unique_lock<std::mutex> lock(mutex_); std::unique_lock<std::mutex> lock(mutex_);
for (auto& mem_collection : mem_map_) { for (auto& mem_collection : mem_map_) {
MemPartitionMap temp_map; immu_mem_list_.push_back(mem_collection.second);
for (auto& mem : mem_collection.second) {
if (mem.second->Empty()) {
temp_map.insert(mem);
} else {
immu_mem_list_.push_back(mem.second);
}
}
mem_collection.second.swap(temp_map);
} }
mem_map_.clear();
return Status::OK(); return Status::OK();
} }
Status Status
MemManagerImpl::EraseMemVector(int64_t collection_id) { MemManagerImpl::EraseMem(int64_t collection_id) {
{ // erase MemVector from rapid-insert cache { // erase MemVector from rapid-insert cache
std::unique_lock<std::mutex> lock(mutex_); std::unique_lock<std::mutex> lock(mutex_);
mem_map_.erase(collection_id); mem_map_.erase(collection_id);
...@@ -320,15 +281,12 @@ MemManagerImpl::EraseMemVector(int64_t collection_id) { ...@@ -320,15 +281,12 @@ MemManagerImpl::EraseMemVector(int64_t collection_id) {
} }
Status Status
MemManagerImpl::EraseMemVector(int64_t collection_id, int64_t partition_id) { MemManagerImpl::EraseMem(int64_t collection_id, int64_t partition_id) {
{ // erase MemVector from rapid-insert cache { // erase MemVector from rapid-insert cache
std::unique_lock<std::mutex> lock(mutex_); std::unique_lock<std::mutex> lock(mutex_);
auto mem_collection = mem_map_.find(collection_id); auto mem_collection = mem_map_.find(collection_id);
if (mem_collection != mem_map_.end()) { if (mem_collection != mem_map_.end()) {
mem_collection->second.erase(partition_id); mem_collection->second->EraseMem(partition_id);
if (mem_collection->second.empty()) {
mem_map_.erase(collection_id);
}
} }
} }
...@@ -336,12 +294,9 @@ MemManagerImpl::EraseMemVector(int64_t collection_id, int64_t partition_id) { ...@@ -336,12 +294,9 @@ MemManagerImpl::EraseMemVector(int64_t collection_id, int64_t partition_id) {
std::unique_lock<std::mutex> lock(serialization_mtx_); std::unique_lock<std::mutex> lock(serialization_mtx_);
MemList temp_list; MemList temp_list;
for (auto& mem : immu_mem_list_) { for (auto& mem : immu_mem_list_) {
if (mem->GetCollectionId() != collection_id && mem->GetPartitionId() != partition_id) { mem->EraseMem(partition_id);
temp_list.push_back(mem);
} }
} }
immu_mem_list_.swap(temp_list);
}
return Status::OK(); return Status::OK();
} }
...@@ -351,9 +306,7 @@ MemManagerImpl::GetCurrentMutableMem() { ...@@ -351,9 +306,7 @@ MemManagerImpl::GetCurrentMutableMem() {
size_t total_mem = 0; size_t total_mem = 0;
std::unique_lock<std::mutex> lock(mutex_); std::unique_lock<std::mutex> lock(mutex_);
for (auto& mem_collection : mem_map_) { for (auto& mem_collection : mem_map_) {
for (auto& mem : mem_collection.second) { total_mem += mem_collection.second->GetCurrentMem();
total_mem += mem.second->GetCurrentMem();
}
} }
return total_mem; return total_mem;
} }
...@@ -362,8 +315,8 @@ size_t ...@@ -362,8 +315,8 @@ size_t
MemManagerImpl::GetCurrentImmutableMem() { MemManagerImpl::GetCurrentImmutableMem() {
size_t total_mem = 0; size_t total_mem = 0;
std::unique_lock<std::mutex> lock(serialization_mtx_); std::unique_lock<std::mutex> lock(serialization_mtx_);
for (auto& mem_table : immu_mem_list_) { for (auto& mem_collection : immu_mem_list_) {
total_mem += mem_table->GetCurrentMem(); total_mem += mem_collection->GetCurrentMem();
} }
return total_mem; return total_mem;
} }
...@@ -374,9 +327,9 @@ MemManagerImpl::GetCurrentMem() { ...@@ -374,9 +327,9 @@ MemManagerImpl::GetCurrentMem() {
} }
uint64_t uint64_t
MemManagerImpl::GetMaxLSN(const MemList& tables) { MemManagerImpl::GetMaxLSN(const MemList& collections) {
uint64_t max_lsn = 0; uint64_t max_lsn = 0;
for (auto& collection : tables) { for (auto& collection : collections) {
auto cur_lsn = collection->GetLSN(); auto cur_lsn = collection->GetLSN();
if (collection->GetLSN() > max_lsn) { if (collection->GetLSN() > max_lsn) {
max_lsn = cur_lsn; max_lsn = cur_lsn;
......
...@@ -30,8 +30,7 @@ namespace engine { ...@@ -30,8 +30,7 @@ namespace engine {
class MemManagerImpl : public MemManager { class MemManagerImpl : public MemManager {
public: public:
using Ptr = std::shared_ptr<MemManagerImpl>; using Ptr = std::shared_ptr<MemManagerImpl>;
using MemPartitionMap = std::map<int64_t, MemCollectionPtr>; using MemCollectionMap = std::unordered_map<int64_t, MemCollectionPtr>;
using MemCollectionMap = std::map<int64_t, MemPartitionMap>;
using MemList = std::vector<MemCollectionPtr>; using MemList = std::vector<MemCollectionPtr>;
explicit MemManagerImpl(const DBOptions& options) : options_(options) { explicit MemManagerImpl(const DBOptions& options) : options_(options) {
...@@ -43,10 +42,10 @@ class MemManagerImpl : public MemManager { ...@@ -43,10 +42,10 @@ class MemManagerImpl : public MemManager {
InsertEntities(int64_t collection_id, int64_t partition_id, const DataChunkPtr& chunk, uint64_t lsn) override; InsertEntities(int64_t collection_id, int64_t partition_id, const DataChunkPtr& chunk, uint64_t lsn) override;
Status Status
DeleteEntity(int64_t collection_id, IDNumber vector_id, uint64_t lsn) override; DeleteEntity(int64_t collection_id, IDNumber engity_ids, uint64_t lsn) override;
Status Status
DeleteEntities(int64_t collection_id, int64_t length, const IDNumber* vector_ids, uint64_t lsn) override; DeleteEntities(int64_t collection_id, int64_t length, const IDNumber* engity_idss, uint64_t lsn) override;
Status Status
Flush(int64_t collection_id) override; Flush(int64_t collection_id) override;
...@@ -55,10 +54,10 @@ class MemManagerImpl : public MemManager { ...@@ -55,10 +54,10 @@ class MemManagerImpl : public MemManager {
Flush(std::set<int64_t>& collection_ids) override; Flush(std::set<int64_t>& collection_ids) override;
Status Status
EraseMemVector(int64_t collection_id) override; EraseMem(int64_t collection_id) override;
Status Status
EraseMemVector(int64_t collection_id, int64_t partition_id) override; EraseMem(int64_t collection_id, int64_t partition_id) override;
size_t size_t
GetCurrentMutableMem() override; GetCurrentMutableMem() override;
...@@ -71,13 +70,10 @@ class MemManagerImpl : public MemManager { ...@@ -71,13 +70,10 @@ class MemManagerImpl : public MemManager {
private: private:
MemCollectionPtr MemCollectionPtr
GetMemByTable(int64_t collection_id, int64_t partition_id); GetMemByCollection(int64_t collection_id);
std::vector<MemCollectionPtr>
GetMemByTable(int64_t collection_id);
Status Status
ValidateChunk(int64_t collection_id, int64_t partition_id, const DataChunkPtr& chunk); ValidateChunk(int64_t collection_id, const DataChunkPtr& chunk);
Status Status
InsertEntitiesNoLock(int64_t collection_id, int64_t partition_id, const VectorSourcePtr& source, uint64_t lsn); InsertEntitiesNoLock(int64_t collection_id, int64_t partition_id, const VectorSourcePtr& source, uint64_t lsn);
...@@ -89,7 +85,7 @@ class MemManagerImpl : public MemManager { ...@@ -89,7 +85,7 @@ class MemManagerImpl : public MemManager {
ToImmutable(int64_t collection_id); ToImmutable(int64_t collection_id);
uint64_t uint64_t
GetMaxLSN(const MemList& tables); GetMaxLSN(const MemList& collections);
MemCollectionMap mem_map_; MemCollectionMap mem_map_;
MemList immu_mem_list_; MemList immu_mem_list_;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册