Repository: trafodion Updated Branches: refs/heads/master c7d2301d7 -> e6e8956cf
Changes to update queue sizes and add dynamic queue resizing to some missing operators. (cherry picked from commit f26c0f448a6adf5cdefddc74c4ba840b030e8cf5) Conflicts: core/sql/generator/Generator.cpp core/sql/generator/Generator.h core/sql/sqlcomp/nadefaults.cpp Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/a111065f Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/a111065f Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/a111065f Branch: refs/heads/master Commit: a111065fc659d1b82233cd78607820f3a8bd74c6 Parents: 1650c78 Author: Sandhya Sundaresan <sand...@apache.org> Authored: Wed Aug 29 04:33:10 2018 +0000 Committer: Sandhya Sundaresan <sand...@apache.org> Committed: Wed Aug 29 04:33:10 2018 +0000 ---------------------------------------------------------------------- core/sql/executor/ExSequence.cpp | 38 +++++++++++++++-------------- core/sql/executor/ExSequence.h | 6 +++-- core/sql/executor/ExTranspose.cpp | 39 ++++++++++++++---------------- core/sql/executor/ExTranspose.h | 6 +++-- core/sql/executor/ex_union.cpp | 41 +++++++++++++++++--------------- core/sql/executor/ex_union.h | 7 ++++-- core/sql/generator/GenRelUpdate.cpp | 2 ++ core/sql/generator/Generator.cpp | 19 +++++++++++++-- core/sql/generator/Generator.h | 24 +++++++++++++++++++ core/sql/optimizer/Inlining.cpp | 26 ++++++++++---------- core/sql/sqlcomp/DefaultConstants.h | 3 +-- core/sql/sqlcomp/nadefaults.cpp | 24 +++++++++---------- 12 files changed, 143 insertions(+), 92 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafodion/blob/a111065f/core/sql/executor/ExSequence.cpp ---------------------------------------------------------------------- diff --git a/core/sql/executor/ExSequence.cpp b/core/sql/executor/ExSequence.cpp index 327fb96..bc29779 100644 --- a/core/sql/executor/ExSequence.cpp +++ b/core/sql/executor/ExSequence.cpp @@ -289,22 +289,8 @@ ExSequenceTcb::ExSequenceTcb (const ExSequenceTdb & myTdb, qchild_ = child_tcb.getParentQueue(); // Allocate the queue to communicate with parent - qparent_.down = new(space) ex_queue(ex_queue::DOWN_QUEUE, - myTdb.initialQueueSizeDown_, - myTdb.criDescDown_, - space); - - // Allocate the private state in each entry of the down queue - ExSequencePrivateState *p - = new(space) ExSequencePrivateState(this); - qparent_.down->allocatePstate(p, this); - delete p; - - qparent_.up = new(space) ex_queue(ex_queue::UP_QUEUE, - myTdb.initialQueueSizeUp_, - myTdb.criDescUp_, - space); - + + allocateParentQueues(qparent_,TRUE); // Intialized processedInputs_ to the next request to process processedInputs_ = qparent_.down->getTailIndex(); @@ -375,6 +361,8 @@ void ExSequenceTcb::registerSubtasks() ex_assert( clusterDb_ , "Unlimited following and no clusterDb_") ; clusterDb_->ioEventHandler_ = ioEventHandler_ ; } + // the parent queues will be resizable, so register a resize subtask. + registerResizeSubtasks(); }; // Free Resources @@ -1510,7 +1498,7 @@ void ExSequenceTcb::updateDiagsArea( ExeErrorCode rc_) // Constructor and destructor private state // ExSequencePrivateState::ExSequencePrivateState -(const ExSequenceTcb * tcb) +() { matchCount_ = 0; step_ = ExSequenceTcb::ExSeq_EMPTY; @@ -1524,5 +1512,19 @@ ex_tcb_private_state * ExSequencePrivateState::allocate_new (const ex_tcb *tcb) { return new(((ex_tcb*)tcb)->getSpace()) - ExSequencePrivateState((ExSequenceTcb*) tcb); + ExSequencePrivateState(); }; + + +//////////////////////////////////////////////////////////////////////// +// Redefine virtual method allocatePstates, to be used by dynamic queue +// resizing, as well as the initial queue construction. +//////////////////////////////////////////////////////////////////////// +ex_tcb_private_state * ExSequenceTcb::allocatePstates( + Lng32 &numElems, // inout, desired/actual elements + Lng32 &pstateLength) // out, length of one element +{ + PstateAllocator<ExSequencePrivateState> pa; + + return pa.allocatePstates(this, numElems, pstateLength); +} http://git-wip-us.apache.org/repos/asf/trafodion/blob/a111065f/core/sql/executor/ExSequence.h ---------------------------------------------------------------------- diff --git a/core/sql/executor/ExSequence.h b/core/sql/executor/ExSequence.h index daf324f..dec0069 100644 --- a/core/sql/executor/ExSequence.h +++ b/core/sql/executor/ExSequence.h @@ -204,7 +204,9 @@ public: virtual Int32 numChildren() const; virtual const ex_tcb* getChild(Int32 pos) const; - + virtual ex_tcb_private_state * allocatePstates( + Lng32 &numElems, // inout, desired/actual elements + Lng32 &pstateLength); // out, length of one element private: const ex_tcb * childTcb_; @@ -361,7 +363,7 @@ class ExSequencePrivateState : public ex_tcb_private_state friend class ExSequenceTcb; public: - ExSequencePrivateState(const ExSequenceTcb * tcb); + ExSequencePrivateState(); ex_tcb_private_state * allocate_new(const ex_tcb * tcb); ~ExSequencePrivateState(); http://git-wip-us.apache.org/repos/asf/trafodion/blob/a111065f/core/sql/executor/ExTranspose.cpp ---------------------------------------------------------------------- diff --git a/core/sql/executor/ExTranspose.cpp b/core/sql/executor/ExTranspose.cpp index ae2d2ff..2545462 100644 --- a/core/sql/executor/ExTranspose.cpp +++ b/core/sql/executor/ExTranspose.cpp @@ -124,30 +124,13 @@ ExTransposeTcb::ExTransposeTcb(const ExTransposeTdb &transTdbLocal, childQueue_.down->allocateAtps(glob->getSpace()); // Allocate the queue to communicate with parent - // (Child allocates queue to communicate with Child) - // - qParent_.down = new(space) ex_queue(ex_queue::DOWN_QUEUE, - transTdb().queueSizeDown_, - transTdb().criDescDown_, - space); - - // Allocate the private state in each entry of the down queue - // - ExTransposePrivateState privateState(this); - qParent_.down->allocatePstate(&privateState, this); - - + + allocateParentQueues(qParent_,TRUE); // Initialize processedInputs_ to refer to the queue entry // which will be used next. // processedInputs_ = qParent_.down->getHeadIndex(); - // Allocate a queue to communicate with the parent node. - // - qParent_.up = new(space) ex_queue(ex_queue::UP_QUEUE, - transTdb().queueSizeUp_, - transTdb().criDescUp_, - space); // fixup all expressions expressions // @@ -238,6 +221,8 @@ void ExTransposeTcb::registerSubtasks() // (had returned WORK_OK). // sched->registerInsertSubtask(sWorkUp, this, childQueue_.up); + // the parent queues will be resizable, so register a resize subtask. + registerResizeSubtasks(); } // ExTransposeTcb::start() ------------------------------------------ @@ -628,7 +613,7 @@ ExTransposeTcb::processError() // Constructor and destructor for ExTransposePrivateState // -ExTransposePrivateState::ExTransposePrivateState(const ExTransposeTcb *) +ExTransposePrivateState::ExTransposePrivateState() { init(); } @@ -656,6 +641,18 @@ ex_tcb_private_state * ExTransposePrivateState::allocate_new(const ex_tcb *tcb) { return new(((ex_tcb *)tcb)->getSpace()) - ExTransposePrivateState((ExTransposeTcb *)tcb); + ExTransposePrivateState(); } +//////////////////////////////////////////////////////////////////////// +// Redefine virtual method allocatePstates, to be used by dynamic queue +// resizing, as well as the initial queue construction. +//////////////////////////////////////////////////////////////////////// +ex_tcb_private_state * ExTransposeTcb::allocatePstates( + Lng32 &numElems, // inout, desired/actual elements + Lng32 &pstateLength) // out, length of one element +{ + PstateAllocator<ExTransposePrivateState> pa; + + return pa.allocatePstates(this, numElems, pstateLength); +} http://git-wip-us.apache.org/repos/asf/trafodion/blob/a111065f/core/sql/executor/ExTranspose.h ---------------------------------------------------------------------- diff --git a/core/sql/executor/ExTranspose.h b/core/sql/executor/ExTranspose.h index a2a537a..b574d15 100644 --- a/core/sql/executor/ExTranspose.h +++ b/core/sql/executor/ExTranspose.h @@ -267,7 +267,9 @@ public: if(pos == 0) return childTcb_; return NULL; } - + virtual ex_tcb_private_state * allocatePstates( + Lng32 &numElems, // inout, desired/actual elements + Lng32 &pstateLength); // out, length of one element protected: // The child TCB of this Transpose node. @@ -329,7 +331,7 @@ class ExTransposePrivateState : public ex_tcb_private_state public: - ExTransposePrivateState(const ExTransposeTcb * tcb); + ExTransposePrivateState(); ex_tcb_private_state * allocate_new(const ex_tcb * tcb); http://git-wip-us.apache.org/repos/asf/trafodion/blob/a111065f/core/sql/executor/ex_union.cpp ---------------------------------------------------------------------- diff --git a/core/sql/executor/ex_union.cpp b/core/sql/executor/ex_union.cpp index 74a3f4d..1cfe82d 100644 --- a/core/sql/executor/ex_union.cpp +++ b/core/sql/executor/ex_union.cpp @@ -135,22 +135,10 @@ ex_union_tcb::ex_union_tcb(const ex_union_tdb & union_tdb, // ex_cri_desc * to_parent_cri; to_parent_cri = childQueues_[0].up->getCriDesc(); - // Allocate the queue to communicate with parent - qparent.down = new(space) ex_queue(ex_queue::DOWN_QUEUE, - union_tdb.queueSizeDown_, - union_tdb.criDescDown_, - space); + + allocateParentQueues(qparent,TRUE); - // Allocate the private state in each entry of the down queue - ex_union_private_state p(this); - qparent.down->allocatePstate(&p, this); processedInputs_ = qparent.down->getHeadIndex(); - - qparent.up = new(space) ex_queue(ex_queue::UP_QUEUE, - union_tdb.queueSizeUp_, - union_tdb.criDescUp_, - space); - // fixup left expression if (moveExpr(0)) (void) moveExpr(0)->fixup(0, getExpressionMode(), this, @@ -207,7 +195,6 @@ void ex_union_tcb::registerSubtasks() sched->registerInsertSubtask(sWorkDown, this, qparent.down,"DN"); sched->registerUnblockSubtask(sWorkDown, this, childQueues_[0].down); sched->registerUnblockSubtask(sWorkDown, this, childQueues_[1].down); - // cancellations are handled by the complaints department sched->registerCancelSubtask(sCancel, this, qparent.down,"CN"); @@ -215,6 +202,8 @@ void ex_union_tcb::registerSubtasks() sched->registerUnblockSubtask(sWorkUp, this, qparent.up,"UP"); sched->registerInsertSubtask(sWorkUp, this, childQueues_[0].up); sched->registerInsertSubtask(sWorkUp, this, childQueues_[1].up); + // the parent queues will be resizable, so register a resize subtask. + registerResizeSubtasks(); } /////////////////////////////////////////////////////////// @@ -1120,7 +1109,8 @@ void ex_o_union_tcb::registerSubtasks() sched->registerUnblockSubtask(sWorkUp, this, qparent.up,"UP"); sched->registerInsertSubtask(sWorkUp, this, childQueues_[0].up); sched->registerInsertSubtask(sWorkUp, this, childQueues_[1].up); - + // the parent queues will be resizable, so register a resize subtask. + registerResizeSubtasks(); } // ex_o_union_tcb::registerSubtasks ////////////////////////////////////////////////////////////// @@ -1233,7 +1223,8 @@ void ex_c_union_tcb::registerSubtasks() sched->registerInsertSubtask(sWorkUp, this, childQueues_[i].up); workUpEvent_ = sched->registerNonQueueSubtask(sWorkUp, this); - + // the parent queues will be resizable, so register a resize subtask. + registerResizeSubtasks(); } // ex_union_tcb::registerSubtasks() ExWorkProcRetcode ex_c_union_tcb::condWorkDown() @@ -1581,7 +1572,7 @@ void ex_c_union_tcb::processEODErrorOrWarning(NABoolean isWarning) // Constructor and destructor for union_private_state // -ex_union_private_state::ex_union_private_state(const ex_union_tcb *) +ex_union_private_state::ex_union_private_state() { init(); } @@ -1601,6 +1592,18 @@ ex_union_private_state::~ex_union_private_state() ex_tcb_private_state * ex_union_private_state::allocate_new(const ex_tcb *tcb) { - return new(((ex_tcb *)tcb)->getSpace()) ex_union_private_state((ex_union_tcb *) tcb); + return new(((ex_tcb *)tcb)->getSpace()) ex_union_private_state(); } +//////////////////////////////////////////////////////////////////////// +// Redefine virtual method allocatePstates, to be used by dynamic queue +// resizing, as well as the initial queue construction. +//////////////////////////////////////////////////////////////////////// +ex_tcb_private_state * ex_union_tcb::allocatePstates( + Lng32 &numElems, // inout, desired/actual elements + Lng32 &pstateLength) // out, length of one element +{ + PstateAllocator<ex_union_private_state> pa; + + return pa.allocatePstates(this, numElems, pstateLength); +} http://git-wip-us.apache.org/repos/asf/trafodion/blob/a111065f/core/sql/executor/ex_union.h ---------------------------------------------------------------------- diff --git a/core/sql/executor/ex_union.h b/core/sql/executor/ex_union.h index 279ff07..557d560 100644 --- a/core/sql/executor/ex_union.h +++ b/core/sql/executor/ex_union.h @@ -195,6 +195,9 @@ virtual const ex_tcb* getChild(Int32 pos) const virtual Int32 numChildren() const { return union_tdb().numChildren(); } // virtual const ex_tcb* getChild(int pos) const; virtual Int32 hasNoOutputs() const {return FALSE;}; + virtual ex_tcb_private_state * allocatePstates( + Lng32 &numElems, // inout, desired/actual elements + Lng32 &pstateLength); // out, length of one element protected: const ex_tcb *tcbLeft_; // left tcb @@ -386,8 +389,8 @@ class ex_union_private_state : public ex_tcb_private_state void init(); // initialize state public: - - ex_union_private_state(const ex_union_tcb * tcb); //constructor + + ex_union_private_state(); //constructor ex_tcb_private_state * allocate_new(const ex_tcb * tcb); ~ex_union_private_state(); // destructor http://git-wip-us.apache.org/repos/asf/trafodion/blob/a111065f/core/sql/generator/GenRelUpdate.cpp ---------------------------------------------------------------------- diff --git a/core/sql/generator/GenRelUpdate.cpp b/core/sql/generator/GenRelUpdate.cpp index b8ae57f..b571125 100644 --- a/core/sql/generator/GenRelUpdate.cpp +++ b/core/sql/generator/GenRelUpdate.cpp @@ -2926,6 +2926,8 @@ short HbaseInsert::codeGen(Generator *generator) // operator. On seeing that, executor will flush the buffers. generator->setVSBBInsert(TRUE); } + if (xformedEffUpsert()) + generator->setEffTreeUpsert(TRUE); //setting parametes for hbase bulk load integration hbasescan_tdb->setIsTrafodionLoadPrep(this->getIsTrafLoadPrep()); http://git-wip-us.apache.org/repos/asf/trafodion/blob/a111065f/core/sql/generator/Generator.cpp ---------------------------------------------------------------------- diff --git a/core/sql/generator/Generator.cpp b/core/sql/generator/Generator.cpp index d9e736a..4cbb8bf 100644 --- a/core/sql/generator/Generator.cpp +++ b/core/sql/generator/Generator.cpp @@ -312,7 +312,22 @@ void Generator::initTdbFields(ComTdb *tdb) dynQueueSizeValuesAreValid_ = TRUE; } - if (getRightSideOfOnlj() && makeOnljRightQueuesBig_) + if (ActiveSchemaDB()->getDefaults().getToken(DYN_QUEUE_RESIZE_OVERRIDE) == DF_ON) + { + tdb->setQueueResizeParams(tdb->getMaxQueueSizeDown(), tdb->getMaxQueueSizeUp(), + queueResizeLimit_,queueResizeFactor_); + } + //Typically the sequence operaotr may have to deal with a large numer of rows when + //it's part of the IM tree that performs elimination of dups. + if ((tdb->getNodeType() == ComTdb::ex_SEQUENCE_FUNCTION) && isEffTreeUpsert()) + { + tdb->setQueueResizeParams(tdb->getMaxQueueSizeDown(), tdb->getMaxQueueSizeUp(), + queueResizeLimit_,queueResizeFactor_); + } + // Make the size of the upQ of ONLJ the same as that of the upQ + // of the right child. + if ((tdb->getNodeType() == ComTdb::ex_ONLJ || getRightSideOfOnlj()) + && makeOnljRightQueuesBig_) { tdb->setQueueResizeParams(onljRightSideDownQueue_, onljRightSideUpQueue_, @@ -343,7 +358,7 @@ void Generator::initTdbFields(ComTdb *tdb) queueResizeLimit_, queueResizeFactor_); } - + tdb->setTdbId(getAndIncTdbId()); tdb->setPlanVersion(ComVersion_GetCurrentPlanVersion()); http://git-wip-us.apache.org/repos/asf/trafodion/blob/a111065f/core/sql/generator/Generator.h ---------------------------------------------------------------------- diff --git a/core/sql/generator/Generator.h b/core/sql/generator/Generator.h index 2c0ac9e..1c778e3 100644 --- a/core/sql/generator/Generator.h +++ b/core/sql/generator/Generator.h @@ -247,6 +247,8 @@ class Generator : public NABasicObject // If Hive tables are accessed at runtime , HIVE_ACCESS = 0x00000400 , CONTAINS_FAST_EXTRACT = 0x00000800 + , EFF_TREE_UPSERT = 0x00001000 + }; // Each operator node receives some tupps in its input atp and @@ -1297,6 +1299,28 @@ public: flags2_ &= ~RI_INLINING_FOR_TRAF_IUD ; } + + NABoolean isMinmaxOptWithRangeOfValues() { + + return (flags2_ & MINMAX_WITH_RANGE_OF_VALUES ) != 0; + } + + void setMinmaxOptWithRangeOfValues(NABoolean v) + { + v ? flags2_ |= MINMAX_WITH_RANGE_OF_VALUES: + flags2_ &= ~MINMAX_WITH_RANGE_OF_VALUES; + } +NABoolean isEffTreeUpsert() { + + return (flags2_ & EFF_TREE_UPSERT ) != 0; + } + + void setEffTreeUpsert(NABoolean v) + { + v ? flags2_ |= EFF_TREE_UPSERT: + flags2_ &= ~EFF_TREE_UPSERT; + } + inline Int64 getPlanId(); inline Lng32 getExplainNodeId() const; inline Lng32 getNextExplainNodeId(); http://git-wip-us.apache.org/repos/asf/trafodion/blob/a111065f/core/sql/optimizer/Inlining.cpp ---------------------------------------------------------------------- diff --git a/core/sql/optimizer/Inlining.cpp b/core/sql/optimizer/Inlining.cpp index e93e33b..89b0d50 100644 --- a/core/sql/optimizer/Inlining.cpp +++ b/core/sql/optimizer/Inlining.cpp @@ -2165,19 +2165,21 @@ RelExpr *GenericUpdate::createIMNodes(BindWA *bindWA, // are flowing to this update node. // This is also the case when updates are being driven // by rowsets. - // The fix is to unconditionally block the ordered union + // Changing this code that unconditionally blocked the ordered union // to handle all cases of IM updates. - // Note that this may cause performance issues. Improving - // the performance is an RFE at the moment. - //if (this->getInliningInfo().isInActionOfRowTrigger() || - // bindWA->getHostArraysArea()) - //{ - ((Union *)indexOp)->setBlockedUnion(); - //} - //else - //{ - // ((Union *)indexOp)->setOrderedUnion(); - //} + //We can use the ordered union in the case where we have the sequence operator + // in the tree on the left side to remove duplicates before it flows to the + // IM tree. This is to improve performance. + // + if (this->getInliningInfo().isInActionOfRowTrigger() || + (bindWA->getHostArraysArea() && !isEffUpsert)) + { + ((Union *)indexOp)->setBlockedUnion(); + } + else + { + ((Union *)indexOp)->setOrderedUnion(); + } // Add a root just to be consistent, so all returns from this method // are topped with a RelRoot. http://git-wip-us.apache.org/repos/asf/trafodion/blob/a111065f/core/sql/sqlcomp/DefaultConstants.h ---------------------------------------------------------------------- diff --git a/core/sql/sqlcomp/DefaultConstants.h b/core/sql/sqlcomp/DefaultConstants.h index 2098024..290205f 100644 --- a/core/sql/sqlcomp/DefaultConstants.h +++ b/core/sql/sqlcomp/DefaultConstants.h @@ -383,7 +383,7 @@ enum DefaultConstants DYN_QUEUE_RESIZE_INIT_DOWN, DYN_QUEUE_RESIZE_INIT_UP, DYN_QUEUE_RESIZE_LIMIT, - + DYN_QUEUE_RESIZE_OVERRIDE, // ------------------------------------------------------------------------- // Enable 'ON' or disable 'OFF' considering hash joins of any form // ------------------------------------------------------------------------- @@ -2115,7 +2115,6 @@ enum DefaultConstants GEN_ONLJ_SET_QUEUE_RIGHT, GEN_ONLJ_SET_QUEUE_LEFT, - SORT_REC_THRESHOLD, SORT_MERGE_BUFFER_UNIT_56KB, http://git-wip-us.apache.org/repos/asf/trafodion/blob/a111065f/core/sql/sqlcomp/nadefaults.cpp ---------------------------------------------------------------------- diff --git a/core/sql/sqlcomp/nadefaults.cpp b/core/sql/sqlcomp/nadefaults.cpp index e56efa5..b5aea4a 100644 --- a/core/sql/sqlcomp/nadefaults.cpp +++ b/core/sql/sqlcomp/nadefaults.cpp @@ -1119,6 +1119,7 @@ SDDui___(CYCLIC_ESP_PLACEMENT, "1"), DDui2__(DYN_QUEUE_RESIZE_INIT_DOWN, "4"), DDui2__(DYN_QUEUE_RESIZE_INIT_UP, "4"), DDui1__(DYN_QUEUE_RESIZE_LIMIT, "9"), + DDkwd__(DYN_QUEUE_RESIZE_OVERRIDE, "OFF"), DDkwd__(EID_SPACE_USAGE_OPT, "OFF"), @@ -1319,7 +1320,7 @@ SDDkwd__(EXE_DIAGNOSTIC_EVENTS, "OFF"), DDui1__(GEN_MJ_BUFFER_SIZE, "32768"), DDui1__(GEN_MJ_NUM_BUFFERS, "1"), DDui1__(GEN_MJ_SIZE_DOWN, "2"), - DDui1__(GEN_MJ_SIZE_UP, "1024"), + DDui1__(GEN_MJ_SIZE_UP, "2048"), DDui1__(GEN_ONLJ_BUFFER_SIZE, "5120"), DDui1__(GEN_ONLJ_LEFT_CHILD_QUEUE_DOWN, "4"), DDui1__(GEN_ONLJ_LEFT_CHILD_QUEUE_UP, "2048"), @@ -1328,7 +1329,7 @@ SDDkwd__(EXE_DIAGNOSTIC_EVENTS, "OFF"), DDui1__(GEN_ONLJ_RIGHT_SIDE_QUEUE_UP, "2048"), DDkwd__(GEN_ONLJ_SET_QUEUE_LEFT, "ON"), DDkwd__(GEN_ONLJ_SET_QUEUE_RIGHT, "ON"), - DDui1__(GEN_ONLJ_SIZE_DOWN, "2048"), + DDui1__(GEN_ONLJ_SIZE_DOWN, "8"), DDui1__(GEN_ONLJ_SIZE_UP, "2048"), DDipcBu(GEN_PA_BUFFER_SIZE, "31000"), DDui1__(GEN_PA_NUM_BUFFERS, "5"), @@ -1338,10 +1339,10 @@ SDDkwd__(EXE_DIAGNOSTIC_EVENTS, "OFF"), DDui1__(GEN_PROBE_CACHE_SIZE_UP, "2048"), DDui1__(GEN_SAMPLE_SIZE_DOWN, "16"), DDui1__(GEN_SAMPLE_SIZE_UP, "16"), - DDui1__(GEN_SEQFUNC_BUFFER_SIZE, "5120"), - DDui1__(GEN_SEQFUNC_NUM_BUFFERS, "5"), - DDui1__(GEN_SEQFUNC_SIZE_DOWN, "16"), - DDui1__(GEN_SEQFUNC_SIZE_UP, "16"), + DDui1__(GEN_SEQFUNC_BUFFER_SIZE, "10240"), + DDui1__(GEN_SEQFUNC_NUM_BUFFERS, "10"), + DDui1__(GEN_SEQFUNC_SIZE_DOWN, "512"), + DDui1__(GEN_SEQFUNC_SIZE_UP, "2048"), DDui1__(GEN_SGBY_BUFFER_SIZE, "5120"), DDui1__(GEN_SGBY_NUM_BUFFERS, "5"), DDui1__(GEN_SGBY_SIZE_DOWN, "2048"), @@ -1360,7 +1361,7 @@ SDDkwd__(EXE_DIAGNOSTIC_EVENTS, "OFF"), DDui1__(GEN_SORT_MAX_BUFFER_SIZE, "5242880"), DDui1__(GEN_SORT_MAX_NUM_BUFFERS, "160"), DDui1__(GEN_SORT_NUM_BUFFERS, "2"), - DDui1__(GEN_SORT_SIZE_DOWN, "2"), + DDui1__(GEN_SORT_SIZE_DOWN, "8"), DDui1__(GEN_SORT_SIZE_UP, "1024"), DDkwd__(GEN_SORT_TOPN, "ON"), DDui1__(GEN_SORT_TOPN_THRESHOLD, "10000"), @@ -1381,8 +1382,8 @@ SDDkwd__(EXE_DIAGNOSTIC_EVENTS, "OFF"), DDui1__(GEN_TRAN_SIZE_UP, "4"), DDui1__(GEN_TRSP_BUFFER_SIZE, "10240"), DDui1__(GEN_TRSP_NUM_BUFFERS, "5"), - DDui1__(GEN_TRSP_SIZE_DOWN, "16"), - DDui1__(GEN_TRSP_SIZE_UP, "16"), + DDui1__(GEN_TRSP_SIZE_DOWN, "2048"), + DDui1__(GEN_TRSP_SIZE_UP, "2048"), DDui1__(GEN_TUPL_BUFFER_SIZE, "1024"), DDui1__(GEN_TUPL_NUM_BUFFERS, "4"), DDui1__(GEN_TUPL_SIZE_DOWN, "2048"), @@ -1403,9 +1404,8 @@ SDDkwd__(EXE_DIAGNOSTIC_EVENTS, "OFF"), DDui1__(GEN_UN_BUFFER_SIZE, "10240"), DDui1__(GEN_UN_NUM_BUFFERS, "5"), - DDui1__(GEN_UN_SIZE_DOWN, "8"), - DDui1__(GEN_UN_SIZE_UP, "16"), - + DDui1__(GEN_UN_SIZE_DOWN, "2048"), + DDui1__(GEN_UN_SIZE_UP, "2048"), // When less or equal to this CQD (5000 rows by default), a partial root