
Gubaydullin
05.06.2018
19:29:57
Добрый вечер.
SELECT
sum(preland_uniques) AS preland_uniques,
sum(transit_uniques) AS transit_uniques,
(1 - sum(transit_uniques) / sum(preland_uniques)) AS bounce_rate
DB::Exception: Aggregate function sum(transit_uniques) is found inside another aggregate function in query
Не могли бы вы подсказать, каким образом можно разрешить данную ситуацию?

Dmitrii
05.06.2018
19:31:17
SELECT
sum(preland_uniques) AS sum_preland_uniques,
sum(transit_uniques) ASsum_ transit_uniques,
(1 - sum_transit_uniques / sum_preland_uniques) AS bounce_rate

Gubaydullin
05.06.2018
19:31:42
обычный sql так не позволяет
а clickhouse позволяет?)

Google

Dmitrii
05.06.2018
19:32:01
или пробуй подзапрос

Alexey
05.06.2018
19:32:50

Gubaydullin
05.06.2018
19:36:04
благодарю)

Vitaly
05.06.2018
19:43:45

Andrew
05.06.2018
20:57:08
привет. Подскажите, баг ли это
:) SELECT 0/0 between 0 and 1;
1

Alexey
05.06.2018
21:01:40

Andrew
05.06.2018
21:02:26
а SELECT nan > 0 уже 0 ?

Alexey
05.06.2018
21:02:37
SELECT nan >= 0.0
- тоже Ок.
Это баг в коде. @vludv
Написано
template <typename A, typename B>
inline bool_if_not_safe_conversion<A, B> greaterOrEqualsOp(A a, B b)
{
return !greaterOp(b, a);
}
что не верно как раз для случая nan-ов.

Kirill
06.06.2018
05:09:11
А какая у вас БД для вставки данных (транзакционная)?
КХ у нас) Изначально все события пишутся в Kafka, в этом месте есть некоторая гарантия сохранности данных, после чего воркеры перекидывают события из Kafka в ClickHouse батчами примерно по 40-50 к если все нормально, если событий накопилось много размер батча увеличивается

Ivan
06.06.2018
06:24:39
Привет! Подскажите, пожал. какая настройка отвечает за удаление устаревших данных в кх? Если я ее изменю, у меня старые данные попавшие под критерий очистятся или только все новозаписанные будут учитываться?

Wolf
06.06.2018
06:26:27
А что такое устаревшие данные?

Ivan
06.06.2018
06:27:15
Допустим, для экономии места я готов удалять все, что старше N месяцев

Google

Wolf
06.06.2018
06:27:55
ну напишите скрипт котоырй удаляет старые партиции

Jen
06.06.2018
06:28:00
Автоудаления в кх нет же, партиции можно дропать

Wolf
06.06.2018
06:28:03
там буквально пару тройку строчек кода

Ivan
06.06.2018
06:28:54

Jen
06.06.2018
06:30:29
В кроне
Кх удаляет данные с задержкой, учитывайте это

Wolf
06.06.2018
06:31:24

Ivan
06.06.2018
06:33:54

Wolf
06.06.2018
06:34:40
ну как задали при создании таблицы

Jen
06.06.2018
06:43:39

Ivan
06.06.2018
06:44:53

Jen
06.06.2018
06:52:11
Можно каким-то образом оценить, сколько сервер потянет записей на вставку в секунду?
Ситуация такая:
Есть много событий, в день около 1ккк
События вставляются батчами по 20к с 9 машин в один сервер
hdd_util% на сервере с КХ достигает 80-100% при одной вставке
Увеличить размер батча не могу - падает скорость вставки и данные перестают успевать переливаться в кх с машин, что приводит к их переполнению и потере данных
Как рассчитать сколько инстансов кх мне необходимо, если я хочу при такой вставке выполнять простую квери по суммированию двух столбцов из 15 меньше, чем за 5с?

Гаврилов
06.06.2018
06:54:41
nvme ssd ?)
3гб/с последовательной записи

Jen
06.06.2018
06:55:53

Гаврилов
06.06.2018
06:56:17
ну тогда бери 9 машин
раз 1 вставка 1 машину грузит на 100%

Jen
06.06.2018
06:57:05
Я помню, что горизонтальное маштабирование - линейное, но 9 тачек не дадут желаемую скорость выполнения квери)

Гаврилов
06.06.2018
06:57:18
бери 81)

Google

Jen
06.06.2018
06:57:40
Часом нет лекарства от всех бед в виде формулы для расчета железа под данные??)

Гаврилов
06.06.2018
06:58:06
просто sas это уже устарело
сейчас впски с ссд не дорого стоят

Jen
06.06.2018
06:59:36
Дело в том, что не я серв приобретал и вообще не под эту цель
Мы изменили формат событий для онлайн аналитики и перешли с Оракла на КХ, но сервер был к этому не готов :)

Гаврилов
06.06.2018
07:00:02
а оракл справлялся с такой нагрузкой?

Wolf
06.06.2018
07:00:59
что то вы явно не так делаете, с учетом того что кх на порядок быстрее оракла и если оракл вариал эти данные то покопайтесь в настройках , погоняйте разные тесты

Jen
06.06.2018
07:01:20
С такой - нет, раньше был агрегированный формат событий, их было в 20 раз меньше
Оракл на таких данных просто бессмысленно пользовать

Гаврилов
06.06.2018
07:02:51
может кафку поставить
и в нее пихать все
а кх будет из кафки большие объемы разом брать

Wolf
06.06.2018
07:03:31
а сколько у вас втавок в секунду по 20к ?
в целом мне кажется тут надо смотреть настройки и опции создания таблицы, 1ккк в день не так много , а уж сервера под оракл более чем мощные

Леонид
06.06.2018
07:23:33
День добрый.
При LEFT JOIN в правой таблице значение поля може быть 0, а может не быть записи.
Подскажите, как-то можно различить, когда выводится значение "по умолчанию", а когда - реальное?

Tima
06.06.2018
07:38:48

Леонид
06.06.2018
07:39:41

Tima
06.06.2018
07:39:58

Google

Леонид
06.06.2018
07:45:37

Tima
06.06.2018
07:45:53
Но нужно быть аккуратным, null-столбцы до сих пор работают с сюрпризами (я не использую их)

Леонид
06.06.2018
07:50:01

Tima
06.06.2018
07:51:35

Jen
06.06.2018
08:12:29

Kirill
06.06.2018
08:22:14
2xE5-2690v4, 128GB RAM, RAID6 из 20х1.2TB SAS 10k rpm для данных (КХ тут), RAID1 из SAS 2x300GB для ОС, RAID Controller HP
батч в 20к событий, 21 столбец , размером около 5МБ, батчей в секунду прилетает около 50 в КХ
Если, как вы пишите, в диск уперлись то варианта у вас 2-а: увеличение поизводительности диска на сервере, больше серверов в которые можно писать.
В любом случае нужно уменьшать количество батчей в секунду. КХ при большом (по умолчанию 150) количестве кусков в партиции сначала будет писать медленнее, а при 300 вообще откажеться что-то делать.


Jen
06.06.2018
08:23:49
Если, как вы пишите, в диск уперлись то варианта у вас 2-а: увеличение поизводительности диска на сервере, больше серверов в которые можно писать.
В любом случае нужно уменьшать количество батчей в секунду. КХ при большом (по умолчанию 150) количестве кусков в партиции сначала будет писать медленнее, а при 300 вообще откажеться что-то делать.
думаю, что это единственный вариант, вывод iostat за 20 секунд при вставке без каких либо запросов:
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0,00 3,25 1,05 105,35 0,11 3,08 61,35 0,63 3,35 183,81 1,55 1,81 19,29
sdb 45,10 204,05 61,65 1602,75 80,62 204,48 350,82 60,32 34,50 68,82 33,18 0,49 82,23
sdc 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
sdb - это RAID6 для данных КХ
82% util

Gennady
06.06.2018
08:25:20
Ещё перейти на RAID10, будет быстрее сильно запись для случайной записи

Jen
06.06.2018
08:26:01

Gennady
06.06.2018
08:27:37
RAID Controller HP - он с батарейкой и кешированием Write Back ? Это тоже сильно ускорит

Jen
06.06.2018
08:28:43
Да, с батарейкой и write-back, по умолчанию на хранилищах так настраиваем

Kirill
06.06.2018
08:30:19

Jen
06.06.2018
08:31:33
Читал в первую очередь, но у вас, кажется, софтовый рейд описан

Wolf
06.06.2018
08:32:21
Мне кажется прроще кафку воткнуть
50 ставок может быть многовато
Ну или батч увеличить он же у вас есть мегабайт не очень понятно что у вас может переполняться там

Jen
06.06.2018
08:35:00


Aliaksandr
06.06.2018
08:35:46
2xE5-2690v4, 128GB RAM, RAID6 из 20х1.2TB SAS 10k rpm для данных (КХ тут), RAID1 из SAS 2x300GB для ОС, RAID Controller HP
батч в 20к событий, 21 столбец , размером около 5МБ, батчей в секунду прилетает около 50 в КХ
20k событий на батч умножить на 50 батчей в секунду - выходит миллион событий а секунду. Это больше 80 миллиардов в сутки, а не миллиард, как говорилось раньше. У нас кликхаус выдерживал 300к событий в секунду на один сервак с persistent hdd в google cloud'е. Дальше начинались тормоза. Мы писали данные в Buffer-таблицу, которая сбрасывала данные в MergeTree раз в 10 секунд. У вас дисковая подсистема вроде мощнее, так что может и выдержит миллион записей в секунду, если правильно настроить Buffer-таблицу перед MergeTree таблицой

Jen
06.06.2018
08:37:01

Google

Jen
06.06.2018
08:37:11
Не оценивали, какой прирост буфер дает?

Tima
06.06.2018
08:39:19
Не оценивали, какой прирост буфер дает?
У buffer есть куча ограничений, я бы попробовал воткнуть kafka (или любой другой брокер сообщений) и писать в 50 потоков в ней. А уж она сама вставит. 50 вставок в секунду - очень плохо

Jen
06.06.2018
08:40:18
И такой вопрос, есть c++ клиент от Я? Или только народное творчество?

Aliaksandr
06.06.2018
08:40:43
Зависит от многих параметров. Буфер нужен, чтобы уменьшить частоту вставок в MergeTree таблицу до менее однойн в секунду, если не получается другими способами. У нас данные прилетали от большого количества воркеров, поэтому буфер нам лучше всего подошел. Каждый воркер накапливал пачку событий перед отправкой

Tima
06.06.2018
08:40:50

Kirill
06.06.2018
08:43:03
Не оценивали, какой прирост буфер дает?
Он нужен только если вы сами не можете уменьшить количество пишущих в КХ, если коротко то да, помогает. Если можете сами то лучше делать самим, будет шустрее. У нас в пике размер батча может достигать 200MB, при этом у нас диски 7,2к в софтварном рейде 10

Александр
06.06.2018
08:43:23

Aliaksandr
06.06.2018
08:43:26
Мы не сталкивались с ограничениями буфер таблиц, поэтому они нам идеально подошли

Vladimir
06.06.2018
08:43:44
ребят а кто какой драйвер под NODE юзает?

Jen
06.06.2018
08:44:25
Всем спасибо за пищу для размышлений, настало время крепко задуматься :)

Aliaksandr
06.06.2018
08:44:41

Vladimir
06.06.2018
08:44:53
второй вопрос вдогонку - КХ решил проблему с JOIN с подзапросами?

Kirill
06.06.2018
08:45:48

Vladimir
06.06.2018
08:48:29

Tima
06.06.2018
08:50:03

Vladimir
06.06.2018
08:51:52