Size: a a a

ClickHouse не тормозит

2020 June 12

DT

Dmitry Titov in ClickHouse не тормозит
Но вообще вроде все пользуются вторым вариантом, единственный неприятный момент есть, что в некоторых случаях при агрегации вставки в summary таблицы данные могут потерять уникальность до такой степени, что их дедуп не пропустит
источник

D

Dj in ClickHouse не тормозит
Т.е. делаем две ReplicatedMT
И МВ из первой во вторую?
источник

DT

Dmitry Titov in ClickHouse не тормозит
Ну и на каждой реплике нужно создать такую MV
источник

D

Dj in ClickHouse не тормозит
МВ на каждом ноде не "кабум"нет ничего?
источник

D

Dj in ClickHouse не тормозит
Т.е. дедупликая отработает и все
источник

DT

Dmitry Titov in ClickHouse не тормозит
Dj
МВ на каждом ноде не "кабум"нет ничего?
MV триггерится только на вставку, протокол репликации ей побоку.
Так что нужно создать MV на каждом хосте, куда потенциально может прийти вставка
источник

D

Dj in ClickHouse не тормозит
Dmitry Titov
MV триггерится только на вставку, протокол репликации ей побоку.
Так что нужно создать MV на каждом хосте, куда потенциально может прийти вставка
Ок, спасибо. Теперь яснее. Если вставлять в одну реплику проблем не будет.
источник

DT

Dmitry Titov in ClickHouse не тормозит
Dig Diver
добрый день, подскажите, как можно найти минимальное время наступления события в цепочке.

event_id, time
1  2020-06-11 15:06:00
1  2020-06-11 15:07:00
1  2020-06-11 15:08:00
1  2020-06-11 15:09:00
3  2020-06-11 15:10:00
3  2020-06-11 15:11:00
3  2020-06-11 15:12:00
3  2020-06-11 15:13:00
3  2020-06-11 15:14:00
3  2020-06-11 15:15:00
1  2020-06-11 15:16:00
1  2020-06-11 15:16:00

нужно вывести:
1  2020-06-11 15:06:00
3  2020-06-11 15:10:00
1  2020-06-11 15:16:00
такое можно попробовать через массивы, но пихать миллионы строк в массивы дело гиблое
либо через neighbor функцию возможно можно сделать, но она сбрасывается каждый блок данных, что тоже не хорошо
источник

DD

Dig Diver in ClickHouse не тормозит
Dmitry Titov
такое можно попробовать через массивы, но пихать миллионы строк в массивы дело гиблое
либо через neighbor функцию возможно можно сделать, но она сбрасывается каждый блок данных, что тоже не хорошо
Получилось реализовать через runningDifferenceStartingWithFirstValue()
источник

DT

Dmitry Titov in ClickHouse не тормозит
Dig Diver
Получилось реализовать через runningDifferenceStartingWithFirstValue()
А каким образом?
эта функция как и neighbor живет в пределах блока, если вас все устраивает то ок
источник

DD

Dig Diver in ClickHouse не тормозит
Dmitry Titov
А каким образом?
эта функция как и neighbor живет в пределах блока, если вас все устраивает то ок
select status, runningDifferenceStartingWithFirstValue(status) as statusChange, eventTime from
(
select status, eventTime from monitor.events where  monitorId = 118 and eventTime >= '2020-06-05 23:12:00'  order by eventTime
)
group by status, statusChange, eventTime having statusChange <> 0  order by eventTime

У меня события по монитору приходят не чаще чам раз в минуту, максимум нужно считать за месяц, получается 60*24*31=44640 событий в месяц для монитора, я так понимаю, что это в пределах блока?
источник

DD

Dig Diver in ClickHouse не тормозит
Вот вывод
1  1  2020-06-11 15:06:00
3  2  2020-06-11 15:10:00
1  -2  2020-06-11 16:00:00
3  2  2020-06-11 16:25:00
1  -2  2020-06-11 16:35:00
источник

IK

Illia Khrebet in ClickHouse не тормозит
Привет) При использовании WITH FILL будут заливаться пустые строки лишь в том случае, когда есть результаты по какой-либо из дат в диапазоне, в противном случае запрос ничего не вернет. Как заставить его в любом случае возвращать пустой, но заполненный диапазон?

SELECT date,
      sum(parent_profit) as sum
FROM referral_income
WHERE date >= toDate('{start_date}') AND
     date <= toDate('{end_date}')
GROUP by date
ORDER BY date
WITH FILL FROM toDate('{start_date}') TO toDate('{end_date}')
источник

DT

Dmitry Titov in ClickHouse не тормозит
Dig Diver
select status, runningDifferenceStartingWithFirstValue(status) as statusChange, eventTime from
(
select status, eventTime from monitor.events where  monitorId = 118 and eventTime >= '2020-06-05 23:12:00'  order by eventTime
)
group by status, statusChange, eventTime having statusChange <> 0  order by eventTime

У меня события по монитору приходят не чаще чам раз в минуту, максимум нужно считать за месяц, получается 60*24*31=44640 событий в месяц для монитора, я так понимаю, что это в пределах блока?
хм, вообще возможно это можно все заменить на WHERE statusChange <> 0
64 тысячи это максимальный размер блока. строго говоря никто не запрещает ему быть меньше, но тк ты дергаешь данные из подзапроса а там сортировка оно должно работать нормально емнип.
источник

A

Alex in ClickHouse не тормозит
Всем привет, вот такая штука
Poco::Exception. Code: 1000, e.code() = 2002, e.displayText() = mysqlxx::ConnectionFailed: Can't connect to MySQL server on '127.0.0.1' (115) ((nullptr):0) (version 20.4.5.36 (official build))
+- в чем может быть проблема, при создании таблицы хост указывался как 127.0.0.1
источник

S

Slach in ClickHouse не тормозит
Alex
Всем привет, вот такая штука
Poco::Exception. Code: 1000, e.code() = 2002, e.displayText() = mysqlxx::ConnectionFailed: Can't connect to MySQL server on '127.0.0.1' (115) ((nullptr):0) (version 20.4.5.36 (official build))
+- в чем может быть проблема, при создании таблицы хост указывался как 127.0.0.1
тамблица с Engine=MySQL() ?
источник

A

Alex in ClickHouse не тормозит
да
источник

S

Slach in ClickHouse не тормозит
ну проверяйте коннект по реквизитам,
https://clickhouse.tech/docs/en/engines/table-engines/integrations/mysql/#creating-a-table
которые в Engine=MYSQL(...) указывет
поставьте apt-get install -y mysql-client

и mysql -h 127.0.0.1 -u ....
там может быть так, что

демон  MySQL стоит на том же сервере что демон ClickHouse ?
источник

OM

Oleksii Mylotskyi in ClickHouse не тормозит
Ребята а подскажите что я упускаю. Есть вот такие два запроса я думал что результат должен быть идентичен,  но это не так :(

1. SELECT uniqExact(uniqValue) FROM logs;
возвращает 70 500

2. SELECT sum(cnt) FROM (SELECT count(*) as cnt FROM logs GROUP BY uniqValue);
150000 записей.
источник

l

lnuynxa in ClickHouse не тормозит
Oleksii Mylotskyi
Ребята а подскажите что я упускаю. Есть вот такие два запроса я думал что результат должен быть идентичен,  но это не так :(

1. SELECT uniqExact(uniqValue) FROM logs;
возвращает 70 500

2. SELECT sum(cnt) FROM (SELECT count(*) as cnt FROM logs GROUP BY uniqValue);
150000 записей.
в втором запросе ты сначала получаешь число повторений для каждого uniqValue а потом их все суммируешь
источник