1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-08-01 06:46:55 +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

@ -122,8 +122,8 @@ pColStep::pColStep(
ridCount(0),
fFlushInterval(jobInfo.flushInterval),
fSwallowRows(false),
fProjectBlockReqLimit(fRm.getJlProjectBlockReqLimit()),
fProjectBlockReqThreshold(fRm.getJlProjectBlockReqThreshold()),
fProjectBlockReqLimit(fRm->getJlProjectBlockReqLimit()),
fProjectBlockReqThreshold(fRm->getJlProjectBlockReqThreshold()),
fStopSending(false),
isFilterFeeder(false),
fPhysicalIO(0),
@ -191,7 +191,7 @@ pColStep::pColStep(
ridsPerBlock = BLOCK_SIZE/fColType.colWidth;
/* calculate some shortcuts for extent and block based arithmetic */
extentSize = (fRm.getExtentRows()*fColType.colWidth)/BLOCK_SIZE;
extentSize = (fRm->getExtentRows()*fColType.colWidth)/BLOCK_SIZE;
for (i = 1, mask = 1, modMask = 0; i <= 32; i++) {
mask <<= 1;
modMask = (modMask << 1) | 1;
@ -265,8 +265,8 @@ pColStep::pColStep(const pColScanStep& rhs) :
// Per Cindy, it's save to put fFlushInterval to be 0
fFlushInterval(0),
fSwallowRows(false),
fProjectBlockReqLimit(fRm.getJlProjectBlockReqLimit()),
fProjectBlockReqThreshold(fRm.getJlProjectBlockReqThreshold()),
fProjectBlockReqLimit(fRm->getJlProjectBlockReqLimit()),
fProjectBlockReqThreshold(fRm->getJlProjectBlockReqThreshold()),
fStopSending(false),
fPhysicalIO(0),
fCacheIO(0),
@ -285,7 +285,7 @@ pColStep::pColStep(const pColScanStep& rhs) :
ridsPerBlock = rhs.getRidsPerBlock();
/* calculate some shortcuts for extent and block based arithmetic */
extentSize = (fRm.getExtentRows()*fColType.colWidth)/BLOCK_SIZE;
extentSize = (fRm->getExtentRows()*fColType.colWidth)/BLOCK_SIZE;
for (i = 1, mask = 1, modMask = 0; i <= 32; i++) {
mask <<= 1;
modMask = (modMask << 1) | 1;
@ -360,8 +360,8 @@ pColStep::pColStep(const PassThruStep& rhs) :
// Per Cindy, it's save to put fFlushInterval to be 0
fFlushInterval(0),
fSwallowRows(false),
fProjectBlockReqLimit(fRm.getJlProjectBlockReqLimit()),
fProjectBlockReqThreshold(fRm.getJlProjectBlockReqThreshold()),
fProjectBlockReqLimit(fRm->getJlProjectBlockReqLimit()),
fProjectBlockReqThreshold(fRm->getJlProjectBlockReqThreshold()),
fStopSending(false),
fPhysicalIO(0),
fCacheIO(0),
@ -380,7 +380,7 @@ pColStep::pColStep(const PassThruStep& rhs) :
ridsPerBlock = BLOCK_SIZE/fColType.colWidth;
/* calculate some shortcuts for extent and block based arithmetic */
extentSize = (fRm.getExtentRows()*fColType.colWidth)/BLOCK_SIZE;
extentSize = (fRm->getExtentRows()*fColType.colWidth)/BLOCK_SIZE;
for (i = 1, mask = 1, modMask = 0; i <= 32; i++) {
mask <<= 1;
modMask = (modMask << 1) | 1;