diff --git a/pkg/executor/builder.go b/pkg/executor/builder.go index 5312a7b2cd8e9..5b68575587f52 100644 --- a/pkg/executor/builder.go +++ b/pkg/executor/builder.go @@ -2098,13 +2098,16 @@ func (b *executorBuilder) buildMemTable(v *plannercore.PhysicalMemTable) exec.Ex strings.ToLower(infoschema.TableResourceGroups), strings.ToLower(infoschema.TableRunawayWatches), strings.ToLower(infoschema.TableCheckConstraints): + memTracker := memory.NewTracker(v.ID(), -1) + memTracker.AttachTo(b.ctx.GetSessionVars().StmtCtx.MemTracker) return &MemTableReaderExec{ BaseExecutor: exec.NewBaseExecutor(b.ctx, v.Schema(), v.ID()), table: v.Table, retriever: &memtableRetriever{ - table: v.Table, - columns: v.Columns, - extractor: v.Extractor, + table: v.Table, + columns: v.Columns, + extractor: v.Extractor, + memTracker: memTracker, }, } case strings.ToLower(infoschema.TableTiDBTrx), diff --git a/pkg/executor/infoschema_reader.go b/pkg/executor/infoschema_reader.go index bdf583376b6ea..28fceb9d9e2bf 100644 --- a/pkg/executor/infoschema_reader.go +++ b/pkg/executor/infoschema_reader.go @@ -94,6 +94,7 @@ type memtableRetriever struct { retrieved bool initialized bool extractor plannercore.MemTablePredicateExtractor + memTracker *memory.Tracker } // retrieve implements the infoschemaRetriever interface @@ -201,6 +202,9 @@ func (e *memtableRetriever) retrieve(ctx context.Context, sctx sessionctx.Contex return nil, err } e.initialized = true + if e.memTracker != nil { + e.memTracker.Consume(calculateDatumsSize(e.rows)) + } } // Adjust the amount of each return