diff options
| author | lucius <[email protected]> | 2025-12-17 12:43:35 +0300 |
|---|---|---|
| committer | lucius <[email protected]> | 2025-12-17 13:23:21 +0300 |
| commit | 90d6f2e125ee94341270056a3888f7c284bd5fd4 (patch) | |
| tree | 4e1dfb9ca91f54203dcf426c41075dec23eb6fa2 /library/cpp/threading/equeue/equeue.cpp | |
| parent | c75447d89eeb8c8114402c4b21e356916a9d248d (diff) | |
cbo partial
`pragma yt.CostBasedOptimizerPartial="N";` позволяет задать сколько готовых входов в поддереве YtEquiJoin необходимо для начала работы cbo (читай сколько входов ждем).
Подробно как будет работать YtEquiJoin при задании `yt.CostBasedOptimizerPartial="N"` (и включенном cbo):
- Если N=0 (по-умолчанию) либо количество входов джоина оказалось \<=N, то cbo будет работать как раньше: ждем всех входов;
- Если N=1 или N=2, то cbo будет работать только на поддеревьях с готовыми входами, это неухудшающий/безбарьерный режим (но неполный, очевидно);
- В остальных случаях разбиваем дерево джоинов на поддеревья максимального размера где все листья готовы:
* Если хотя бы в одном из таких поддеревьев есть N листьев (или больше), то запускаем cbo отдельно для всех поддеревьев с готовыми входами (в том числе где готовых листьев меньше N, это место возможно захотим переделать, но пока решили попробовать так);
* Иначе (во всех готовых поддеревьях набралось меньше N листьев) продолжаем ждать готовности новых входов.
commit_hash:56d2037c65d9e0d3ca74e32838746fa58cfa6fb8
Diffstat (limited to 'library/cpp/threading/equeue/equeue.cpp')
0 files changed, 0 insertions, 0 deletions
