opti:logic for get table list
This commit is contained in:
parent
4f03e2e4f5
commit
32f9bc0dd0
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue