提交 32f9bc0d 编写于 作者: wmmhello's avatar wmmhello

opti:logic for get table list

上级 4f03e2e4
......@@ -91,6 +91,7 @@ typedef struct SMetaEntry SMetaEntry;
void metaReaderInit(SMetaReader *pReader, SMeta *pMeta, int32_t flags);
void metaReaderClear(SMetaReader *pReader);
int32_t metaGetTableEntryByUid(SMetaReader *pReader, tb_uid_t uid);
//int32_t metaGetTableEntryByUidTest(void *pReader, SArray *uidList);
int32_t metaReadNext(SMetaReader *pReader);
const void *metaGetTableTagVal(SMetaEntry *pEntry, int16_t type, STagVal *tagVal);
int metaGetTableNameByUid(void *meta, uint64_t uid, char *tbName);
......
......@@ -53,6 +53,58 @@ _err:
return -1;
}
int metaGetTableEntryByUidTest(void* meta, SArray *uidList) {
SArray* readerList = taosArrayInit(taosArrayGetSize(uidList), sizeof(SMetaReader));
SArray* uidVersion = taosArrayInit(taosArrayGetSize(uidList), sizeof(STbDbKey));
SMeta *pMeta = meta;
int64_t version;
int64_t stt1 = taosGetTimestampUs();
for(int i = 0; i < taosArrayGetSize(uidList); i++) {
void* ppVal = NULL;
int vlen = 0;
uint64_t * uid = taosArrayGet(uidList, i);
// query uid.idx
if (tdbTbGet(pMeta->pUidIdx, uid, sizeof(*uid), &ppVal, &vlen) < 0) {
continue;
}
version = *(int64_t *)ppVal;
STbDbKey tbDbKey = {.version = version, .uid = *uid};
taosArrayPush(uidVersion, &tbDbKey);
}
int64_t stt2 = taosGetTimestampUs();
qDebug("metaGetTableEntryByUidTest1 rows:%d, cost:%ld us", taosArrayGetSize(uidList), stt2-stt1);
for(int i = 0; i < taosArrayGetSize(uidVersion); i++) {
SMetaReader pReader = {0};
STbDbKey *tbDbKey = taosArrayGet(uidVersion, i);
// query table.db
if (tdbTbGet(pMeta->pTbDb, tbDbKey, sizeof(STbDbKey), &pReader.pBuf, &pReader.szBuf) < 0) {
continue;
}
taosArrayPush(readerList, &pReader);
}
int64_t stt3 = taosGetTimestampUs();
qDebug("metaGetTableEntryByUidTest2 rows:%d, cost:%ld us", taosArrayGetSize(uidList), stt3-stt2);
for(int i = 0; i < taosArrayGetSize(readerList); i++){
SMetaReader* pReader = taosArrayGet(readerList, i);
metaReaderInit(pReader, meta, 0);
// decode the entry
tDecoderInit(&pReader->coder, pReader->pBuf, pReader->szBuf);
if (metaDecodeEntry(&pReader->coder, &pReader->me) < 0) {
}
metaReaderClear(pReader);
}
int64_t stt4 = taosGetTimestampUs();
qDebug("metaGetTableEntryByUidTest3 rows:%d, cost:%ld us", taosArrayGetSize(readerList), stt4-stt3);
return 0;
}
int metaGetTableEntryByUid(SMetaReader *pReader, tb_uid_t uid) {
SMeta *pMeta = pReader->pMeta;
int64_t version;
......
......@@ -382,6 +382,20 @@ SColumnInfoData* getColInfoResult(void* metaHandle, SArray* pTableList, SNode* p
goto end;
}
// int64_t stt = taosGetTimestampUs();
// SArray* arrAssist = taosArrayInit(rows, sizeof(SMetaReader));
// SArray* uidList = taosArrayInit(rows, sizeof(uint64_t));
// for (int32_t i = 0; i < rows; i++) {
// STableKeyInfo* info = taosArrayGet(pTableList, i);
// taosArrayPush(uidList, &info->uid);
// }
// code = metaGetTableEntryByUidTest(metaHandle, uidList);
//
// int64_t stt1 = taosGetTimestampUs();
// qDebug("generate tag meta rows:%d, cost:%ld us", rows, stt1-stt);
int64_t st = taosGetTimestampUs();
for (int32_t i = 0; i < rows; i++) {
STableKeyInfo* info = taosArrayGet(pTableList, i);
......@@ -392,7 +406,7 @@ SColumnInfoData* getColInfoResult(void* metaHandle, SArray* pTableList, SNode* p
code = metaGetTableEntryByUid(&mr, info->uid);
// int64_t stt1 = taosGetTimestampUs();
// qDebug("generate tag get meta rows:%d, cost:%ld ms", rows, stt1-stt);
// SMetaReader *mr = taosArrayGet(arrAssist, i);
for(int32_t j = 0; j < taosArrayGetSize(pResBlock->pDataBlock); j++){
SColumnInfoData* pColInfo = (SColumnInfoData*)taosArrayGet(pResBlock->pDataBlock, j);
STagVal tagVal = {0};
......@@ -465,6 +479,7 @@ int32_t getTableList(void* metaHandle, void* pVnode, SScanPhysiNode* pScanNode,
SIndexMetaArg metaArg = {
.metaEx = metaHandle, .idx = tsdbGetIdx(metaHandle), .ivtIdx = tsdbGetIvtIdx(metaHandle), .suid = tableUid};
int64_t stt = taosGetTimestampUs();
SArray* res = taosArrayInit(8, sizeof(uint64_t));
SIdxFltStatus status = SFLT_NOT_INDEX;
code = doFilterTag(pTagIndexCond, &metaArg, res, &status);
......@@ -481,6 +496,8 @@ int32_t getTableList(void* metaHandle, void* pVnode, SScanPhysiNode* pScanNode,
taosArrayPush(pListInfo->pTableList, &info);
}
taosArrayDestroy(res);
int64_t stt1 = taosGetTimestampUs();
qDebug("generate table list, cost:%ld us", stt1-stt);
} else {
code = vnodeGetAllTableList(pVnode, tableUid, pListInfo->pTableList);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册