You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-27 21:01:50 +03:00
MCOL-4912 This patch introduces Extent Map index to improve EM scaleability
EM scaleability project has two parts: phase1 and phase2. This is phase1 that brings EM index to speed up(from O(n) down to the speed of boost::unordered_map) EM lookups looking for <dbroot, oid, partition> tuple to turn it into LBID, e.g. most bulk insertion meta info operations. The basis is boost::shared_managed_object where EMIndex is stored. Whilst it is not debug-friendly it allows to put a nested structs into shmem. EMIndex has 3 tiers. Top down description: vector of dbroots, map of oids to partition vectors, partition vectors that have EM indices. Separate EM methods now queries index before they do EM run. EMIndex has a separate shmem file with the fixed id MCS-shm-00060001.
This commit is contained in:
committed by
Leonid Fedorov
parent
fb3eaabd29
commit
4c26e4f960
@ -98,7 +98,7 @@ DBRM::DBRM(const DBRM& brm)
|
||||
throw logic_error("DBRM: Don't use the copy constructor.");
|
||||
}
|
||||
|
||||
DBRM::~DBRM() throw()
|
||||
DBRM::~DBRM()
|
||||
{
|
||||
if (msgClient != NULL)
|
||||
MessageQueueClientPool::releaseInstance(msgClient);
|
||||
@ -461,7 +461,7 @@ int DBRM::markExtentsInvalid(const vector<LBID_t>& lbids,
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
int DBRM::getExtentMaxMin(const LBID_t lbid, T& max, T& min, int32_t& seqNum) throw()
|
||||
int DBRM::getExtentMaxMin(const LBID_t lbid, T& max, T& min, int32_t& seqNum)
|
||||
{
|
||||
#ifdef BRM_INFO
|
||||
|
||||
@ -489,7 +489,7 @@ int DBRM::getExtentMaxMin(const LBID_t lbid, T& max, T& min, int32_t& seqNum) th
|
||||
}
|
||||
}
|
||||
|
||||
int DBRM::getExtentCPMaxMin(const LBID_t lbid, CPMaxMin& cpMaxMin) throw()
|
||||
int DBRM::getExtentCPMaxMin(const LBID_t lbid, CPMaxMin& cpMaxMin)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -4555,10 +4555,19 @@ void DBRM::invalidateUncommittedExtentLBIDs(execplan::CalpontSystemCatalog::SCN
|
||||
setExtentsMaxMin(cpInfos);
|
||||
}
|
||||
|
||||
template int DBRM::getExtentMaxMin<int128_t>(const LBID_t lbid, int128_t& max, int128_t& min,
|
||||
int32_t& seqNum) throw();
|
||||
size_t DBRM::EMIndexShmemSize()
|
||||
{
|
||||
return em->EMIndexShmemSize();
|
||||
}
|
||||
|
||||
template int DBRM::getExtentMaxMin<int64_t>(const LBID_t lbid, int64_t& max, int64_t& min,
|
||||
int32_t& seqNum) throw();
|
||||
size_t DBRM::EMIndexShmemFree()
|
||||
{
|
||||
return em->EMIndexShmemFree();
|
||||
}
|
||||
|
||||
template int DBRM::getExtentMaxMin<int128_t>(const LBID_t lbid, int128_t& max, int128_t& min,
|
||||
int32_t& seqNum);
|
||||
|
||||
template int DBRM::getExtentMaxMin<int64_t>(const LBID_t lbid, int64_t& max, int64_t& min, int32_t& seqNum);
|
||||
|
||||
} // namespace BRM
|
||||
|
Reference in New Issue
Block a user