Size: a a a

ClickHouse не тормозит

2019 December 06

AG

Artemeey Gavryushin in ClickHouse не тормозит
Добрый день!

Заранее извиняюсь, что задаю заезжанный вопрос, мало ли что-то имзенилось в новых версиях в JOIN

>SELECT id, name FROM ids
>JOIN (SELECT id, name FROM ids_names) USING id

-- ids - миллоин строк
-- ids_names - 100 строк
-- результат 100 строк, прочитано миллон строк (fullscan)

Как переписать запрос, чтобы не было fullscan без использования дополнительного подзапроса?
источник

Р

Рустам in ClickHouse не тормозит
Доброго дня! Подскажите пожалуйста есть ли какие то синтаксические особенности когда используешь nested поле внутри nested поля?
источник

N

Nikolay in ClickHouse не тормозит
Как может быть такое , что Optimize DEDUPLICATE не удалил дубликаты из таблицы,а FINAL удалил ?
источник

UL

Umberto Lopes in ClickHouse не тормозит
Для чего предназначена папка /var/lib/clickhouse/cores? У меня на тестовом сервере в этой папке штук 20 файлов с названиями вида core.nnnnn. Есть по 2гб, есть один 6гб
источник

AZ

Artem Zuikov in ClickHouse не тормозит
Artemeey Gavryushin
Добрый день!

Заранее извиняюсь, что задаю заезжанный вопрос, мало ли что-то имзенилось в новых версиях в JOIN

>SELECT id, name FROM ids
>JOIN (SELECT id, name FROM ids_names) USING id

-- ids - миллоин строк
-- ids_names - 100 строк
-- результат 100 строк, прочитано миллон строк (fullscan)

Как переписать запрос, чтобы не было fullscan без использования дополнительного подзапроса?
Попробуйте засунуть сабселект в IN, поместить id в ids в индекс.
источник

N

Nikolay in ClickHouse не тормозит
Artemeey Gavryushin
Добрый день!

Заранее извиняюсь, что задаю заезжанный вопрос, мало ли что-то имзенилось в новых версиях в JOIN

>SELECT id, name FROM ids
>JOIN (SELECT id, name FROM ids_names) USING id

-- ids - миллоин строк
-- ids_names - 100 строк
-- результат 100 строк, прочитано миллон строк (fullscan)

Как переписать запрос, чтобы не было fullscan без использования дополнительного подзапроса?
Не совсем понятен вопрос. А как вы хотите без FS? Вы джойните 2 таблицы.
источник

AG

Artemeey Gavryushin in ClickHouse не тормозит
Nikolay
Не совсем понятен вопрос. А как вы хотите без FS? Вы джойните 2 таблицы.
FS не должено быть в таких ситуациях. Сейчас реализуем через пдзапросы, временные таблицы или временные файлы.
Так же USING может испоьзоваться в оптимизаторе запросов.
источник

N

Nikolay in ClickHouse не тормозит
FS какой таблицы ?  КХ ведь делает hashjoin. Какую из двух таблиц вы не будите читать полностью ?
источник

AG

Artemeey Gavryushin in ClickHouse не тормозит
Artem Zuikov
Попробуйте засунуть сабселект в IN, поместить id в ids в индекс.
В IN можно перенести. Но JOIN тоже нужуен. Дополинтельный подзапрос делать не хотим.
источник

N

Nikolay in ClickHouse не тормозит
В in у вас не будет чего ? FS таблицы ids_names?
источник

AG

Artemeey Gavryushin in ClickHouse не тормозит
Nikolay
FS какой таблицы ?  КХ ведь делает hashjoin. Какую из двух таблиц вы не будите читать полностью ?
FS надо исключать везде где это возможно. Обе таблицы нельзя читать полностью, у них обоих есть индекс.
источник

AP

Alexey Panfilov in ClickHouse не тормозит
Привет! А подскажите пожалуйста, как перетащить из одной базы в другую большую табличку без зукипера?
источник

N

Nikolay in ClickHouse не тормозит
Они у вас в любом случае читаются полность. У вас join без фильтров .
источник

N

Nikolay in ClickHouse не тормозит
Как бы вы не делали. С In или с join.
источник

AG

Artemeey Gavryushin in ClickHouse не тормозит
Nikolay
Они у вас в любом случае читаются полность. У вас join без фильтров .
В примере нет WHERE. Если добавить WHERE IN - не будет FS.
Артем Зуйков уже озвучил верный полход. Но он все еще имеет минусы, так как подзапросы могут отличаться и каждый подзапрос будет делать лишнюю выборку. Это почти всегда лучше чем FS, но я наделся, что внутри разрабатывают оптимизацию USING с прокидыванием USING dj вне в WHERE.
Либо что-то похожее. Инетерсно знать мылси разработчиков на этот счет.
источник

AZ

Artem Zuikov in ClickHouse не тормозит
Artemeey Gavryushin
В IN можно перенести. Но JOIN тоже нужуен. Дополинтельный подзапрос делать не хотим.
Два запроса будут на мелкую таблицу. Если не подходит - можно из мелкой таблицы сделать словарь и доставать из нее name по id. Вариация на тему лукап джойна. Тема сделать один подзапрос для in и join интересная, но это надо делать (в in подмножество колонок из join)
источник

N

Nikolay in ClickHouse не тормозит
Не будет Fs, а что будет ? Как вы избежите полного чтения таблицы ids_names?
источник

AG

Artemeey Gavryushin in ClickHouse не тормозит
Artem Zuikov
Два запроса будут на мелкую таблицу. Если не подходит - можно из мелкой таблицы сделать словарь и доставать из нее name по id. Вариация на тему лукап джойна. Тема сделать один подзапрос для in и join интересная, но это надо делать (в in подмножество колонок из join)
Да, я привел простой пример, на практике JOIN таблица может быть сложной и вычислемой.
источник

AZ

Artem Zuikov in ClickHouse не тормозит
Можете сформулировать задачу на гитхабе, чтоб не потерялось?
источник

AG

Artemeey Gavryushin in ClickHouse не тормозит
Nikolay
Не будет Fs, а что будет ? Как вы избежите полного чтения таблицы ids_names?
Простите, речь только про большую таблицу. Как избежать FS при USING. То что внутри JOIN не инетресует в рамках этого вопроса.
источник