Merge pull request #29645 from taosdata/enh/TS-5945-main

enh: accelerate tsdb snapshot when data are all in stt file
This commit is contained in:
Hongze Cheng 2025-01-23 18:10:19 +08:00 committed by GitHub
commit a653c00f73
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 12 additions and 2 deletions

View File

@ -559,6 +559,7 @@ struct STsdbSnapWriter {
SIterMerger* tombIterMerger;
// writer
bool toSttOnly;
SFSetWriter* fsetWriter;
} ctx[1];
};
@ -622,6 +623,7 @@ static int32_t tsdbSnapWriteFileSetOpenReader(STsdbSnapWriter* writer) {
int32_t code = 0;
int32_t lino = 0;
writer->ctx->toSttOnly = false;
if (writer->ctx->fset) {
#if 0
// open data reader
@ -656,6 +658,14 @@ static int32_t tsdbSnapWriteFileSetOpenReader(STsdbSnapWriter* writer) {
// open stt reader array
SSttLvl* lvl;
TARRAY2_FOREACH(writer->ctx->fset->lvlArr, lvl) {
if (lvl->level != 0) {
if (TARRAY2_SIZE(lvl->fobjArr) > 0) {
writer->ctx->toSttOnly = true;
}
continue; // Only merge level 0
}
STFileObj* fobj;
TARRAY2_FOREACH(lvl->fobjArr, fobj) {
SSttFileReader* reader;
@ -782,7 +792,7 @@ static int32_t tsdbSnapWriteFileSetOpenWriter(STsdbSnapWriter* writer) {
SFSetWriterConfig config = {
.tsdb = writer->tsdb,
.toSttOnly = false,
.toSttOnly = writer->ctx->toSttOnly,
.compactVersion = writer->compactVersion,
.minRow = writer->minRow,
.maxRow = writer->maxRow,
@ -791,7 +801,7 @@ static int32_t tsdbSnapWriteFileSetOpenWriter(STsdbSnapWriter* writer) {
.fid = writer->ctx->fid,
.cid = writer->commitID,
.did = writer->ctx->did,
.level = 0,
.level = writer->ctx->toSttOnly ? 1 : 0,
};
// merge stt files to either data or a new stt file
if (writer->ctx->fset) {