mirror of
https://github.com/MariaDB/server.git
synced 2025-01-24 15:54:37 +01:00
wl2077 - ndb scan optimizations
ndb/src/kernel/blocks/dbdih/Dbdih.hpp: remove unused variable ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: Always supply all nodes ndb/src/kernel/blocks/dbtc/DbtcMain.cpp: Enable scanning of backup fragments when read committed ndb/test/ndbapi/testReadPerf.cpp: Better printout
This commit is contained in:
parent
d1f07a9632
commit
c3211458ac
4 changed files with 32 additions and 14 deletions
|
@ -147,7 +147,6 @@ public:
|
|||
Uint32 nfConnect;
|
||||
Uint32 table;
|
||||
Uint32 userpointer;
|
||||
Uint32 nodeCount;
|
||||
BlockReference userblockref;
|
||||
};
|
||||
typedef Ptr<ConnectRecord> ConnectRecordPtr;
|
||||
|
|
|
@ -7080,24 +7080,22 @@ void Dbdih::execDIGETPRIMREQ(Signal* signal)
|
|||
|
||||
ndbrequire(tabPtr.p->tabStatus == TabRecord::TS_ACTIVE);
|
||||
connectPtr.i = signal->theData[0];
|
||||
if(connectPtr.i != RNIL){
|
||||
if(connectPtr.i != RNIL)
|
||||
{
|
||||
jam();
|
||||
ptrCheckGuard(connectPtr, cconnectFileSize, connectRecord);
|
||||
ndbrequire(connectPtr.p->connectState == ConnectRecord::INUSE);
|
||||
getFragstore(tabPtr.p, fragId, fragPtr);
|
||||
connectPtr.p->nodeCount = extractNodeInfo(fragPtr.p, connectPtr.p->nodes);
|
||||
signal->theData[0] = connectPtr.p->userpointer;
|
||||
signal->theData[1] = passThrough;
|
||||
signal->theData[2] = connectPtr.p->nodes[0];
|
||||
sendSignal(connectPtr.p->userblockref, GSN_DIGETPRIMCONF, signal, 3, JBB);
|
||||
return;
|
||||
}//if
|
||||
//connectPtr.i == RNIL -> question without connect record
|
||||
}
|
||||
else
|
||||
{
|
||||
jam();
|
||||
signal->theData[0] = RNIL;
|
||||
}
|
||||
|
||||
Uint32 nodes[MAX_REPLICAS];
|
||||
getFragstore(tabPtr.p, fragId, fragPtr);
|
||||
Uint32 count = extractNodeInfo(fragPtr.p, nodes);
|
||||
|
||||
signal->theData[0] = RNIL;
|
||||
signal->theData[1] = passThrough;
|
||||
signal->theData[2] = nodes[0];
|
||||
signal->theData[3] = nodes[1];
|
||||
|
|
|
@ -8944,6 +8944,20 @@ void Dbtc::execDIGETPRIMCONF(Signal* signal)
|
|||
scanptr.i = scanFragptr.p->scanRec;
|
||||
ptrCheckGuard(scanptr, cscanrecFileSize, scanRecord);
|
||||
|
||||
if(ScanFragReq::getReadCommittedFlag(scanptr.p->scanRequestInfo))
|
||||
{
|
||||
jam();
|
||||
Uint32 max = 3+signal->theData[6];
|
||||
Uint32 nodeid = getOwnNodeId();
|
||||
for(Uint32 i = 3; i<max; i++)
|
||||
if(signal->theData[i] == nodeid)
|
||||
{
|
||||
jam();
|
||||
tnodeid = nodeid;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
/**
|
||||
* Check table
|
||||
|
|
|
@ -391,8 +391,15 @@ run_read(){
|
|||
|
||||
void
|
||||
print_result(){
|
||||
int tmp = 1;
|
||||
tmp *= g_paramters[P_RANGE].value;
|
||||
tmp *= g_paramters[P_LOOPS].value;
|
||||
|
||||
int t, t2;
|
||||
for(int i = 0; i<P_OP_TYPES; i++){
|
||||
g_err.println("%s avg: %u us/row", g_ops[i],
|
||||
(1000*g_times[i])/(g_paramters[P_RANGE].value*g_paramters[P_LOOPS].value));
|
||||
g_err << g_ops[i] << " avg: "
|
||||
<< (int)((1000*g_times[i])/tmp)
|
||||
<< " us/row ("
|
||||
<< (1000 * tmp)/g_times[i] << " rows / sec)" << endl;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue