-
Notifications
You must be signed in to change notification settings - Fork 734
Introduce a flexible framework for topology-based robust join order optimizer benchmarks #27065
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
🟢 |
| auto relsCount = joinTree->Labels().size(); | ||
|
|
||
| if (EnableShuffleElimination && relsCount <= 14) { | ||
| if (EnableShuffleElimination && (relsCount <= 14 || OptimizerSettings_.ForceShuffleElimination)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lets move this constant to dq settings, similar to maxDPhypDPTableSize
fb1df4f to
5ee5da7
Compare
|
⚪ |
|
⚪ |
|
⚪ |
|
⚪ |
|
⚪ |
|
⚪ |
|
⚪ |
|
⚪ |
|
⚪ |
|
⚪ |
|
⚪
🟢
*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation |
|
⚪ ⚪ Ya make output | Test bloat | Test bloat
🟢
*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation |
|
⚪
🟢
*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation |
|
⚪ ⚪ Ya make output | Test bloat | Test bloat
🟢
*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation |
| struct TExprContext; | ||
|
|
||
| class IOptimizerFactory: private TNonCopyable { | ||
| struct TOptimizerSettings { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Предлагаю добавить Cbo в имя класса, что бы не путать с обычными оптимизаторами
| IOptimizerNew* MakeNativeOptimizerNew( | ||
| IProviderContext& ctx, | ||
| const ui32 maxDPHypDPTableSize, | ||
| const TOptimizerSettings &settings, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
style: & к типу
| IOptimizerNew* MakeNativeOptimizerNew( | ||
| IProviderContext& pctx, | ||
| const ui32 maxDPhypDPTableSize, | ||
| const TOptimizerSettings &settings, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
style: & к типу
| {}, TIssuesIds::CBO_ENUM_LIMIT_REACHED, | ||
| "Cost Based Optimizer could not be applied to this query: " | ||
| "Enumeration is too large, use PRAGMA MaxDPHypDPTableSize='4294967295' to disable the limitation" | ||
| "Enumeration is too large, use PRAGMA ydb.MaxDPHypDPTableSize='4294967295' to disable the limitation" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Почему ydb, а не dq?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Это общая библиотека. Ссылок на конкретные системы тут быть не должно
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Мы уже в доку прописали это, у нас эти прагмы ставятся через неймспейс ydb
Давайте пока так оставим и подумаем как это можно сделать для всех правильным
Например - провайдер может сам сообщение формировать как хочет для ворнинга
| TOptimizerNativeNew( | ||
| IProviderContext& ctx, | ||
| ui32 maxDPhypDPTableSize, | ||
| const TOptimizerSettings &optimizerSettings, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
style: & к типу
|
⚪ ⚪ Ya make output | Test bloat | Test bloat
🟢
*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation |
5060e38 to
83bb78b
Compare
|
⚪ ⚪ Ya make output | Test bloat | Test bloat
🟢
*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation |
|
⚪
🟢
*please be aware that the difference is based on comparing your commit and the last completed build from the post-commit, check comparation |
I merged "ForceShuffleElimination" parameter. It's been decided that it's better to use a more flexible "cutoff" parameter which enables ShuffleElimination optimization based on number of joins, not just with on/off switch. This PR updates this. After it's merged files in yql/essential will match corresponding files in the PR to YDB at github <ydb-platform/ydb#27065>. Previously merged PR concerning the same github PR: <https://nda.ya.ru/t/UxEq690V7MqMWj> commit_hash:26ed62335263ad4c8e536a1079088fdcdbf09676
I merged "ForceShuffleElimination" parameter. It's been decided that it's better to use a more flexible "cutoff" parameter which enables ShuffleElimination optimization based on number of joins, not just with on/off switch. This PR updates this. After it's merged files in yql/essential will match corresponding files in the PR to YDB at github <ydb-platform#27065>. Previously merged PR concerning the same github PR: <https://nda.ya.ru/t/UxEq690V7MqMWj> commit_hash:26ed62335263ad4c8e536a1079088fdcdbf09676
…ptimizer benchmarks (ydb-platform#27065)
Description for reviewers
In this PR a few things are added:
Implemented for issue #25795
Example usage (for more info read options in kqp_join_topology_ut.cpp):