@clickhouse_ru

Страница 223 из 723
Igor
03.08.2017
20:30:29
Схема - как я описывал в статье на хабре

Vladimir
03.08.2017
20:31:19
15krps мало.

хотя может у вас строки большие. вот у меня не заводится. работает пару часов и дохнет

Господа разработчики КХ пожалуйста сжальтесь надо мной и давате все пофиксим завтра :) Спокойной ночи всем.

Google
Anal
03.08.2017
21:15:17
че-т load_balancing не помогает при выборе лидирующей реплики при восстановлении упавшего сервера

Vladimir
04.08.2017
05:54:32
За ночь ничего не восстановилось/синхронизировалось.

Буду сносить, ставить перед 4 серверами балансер и писать в локальные таблицы

может это спасет.

Vladimir
04.08.2017
07:16:07
пересоздал таблицы с такими же именами и сейчас в логах такое 2017.08.04 07:15:26.221481 [ 3 ] <Trace> Measures_Distributed.Distributed.DirectoryMonitor: Started processing /mnt/local/clickhouse/data/data/default/Measures_Distributed/default@10%2E1%2E1%2E86:9000,default@10%2E1%2E1%2E94:9000/4000.bin 2017.08.04 07:15:26.576287 [ 3 ] <Trace> Measures_Distributed.Distributed.DirectoryMonitor: Finished processing /mnt/local/clickhouse/data/data/default/Measures_Distributed/default@10%2E1%2E1%2E86:9000,default@10%2E1%2E1%2E94:9000/4000.bin 2017.08.04 07:15:26.576309 [ 3 ] <Trace> Measures_Distributed.Distributed.DirectoryMonitor: Started processing /mnt/local/clickhouse/data/data/default/Measures_Distributed/default@10%2E1%2E1%2E86:9000,default@10%2E1%2E1%2E94:9000/4002.bin 2017.08.04 07:15:26.947365 [ 3 ] <Trace> Measures_Distributed.Distributed.DirectoryMonitor: Finished processing /mnt/local/clickhouse/data/data/default/Measures_Distributed/default@10%2E1%2E1%2E86:9000,default@10%2E1%2E1%2E94:9000/4002.bin 2017.08.04 07:15:26.947388 [ 3 ] <Trace> Measures_Distributed.Distributed.DirectoryMonitor: Started processing /mnt/local/clickhouse/data/data/default/Measures_Distributed/default@10%2E1%2E1%2E86:9000,default@10%2E1%2E1%2E94:9000/4004.bin

походу очнулось и начало что-то старое процессить

>У меня 4 шарда по 2 реплики и все ок У меня первые 2 часа тоже было все ок под большой нагрузкой А потом пошло все р разнос. Расскажите подробнее что и сколько пишите

Александр
04.08.2017
07:22:23
>У меня 4 шарда по 2 реплики и все ок У меня первые 2 часа тоже было все ок под большой нагрузкой А потом пошло все р разнос. Расскажите подробнее что и сколько пишите
На каждом сервере реплицируемая локальная таблица + поверх нее распределенная таблица. Когда потребуется перезаливка данных (такое иногда бывает, да), пишу в 100 потоков, примерно 6-7 млн в минуту (быстрее не получается, т.к. батчи совершенно разных размеров получаются от 10 строк до 1 000 000 строк), пишутся в основном интовые данные + несколько текстовых колонок. Такая нагрузка продолжается примерно в течение 3-4х часов. В это же время (наливки данных в КХ) происходят регулярные запросы на селекты, примерно по 10-15 запросов в секунду.

При этом все работает, CPU адекватный, IO тоже, сеть практически не кушается за счет gzip.

Было пару кейсов когда КХ жрал просто немеренное кол-во CPU и целая нода виртуализации падала, но это было из-за неверных настроек самой виртуалки.

Даже после таких падений в последствии запуска ноды, данные синхронизировались и никакого рассинхрона нет. Версия сервера 1.1.54246 собранная руками.

Три инстанса ZK поднято для репликации

Google
Vladimir
04.08.2017
07:29:00
У меня все очень похоже. 3 зукипера. 4 ноды, пишу 40-50млн в минуту пачками. 2 шарда по 2 реплики 2 часа все писало и было ок потом что-то слетело, писать перестало и пошло рассинхронизироваться запись остановил. за ночь ничего не синхронизировалось.

Вы пишите в распределенную таблицу?

Александр
04.08.2017
07:29:21
А какими пачками пишите?

Да

Vladimir
04.08.2017
07:29:34
пачки по 2млн

где-то 20-25 вставок в мин

Александр
04.08.2017
07:29:52
Должно быть норм. А PK большой?

Vladimir
04.08.2017
07:30:04
3 колонки

дата и 2 интовые

Александр
04.08.2017
07:30:19
А гранулярность большая?

Vladimir
04.08.2017
07:30:26
8192

Или вы не про это?

Александр
04.08.2017
07:31:14
Не, я имел ввиду разброс значений индекса большой?

Vladimir
04.08.2017
07:31:34
опять не понял

Александр
04.08.2017
07:31:43
Например есть ClientID и их может быть миллион, а может быть 3 )

Vladimir
04.08.2017
07:32:25
в индексе есть таймстамп

Александр
04.08.2017
07:32:33
Я не так выразился ) Не проснулся

Как интовое поле?

Vladimir
04.08.2017
07:32:44
или я

да

Google
Vladimir
04.08.2017
07:33:10
CREATE TABLE IF NOT EXISTS measures ( account UInt32, id UInt32, date Date, timestamp UInt32, value Float32, tags Nested ( name UInt32, value UInt32 ) ) Engine = ReplicatedMergeTree('/clickhouse/tables/01/measures', '1',date, (account, id, timestamp), 8192);

Александр
04.08.2017
07:33:24
Мне кажется лучше сделать DateTime, хотя могу ошибаться

Vladimir
04.08.2017
07:33:44
но тогда мои запросы медленно пойдут

Александр
04.08.2017
07:33:54
Почему?

Vladimir
04.08.2017
07:33:59
я ж не зря время добавил

Александр
04.08.2017
07:34:10
Я имею ввиду перевести колонку timestamp в тип DateTime

Vladimir
04.08.2017
07:34:12
аа

Александр
04.08.2017
07:34:16
А не UInt32 )

Vladimir
04.08.2017
07:34:20
вы имеете в виду тип поменять?

Александр
04.08.2017
07:34:24
Да

Vladimir
04.08.2017
07:34:29
думаю ничего не изменится

Александр
04.08.2017
07:34:31
Это чисто предположение

Vladimir
04.08.2017
07:34:39
а на чем основанное?

интуиция?

Александр
04.08.2017
07:35:01
Для КХ мне кажется роднее будет то, что связано как раз таки со временем )

Типа того )

Vladimir
04.08.2017
07:35:20
понял

Александр
04.08.2017
07:35:26
Вам данные нужно сортировать по таймштампу или фильтровать?

Vladimir
04.08.2017
07:36:28
тут такая штука, мне сегодня или в пон давать ответ пойдет КХ в прод или нет а тут с кластером повылазило куча всего и ответов нет поэтому на интуицию не могу полагаться мне с этим жить потом пару лет минимум

сортировать и фильтровать

Google
Igor
04.08.2017
07:36:57
убрать лишнее из ключа

Vladimir
04.08.2017
07:37:21
так это не лишнее

Александр
04.08.2017
07:37:22
Печально. Я бы на вашем месте все таки поигрался со структурой таблиц и по пробовал бы по разному строить запросы

Vladimir
04.08.2017
07:37:44
Ребята я ж в ключ id тоже не просто так добавил

а мотому как быстрый скан по ключу и времени нужен

если я уберу то что эт ополучится

Admin
ERROR: S client not available

Igor
04.08.2017
07:38:40
составной int ключь + дата ( без времени ) - так пробуйте

Vladimir
04.08.2017
07:38:48
да и не должна ХЛ БД парать от нагрузки и так непонятно себя везти

ок допустим без времени сделал записалось 2 месяца данных надо выбрать 3 часа сканить все 2 месяца?

Igor
04.08.2017
07:39:50
https://medium.com/@f1yegor/clickhouse-primary-keys-2cf2a45d7324

Vladimir
04.08.2017
07:39:55
Я что то не понимаю или?

Александр
04.08.2017
07:40:33
Так три часа выбрать можно через тот же prewhere

А потом уже все остальное выкидывать

например по account и timestamp сделать prewhere

ну если только там есть другие условия

Vladimir
04.08.2017
07:41:41
тоесть вы хотите сказать что выкинув время и оставив только дату в PK я получу такую же скорость запросов?

Александр
04.08.2017
07:41:54
Думаю да

Я сталкивался с кейсами когда по разному построенный запрос работал тоже по разному

Google
Александр
04.08.2017
07:42:12
но результат был одинаковый

причем разница была в десятки, а то и сотни раз )

Igor
04.08.2017
07:43:12
Если вы не использете date - скорость падает в десятки / сотни раз

Александр
04.08.2017
07:43:29
Кстати статья, которую скинули выше даст понимание того как КХ работает с индексом и появится более-менее нормальное представление как запросы строить

Igor
04.08.2017
07:43:40
В статье @f1yegor все расписал

Vladimir
04.08.2017
07:43:46
Попробовать можно конечно, но согласитесь должно работать и без всего этого и как то стремно брать в прод с таким поведением. Надо или победить изначальную схему или отказываться. Бог знает на что я еще натолкнусь.

Александр
04.08.2017
07:44:16
Ну блин ) Любую БД можно сложить, даже ХЛ, если с ней неправильно обращаться )

Тут нужно понять почему это произошло )

Igor
04.08.2017
07:44:33
Значит используйте Vertica )))

Александр
04.08.2017
07:45:01
Igor Str правильно говорит, что отфильтровав данные по дате, которая в PK есть, останется не так много строк для обработки, там уже делайте что хотите )

Vladimir
04.08.2017
07:45:12
Что значиит сложить? Я понимаю если бы сторость просела Но не так же умирать

Igor
04.08.2017
07:45:41
Вы заставили базу делать очень много лишних действий с таким ключем

Александр
04.08.2017
07:47:59
Я как то 5 колонок натолкал в пк ) в том числе и таймштамп, потом разобрался с пк и все ок стало

Vladimir
04.08.2017
07:48:02
Ок давайте попробую по порядку 1. убираем время из ключа 2. добавляем дату 3. переписываем запрос можно переписать на этом примере? SELECT (avg(value)), toInt64(timestamp/60)*60 as granularity FROM Measures_Distributed where account=169 and id=109 and timestamp>1501596000 and timestamp<1501740000 and arrayElement(tags.value,indexOf(tags.name,4))=11724 group by granularity order by granularity

Igor
04.08.2017
07:49:07
Добавьте в where date=today() - просто дату

и взлетит

Решение у меня - нужно последние 48 часов event_date>=today()-2 AND timepoint_hour>=now()-(60*60*48)

Vladimir
04.08.2017
07:49:59
так CREATE TABLE IF NOT EXISTS measures ( account UInt32, id UInt32, date Date, timestamp UInt32, value Float32, tags Nested ( name UInt32, value UInt32 ) ) Engine = ReplicatedMergeTree('/clickhouse/tables/01/measures', '1',date, (account, id, date), 8192);

?

Страница 223 из 723