pingcap/tidb

Support partition spilling for HashAgg

Open

#26.915 geöffnet am 5. Aug. 2021

Auf GitHub ansehen
 (4 Kommentare) (0 Reaktionen) (1 zugewiesene Person)Go (6.186 Forks)batch import
help wantedsig/executiontype/enhancement

Repository-Metriken

Stars
 (40.090 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 14T 4h) (346 gemergte PRs in 30 T)

Beschreibung

Enhancement

Now we support spiling unparallel hashagg by a naive approach: when memory usage is higher than quota, spilling all unprocessed data reading from child executor.

There is a reasonable optimization point: Hash partition the data while spilling data

There are many advantages following:

  • Correctness. The way can keep all data that have the same key will be spilled in the same partition, and processed in the same time soon.
  • Less memory usage. Obviously, processing less data will use less memory.
  • Reduce IO. Now the spilling algorithm maybe re-spilling some data that has been spilled last round when memory usage is higher than quota again. Spilling partition data is always better than spilling full data.

Reference

Contributor Guide