performance issue
This commit is contained in:
parent
49948f2683
commit
020fa3dd06
|
@ -49,7 +49,8 @@ typedef struct SMultiTbStmt {
|
||||||
uint64_t currentUid;
|
uint64_t currentUid;
|
||||||
uint32_t tbNum;
|
uint32_t tbNum;
|
||||||
SStrToken tbname;
|
SStrToken tbname;
|
||||||
SHashObj *pTableHash;
|
SHashObj *pTableHash;
|
||||||
|
SHashObj *pTableBlockHashList; // data block for each table
|
||||||
} SMultiTbStmt;
|
} SMultiTbStmt;
|
||||||
|
|
||||||
typedef struct STscStmt {
|
typedef struct STscStmt {
|
||||||
|
@ -975,6 +976,7 @@ static void insertBatchClean(STscStmt* pStmt) {
|
||||||
|
|
||||||
tfree(pCmd->pTableNameList);
|
tfree(pCmd->pTableNameList);
|
||||||
|
|
||||||
|
/*
|
||||||
STableDataBlocks** p = taosHashIterate(pCmd->pTableBlockHashList, NULL);
|
STableDataBlocks** p = taosHashIterate(pCmd->pTableBlockHashList, NULL);
|
||||||
|
|
||||||
STableDataBlocks* pOneTableBlock = *p;
|
STableDataBlocks* pOneTableBlock = *p;
|
||||||
|
@ -993,10 +995,12 @@ static void insertBatchClean(STscStmt* pStmt) {
|
||||||
|
|
||||||
pOneTableBlock = *p;
|
pOneTableBlock = *p;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
pCmd->pDataBlocks = tscDestroyBlockArrayList(pCmd->pDataBlocks);
|
pCmd->pDataBlocks = tscDestroyBlockArrayList(pCmd->pDataBlocks);
|
||||||
pCmd->numOfTables = 0;
|
pCmd->numOfTables = 0;
|
||||||
|
|
||||||
|
taosHashEmpty(pCmd->pTableBlockHashList);
|
||||||
tscFreeSqlResult(pSql);
|
tscFreeSqlResult(pSql);
|
||||||
tscFreeSubobj(pSql);
|
tscFreeSubobj(pSql);
|
||||||
tfree(pSql->pSubs);
|
tfree(pSql->pSubs);
|
||||||
|
@ -1136,6 +1140,10 @@ int taos_stmt_prepare(TAOS_STMT* stmt, const char* sql, unsigned long length) {
|
||||||
if (pStmt->mtb.pTableHash == NULL) {
|
if (pStmt->mtb.pTableHash == NULL) {
|
||||||
pStmt->mtb.pTableHash = taosHashInit(16, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, false);
|
pStmt->mtb.pTableHash = taosHashInit(16, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, false);
|
||||||
}
|
}
|
||||||
|
if (pStmt->mtb.pTableBlockHashList == NULL) {
|
||||||
|
pStmt->mtb.pTableBlockHashList = taosHashInit(16, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), true, false);
|
||||||
|
}
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1183,7 +1191,7 @@ int taos_stmt_set_tbname(TAOS_STMT* stmt, const char* name) {
|
||||||
if (uid != NULL) {
|
if (uid != NULL) {
|
||||||
pStmt->mtb.currentUid = *uid;
|
pStmt->mtb.currentUid = *uid;
|
||||||
|
|
||||||
STableDataBlocks** t1 = (STableDataBlocks**)taosHashGet(pCmd->pTableBlockHashList, (const char*)&pStmt->mtb.currentUid, sizeof(pStmt->mtb.currentUid));
|
STableDataBlocks** t1 = (STableDataBlocks**)taosHashGet(pStmt->mtb.pTableBlockHashList, (const char*)&pStmt->mtb.currentUid, sizeof(pStmt->mtb.currentUid));
|
||||||
if (t1 == NULL) {
|
if (t1 == NULL) {
|
||||||
tscError("no table data block in hash list, uid:%" PRId64 , pStmt->mtb.currentUid);
|
tscError("no table data block in hash list, uid:%" PRId64 , pStmt->mtb.currentUid);
|
||||||
return TSDB_CODE_TSC_APP_ERROR;
|
return TSDB_CODE_TSC_APP_ERROR;
|
||||||
|
@ -1191,6 +1199,8 @@ int taos_stmt_set_tbname(TAOS_STMT* stmt, const char* name) {
|
||||||
|
|
||||||
SSubmitBlk* pBlk = (SSubmitBlk*) (*t1)->pData;
|
SSubmitBlk* pBlk = (SSubmitBlk*) (*t1)->pData;
|
||||||
pCmd->batchSize = pBlk->numOfRows;
|
pCmd->batchSize = pBlk->numOfRows;
|
||||||
|
|
||||||
|
taosHashPut(pCmd->pTableBlockHashList, (void *)&pStmt->mtb.currentUid, sizeof(pStmt->mtb.currentUid), (void*)t1, POINTER_BYTES);
|
||||||
|
|
||||||
tscDebug("table:%s is already prepared, uid:%" PRIu64, name, pStmt->mtb.currentUid);
|
tscDebug("table:%s is already prepared, uid:%" PRIu64, name, pStmt->mtb.currentUid);
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
@ -1236,6 +1246,8 @@ int taos_stmt_set_tbname(TAOS_STMT* stmt, const char* name) {
|
||||||
|
|
||||||
pStmt->mtb.currentUid = pTableMeta->id.uid;
|
pStmt->mtb.currentUid = pTableMeta->id.uid;
|
||||||
pStmt->mtb.tbNum++;
|
pStmt->mtb.tbNum++;
|
||||||
|
|
||||||
|
taosHashPut(pStmt->mtb.pTableBlockHashList, (void *)&pStmt->mtb.currentUid, sizeof(pStmt->mtb.currentUid), (void*)&pBlock, POINTER_BYTES);
|
||||||
|
|
||||||
taosHashPut(pStmt->mtb.pTableHash, name, strlen(name), (char*) &pTableMeta->id.uid, sizeof(pTableMeta->id.uid));
|
taosHashPut(pStmt->mtb.pTableHash, name, strlen(name), (char*) &pTableMeta->id.uid, sizeof(pTableMeta->id.uid));
|
||||||
|
|
||||||
|
|
|
@ -1316,8 +1316,10 @@ int32_t tscMergeTableDataBlocks(SSqlObj* pSql, bool freeBlockMap) {
|
||||||
// the length does not include the SSubmitBlk structure
|
// the length does not include the SSubmitBlk structure
|
||||||
pBlocks->dataLen = htonl(finalLen);
|
pBlocks->dataLen = htonl(finalLen);
|
||||||
dataBuf->numOfTables += 1;
|
dataBuf->numOfTables += 1;
|
||||||
|
|
||||||
|
pBlocks->numOfRows = 0;
|
||||||
}else {
|
}else {
|
||||||
tscWarn("table %s data block is empty", pOneTableBlock->tableName.tname);
|
tscDebug("table %s data block is empty", pOneTableBlock->tableName.tname);
|
||||||
}
|
}
|
||||||
|
|
||||||
p = taosHashIterate(pCmd->pTableBlockHashList, p);
|
p = taosHashIterate(pCmd->pTableBlockHashList, p);
|
||||||
|
|
Loading…
Reference in New Issue