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 metaReaderInit(SMetaReader *pReader, SMeta *pMeta, int32_t flags);
|
||||||
void metaReaderClear(SMetaReader *pReader);
|
void metaReaderClear(SMetaReader *pReader);
|
||||||
int32_t metaGetTableEntryByUid(SMetaReader *pReader, tb_uid_t uid);
|
int32_t metaGetTableEntryByUid(SMetaReader *pReader, tb_uid_t uid);
|
||||||
|
//int32_t metaGetTableEntryByUidTest(void *pReader, SArray *uidList);
|
||||||
int32_t metaReadNext(SMetaReader *pReader);
|
int32_t metaReadNext(SMetaReader *pReader);
|
||||||
const void *metaGetTableTagVal(SMetaEntry *pEntry, int16_t type, STagVal *tagVal);
|
const void *metaGetTableTagVal(SMetaEntry *pEntry, int16_t type, STagVal *tagVal);
|
||||||
int metaGetTableNameByUid(void *meta, uint64_t uid, char *tbName);
|
int metaGetTableNameByUid(void *meta, uint64_t uid, char *tbName);
|
||||||
|
|
|
@ -53,6 +53,58 @@ _err:
|
||||||
return -1;
|
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) {
|
int metaGetTableEntryByUid(SMetaReader *pReader, tb_uid_t uid) {
|
||||||
SMeta *pMeta = pReader->pMeta;
|
SMeta *pMeta = pReader->pMeta;
|
||||||
int64_t version;
|
int64_t version;
|
||||||
|
|
|
@ -382,6 +382,20 @@ SColumnInfoData* getColInfoResult(void* metaHandle, SArray* pTableList, SNode* p
|
||||||
goto end;
|
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();
|
int64_t st = taosGetTimestampUs();
|
||||||
for (int32_t i = 0; i < rows; i++) {
|
for (int32_t i = 0; i < rows; i++) {
|
||||||
STableKeyInfo* info = taosArrayGet(pTableList, i);
|
STableKeyInfo* info = taosArrayGet(pTableList, i);
|
||||||
|
@ -392,7 +406,7 @@ SColumnInfoData* getColInfoResult(void* metaHandle, SArray* pTableList, SNode* p
|
||||||
code = metaGetTableEntryByUid(&mr, info->uid);
|
code = metaGetTableEntryByUid(&mr, info->uid);
|
||||||
// int64_t stt1 = taosGetTimestampUs();
|
// int64_t stt1 = taosGetTimestampUs();
|
||||||
// qDebug("generate tag get meta rows:%d, cost:%ld ms", rows, stt1-stt);
|
// 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++){
|
for(int32_t j = 0; j < taosArrayGetSize(pResBlock->pDataBlock); j++){
|
||||||
SColumnInfoData* pColInfo = (SColumnInfoData*)taosArrayGet(pResBlock->pDataBlock, j);
|
SColumnInfoData* pColInfo = (SColumnInfoData*)taosArrayGet(pResBlock->pDataBlock, j);
|
||||||
STagVal tagVal = {0};
|
STagVal tagVal = {0};
|
||||||
|
@ -465,6 +479,7 @@ int32_t getTableList(void* metaHandle, void* pVnode, SScanPhysiNode* pScanNode,
|
||||||
SIndexMetaArg metaArg = {
|
SIndexMetaArg metaArg = {
|
||||||
.metaEx = metaHandle, .idx = tsdbGetIdx(metaHandle), .ivtIdx = tsdbGetIvtIdx(metaHandle), .suid = tableUid};
|
.metaEx = metaHandle, .idx = tsdbGetIdx(metaHandle), .ivtIdx = tsdbGetIvtIdx(metaHandle), .suid = tableUid};
|
||||||
|
|
||||||
|
int64_t stt = taosGetTimestampUs();
|
||||||
SArray* res = taosArrayInit(8, sizeof(uint64_t));
|
SArray* res = taosArrayInit(8, sizeof(uint64_t));
|
||||||
SIdxFltStatus status = SFLT_NOT_INDEX;
|
SIdxFltStatus status = SFLT_NOT_INDEX;
|
||||||
code = doFilterTag(pTagIndexCond, &metaArg, res, &status);
|
code = doFilterTag(pTagIndexCond, &metaArg, res, &status);
|
||||||
|
@ -481,6 +496,8 @@ int32_t getTableList(void* metaHandle, void* pVnode, SScanPhysiNode* pScanNode,
|
||||||
taosArrayPush(pListInfo->pTableList, &info);
|
taosArrayPush(pListInfo->pTableList, &info);
|
||||||
}
|
}
|
||||||
taosArrayDestroy(res);
|
taosArrayDestroy(res);
|
||||||
|
int64_t stt1 = taosGetTimestampUs();
|
||||||
|
qDebug("generate table list, cost:%ld us", stt1-stt);
|
||||||
} else {
|
} else {
|
||||||
code = vnodeGetAllTableList(pVnode, tableUid, pListInfo->pTableList);
|
code = vnodeGetAllTableList(pVnode, tableUid, pListInfo->pTableList);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue