
Stepan
08.06.2018
13:43:31
а есть какие-нибудь best practice по размещению clickhouse на пром стендах? ну там логины\пароли понятно. А еще?

Kirill
08.06.2018
14:52:11

Mike
08.06.2018
14:52:35
через сокеты быстрее все работает

Stanislav
08.06.2018
14:52:52
Через сокеты не будет репликации

Google

Kirill
08.06.2018
14:55:49

Vsevolod
08.06.2018
14:56:22
распространенное заблуждение

Stanislav
08.06.2018
14:58:19
Доступ из php в mysql через сокет таки действительно быстрее, чем через 127.0.0.1 (тестировали на работе), но, по-моему, в случае кликхауса вряд ли эти накладные расходы хоть как-то заметно повлияют на быстродействие

Александр
08.06.2018
15:13:25

Stanislav
08.06.2018
15:13:54
srwxrwxrwx 1 mysql mysql 0 Jun 8 15:26 /var/run/mysql10.2/mysqld.sock
Работу через unix-socket

Александр
08.06.2018
15:14:20
Понял, спасибо

Vsevolod
08.06.2018
15:14:23
что такое "быстрее"?
latency, throughput?

Stanislav
08.06.2018
15:15:28
latency

Vsevolod
08.06.2018
15:15:54
latency ниже, хотя и тут вопрос спорный (особенно в случае php(
http://highsecure.ru/ltproto/roo/ и http://highsecure.ru/ltproto/roo/lat/
но это долбанутый opteron

Google

Vsevolod
08.06.2018
15:17:00
на современных процессорах все намного приятнее

Stanislav
08.06.2018
15:19:25
У меня виртуалки с эмулируемым процессором и, местами, с оверселлингом...

prll
08.06.2018
15:25:15
к чему тогда вообще разговоры о скорости?

Wolf
08.06.2018
15:26:22

Vsevolod
08.06.2018
15:27:00
дело в том, что это не зависит от запросов

Alexander
08.06.2018
15:27:05
пятница, "кликхаус не тормозит", что еще обсуждать как не скорость :)

Vsevolod
08.06.2018
15:27:21
там latency до передачи данных, скажем, на 10% ниже

Wolf
08.06.2018
15:28:16

Vsevolod
08.06.2018
15:29:47
я не спорю

Anton
08.06.2018
15:30:38
мужчины, женщины, до 20, после 20, ...
До и после 20 это одна колонка, пол одна колонка, типы /алкоголик/трудяга/ помещаются в кортеж и т.д. Возможно, вместо 1000 колонок нужно хорошо продумать структуру данных

Victor
08.06.2018
15:35:13
1000 колонок, это ничоси.
В доке, конечно, написано, что КХ для широких таблиц...
Куда, кстати, корректировки по доке присылать? Возможно, я ошибку нашёл, но может я сам ламер

Alexey
08.06.2018
15:37:46
соответственно, для каждого показа прилетает массив из 300 сегментов с айдишками
300 это в среднем

Anton
08.06.2018
15:39:25

Alexey
08.06.2018
15:40:11
а тут 10к

Anton
08.06.2018
15:42:21
Ну потому что это утопия, как минимум) Т.е. кх хорошо работает с выборкой, нет смысла раскидывать по флагам и дублировать внешнее решение ради выиграша в скорости. Имеет смысл класть в кх сырые данные в виде пола / возраста / etc, а ренжи хранить в каком-нибудь сервисе адаптере, хоть 100 000. И этот сервис при выборе "До 20" будет уже билдить WHERE age < 20 и все дела
Это несколько дольше сначала, но очень быстрее потом, в плане поддержки, разработки и хранения данных в принципе. Раскидывать одно значение возраста на 20 колонок так себе решение.

Tima
08.06.2018
16:28:02

Google

Igor
09.06.2018
02:09:21
Привет!
Глупый вопрос, хочу перестраховаться.
Есть продакшн-сервер без реплик, хочется забекапить.
Как это вообще правильно сделать?
Выполнить ALTER .. FREEZE PARTITION по всем таблицам и кускам и потом, скажем, сделать tar cvzf /mnt/backups/backup.tar.gz /var/lib/clickhouse/shadow/ и всё?

Maksim
09.06.2018
03:58:23
Сжимать вроде нет смысла

Igor
09.06.2018
03:59:18
Да, это я машинально :) Т.е. просто забекапить shadow достаточно?

Дмитрий
09.06.2018
08:53:50
SELECT * FROM tbl WHERE date_hour >= toStartOfDay('2018-06-09 10:10:10')
Received exception from server (version 1.1.54385):
Code: 43. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Illegal type String of argument of function toStartOfDay. Should be a date or a date with time.
Стринг нельзя, надо Дату или ДатуВремя.
Окей:
SELECT * FROM tbl WHERE date_hour >= toStartOfDay(toDate('2018-06-09 10:10:10'))
Received exception from server (version 1.1.54385):
Code: 43. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Illegal type Date of argument for function toStartOfDay.
Дату нельзя.
Тянет на баг, кажется

Igor
09.06.2018
08:54:54
а какого типа date_hour?
хотя пофигу

Дмитрий
09.06.2018
08:55:36
ошибка про тип аргумента функции toStartOfDay
А еще
SELECT today()
┌────today()─┐
│ 2018-06-09 │
└────────────┘
SELECT
url_id,
toDate(date_hour) AS agg_date,
sum(click) AS click,
sum(show) AS show
FROM tbl
WHERE date_hour >= today()
GROUP BY toDate(date_hour)
┌─url_id─┬───agg_date─┬─click─┬─show─┐
│ 2 │ 2018-06-09 │ 9 │ 35 │
│ 2 │ 2018-06-08 │ 0 │ 1 │
неожиданно!
date_hour - DateTime
Хотя бы, если уж нельзя сравнивать Date и DateTime (что странно), то предпочтительнее увидеть ошибку, чем бред в неупавшем запросе

Denis
09.06.2018
11:12:30

Dmitry
09.06.2018
13:10:07
Добрый день! Если столбец, в котором хранятся массивы. Можно как то сделать группбай не по массивам, а по их элементам?

papa
09.06.2018
13:11:13
from .. array join .. group by ..

Vladimir
09.06.2018
13:30:50
Господа, а можно как-то у JDBC-драйвера clickhouse ограничить bandwidth?

Sergey
09.06.2018
13:41:14
с какой целью ограничивать?

Wolf
09.06.2018
13:59:45
Ограничьте средствами линукса через tc

Alexey
09.06.2018
14:06:25

Alexey
09.06.2018
14:19:43
Коллеги, добрый день!
Если у меня в шарде две реплики, я добавляю третью, не включая в конфиг шардов - это нормально так делать? ничем не чревато?

Stas
09.06.2018
14:20:07
Чат, а когда есть merge таблица смотрящая на вьюхи - она во вьюху ходит именно на своём сервере только или на весь кластер? Есть подозрение что только на своём. Нет ли best practice как распараллелить?

vladimir
09.06.2018
14:21:40

Alexey
09.06.2018
14:22:16

Stas
09.06.2018
14:24:49
Т.к есть merge таблица смотрящая на 10+ view, которые созданы на всём кластере, вот хотелось бы что бы эти самые view исполнялись быстро и на рандомных нодах, тк group by все равно на конечной ноде идёт...

Google

Alexey
09.06.2018
14:25:17
а, у вас merge

Stas
09.06.2018
14:25:44
а, у вас merge
Да, кейс в том, что бы вьюхи которые дергает merge шли на разных серверах...

Alexey
09.06.2018
14:26:18

Stas
09.06.2018
14:26:36

Alexey
09.06.2018
14:27:04

Stas
09.06.2018
14:27:23

Alexey
09.06.2018
14:27:42
ну так теоретически вроде ничто не мешает

Stas
09.06.2018
14:28:32
В моем понятии distributed нужен тогда, когда нам нужно собрать данные с разных серверов и на каждом свой кусок данных

Alexey
09.06.2018
14:28:41
у меня есть несклько distr над мат.вьюхами, даже попробую щас

Stas
09.06.2018
14:28:44
А тут у меня на каждом по факту одно и тоже

Alexey
09.06.2018
14:29:09
вы когда скахали про кластер, я и подумал что шарды

Stas
09.06.2018
14:29:35
Т.е у меня схема такая сейчас:
Merge —> view x10 —>distributed —> реальная таблица с сырьем
Вот задача обращения к х10 распаралелить, запустив их на всех доступных серверах а не на одном :)
Я от безысходности уже думал переделать обращение в поле from через random(x) что бы вьюха случайный сервер для remote обращения выбирала. Но это изврат какой-то
Merge —> view (from remote RANDOM) union all —> view x10 —>distributed —> реальная таблица с сырьем

Alexey
09.06.2018
14:37:29
норм вариант, UNION ALL судя по доке распапаллеливает как раз

Stas
09.06.2018
14:38:05
Merge тоже паралелит
Не верю, что только у меня такая проблема возникла, у кого большие кластеры по любому сталкивались

Google

Denis
09.06.2018
14:44:52

Stas
09.06.2018
14:45:29
Фактически 10 вьюшке тогда выполнятся там куда упадёт обращение от remote...
Но криво, не хотелось бы так..
По идее merge так сам уметь должен, на мой взгляд а похоже не умеет

Denis
09.06.2018
14:50:26
Где данные лежат? На всех 10 полная реплика? Можно обратится к любому?