Size: a a a

ClickHouse не тормозит

2020 September 24

DC

Denny Crane [not a Y... in ClickHouse не тормозит
select distinct number from numbers_mt(10000000000) limit 3
3 rows in set. Elapsed: 0.003 sec
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
select  number from numbers_mt(10000000000) group by number limit 3
источник

N

Nikolay in ClickHouse не тормозит
Dj
ах, так вы про сортировку? ну вам же её никто не гарантирует... и в оракле можно такого добится если постаратся

все базы оптимизируют многоуровневые запросы так или иначе
Ну там мне повторить не удалось. Там он сейчас по умолчанию через хэш мапу делает дистинкт. И как бы получается ожидаемо, что внутренняя никак не влияет . А тут КХ тоже через мапу вроде, го как то просачивается порядок .
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
distinct для новой строки проверяет в мапе был такой результат уже или нет

SELECT DISTINCT number
FROM numbers_mt(1000000)
LIMIT 3

┌─number─┐
│ 458535 │
│ 458536 │
│ 458537 │
└────────┘

3 rows in set. Elapsed: 0.004 sec.
источник

N

Nikolay in ClickHouse не тормозит
Берет первое.
источник

N

Nikolay in ClickHouse не тормозит
Понял. Посмотрел план в оракле. Он выкидывает сортировку.
источник

N

Nikolay in ClickHouse не тормозит
Спасибо все. Стало ясно. И было интересно ).
источник

D

Dj in ClickHouse не тормозит
Nikolay
Ну там мне повторить не удалось. Там он сейчас по умолчанию через хэш мапу делает дистинкт. И как бы получается ожидаемо, что внутренняя никак не влияет . А тут КХ тоже через мапу вроде, го как то просачивается порядок .
вы сами придумали и сами поверили...
пожалуйста

WITH aaa AS (SELECT /*+ MATERIALIZE */ ROWNUM AS RNUM, TABLE_NAME FROM (SELECT TABLE_NAME FROM ALL_ALL_TABLES WHERE OWNER='SYSTEM' AND ROWNUM<20 ORDER BY TABLESPACE_NAME )),
bbb AS (SELECT /*+ MATERIALIZE */ROWNUM AS RNUM, TABLE_NAME FROM (SELECT TABLE_NAME FROM ALL_ALL_TABLES WHERE OWNER='SYSTEM' AND ROWNUM<20  ORDER BY TABLESPACE_NAME DESC))
SELECT RNUM, AAA.TABLE_NAME, BBB.TABLE_NAME FROM AAA JOIN bbb USING (RNUM);
источник

D

Dj in ClickHouse не тормозит
Nikolay
Ну там мне повторить не удалось. Там он сейчас по умолчанию через хэш мапу делает дистинкт. И как бы получается ожидаемо, что внутренняя никак не влияет . А тут КХ тоже через мапу вроде, го как то просачивается порядок .
источник

D

Dj in ClickHouse не тормозит
да и независимо от сортировки, он может дать два разных результата, про хеши - это все хорошо когда непараллельно (хотя гарантии нет даже на неё)
источник

N

Nikolay in ClickHouse не тормозит
Dj
да и независимо от сортировки, он может дать два разных результата, про хеши - это все хорошо когда непараллельно (хотя гарантии нет даже на неё)
но оно тоже обьяснимо про параллель. это во всех базах так будет, если в параллель через мапу. координатор получать будет блоки(строки) возможно каждый раз в разном порядке. какая первая придет - она и будет значением дистинкт.
источник

D

Dj in ClickHouse не тормозит
Nikolay
но оно тоже обьяснимо про параллель. это во всех базах так будет, если в параллель через мапу. координатор получать будет блоки(строки) возможно каждый раз в разном порядке. какая первая придет - она и будет значением дистинкт.
да, но я к тому, что даже без параллели - оракл да и ни одна база не гарантирует порядок если на внешнем уровне нет order by...
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Nikolay
но оно тоже обьяснимо про параллель. это во всех базах так будет, если в параллель через мапу. координатор получать будет блоки(строки) возможно каждый раз в разном порядке. какая первая придет - она и будет значением дистинкт.
половина баз преобразуют distinct в group by и не умеют трюк

SELECT DISTINCT number
FROM numbers_mt(10000000000)
LIMIT 3

┌─number─┐
│ 458535 │
│ 458536 │
│ 458537 │
└────────┘

3 rows in set. Elapsed: 0.004 sec.
источник

N

Nikolay in ClickHouse не тормозит
Dj
да, но я к тому, что даже без параллели - оракл да и ни одна база не гарантирует порядок если на внешнем уровне нет order by...
это конечно согласен. результат не гарантирован.
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
pg

SELECT distinct * FROM generate_series(1,10000) limit 3;;
generate_series
-----------------
            251
           2848
           3565


SELECT distinct * FROM generate_series(1,1000000000) limit 3;
тутутуттут
....
....

ERROR:  temporary file size exceeds temp_file_limit (1025563kB)
источник

N

Nikolay in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
половина баз преобразуют distinct в group by и не умеют трюк

SELECT DISTINCT number
FROM numbers_mt(10000000000)
LIMIT 3

┌─number─┐
│ 458535 │
│ 458536 │
│ 458537 │
└────────┘

3 rows in set. Elapsed: 0.004 sec.
а как КХ видит, что можно лимит можно push down сделать? т.е какие кейсы он понимает
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Nikolay
а как КХ видит, что можно лимит можно push down сделать? т.е какие кейсы он понимает
але вы читаете что я пишу?

distinct для новой строки ТУПО проверяет в мапе был такой результат уже или нет
источник

N

Nikolay in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
але вы читаете что я пишу?

distinct для новой строки ТУПО проверяет в мапе был такой результат уже или нет
т.е он просто останавливается, когда все готово. он не пробрасывает
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Nikolay
т.е он просто останавливается, когда все готово. он не пробрасывает
да
источник

N

Nikolay in ClickHouse не тормозит
это похоже на poll модель.
источник