Size: a a a

ClickHouse не тормозит

2020 September 11

D

Dj in ClickHouse не тормозит
Artem
Ребятушки, почему разница во времени запроса так велика?

SELECT count()
FROM
(
   SELECT symbol
   FROM trades
   PREWHERE type = 'SPOT'
   GROUP BY symbol
)

┌─count()─┐
│     764 │
└─────────┘

1 rows in set. Elapsed: 27.835 sec. Processed 3.29 billion rows, 7.63 GB (117.97 million rows/s., 273.90 MB/s.)


против


SELECT uniq(symbol)
FROM trades
PREWHERE type = 'SPOT'

┌─uniq(symbol)─┐
│          764 │
└──────────────┘

1 rows in set. Elapsed: 342.113 sec. Processed 3.29 billion rows, 7.63 GB (9.60 million rows/s., 22.30 MB/s.)
я сначала подумал, что дело в ПК (дистинкт не оптимизирован, групбай оптимизирован), но строк вроде одинаково... надо наверно трейсы сравнить
источник

DT

Dmitry Titov in ClickHouse не тормозит
Artem
Ребятушки, почему разница во времени запроса так велика?

SELECT count()
FROM
(
   SELECT symbol
   FROM trades
   PREWHERE type = 'SPOT'
   GROUP BY symbol
)

┌─count()─┐
│     764 │
└─────────┘

1 rows in set. Elapsed: 27.835 sec. Processed 3.29 billion rows, 7.63 GB (117.97 million rows/s., 273.90 MB/s.)


против


SELECT uniq(symbol)
FROM trades
PREWHERE type = 'SPOT'

┌─uniq(symbol)─┐
│          764 │
└──────────────┘

1 rows in set. Elapsed: 342.113 sec. Processed 3.29 billion rows, 7.63 GB (9.60 million rows/s., 22.30 MB/s.)
потому, что uniq по дефолту использует вероятностную функцию
Для точного результата есть uniqExact()
еще можешь попробовать count(DISTINCT symbol), но он преобразуется в uniqExact
источник

D

Dj in ClickHouse не тормозит
Dmitry Titov
потому, что uniq по дефолту использует вероятностную функцию
Для точного результата есть uniqExact()
еще можешь попробовать count(DISTINCT symbol), но он преобразуется в uniqExact
так должна быть быстрее?
источник

D

Dmitry Koreckiy in ClickHouse не тормозит
Dmitry Titov
потому, что uniq по дефолту использует вероятностную функцию
Для точного результата есть uniqExact()
еще можешь попробовать count(DISTINCT symbol), но он преобразуется в uniqExact
Там же по дефолту uniqExact вроде стоит
источник

DT

Dmitry Titov in ClickHouse не тормозит
Dj
так должна быть быстрее?
Да, я не тем местом смотрел,

Впрочем я бы тем более попробовал в таком случае uniqExact()
источник

DT

Dmitry Titov in ClickHouse не тормозит
Dmitry Koreckiy
Там же по дефолту uniqExact вроде стоит
источник
2020 September 12

DC

Denny Crane [not a Y... in ClickHouse не тормозит
symbol lowcardinality у него
источник

DC

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

A

Artem in ClickHouse не тормозит
uniqExact() работает так же медленно
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Artem
uniqExact() работает так же медленно
а если optimize_aggregation_in_order=1 и первый запрос
а если optimize_aggregation_in_order=0 и первый запрос
источник

A

Artem in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
а если optimize_aggregation_in_order=1 и первый запрос
а если optimize_aggregation_in_order=0 и первый запрос
29.093 sec и 76.725 sec. соответственно. Второй раз вообще 22.456 sec. и 142.919 sec.
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Artem
29.093 sec и 76.725 sec. соответственно. Второй раз вообще 22.456 sec. и 142.919 sec.
чего-то я не понял, optimize_aggregation_in_order=0 по дефолту
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
хотя из-за prewhere наверное тут optimize_aggregation_in_order=1 мешает
источник

A

Artem in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
чего-то я не понял, optimize_aggregation_in_order=0 по дефолту
теперь 23.867 sec. и 22.833 sec. Видимо, в моих экстремальных условиях, когда идут инсерты, вообще мерять нельзя
источник

A

Artem in ClickHouse не тормозит
или оно уже все в кеше и так быстро
источник

DC

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

A

Artem in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
ну и на нормальном железе все эти запросы будут выполняться за 0.05 сек.
даже без SSD?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Artem
даже без SSD?
нормальном в смысле NVME + 128GB озу
источник

AT

Al T in ClickHouse не тормозит
Egor Baklach
она существует только проверки на дубли
Можно добавить блумфильтры, они в том же редисе есть, чтоб mysql не мучить на каждый чих
источник

DT

Dmitry Titov in ClickHouse не тормозит
Egor Baklach
Доброго. Только знакомлюсь с КХ. Необходима реализация хранения уникальных значений. Сейчас есть табличка MySql на 177 миллионов значений, id: BIGINT и value: VARCHAR(255), ее пополняю новыми и через ON DUPLICATE KEY проверяю по ключу индекса на существование, в случае совпадения пропускаю - поэтому из одного запроса на 5000 записей в табличку попадают только 3555 к примеру. MySql действительно сейчас все тяжелей и дольше начинает с ней работать. Решит ли эту задачу КХ? Как можно реализовать ее пополнение проверяя наличие совпадений в табличке?
А что подразумевается под больно?
Вполне вижу как подобное можно решить в постгре с партицированием таблицы, и десяток тысяч вставок в секунду вполне будут.
источник