
Firej
18.12.2017
17:15:28
а почему мне казалось что можно только по месяцам....

LeiDruid
18.12.2017
17:15:49

Firej
18.12.2017
17:16:17
воу воу, насколько недавно? ) это же очень хорошая новость

Nikolai
18.12.2017
17:16:47

Google

Nikolai
18.12.2017
17:17:56
например,
create table x () engine = Dictionary(my_dict)
а в скобочки вставить то, что выведет сообщение об ошибке

Andrey
18.12.2017
17:18:23

Mikhail
18.12.2017
17:19:38

Nikolai
18.12.2017
17:22:28

Andrey
18.12.2017
17:42:10

Firej
18.12.2017
17:42:32
а где почитать про настройку произвольного партицирования?

Mikhail
18.12.2017
17:44:18

Nikolai
18.12.2017
17:44:29
А с репликацией тоже все будет ок?
вот тут я больше всего сомневаюсь, но явных проблем пока не вижу. может быть, реплики начнут расходиться, если не поменять почти одновременно на всех

Mikhail
18.12.2017
17:47:58
Логично. Значит, с репликацией - только с одновременным отключением.

Nikolai
18.12.2017
17:48:17

LeiDruid
18.12.2017
17:58:30
@kochetovnicolai , есть ли в планах подфиксить багу, когда вместо count() с результатом 0 возвращается пустое множество строк?
Или в этом есть какая-то логика?

Google

Nikolai
18.12.2017
17:59:32
Алексей обещал на прошлом митапе

LeiDruid
18.12.2017
18:00:00
А это в ближайших планах или при случае ?

Nikolai
18.12.2017
18:01:25
нет. это сложно и не очень скоро

Dmitry
18.12.2017
18:44:36
Всем привет, подскажите, пожалуйста, по такому вопросу: есть сервер 12 потоков и 256 озу , я делаю два запроса
--max_threads=12
1 rows in set. Elapsed: 1.539 sec. Processed 155.42 million rows, 10.26 GB (100.97 million rows/s., 6.66 GB/s.)
--max_threads=6
1 rows in set. Elapsed: 1.792 sec. Processed 155.42 million rows, 10.26 GB (86.74 million rows/s., 5.73 GB/s.)
почему такое несущественное различие?

LeiDruid
18.12.2017
18:49:24
А что при этом с дисками происходит?

antuan
18.12.2017
18:51:52
Это среднее время?

Andrey
18.12.2017
18:56:06

Dmitry
18.12.2017
18:58:59
нет, это не среднее время
диски посмотрю

Kirill
18.12.2017
19:00:26

Andrey
18.12.2017
19:00:40

Dmitry
18.12.2017
19:03:28
я правильно понимаю, что время должно падать обратно пропорционально кол-ву потоков, если нет никаких проблем?

Kirill
18.12.2017
19:11:32
@milovidov_an @kochetovnicolai вопрос "идеологического" характера. Нужно дать доступ на работу с временными таблицами для readonly, очень не хочется для этого делать readonly=3 и т.д., а хочется использовать для этого SecurityManager и добавить галочку на уровне profiles.readonly что-то вроде
<readonly>
<readonly>1</readonly>
<hasAccessToTemporaryTable/>
</readonly>
это было бы ОК?

Mikhail
18.12.2017
19:14:03

LeiDruid
18.12.2017
19:14:46
Есть
В гите
/doc/
Вот пример из тестов
https://github.com/yandex/ClickHouse/blob/master/dbms/tests/queries/0_stateless/00502_custom_partitioning_local.sql

Google

Dmitry
18.12.2017
19:16:52

Nikolai
18.12.2017
19:36:53

Andrey
18.12.2017
20:21:54
Ребят, напомните плз, что означает injective у словарей. Формулировку из доки не понял =\

Alexander
19.12.2017
05:15:42
я так понимаю, это применимо для тех случаев, когда cловарь используется только для запросов, сгруппированых по ключу словаря. То есть, при подстановке из словаря ключ используется только единожды, и после использования пара выгружается из памяти для ускорения работы


Pavel
19.12.2017
07:14:38
Ни у кого не было такой ошибки? Похоже, у нас из-за неё сервер кликхауса падает.
2017.12.17 13:58:11.859618 [ 17 ] <Error> void DB::BackgroundProcessingPool::threadFunction(): Code: 84, e.displayText() = DB::Exception: Directory /var/clickhouse//data/default/nds_docs/19700101_19700101_6700774_6820814_1 already exists, e.what() = DB::Exception, Stack trace:
0. /lib/libclickhouse.so.1(StackTrace::StackTrace()+0x16) [0x7fe471b850f6]
1. clickhouse-server(DB::Exception::Exception(std::string const&, int)+0x26) [0x4b8386]
2. /lib/libclickhouse.so.1(DB::MergeTreeDataMerger::mergePartsToTemporaryPart(std::vector<std::shared_ptr<DB::MergeTreeDataPart const>, std::allocator<std::shared_ptr<DB::MergeTreeDataPart const> > >&, std::string const&, DB::MergeListEntry&, unsigned long, long, DB::DiskSpaceMonitor::Reservation*)+0x4c96) [0x7fe471cd5aa6]
3. /lib/libclickhouse.so.1(DB::StorageMergeTree::merge(unsigned long, bool, std::string const&, bool)+0x7f6) [0x7fe471c42036]
4. /lib/libclickhouse.so.1(DB::StorageMergeTree::mergeTask()+0xff) [0x7fe471c4275f]
5. /lib/libclickhouse.so.1(DB::BackgroundProcessingPool::threadFunction()+0x3f3) [0x7fe471ca46b3]
6. clickhouse-server() [0x5df02f]
7. /lib64/libpthread.so.0(+0x7dc5) [0x7fe46c12ddc5]
8. /lib64/libc.so.6(clone+0x6d) [0x7fe46b74c76d]


Evgeny
19.12.2017
07:17:07
у вас почему то в пути два слэша после clickhouse /var/clickhouse//data/default/nds_docs/19700101_19700101_6700774_6820814_1
может что то с каким-то конфигом - лишний слеш?

Pavel
19.12.2017
07:44:12
Вообще, разве что комментарий в конфиге не корректный и закрывающий слеш не нужен
<!— Path to data directory, with trailing slash. —>
<path>/var/clickhouse/</path>
Нет. Даже в документации стоит предупреждение, что закрывающий слеш обязателен.


Michal
19.12.2017
08:12:51
Инъективность - означает что разным значениям ключа ОБЯЗАТЕЛЬНО соответствуют РАЗНЫЕ значения аттрибута. Т.е. например словарь номер пользователя - фамилия пользователя НЕ инъективный, т.к. 2 разных пользователя могут иметь ту же фамилию. А словарь где каждому браузеру назначен уникальный номер - должен быть инъективным, и 2 разных номера обязательно означают 2 разных браузера. Если <injective> включено - кликхаус будет сначала группировать по ключу словаря, и только потом воспользуется словарем. Если выключено - то сначала словарь, а потом группировка.
Формальное описание: https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%8A%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_(%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)


Александр
19.12.2017
08:23:10
А альтер реплицируемой таблицы как себя ведет вообще?
У меня нода начала жрать 100% памяти при этом логе валит постоянно https://img.facedsid.ru/4mygt.jpg
Зукипер жив

Andrey
19.12.2017
08:24:35


Александр
19.12.2017
08:26:05
ClickHouse client version 1.1.54318.
Connecting to localhost:9000.
Code: 210. DB::NetException: Connection refused: (localhost:9000, ::1)
Но при этом в error.log постоянно валятся варнинги. Processlist пустой абсолютно.
При этом нагрузка на проц ~0%, а вот память он жрет без остановки. Как и что можно дампнуть что бы разобраться?

Michal
19.12.2017
09:57:43

Google

Andrey
19.12.2017
10:00:38


Michal
19.12.2017
10:02:44
Ну и разумеется изменяемость. Скажем у вас есть клиент ООО "Рога и копыта", если его закодировать как UInt16 (выходя из предположения что у вам не больше 65 тыс клиентов), то вместо ~ 30 байт (столько занимает эта строка в UTF) будет всего 2 байта. Ну и если в один прекрасный день фирма скажем именит название, или форму собственности, то достаточно будет обновить словарь, а в данных остаётся старый номер.

R-omk
19.12.2017
10:03:57
AST is too big
ктото говорил что clickhouse может большие запросы прожевывать

Александр
19.12.2017
10:04:16
Нашел откуда ноги растут. Фоновый мерж жрет просто сотни гигов памяти. Прогресс висит на месте и ничего не происходит.

Michal
19.12.2017
10:06:41

Александр
19.12.2017
10:07:23
Есть возможность как то остановить фоновый мерж?

Michal
19.12.2017
10:09:08

Александр
19.12.2017
10:09:29
В таблице много нестед колонок
И у некоторых нестед колонок жирно значений написано...
там десятки тысяч значений
и таблица replacing merge tree :)
Реплицируется + ко всему я запустил там optimize table ... partition ... и у меня лег весь кластер
Т.к. мерж пошел по всему кластеру

Michal
19.12.2017
10:11:09
Ну можно ограничить максимальный размер кусков, так чтоб черезчур крупных кусков не создавал, если это сильно долго в вашем случае и мешает.
Ну и если есть какие-то естественные периоды простоя сервера (ночь, например) то можно добавить OPTIMIZE в крон чтоб в это время сервер занимался полезным делом, а не во время "часов пик".


Andrey
19.12.2017
10:54:32

Michal
19.12.2017
10:55:43
Неинъективный словарь это когда 2 разным значения ключа соответствует тот же аттрибут.
Например:

Google

Michal
19.12.2017
10:56:06
1 => Москва
и
3 => Москва
если будем группировать по ключу получится две строки "Москва".
Если будем группировать по значению то получится одна "Москва"

Andrey
19.12.2017
10:58:23
Вы имеете в виду такой пример?
Словарь:
1 => Москва
3 => Москва
Таблица CH:
city_id = 1, некоторые другие колонки
city_id = 3, некоторые другие колонки
Mikhail

Michal
19.12.2017
11:04:07
Ну чтоб был более наглядный пример - тогда уж что-то вроде: Post_code,city_name
119002,Moscow
119019,Moscow
121069,Moscow
Если поставите такому словарю injective = true то при группировке по словарю получите 3 разных москвы (потому что индесы у них разные). А если поставите injective = false - то будет одна москва.

Andrey
19.12.2017
11:07:17

R-omk
19.12.2017
11:21:18

Michal
19.12.2017
11:22:38
Посмотрите в query_log или в логах сервера что доезжает

R-omk
19.12.2017
11:25:29
зпрос может оказатсья валидным но неправильным просто из за того что не поместился в буфер ... по хорошему всегда фейлится нужно если это select а не insert

Michal
19.12.2017
11:27:36

R-omk
19.12.2017
11:56:51

Michal
19.12.2017
11:59:15
Ну в версиях примерно с июля - вроде как более-меннее работает всё через http. Можно прислать свои данные с селектом, есть сессии и т.д. Правда пока не так много клиентов-врапперов это умеют.

R-omk
19.12.2017
12:01:45