1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-29 08:21:15 +03:00

MCOL-507 Further ExeMgr performance improvements

This does the following:

* Switch resource manager to a singleton which reduces the amount of
times the XML data is scanned and objects allocated.
* Make the I_S tables use the FE implementation of the system catalog
* Make the I_S.columnstore_columns table use the RID list cache
* Make the extentmap pre-allocate a vector instead of many small allocs
This commit is contained in:
Andrew Hutchings
2017-01-16 12:33:27 +00:00
parent 605f6c51e2
commit ffcfc41563
49 changed files with 197 additions and 178 deletions

View File

@ -156,7 +156,7 @@ WindowFunctionStep::WindowFunctionStep(const JobInfo& jobInfo) :
fRm(jobInfo.rm),
fSessionMemLimit(jobInfo.umMemLimit)
{
fTotalThreads = fRm.windowFunctionThreads();
fTotalThreads = fRm->windowFunctionThreads();
fExtendedInfo = "WFS: ";
fQtc.stepParms().stepType = StepTeleStats::T_WFS;
}
@ -165,7 +165,7 @@ WindowFunctionStep::WindowFunctionStep(const JobInfo& jobInfo) :
WindowFunctionStep::~WindowFunctionStep()
{
if (fMemUsage > 0)
fRm.returnMemory(fMemUsage, fSessionMemLimit);
fRm->returnMemory(fMemUsage, fSessionMemLimit);
}
@ -782,7 +782,7 @@ void WindowFunctionStep::execute()
{
fInRowGroupData.push_back(rgData);
uint64_t memAdd = fRowGroupIn.getSizeWithStrings() + rowCnt * sizeof(RowPosition);
if (fRm.getMemory(memAdd, fSessionMemLimit) == false)
if (fRm->getMemory(memAdd, fSessionMemLimit) == false)
throw IDBExcept(ERR_WF_DATA_SET_TOO_BIG);
fMemUsage += memAdd;
@ -917,7 +917,7 @@ void WindowFunctionStep::doFunction()
while (((i = nextFunctionIndex()) < fFunctionCount) && !cancelled())
{
uint64_t memAdd = fRows.size() * sizeof(RowPosition);
if (fRm.getMemory(memAdd, fSessionMemLimit) == false)
if (fRm->getMemory(memAdd, fSessionMemLimit) == false)
throw IDBExcept(ERR_WF_DATA_SET_TOO_BIG);
fMemUsage += memAdd;
fFunctions[i]->setCallback(this, i);