• 02 January 2019 (57 messages)
  • https://t.me/clickhouse_ru
    @vashue #82330 08:01 AM, 02 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @SlimFlavor #82331 10:03 AM, 02 Jan 2019
    Joined.
  • @460254773 #82332 11:05 AM, 02 Jan 2019
    всем привет!

    есть ли необходимость убирать из config.xml эту констрокцию при добавлении своих настроек кластера в config.d/clickhouse_remote_servers.xml ?

    <test_shard_localhost>
    <shard>
    <replica>
    <host>localhost</host>
    <port>9000</port>
    </replica>
    </shard>
    </test_shard_localhost>

    или можно оставить как есть?
  • @460254773 #82333 11:06 AM, 02 Jan 2019
    в system.clusters отображается и мой кластер и тестовые

    │ test_cluster_two_shards_localhost │ 1 │ 1 │ 1 │ localhost │ ::1 │ 9000 │ 1 │ default │ │
    │ test_cluster_two_shards_localhost │ 2 │ 1 │ 1 │ localhost │ ::1 │ 9000 │ 1 │ default │ │
    │ test_shard_localhost │ 1 │ 1 │ 1 │ localhost │ ::1 │ 9000 │ 1 │ default │ │
    │ test_shard_localhost_secure │ 1 │ 1 │ 1 │ localhost │ ::1 │ 9440 │ 0 │ default │ │
    └───────────────────────────────────┴───────────┴──────────────┴─────────────┴────────────────────────────┴────────────────┴──────┴──────────┴─────────┴──────────────────┘
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #82332 #82334 11:09 AM, 02 Jan 2019
    Можете убрать, он вам не нужен.
  • спасибо за ответ!
  • https://t.me/clickhouse_ru
    @msg_kurt #82336 11:50 AM, 02 Jan 2019
    Привет. Нид хелп с, сдается мне, примитивным запросом. Нужно пронумеровать строки в результате, что-то типа select row_number, address from (SELECT DISTINCT address from users)
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82336 #82337 11:55 AM, 02 Jan 2019
    а какой вопрос то?
  • https://t.me/clickhouse_ru
    @orloffv #82338 11:56 AM, 02 Jan 2019
    ты хочешь, что бы row_number был 1,2,3,4,5,6...?
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82337 #82339 11:56 AM, 02 Jan 2019
    вопрос в том, чтоб на выходе получить не просто список адресов, а пронумерованный
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82338 #82340 11:56 AM, 02 Jan 2019
    именно
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #82336 #82341 11:57 AM, 02 Jan 2019
    rowNumberInAllBlocks
  • https://t.me/clickhouse_ru
    @orloffv #82342 11:57 AM, 02 Jan 2019
    Документация ClickHouse | Документация ClickHouse

    ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries

  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82342 #82343 11:59 AM, 02 Jan 2019
    Спасибо. Надо больше спать, наверное Я видел эту функцию, но подумал, что она считает количество вхождений записи в партициях
  • @varyhin #82346 03:13 PM, 02 Jan 2019
    Joined.
  • @varyhin #82347 03:14 PM, 02 Jan 2019
    ребят а поделитесь снипетом для записи данных из pandas dataframe в таблицу
  • @varyhin #82348 03:15 PM, 02 Jan 2019
    что то в духе вот этого
  • comments in russian are horribly
  • It's russian channel. If you don't like russian comments, just go to eng channel https://telegram.me/clickhouse_en
    ClickHouse

    ClickHouse DBMS discuss and help

  • да при чем тут это, я о том, что кто ж пишет комменты на русском в 2019 ?
  • Много кто :) Я пишу комменты на русском, т.к. внутри команды разработки с английским не у всех хорошо.
  • @terrifilch #82354 03:52 PM, 02 Jan 2019
  • @pookieShmukie #82355 03:54 PM, 02 Jan 2019
    Но например вот тут https://github.com/the-tinderbox/ClickhouseBuilder все на анлийском, т.к. туда не только члены нашей команды ходят. Если код используется только внутри команды, то почему мы должны писать комменты на английском языке, если нам удобней на русском? )
    GitHub - the-tinderbox/ClickhouseBuilder: Fluent queries builder for Clickhouse. Also has integration with Laravel / Lumen.

    Fluent queries builder for Clickhouse. Also has integration with Laravel / Lumen. - GitHub - the-tinderbox/ClickhouseBuilder: Fluent queries builder for Clickhouse. Also has integration with Larave...

  • @Komzpa #82356 03:56 PM, 02 Jan 2019
    комментарии на русском лучше отсутствия комментариев
  • https://t.me/clickhouse_ru
    @kshvakov #82357 03:56 PM, 02 Jan 2019
    Вообще вполне себе нормально писать на родном языке иил языке на котором говорит команда )
  • @pookieShmukie #82358 03:57 PM, 02 Jan 2019
    Блин, я вообще не понимаю чем плох родной язык. Какое-то русофобство.
  • @alexeysetevoi #82359 03:58 PM, 02 Jan 2019
    Святой обязанностью каждого айтишника является продать себя на запад, поэтому все должны ходить строем, писать только на английском и хулить свою страну
  • @alexeysetevoi #82360 03:58 PM, 02 Jan 2019
    Простите, злая ирония
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #82350 #82361 03:59 PM, 02 Jan 2019
    this looks like a personal snippet, and definitely is not a C++ CH code
  • @terrifilch #82362 03:59 PM, 02 Jan 2019
    😱 сколько хейта полетело.... ну ну давайте еще🤘
  • https://t.me/clickhouse_ru
    @emakarov #82363 04:00 PM, 02 Jan 2019
    а, ну да, судя по are horribly можно было понять что это не нейтив спикер...
  • https://t.me/clickhouse_ru
    если ты работаешь только в сызране и ваш бизнес не уходил дальше города - то да. Но обычно все стремятся покорять мир, у людей есть амбиции, и они хотят чтобы их понимали повсюду. Поэтому "на родном языке" - значит что ваш ларек никогда не станет магазином
  • @varyhin #82365 04:03 PM, 02 Jan 2019
    Народ а по делу? :)
  • Станет ларек магазином или нет, зависит от товара, а не от языка, на котором в ларьке говорят, если продолжать
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #82364 #82367 04:03 PM, 02 Jan 2019
    Ну, бизнесу все равно на чем комменты написаны, зачастую и на чем написан код тоже, это не мешает продавать.
  • https://t.me/clickhouse_ru
    @emakarov #82368 04:03 PM, 02 Jan 2019
    тут ларек один выложил на своем языке https://github.com/baidu/openedge ))
    baetyl/baetyl

    Extend cloud computing, data and service seamlessly to edge devices. - baetyl/baetyl

  • @varyhin ↶ Reply to #82362 #82369 04:04 PM, 02 Jan 2019
    Видимо народ не похмелился еще :)
  • К слову, периодически наталкиваюсь на то, что статьи китайцев через гугл-транслейт сильно интереснее по деталям и глубине, чем средние английские
  • https://t.me/clickhouse_ru
    но завтра может придти Джон и сказать что ваш код гавно) а не, не скажет, он же не поймет русский))
  • https://t.me/clickhouse_ru
    @emakarov #82372 04:06 PM, 02 Jan 2019
    ну тут скорее связано с тем, что у них не очень с английским, вот и пишут только для себя
  • @milovidov_an #82373 04:06 PM, 02 Jan 2019
    У нас в коде осталось чуть-чуть (несколько сотен строк) комментариев
  • @milovidov_an #82374 04:06 PM, 02 Jan 2019
    на русском в редко используемых библиотеках.
  • @milovidov_an #82375 04:07 PM, 02 Jan 2019
    Можете помочь доперевести.
  • @milovidov_an #82376 04:08 PM, 02 Jan 2019
    Переводить можно прямо на GitHub (открываете файл в веб интерфейсе, жмёте edit).
  • @669346440 #82377 05:44 PM, 02 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @241186216 #82378 06:27 PM, 02 Jan 2019
    Есть ли в КХ ограничения на джойн таблиц?
  • https://t.me/clickhouse_ru
    @Margerko #82379 06:30 PM, 02 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @nicname ↶ Reply to #82378 #82380 06:40 PM, 02 Jan 2019
    правая часть должна помещаться в память
  • https://t.me/clickhouse_ru
    @KaaiNet #82381 06:43 PM, 02 Jan 2019
    Условия только ==
  • https://t.me/clickhouse_ru
    @den_crane #82382 06:43 PM, 02 Jan 2019
    и работает медленно, если в правой таблице например 20млн. строк, а в левой 0 строк, то джойн будет идти 5 сек., насколько я понимаю столько занимает построение/размещение хештаблицы в памяти
  • https://t.me/clickhouse_ru
    @nicname #82383 06:46 PM, 02 Jan 2019
    а вот интересно, кстати, есть ли бенчмарки использования джойнов и словарей? они в ряде задач пересекаются
  • https://t.me/clickhouse_ru
    @den_crane #82384 06:46 PM, 02 Jan 2019
    словари в бесконечность раз быстрее
  • https://t.me/clickhouse_ru
    @nicname #82385 06:47 PM, 02 Jan 2019
    кайф, попробую заменить, спасибо
  • https://t.me/clickhouse_ru
    @nicname #82386 06:47 PM, 02 Jan 2019
    хотя.. у меня там джойн из Memory таблицы )
  • https://t.me/clickhouse_ru
    @den_crane #82387 06:48 PM, 02 Jan 2019
    ну так есть такой специальный движок, прямо для этого случая engine=Join
  • https://t.me/clickhouse_ru
    @nicname #82388 06:50 PM, 02 Jan 2019
    ага, попробую все три варианта
  • 03 January 2019 (71 messages)
  • https://t.me/clickhouse_ru
    @eduard_kotoyants #82389 08:59 AM, 03 Jan 2019
    Joined.
  • @1115100 #82390 09:42 AM, 03 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @eduard_kotoyants #82391 10:28 AM, 03 Jan 2019
    Доброе, пытаюсь разобраться как сделать бекап через freeze, на сколько я понял больше нет возможности задавать партиции через префикс? Как можно выполнить freeze для всех партиций таблицы?
  • @Lamobot ↶ Reply to #82391 #82392 10:44 AM, 03 Jan 2019
    С 18.16.0 появилось:
    Добавлена возможность не указывать партицию для запроса ALTER TABLE ... FREEZE для бэкапа сразу всех партиций.
  • @mfilimonov #82393 10:54 AM, 03 Jan 2019
    Добрый день, обновляем продакшн. Ждать каких-то проблем от v18.16.1 или лучше пока v18.14.19 взять?
  • https://t.me/clickhouse_ru
    @Vasyaabr ↶ Reply to #82393 #82394 11:08 AM, 03 Jan 2019
    Мы откатывались обратно на 18.14 в итоге :)
  • Что именно поломалось?
  • https://t.me/clickhouse_ru
    @Vasyaabr ↶ Reply to #82395 #82396 11:11 AM, 03 Jan 2019
    Если иногда падает соединение с зоокипером - то дальше начинается всякая фигня: https://github.com/yandex/ClickHouse/issues/3891
    Вот как выкатят в релиз правки по этой issue - попробуем снова.
    ALTER timeout on ReplicatedMergeTree · Issue #3891 · yandex/ClickHouse

    On release 18.16.0, when applying ALTER TABLE ... ADD COLUMN on ReplicatedMergeTree table, ALTER completed on current replica, but other replicas coudn't download and apply ALTER action. On...

  • Ок. Штука неприятная, но для нас вроде не очень критична (схема базы относительно статична).
  • https://t.me/clickhouse_ru
    @Vasyaabr #82398 11:18 AM, 03 Jan 2019
    Тогда да, можно попробовать. Мы иногда начинаем добавлять колонки пачками.
  • Да, лёгкость с которой это можно делать в КХ стимулирует идеи типа "а давайте вот тут добавим Х колонок" :) У нас пока народ привыкший (по всяким MySQL) к тому что добавление колонок - это обязательно дорого и больно, и поэтому на схему БД не так часто покушаются :)
  • @varyhin #82400 11:33 AM, 03 Jan 2019
    Joined.
  • @varyhin #82401 11:41 AM, 03 Jan 2019
    Возможно кому пригодиться. Вставка pandas dataframe в clickhouse вот что получилось. В очередной раз подсмотрел у @miptgirl . Маша спасибо за твои видео и гитхаб. Ну и Миловидову Леше за стендапы :) Всех с новым годом!
  • @varyhin #82402 11:41 AM, 03 Jan 2019
    На этот раз без русских коментариев от меня :)
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #82401 #82403 11:46 AM, 03 Jan 2019
    есть вот такой проект https://github.com/kszucs/pandahouse
    GitHub - kszucs/pandahouse: Pandas interface for Clickhouse database

    Pandas interface for Clickhouse database. Contribute to kszucs/pandahouse development by creating an account on GitHub.

  • @varyhin #82404 11:47 AM, 03 Jan 2019
    Жень спасибо видел но что то не зашло :)
  • https://t.me/clickhouse_ru
    @studnev #82406 02:14 PM, 03 Jan 2019
    Привет! Подскажите почему не работает запрос HAVING x IN ( SELECT … ) ?
  • https://t.me/clickhouse_ru
    @studnev #82407 02:14 PM, 03 Jan 2019
    Например HAVING positionId IN ( SELECT 1 FROM system.one) НЕ РАБОТАЕТ ( 0 records )
  • https://t.me/clickhouse_ru
    @studnev #82408 02:15 PM, 03 Jan 2019
    A. HAVING positionId IN (1) РАБОТАЕТ
  • https://t.me/clickhouse_ru
    @studnev #82409 02:16 PM, 03 Jan 2019
    Вроде это одно и то же, не?
  • https://t.me/clickhouse_ru
    в какой версии CH ?

    вроде работает

    select max(positionId) positionId from (select 1 positionId)
    HAVING positionId IN ( SELECT 1 FROM system.one)
  • https://t.me/clickhouse_ru
    @studnev ↶ Reply to #82410 #82411 02:35 PM, 03 Jan 2019
    это у меня тоже работает. Возможно дело в GROUP BY
  • https://t.me/clickhouse_ru
    что про версию-то КХ ?
    ладно пофиг, перед запросом
    set compile_expressions = 0
    set enable_optimize_predicate_expression = 0
  • https://t.me/clickhouse_ru
    @studnev ↶ Reply to #82412 #82413 02:38 PM, 03 Jan 2019
    не помогло. Сейчас попробую запрос сделать попроще чтобы можно было повторить
  • https://t.me/clickhouse_ru
    @termina1 #82414 03:01 PM, 03 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @termina1 #82415 03:03 PM, 03 Jan 2019
    привет, а подскажите, если мне в запрос нужно просто объеденить две таблицы так, чтобы просто иметь все строки обеих таблиц и в итоге по ним что-то посчитать, как будто по одной таблице, как лучше всего сделать?
  • https://t.me/clickhouse_ru
    @termina1 #82416 03:03 PM, 03 Jan 2019
    при этом не хочется никакие строки объединять
  • https://t.me/clickhouse_ru
    @studnev ↶ Reply to #82416 #82417 03:03 PM, 03 Jan 2019
    UNION ALL ?
  • https://t.me/clickhouse_ru
    @termina1 #82418 03:05 PM, 03 Jan 2019
    спасибо, видимо то что нужно
  • https://t.me/clickhouse_ru
    @termina1 #82419 03:13 PM, 03 Jan 2019
    а в продолжение — если одно из полей, которое мне нужно в результате LowCardinalityString: есть в 1 таблице, но нет во 2. Как-то можно его застабить?
  • https://t.me/clickhouse_ru
    @den_crane #82420 03:14 PM, 03 Jan 2019
    select a, b
    union all
    select a, toLowCardinality('') b
  • https://t.me/clickhouse_ru
    @termina1 #82421 03:14 PM, 03 Jan 2019
    работает, спасибо!
  • @faerics ↶ Reply to #82401 #82422 03:21 PM, 03 Jan 2019
    А почему не использовать clickhouse_driver?
  • @varyhin ↶ Reply to #82422 #82423 03:24 PM, 03 Jan 2019
    Посмотрел что Маша делает через обычный requests и решил что возможно не без оснований.
  • https://t.me/clickhouse_ru
    @nicname #82424 03:24 PM, 03 Jan 2019
    а где-то можно почитать про LowCardinality?
  • @faerics ↶ Reply to #82423 #82425 03:26 PM, 03 Jan 2019
    Http в принципе хуже, чем нативный драйвер. Есть основания использовать его, никаких сложностей там у нас не возникло.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @nicname #82428 03:29 PM, 03 Jan 2019
    спасибо
  • https://t.me/clickhouse_ru
    @studnev ↶ Reply to #82413 #82429 03:34 PM, 03 Jan 2019
    Не смог сделать тест. На тесте все работает. Вот список вариантов - по мне они все одинаковые но работают по разному на реальной таблице
  • https://t.me/clickhouse_ru
    @studnev #82430 03:35 PM, 03 Jan 2019
    Особенно раздражает разница между первым и вторым запросом - какого черта он работают по разному? Это реально одно и тоже
  • @799994950 #82431 03:42 PM, 03 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @ikozlov1 ↶ Reply to #82425 #82432 03:47 PM, 03 Jan 2019
    а есть нативный для php? что лучше использовать
  • https://t.me/clickhouse_ru
    это абсолютно два разных запроса с точки зрения пайплайнов многопотчности и дистрибьютид запросов, скобки () тянут резултат на инициатора, без скобок группировка выполняется шардами
  • @faerics ↶ Reply to #82432 #82434 04:32 PM, 03 Jan 2019
    Я питонист, по php упоминалось в этом чате несколько либ.
    Зная о популярности такого чуда как php, я предположу, что есть
  • https://t.me/clickhouse_ru
    @ikozlov1 ↶ Reply to #82434 #82435 04:35 PM, 03 Jan 2019
    я джавист, но есть куски пхп. сейчас использую оф либу. в сомнениях что есть лучше
  • @faerics ↶ Reply to #82435 #82436 04:37 PM, 03 Jan 2019
    Я бы тоже так думал
  • @408714207 #82437 06:03 PM, 03 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @kostiantynv #82438 06:33 PM, 03 Jan 2019
    Добрый вечер, подскажите как реализовано хранение вложенных данных. Я имею ввиду Nested.
  • https://t.me/clickhouse_ru
    @orantius #82439 06:34 PM, 03 Jan 2019
    несколько столбцов типа массив.
  • https://t.me/clickhouse_ru
    @kostiantynv #82440 06:35 PM, 03 Jan 2019
    Насколько эффективно эти массивы сжимаются ?
  • https://t.me/clickhouse_ru
    @den_crane #82441 06:42 PM, 03 Jan 2019
    Одинаково все сжимается, пишется в файл, а затем куски по 65кб : 1 мб сжимаются lz4 или zstd
  • @terrifilch #82443 06:57 PM, 03 Jan 2019
    норм посты у вас
  • @VitalVas ↶ Reply to #82442 #82444 06:59 PM, 03 Jan 2019
    нет там такого контента…
  • https://t.me/clickhouse_ru
    @vlad10nik #82445 07:17 PM, 03 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    Данные для остальных колонок хранятся так же как и если бы вложенных колонок не было. Получается это идеальный вариант когда нужны джоины ?
  • https://t.me/clickhouse_ru
    @kostiantynv #82447 07:21 PM, 03 Jan 2019
    Как бы предварительно вычислененные джины, правильно ?
  • https://t.me/clickhouse_ru
    в 99% случаев джойны и словари используются для того чтобы обогатить данные постфактум, т.е. вы не знаете какая температура была на марсе, поэтому пишете в ивенте Марс, а затем постфактум во время селекта подтягиваете температуру, если вы сразу что-то знаете, и эти знания имьютабл, то конечно написать прямо в таблицу.
  • https://t.me/clickhouse_ru
    При выборе предварительный энричмент или постфактум в селект с джийн, что лучше ? Вероятно ответ зависит от размера словаря для джоина и каких-то других параметров. Каких ?
  • а если эвент содержит не температуру на марсе, а радиус марса, его удаленность от солнца и его массу (пусть это все известно сразу, а не постфактум) - следут ли такие данные выносить в словарь? не хотелось бы в каждой строчке ивента все это писать постоянно, когда можно просто написать - марс
  • https://t.me/clickhouse_ru
    если в словаре будут все планеты и звезды, то на такой словарь не хватит памяти, т.е. если у вас миллион планет, однозначно надо писать в ивент, если меньше то можно и не писать, а использовать словарь (если у планеты куча атрибутов и они какие-то широкие), тут возможно выигрыш будет в i/o и цпу при записи, по занимаему месту вряд-ли (из-за компрессии).
  • ну миллион не так уж и много. если параметры будут типа UInt32, DateTime и т.д., то даже 20 таких параметров займут меньше 128 байт, а значит и весь словарь будет меньше 128 мегабайт, что вроде не много.
  • https://t.me/clickhouse_ru
    разработчики КХ думали иначе, он займет гигабайты.
  • https://t.me/clickhouse_ru
    @den_crane #82454 09:59 PM, 03 Jan 2019
    но будет очень быстро работать
  • а откуда гигабайты возьмутся? там создаются индексы по каждому полю?
  • https://t.me/clickhouse_ru
    я в общем эту кашу ел, у меня есть словарь на 25 ГБ, наслаждайтесь https://github.com/yandex/ClickHouse/issues/2738
  • @783107312 #82457 10:22 PM, 03 Jan 2019
    Joined.
  • @pookieShmukie #82458 11:17 PM, 03 Jan 2019
    Доброй ночи всем! А подскажите, как можно выбрать строки с limit n, m, но так что бы при повторном запросе результат оставался прежний? Данные в таблице не меняются. Вариант с order by рассматривается, но пока неизвестно будет ли кх сортировать данные, если order by в запросе такой же как при создании таблицы.
  • https://t.me/clickhouse_ru
    не будет.
  • https://t.me/clickhouse_ru
    @den_crane #82460 11:34 PM, 03 Jan 2019
    там 48 потоков, 35й прочитает из памяти середину, и вернет первым
  • https://t.me/clickhouse_ru
    @den_crane #82461 11:38 PM, 03 Jan 2019
    в смысле нужен order by всегда
  • у вашего словаря тип layout'а complex_key_hashed, но ключем объявлен только 'a' (<key><attribute><name>a</name><type>Int64</type></attribute></key>). почему так?
    ну и если выбрать тип layout'а flat, то размер словаря так разбухать не должен? (но судя по документации там ограничение на 500 000 элементов)
  • 04 January 2019 (55 messages)
  • https://t.me/clickhouse_ru
    потому что иногда нужны отрицательные числа, тип Int64, а не UInt64.
    мне flat например не подходит (500 тыс. подряд.), у меня в том конктретном случае весь диапазон чисел -MaxInt64 до +MaxInt64.
  • Ок, спасибо!
  • А если я в запрос передам настройку max_threads = 1, даст ли это гарантию того, что данные будут читаться в один поток и последовательно? Я попробовал, вроде бы результат тот, который мне нужен
  • @terrifilch #82466 09:51 AM, 04 Jan 2019
    Есть люди, кто работает с Clickhouse в Digital Ocean?

    Интересует ситуация с кластерами в Digital Ocean - были ли проблемы и все такое
  • https://t.me/clickhouse_ru
    @stufently #82467 09:53 AM, 04 Jan 2019
    с учетом того что в до обычные виртуалки а не саас то никаких проблем нет вообще
  • https://t.me/clickhouse_ru
    @stufently #82468 09:57 AM, 04 Jan 2019
    в целом везде где виртуалки ксен или квм все одинаково , в рассмотрение опенвз и lxc не берем там свои проблемы есть
  • В Digital Ocean моментами в дневное время сильно сеть падает.
  • https://t.me/clickhouse_ru
    роскомнадзор до сих пор не разблокировал их подсеть?
  • https://t.me/clickhouse_ru
    ну в кх все дублируется он такое будет просто не замечать
  • @152355939 #82472 11:21 AM, 04 Jan 2019
    На счет роскомнадзора не в курсе. Про сеть имею ввиду локальную между серверами Digital Ocean. Часто падает скорость передачи данных в дневное время.
  • https://t.me/clickhouse_ru
    @stufently #82473 11:22 AM, 04 Jan 2019
    ну процы еще проседают ))) и диск ио как и везде
  • В случае чтения с реплики данные могут отставать на несколько минут.
  • https://t.me/clickhouse_ru
    @stufently #82475 11:22 AM, 04 Jan 2019
    ну в кх такие данные стандартно лежат что несколько минут не влияют на результат
  • @alexandrmazur96 #82476 01:00 PM, 04 Jan 2019
    Всем привет! При настройке odbc для сторонне словаря - как можно указать несколько условий where? Ну в плане:

    <source>
    <odbc>
    <connection_string>DSN=external_db</connection_string>
    <table>accounts</table>
    <where>expired &lt;= NOW() and is_trial and …</where>
    </odbc>
    </source>

    в такой записи - словарь фейлится при обновлении
  • @dmitriy_negreev #82478 04:28 PM, 04 Jan 2019
    Joined.
  • @460254773 #82479 04:37 PM, 04 Jan 2019
    всем привет!
    экспериментируем с кластером CH
    у нас есть 3 шарда и 3 реплики
    когда выключили 1 шард и его реплику то данные все равно успешно вставились

    при select из Distributed соответственно получили ошибку
    DB::NetException. DB::NetException: All connection tries failed.

    после того как включили шард 1, select тоже был выполнен успешно и все данные получены без потерь

    Где в момент недоступности шарда и реплики находилась эта часть данных?))
  • https://t.me/clickhouse_ru
    @stufently #82480 04:39 PM, 04 Jan 2019
    в другом шарде?
  • для меня тоже это вопрос)
  • https://t.me/clickhouse_ru
    @stufently #82482 04:46 PM, 04 Jan 2019
    Это был ответ
  • https://t.me/clickhouse_ru
    Данные размазываются по доступным шардам, что у вас в функции шардирования в дистрибьютид? rand() ?
  • rand (случайный)
  • https://t.me/clickhouse_ru
    @den_crane #82485 04:48 PM, 04 Jan 2019
    ну вот и попало в случайный шард из двух работающих
  • https://t.me/clickhouse_ru
    @wawaka #82486 04:49 PM, 04 Jan 2019
    В distributed таблице смотрели?
  • а как потом данные доехали в снова заработавший шард и его реплику?
  • https://t.me/clickhouse_ru
    зачем?
  • я к тому что после включения CH на ранее не доступном шарде и его реплике
    данные уже и там оказались
  • @460254773 #82490 04:56 PM, 04 Jan 2019
    к стати не уточнил
    движек таблиц используем Replicated
    и
    <internal_replication>true</internal_replication>
    для каждого шарда
  • поясните пожалуйста?
  • https://t.me/clickhouse_ru
    @wawaka #82492 04:58 PM, 04 Jan 2019
    Данные хранятся в distributed таблице на сервере где вставляли, пока не разойдутся по шардам
  • ах вот оно что)
    спасибо!
    даже не предполагал
    так как по информации из документации по CH, distributed не хранит данные
  • https://t.me/clickhouse_ru
    @wawaka #82494 05:03 PM, 04 Jan 2019
    Там буфер для вставки
  • у буфера есть срок жизни?
  • https://t.me/clickhouse_ru
    @wawaka #82496 05:05 PM, 04 Jan 2019
    И если дропнуть таблицу до того, как данные разойдутся, то их больше не вернуть
  • https://t.me/clickhouse_ru
    @wawaka #82497 05:05 PM, 04 Jan 2019
    Он в фоне пытается послать данные
  • https://t.me/clickhouse_ru
    @wawaka #82498 05:06 PM, 04 Jan 2019
    У нас один день данные так лежали
  • https://t.me/clickhouse_ru
    @wawaka #82499 05:06 PM, 04 Jan 2019
    Не знаю, есть ли там лимит
  • @460254773 #82500 05:07 PM, 04 Jan 2019
    ага понял
    спасибо за ответы!
  • https://t.me/clickhouse_ru
    @wawaka #82501 05:07 PM, 04 Jan 2019
    Пожалуйста
  • @460254773 #82502 05:08 PM, 04 Jan 2019
    с CH работать все интересней)
  • https://t.me/clickhouse_ru
    @agent_gosdepa #82503 06:39 PM, 04 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @agent_gosdepa #82504 06:41 PM, 04 Jan 2019
    Ребята, а сама система аналитики какая к вашему этому ClickHouse прикручивается? Или все сами пишут себе велосипеды? Как это работает, подскажите плиз.
  • https://t.me/clickhouse_ru
    @stufently #82505 06:41 PM, 04 Jan 2019
    Графана табикс суперсет
  • https://t.me/clickhouse_ru
    Табикс как пишется? не гуглится
  • https://t.me/clickhouse_ru
    @stufently #82507 06:45 PM, 04 Jan 2019
    Tabix
  • https://t.me/clickhouse_ru
    @stufently #82508 06:45 PM, 04 Jan 2019
    Ну это самое простое
  • https://t.me/clickhouse_ru
    @stufently #82509 06:45 PM, 04 Jan 2019
    Люди там и сложное прикручивают
  • https://t.me/clickhouse_ru
    @agent_gosdepa #82510 06:45 PM, 04 Jan 2019
    Спасибо 👍
  • https://t.me/clickhouse_ru
    А можно подробнее о проблемах ClickHouse on lxc ?
  • https://t.me/clickhouse_ru
    @stufently #82512 07:45 PM, 04 Jan 2019
    Не знаю, у lxc в целом есть набор проблем с перфомансом , так что для кх его даже не пробовал, да и сильно нагруженные бд с него пришлось смигрировать
  • https://t.me/clickhouse_ru
    @stufently #82513 07:45 PM, 04 Jan 2019
    Уж больно плохой оверхед на файлуху
  • во всех них аналитические запросы на sql явно пишутся? есть системы, где запрос в конструкторе создается. как в самой яндес-метрике или гугл-аналитике?
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82514 #82515 08:16 PM, 04 Jan 2019
    http://youtu.be/7Wcq6_9727A тут было про обзор таких систем:)
    004. Блиц доклады пользователей ClickHouse

    12 декабря в Яндексе прошла большая встреча, на которой мы подвели промежуточные итоги СУБД ClickHouse как открытого ПО. За это время сотни компаний начали ей пользоваться. Специалисты из известных компаний рассказывают о своём опыте использования ClickHouse. Чего удалось достичь и с какими проблемами довелось столкнуться. Другие видео встречи https://events.yandex.ru/events/meetings/12-dec-2017/

  • https://t.me/clickhouse_ru
    в суперсет какой-то построитель есть, но я бы не сказал, что он мне подошел.
  • @vovkd #82517 08:33 PM, 04 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @OlgaManaenkova #82518 08:33 PM, 04 Jan 2019
    Joined.
  • 05 January 2019 (47 messages)
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #82504 #82519 03:02 AM, 05 Jan 2019
    Redash тоже умеет
  • https://t.me/clickhouse_ru
    @kbespalov #82520 03:54 AM, 05 Jan 2019
    Доброе утро.

    Попытка воспользоваться groupArray с Decimal колонкой заканчивается падением сервера:

    Received signal Segmentation fault (11).

    Трейс: https://pastebin.com/Am4VwE4E
    Версия: 18.16.1

    Это известная проблема?
  • https://t.me/clickhouse_ru
    Спасибо 👍
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #82512 #82522 07:33 AM, 05 Jan 2019
    LXC поддерживает работу с разными стораджами и там все настраиваемо, так что если уж и держать СУБД в контейнерах то в нем. Тотже гуглоклауд чуть более чем полностью LXC.
  • @oleg_kozlyuk #82523 07:37 AM, 05 Jan 2019
    L̶X̶C̶ ̶ж̶е̶ ̶л̶е̶ж̶и̶т̶ ̶в̶ ̶о̶с̶н̶о̶в̶е̶ ̶Д̶о̶к̶е̶р̶а̶,̶ ̶т̶а̶м̶ ̶м̶о̶ж̶н̶о̶ ̶т̶о̶м̶а̶ ̶п̶о̶д̶к̶л̶ю̶ч̶а̶т̶ь̶ ̶н̶а̶п̶р̶я̶м̶у̶ю̶ ̶б̶е̶з̶ ̶п̶р̶о̶б̶л̶е̶м̶ ̶с̶ ̶п̶е̶р̶ф̶о̶р̶м̶а̶н̶с̶о̶м̶ наверное, я не прав, есть открытые issues на эту тему
  • https://t.me/clickhouse_ru
    Ну перфоманс на мною любимой zfs оставляет желать лучшего.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #82523 #82525 07:41 AM, 05 Jan 2019
    Это не так, LXC и Docker это соверщенно разные вещи.
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #82522 #82526 08:25 AM, 05 Jan 2019
    Откуда дровишки?
  • https://t.me/clickhouse_ru
    @Fearan ↶ Reply to #82525 #82527 08:42 AM, 05 Jan 2019
    Да ну? :)
  • https://t.me/clickhouse_ru
    @Kasatikoff #82528 09:30 AM, 05 Jan 2019
    Здравствуйте! Мне нужно оптимизировать или заменить transform(). Был запрос где для группировки и итоговой агрегации использовался Case. На большом количестве групп запрос выполнялся медленно и был переписан на использование transform(). Но при большом количестве групп например 9 тыс. запрос не влезает уже в max_query_size и все опять тормозит.
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82528 #82529 09:57 AM, 05 Jan 2019
    может тебе словарь заиспользовать?
  • https://t.me/clickhouse_ru
    Для каждого запроса группировка меняется
  • https://t.me/clickhouse_ru
    @orloffv #82531 10:00 AM, 05 Jan 2019
    еще можно данные отельно от запроса передать вроде
  • https://t.me/clickhouse_ru
    В консольной клиенте можно файл передать, но это в app на php
  • https://t.me/clickhouse_ru
    @orloffv #82533 10:09 AM, 05 Jan 2019
    расскажи про свой кейс, может придумаем альтернативные решения
  • https://t.me/clickhouse_ru
    И таблицы метрика нужно выбрать данные по условиям. Таблица вида asset, metric, value. Итоговая агрегацию по группам типа group1 => [ asset1, assetN ]. Группировка приходит в реквесте и групп может быть много и они меняются
  • @faerics ↶ Reply to #82534 #82535 10:36 AM, 05 Jan 2019
    Кешировать частые группировки?
  • @faerics #82536 10:39 AM, 05 Jan 2019
    Можно еще с aggregation state играться, хранить их для частых подгрупп, а потом с ними доагрегировать
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #82526 #82537 10:46 AM, 05 Jan 2019
    На наших инстанцах в гуглоклауде замечен lxcfs и прочая атрибутика LXC) На самом деле в этом нет ничего такого, контейнеры давно выдают, даже ещё во времена когда докера не было и о контейнерах мало кто знал были провайдеры которые сидели на Виртуозо/опенвз и прекрасно себя чувствовали.
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #82537 #82538 10:47 AM, 05 Jan 2019
    Присмотрись получше)
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #82538 #82539 10:52 AM, 05 Jan 2019
    Ок)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #82540 #82541 10:54 AM, 05 Jan 2019
    Это должно быть так, но я сильно не уверен что это везде
  • https://t.me/clickhouse_ru
    @stufently #82542 10:56 AM, 05 Jan 2019
    Lxcfs и в обычной убунте есть в ps ax, а так все провайдеры нынче сидят в основном на квм , отстающие на xen , openvz свой рынок по большей части просрал, lxc ни у одного провайдера в паблике не видел
  • https://t.me/clickhouse_ru
    в паблике - это в смысле впс на этом?
  • https://t.me/clickhouse_ru
    @stufently #82544 11:00 AM, 05 Jan 2019
    Ну да
  • https://t.me/clickhouse_ru
    @ldviolet #82545 11:01 AM, 05 Jan 2019
    lxc такая же жесть как и netplan и mir от canonical
  • https://t.me/clickhouse_ru
    @ldviolet ↶ Reply to #82542 #82546 11:04 AM, 05 Jan 2019
    Aws Firecracker должен взлететь, плагин для контейнеров тоже в активной разработке.
  • https://t.me/clickhouse_ru
    Ну почему же? Нормально работает, если хост подтюнить.
  • https://t.me/clickhouse_ru
    @ldviolet ↶ Reply to #82547 #82548 11:11 AM, 05 Jan 2019
    Это если у вас только Ubuntu.
  • https://t.me/clickhouse_ru
    Debian 9
  • https://t.me/clickhouse_ru
    h2:~# lxc-ls -1 | wc -l
    518
  • https://t.me/clickhouse_ru
    Там, правда, именно контейнеры, а не впс.
  • https://t.me/clickhouse_ru
    Как их хранить?
  • @faerics ↶ Reply to #82552 #82553 11:24 AM, 05 Jan 2019
    Ну, напр в словаре, или в отдельной табличке, или вообще не в кх
  • https://t.me/clickhouse_ru
    В зависимости от реквеста расчет может быть в разных группах. Попробую с arrayJoin поиграть
  • https://t.me/clickhouse_ru
    Вы ведь сначала группируете и считаете по ассетам, а затем во внешнем запросе делаете transform и уже группируете окончательно?
  • https://t.me/clickhouse_ru
    Одним запросом
  • https://t.me/clickhouse_ru
    ну попробуйте двумя группировкам. Непонятна фраза про max_query_size, ведь падать должно с ошибкой. Можно использовать external data и сделать join с ней.
  • https://t.me/clickhouse_ru
    max_query_size по дефолту 265кб. Тестовый sql выходит 600кб при 8тыс групп по одному расчету в группе. Пришлось увеличить параметр
  • https://t.me/clickhouse_ru
    Ясно. Ну я бы попробовал join с мемори или с https://clickhouse.yandex/docs/ru/operations/table_engines/external_data/
  • https://t.me/clickhouse_ru
    Пока не нашел в php клиенте как это сделать
  • https://t.me/clickhouse_ru
    А зачем это делать в кх, почему не в php.
  • GitHub - the-tinderbox/ClickhouseBuilder: Fluent queries builder for Clickhouse. Also has integration with Laravel / Lumen.

    Fluent queries builder for Clickhouse. Also has integration with Laravel / Lumen. - GitHub - the-tinderbox/ClickhouseBuilder: Fluent queries builder for Clickhouse. Also has integration with Larave...

  • https://t.me/clickhouse_ru
    @den_crane #82563 01:21 PM, 05 Jan 2019
    Замену и окончательную группировкк?
  • @pookieShmukie #82564 01:22 PM, 05 Jan 2019
    Там даже хелперы есть для создания мемори таблиц из файлов, строк и пр
  • https://t.me/clickhouse_ru
    @TETRUS #82565 11:33 PM, 05 Jan 2019
    Joined.
  • 06 January 2019 (14 messages)
  • bot
  • bot
  • https://t.me/clickhouse_ru
    @orloffv #82570 09:02 AM, 06 Jan 2019
    Привет.
    а как мне правильно enum поле сгруппировать(groupUniqArray), что бы получить строки, а не числа?
  • @pookieShmukie #82571 10:52 AM, 06 Jan 2019
    Во время выполнения мерджа, сервер падает и в логах вот такое чудо.
    2019.01.06 13:38:07.162302 [ 2 ] {} <Error> BaseDaemon: ########################################
    2019.01.06 13:38:07.163710 [ 2 ] {} <Error> BaseDaemon: (from thread 41) Received signal Segmentation fault: 11 (11).
    2019.01.06 13:38:07.163776 [ 2 ] {} <Error> BaseDaemon: Address: 0x1151dd000
    2019.01.06 13:38:07.163807 [ 2 ] {} <Error> BaseDaemon: Address not mapped to object.
    2019.01.06 13:38:07.164788 [ 2 ] {} <Error> BaseDaemon: 0. 0 clickhouse-server 0x0000000104b4e725 _ZN2DBL21deserializeBinarySSE2ILi2EEEvRNS_8PODArrayIhLm4096E9AllocatorILb0EELm15ELm16EEERNS1_IyLm4096ES3_Lm15ELm16EEERNS_10ReadBufferEm + 1413

    Проверялось на разных хостах. Сервер 18.16.0, на одном хосте собран из master ветки, на другом поставлен из менеджера пакетов, тоже 18.16.0.

    Сегфолт вообще нехорошая штука. issue закинуть?
  • @pookieShmukie #82572 10:52 AM, 06 Jan 2019
    @milovidov_an
  • https://t.me/clickhouse_ru
    Я не Миловидов, но заранее рекомндую снять и приложить strace
  • Да, обязательно.

    Из этого сообщения пока ничего непонятно.
    Стек трейс там несколькими строчками ниже... (в вашем куске только последний фрейм).
    Также желательно взять строчки выше, которые происходили в потоке 41. Они будут отмечены [ 41 ].

    Произошло на нескольких серверах одновременно? А эти серверы объединены в кластер и выполняют распределённые запросы? Тогда имеет смысл посмотреть также последние запросы.
  • Также странно, что имя символа не demangled. Если в логе только один стек фрейм - значит вы собрали ClickHouse без libunwind (зачем?).
  • @milovidov_an #82576 11:05 AM, 06 Jan 2019
    Для полноты нужны стек трейсы со всех серверов, на которых произошла ошибка, чтобы их сравнить.
  • @milovidov_an #82577 11:06 AM, 06 Jan 2019
    Если ваш сервер падает не один раз, а постоянно - это позволит проще разобраться в проблеме.
  • Ок, я чуть позже вернусь за компьютер и соберу всю информацию.

    Сервера не объединены в кластер и этот сегфолт упал именно при выполнении мерджа после запуска optimize table. Сервера standalone на разных OS (mac os собран из master, ubuntu из пакета).
  • https://t.me/clickhouse_ru
    @chertus ↶ Reply to #82520 #82579 02:58 PM, 06 Jan 2019
    https://github.com/yandex/ClickHouse/issues/3783 проявляется только на Decimal128. Если вдруг встретите на Decimal32/64 - заведите отдельный тикет
    Segfault on groupArray with Decimal128 · Issue #3783 · yandex/ClickHouse

    SELECT `time` -- groupArray((sensor_id, volume)) AS groupArr FROM ( SELECT (intDiv(toUInt32(received_at), 900) * 900) AS `time`, sensor_id, avg(value) AS volume FROM sensor_value WHERE sensor_id IN...

  • https://t.me/clickhouse_ru
    @kbespalov #82580 03:00 PM, 06 Jan 2019
    Понял, спасибо. Буду пока кастовать в double перед groupArray
  • @id_eugen #82581 06:45 PM, 06 Jan 2019
    Joined.
  • 07 January 2019 (83 messages)
  • опять боты
  • https://t.me/clickhouse_ru
    @orloffv #82586 11:46 AM, 07 Jan 2019
    если есть 2 колонки, ключи и значения, их можно как-то в кортеж трансформировать, что бы было одно поле с key -> value?
  • https://t.me/clickhouse_ru
    @orloffv #82587 11:48 AM, 07 Jan 2019
    {
    key1: value1,
    key2: value2,
    ....
    }
  • https://t.me/clickhouse_ru
    @kvapen ↶ Reply to #82586 #82588 11:58 AM, 07 Jan 2019
    смотри в сторону ARRAY JOIN
  • https://t.me/clickhouse_ru
    select toString(arrayMap(x-> (x,b[indexOf(a,x)]) , a)), toString(b) from (select [1,2,3] a, [5,6,7] b)
  • https://t.me/clickhouse_ru
    @orloffv #82590 12:25 PM, 07 Jan 2019
    спасибо и еще вопросик.
    запрос например такой
    select project, any(keys), any(values)
    group by project

    на что any поменять, что бы был(в принципе любой массив keys&values) но из одной строки
  • https://t.me/clickhouse_ru
    groupArray
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82591 #82592 12:30 PM, 07 Jan 2019
    select project, groupArray(keys), groupArray(values)
    group by project

    ?
  • https://t.me/clickhouse_ru
    @den_crane #82593 12:30 PM, 07 Jan 2019
    Да
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82591 #82594 12:30 PM, 07 Jan 2019
    а, я видимо не нравильно выразился
  • https://t.me/clickhouse_ru
    @orloffv #82595 12:31 PM, 07 Jan 2019
    я имел ввиду, any(keys), any(values)
    скорее всего выдаст какие-то случайные keys & values
    а как мне получить
    случайные keys & values, но которые лежат в одной строке?
  • https://t.me/clickhouse_ru
    @den_crane #82596 12:32 PM, 07 Jan 2019
    any(a,b)
  • https://t.me/clickhouse_ru
    @den_crane #82597 12:32 PM, 07 Jan 2019
    (())
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82596 #82598 12:34 PM, 07 Jan 2019
    Aggregate function any require single argument
  • https://t.me/clickhouse_ru
    @den_crane #82599 12:35 PM, 07 Jan 2019
    Я имел ввиду тупл any((a,b))
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82599 #82600 12:35 PM, 07 Jan 2019
    ааа)
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82599 #82601 12:37 PM, 07 Jan 2019
    ❤️
  • https://t.me/clickhouse_ru
    @molo4ko007 #82602 02:19 PM, 07 Jan 2019
    привет
  • https://t.me/clickhouse_ru
    @molo4ko007 #82603 02:19 PM, 07 Jan 2019
    а с отрицательными метриками памяти так и не было прогресса?
  • https://t.me/clickhouse_ru
    @molo4ko007 #82604 02:19 PM, 07 Jan 2019
    "metric":"MemoryTrackingInBackgroundProcessingPool","value":"-1294095600”
  • https://t.me/clickhouse_ru
    @molo4ko007 #82605 02:20 PM, 07 Jan 2019
    VERSION_FULL ClickHouse 18.16.1
    VERSION_DESCRIBE v18.16.1-testing
    VERSION_GITHASH 7624b0a20d25ea7021e33908cfcf6fdbc37938d1
  • https://t.me/clickhouse_ru
    @molo4ko007 #82606 02:23 PM, 07 Jan 2019
    у нас просто в одном кластере потребление памяти растет постоянно, там минимальная нагрузка
  • https://t.me/clickhouse_ru
    @molo4ko007 #82607 02:24 PM, 07 Jan 2019
    как-то так, от рестарта до рестарта
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    знакомая картинка https://github.com/yandex/ClickHouse/issues/3976
    решение простое compile_expressions = 0
    18.16.1 compile_expressions eats memory · Issue #3976 · yandex/ClickHouse

    Without compile expressions CH eats ~3 GB (2 cache_marks + 1 dictionary) With compile expressions upto 30GB (maybe indefinite) RSS (top): 8.5GB metric value formatReadableSize(value) CompiledExpres...

  • https://t.me/clickhouse_ru
    @molo4ko007 #82610 02:48 PM, 07 Jan 2019
    у меня такое еще с 12. разница в двух кластерах в том, что в обоих есть словари, но в одном файл со словарем пустой, в другом нет (в остальном идентичны)
  • https://t.me/clickhouse_ru
    @molo4ko007 #82611 02:49 PM, 07 Jan 2019
    я пытаюсь по коду понять, релевантно это или нет
  • https://t.me/clickhouse_ru
    @molo4ko007 #82612 02:55 PM, 07 Jan 2019
    что за флаг require_nonempty?
    https://github.com/yandex/ClickHouse/blob/5152e2b8fa43d71a88825c236339a4503c7b7619/dbms/src/Dictionaries/ComplexKeyHashedDictionary.cpp#L427

    и может ли он повлиять на resoure safety?
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data. Contribute to yandex/ClickHouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @molo4ko007 #82613 02:56 PM, 07 Jan 2019
    в смсле, если бросается исключение, может, не закрывается стрим?
  • https://t.me/clickhouse_ru
    @alexey_laptev #82614 08:21 PM, 07 Jan 2019
    всем привет, а если дропнули БД - есть варианты ее восстановить их каких нибуть логов?
  • https://t.me/clickhouse_ru
    если не было репликации или если дропнули на всех репликах то нет вариантов.
  • https://t.me/clickhouse_ru
    @alexey_laptev #82616 08:33 PM, 07 Jan 2019
    ну да
  • https://t.me/clickhouse_ru
    @alexey_laptev #82617 08:33 PM, 07 Jan 2019
    какой то бот удалил все бд с нидерладского ip
  • @70532431 #82618 08:36 PM, 07 Jan 2019
    посмотрите спам на имэйлах компании, новые файлы на сервере, мониторинг трафика на сервере - часто скачивают БД и потом дропают, и потом по первым найденным контактам или прямо на сервере оставляют контакт, с кем связаться для получения данных.
    если не видно по графику трафика, что было скачивание - баз уже нигде не найдёте :)
  • https://t.me/clickhouse_ru
    @alexey_laptev #82619 08:37 PM, 07 Jan 2019
    да сервер нигде не светился, ощущение что перебором нашли
  • @70532431 #82620 08:37 PM, 07 Jan 2019
    ))
  • https://t.me/clickhouse_ru
    @den_crane #82621 08:37 PM, 07 Jan 2019
    вот техника дошла, первый раз про такие чудеса вижу.
  • @70532431 #82622 08:37 PM, 07 Jan 2019
    так и делают
  • https://t.me/clickhouse_ru
    @alexey_laptev #82623 08:37 PM, 07 Jan 2019
    не смертельно, но не приятно
  • https://t.me/clickhouse_ru
    @strangeqargo #82624 08:38 PM, 07 Jan 2019
    о, значит нас ждет целая ВОЛНА удалений открытых серверов
  • https://t.me/clickhouse_ru
    @kbespalov #82625 08:38 PM, 07 Jan 2019
    у вас clickhouse в интернет торчит?
  • @70532431 #82626 08:38 PM, 07 Jan 2019
    можно в логах КХ посмотреть, может криво пытались создать таблицу с контактами вымогатели, и она зафейлилась и записалась в лог попытка со структурой. в структуре имя таблицы или бд часто и есть контакт
  • https://t.me/clickhouse_ru
    я думаю, что там тупо светили интерфейсом в свободный инторнет
  • @70532431 #82628 08:38 PM, 07 Jan 2019
    у товарищей снапшотов нет, кх торчит в инет - значит, базы не нужны были 😌
  • https://t.me/clickhouse_ru
    @alexey_laptev #82629 08:39 PM, 07 Jan 2019
    торчал да, не успели закрыть )
  • https://t.me/clickhouse_ru
    @alexey_laptev #82630 08:40 PM, 07 Jan 2019
    https://cl.ly/8692290f2b4f - вот так вот
  • https://t.me/clickhouse_ru
    @strangeqargo #82631 08:41 PM, 07 Jan 2019
    сделайте nmap на остальные хосты, мало ли что открытого найдется
  • https://t.me/clickhouse_ru
    @kbespalov #82632 08:43 PM, 07 Jan 2019
    я бы хотя бы логи пока не сротировались схоронил
  • @70532431 #82633 08:43 PM, 07 Jan 2019
    нидерланды, без шансов
  • https://t.me/clickhouse_ru
    @kbespalov #82634 08:43 PM, 07 Jan 2019
    погрепать что там он еще делал
  • https://t.me/clickhouse_ru
    @alexey_laptev #82635 08:44 PM, 07 Jan 2019
    удалил штук 20 тестовых бд, пару штук не удалил
  • https://t.me/clickhouse_ru
    @alexey_laptev #82636 08:44 PM, 07 Jan 2019
    по таблично
  • https://t.me/clickhouse_ru
    http://185.107.47.171 tor exit-node :D
  • https://t.me/clickhouse_ru
    @strangeqargo #82638 08:45 PM, 07 Jan 2019
    вот это без шансов
  • https://t.me/clickhouse_ru
    @alexey_laptev #82639 08:45 PM, 07 Jan 2019
    да и ладно, вобщем имейте ввиду )
  • @70532431 ↶ Reply to #82635 #82640 08:46 PM, 07 Jan 2019
    раз выборочно, может, кого-то увольняли по-недоброму
  • https://t.me/clickhouse_ru
    @alexey_laptev #82641 08:46 PM, 07 Jan 2019
    нет, ценности в них не было
  • @70532431 #82642 08:46 PM, 07 Jan 2019
    тогда странно, очень странно) что выборочно удалили
  • https://t.me/clickhouse_ru
    @alexey_laptev #82643 08:47 PM, 07 Jan 2019
    ну видимо бот - найшел и удалил, непонятно почему часть оставил
  • @70532431 #82644 08:47 PM, 07 Jan 2019
    зато у вас теперь есть такой жизненный урок) хорошо, что данные были неважные
  • https://t.me/clickhouse_ru
    @alexey_laptev #82645 08:47 PM, 07 Jan 2019
    это да
  • https://t.me/clickhouse_ru
    ну кстати, там в логах еще запросов от него не осталось?
  • @70532431 #82647 08:47 PM, 07 Jan 2019
    раз трейс, должны были остаться. угу.
  • https://t.me/clickhouse_ru
    @alexey_laptev #82648 08:48 PM, 07 Jan 2019
    остались
  • https://t.me/clickhouse_ru
    @strangeqargo #82649 08:51 PM, 07 Jan 2019
    просто интересно, какие там еще запросы были
  • https://t.me/clickhouse_ru
    @alexey_laptev #82650 08:51 PM, 07 Jan 2019
    с этим к сожалению не помогу, главный вывод - держать двери закрытыми с самого начала
  • https://t.me/clickhouse_ru
    @strangeqargo #82651 08:52 PM, 07 Jan 2019
    :D
  • https://t.me/clickhouse_ru
    @strangeqargo #82652 08:52 PM, 07 Jan 2019
    несколько лет уже ходят и сносят базы данных волной, то мускули, то монги, а мы все ненаучимся
  • https://t.me/clickhouse_ru
    @strangeqargo #82655 08:53 PM, 07 Jan 2019
    вот более чем уверен, что ребята сидят и мониторят список популярных dbms и как только выше порогового значения, начинают сканить
  • @70532431 #82657 08:54 PM, 07 Jan 2019
    это или консалтеры, или сам яндекс в облако загоняет, имхо
  • https://t.me/clickhouse_ru
    ++
  • @70532431 #82659 08:54 PM, 07 Jan 2019
    китайцы и индусы обычно выкуп требуют за базы
  • @70532431 #82660 08:54 PM, 07 Jan 2019
    а тут получается без профита
  • https://t.me/clickhouse_ru
    получить список бд
    получить список таблиц

    что там попадать?
  • https://t.me/clickhouse_ru
    ну вот потому и интересно, что было проигнорено, что осталось (намек на "а там были еще запросы?")
  • https://t.me/clickhouse_ru
    @alexey_laptev #82664 09:13 PM, 07 Jan 2019
    DETACH TABLE, DROP TABLE - с 185.107.47.171
    DETACH DATABASE, DROP DATABASE - c 144.217.90.68

    но получения списка БД и таблиц что-то не вижу
  • https://t.me/clickhouse_ru
    @alexey_laptev #82665 09:14 PM, 07 Jan 2019
    обращение к system.tables только с моего ip
  • https://t.me/clickhouse_ru
    @strangeqargo #82666 09:28 PM, 07 Jan 2019
    >https://twitter.com/IanColdwater/status/1082386334075867136

    простите
    Ian Coldwater 👻🌿✨

    It's not dropping tables, it's discarding data that doesn't spark joy.

  • https://t.me/clickhouse_ru
    вот ето интересно
  • https://t.me/clickhouse_ru
    @strangeqargo #82668 09:29 PM, 07 Jan 2019
    с двух ip зашли
  • @70532431 #82669 09:31 PM, 07 Jan 2019
    144.217.90.68 интереснее, Франция, OVH - эти ребята очень серьёзно относятся к безопасности, там рега чуть ли не по паспорту, насколько я помню
  • @70532431 #82670 09:32 PM, 07 Jan 2019
    ну вообще в некоторых юрисдикциях если у вас сервер открыт, нет предупреждающего баннера, я могу заходить и делать что хочу, потому что было не заперто и я не мог знать, что нельзя сюда заходить)
  • https://t.me/clickhouse_ru
    @aleksander_gorbatov #82671 10:41 PM, 07 Jan 2019
    Joined.
  • 08 January 2019 (119 messages)
  • https://t.me/clickhouse_ru
    @343206394 #82672 07:46 AM, 08 Jan 2019
    Добрый день. Есть вопрос по вью. Чувствую что-то не так делаю или не понимаю очевидного.

    Есть таблица (реплицированная, распределенная) в которую постоянно пишут (пишут в локальные таблицы), на основе ее создаем вью чтобы аггрегировать данные.

    CREATE MATERIALIZED VIEW default.MetricStats ON CLUSTER metrics
    ENGINE = ReplicatedAggregatingMergeTree('/clickhouse/tables/metrics/{shard}/MetricStats', '{replica}')
    PARTITION BY floor(time / 86400)
    ORDER BY (time, appId) POPULATE AS
    SELECT
    uniqExactState(tags.value[indexOf(tags.name, 1)]) AS `os.host`,
    uniqExactState(tags.value[indexOf(tags.name, 72)]) AS `container.id`,
    uniqExactState(tags.value[indexOf(tags.name, 1131263)]) AS `container.host.hostname`,
    appId,
    floor(timestamp / 60) * 60 AS time
    FROM default.Metrics
    WHERE timestamp > now()-300
    GROUP BY
    time,
    appId

    Распределенная над вью для чтения
    CREATE TABLE IF NOT EXISTS default.MetricStatsDistributed ON CLUSTER metrics AS default.MetricStats
    ENGINE = Distributed(metrics, default, MetricStats, rand());

    потом выбираем из этой распределенноя (которая над локальными вью)

    SELECT
    uniqExactMerge(`os.host`) AS `os.host`,
    uniqExactMerge(`container.id`) AS `container.id`,
    uniqExactMerge(`container.host.hostname`) AS `container.host.hostname`,
    appId,
    time
    FROM MetricStatsDistributed
    WHERE appId = 13629
    GROUP BY
    appId,
    time
    ORDER BY time ASC

    И получаем следующее
    ┌─os.host─┬─container.id─┬─container.host.hostname─┬─appId─┬──────────time─┐
    │ 35 │ 486 │ 1 │ 13629 │ 1546932480000 │
    │ 35 │ 486 │ 1 │ 13629 │ 1546932540000 │
    │ 35 │ 486 │ 1 │ 13629 │ 1546932600000 │
    │ 35 │ 486 │ 1 │ 13629 │ 1546932660000 │
    │ 35 │ 486 │ 1 │ 13629 │ 1546932720000 │
    │ 35 │ 480 │ 1 │ 13629 │ 1546932780000 │ >>> ТУТ СОЗДАЛИ ВЬЮ
    │ 29 │ 287 │ 1 │ 13629 │ 1546932840000 │
    │ 27 │ 376 │ 1 │ 13629 │ 1546932900000 │
    │ 27 │ 330 │ 1 │ 13629 │ 1546932960000 │
    │ 21 │ 309 │ 1 │ 13629 │ 1546933020000 │
    └─────────┴──────────────┴─────────────────────────┴───────┴───────────────┘

    35 это правильное значение. 29, 27, 21 это мы что-то потеряли. Такое ощущение что что-то во вью попало а потом не дописалось

    Я что-то странное хочу или очевидно делаю что-то не так?

    Спсб
  • @k1rk_t #82673 08:04 AM, 08 Jan 2019
    оо у меня такое же
  • @k1rk_t #82674 08:04 AM, 08 Jan 2019
    дев простучал и все дропнул что смог
  • @k1rk_t #82675 08:08 AM, 08 Jan 2019
    ip 185.220.101.5
  • @k1rk_t #82676 08:09 AM, 08 Jan 2019
    хороший парень. создал табличку READ_ME_WARNING с одной записью
    PAY 0.5 BTC TO RETURN YOUR DATA (OUR BTC WALLET ADDRESS: 32Qy9tS9YWpK1yKFGWGcV2pUNtzaaSbANs) AND SEND SERVER IP AND PROOF TO hacktarget@protonmail.com
  • https://t.me/clickhouse_ru
    это нищехостинг, который даже на абузы почти не реагирует :)
  • @mmmhh93 #82678 08:15 AM, 08 Jan 2019
    http интерфей сервера торчал в мир?
  • @mmmhh93 #82679 08:16 AM, 08 Jan 2019
    Или есть уязвимости какие-то?
  • +
  • плевок в сторону azure - нищебродское отношение к клиентам и их тикетам, если ты не платишь много денег, то-есть приоритетность и качество решения вопроса зависит от кол-ва денег, потраченное на услуги и пакеты услуг

    PS: саппорт индусский и н̶е̶ ̶у̶м̶е̶е̶т̶ не может звонить в РФ, Украину и Белоруссию :D
  • @729400630 #82682 08:30 AM, 08 Jan 2019
    Joined.
  • @mmmhh93 #82683 08:31 AM, 08 Jan 2019
    У нас очень стереотипное отношение к индусам. Разные бывают
  • @mmmhh93 #82684 08:32 AM, 08 Jan 2019
    А бизнес - это не меценацтво, а способ заработка денег. И делают они то, что максимизирует их прибыль. Видимо такое отношение к клиентам с низким чеком оправдано
  • https://t.me/clickhouse_ru
    @343206394 #82685 08:32 AM, 08 Jan 2019
    Согласен. У нас на текущем месте было 3, все ужасны.
    Сейчас взяли 4 я оч скептически отнесся, но был оч неправ
    Парень - золото
  • у меня очень стереотипное отношение к юзерам, без фоток и аватарок ;)
  • @mmmhh93 #82687 08:33 AM, 08 Jan 2019
    Надо избавлятся от стереотипов )
  • https://t.me/clickhouse_ru
    @renatkalimullin #82688 08:59 AM, 08 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    Нет идей? Тикет создать как то неправильно будет
  • https://t.me/clickhouse_ru
    @ManfrediK #82690 09:55 AM, 08 Jan 2019
    коллеги, подскажите как юзеру запретить некоторые операции
  • https://t.me/clickhouse_ru
    @ManfrediK #82691 09:55 AM, 08 Jan 2019
    например DROP Database
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82690 #82692 09:57 AM, 08 Jan 2019
    readonly есть
  • https://t.me/clickhouse_ru
    @ManfrediK #82693 09:59 AM, 08 Jan 2019
    ага нашел
  • https://t.me/clickhouse_ru
    @msg_kurt #82694 10:51 AM, 08 Jan 2019
    Приветствую. Что-то я неистово туплю. Что надо сделать, чтобы результатом запроса типа SELECT arrayConcat([1, 2], [2, 4]) AS res было 1,2,4, то бишь отсечь в результирующем массиве повторяющиеся значения
  • https://t.me/clickhouse_ru
    @orloffv #82695 10:54 AM, 08 Jan 2019
    arrayUniq?
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82695 #82696 10:57 AM, 08 Jan 2019
    почти) не докрутилась страница функций по работе с массивами до конца. По идее, вот решение: SELECT arrayReduce('groupUniqArray', arrayConcat([1, 2], [2, 4]))
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82696 #82697 10:58 AM, 08 Jan 2019
    Правда, результирующий массив перевернут
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82695 #82698 10:59 AM, 08 Jan 2019
    эта функция считает количество уникальных значений в массиве
  • @mmmhh93 #82699 11:00 AM, 08 Jan 2019
    Подскажите проверенный ansible сценарий для установки CH кластера
  • гитхаб поиск и больше всего звезд
  • @mmmhh93 #82701 11:01 AM, 08 Jan 2019
    Ок, спасибо
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #82702 12:24 PM, 08 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #82703 12:26 PM, 08 Jan 2019
    Всем привет! подскажите пожалуйста как программа клиент должна реагировать на ошибку вида "ZooKeeper session has been expired."?
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #82704 12:27 PM, 08 Jan 2019
    просто попробовать записать абсолютно такой же блок данных немного позже? обязательно ли это должен быть идентичный блок данных (во избежание случайной дубликации)?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #82704 #82705 12:45 PM, 08 Jan 2019
    Если отвалилось по ZK значит блок не записался и чексум для дедупликации тоже нет. Просто ретрайте. PS: расчитывать на дедупликацию средствами КХ так себе.
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #82706 12:46 PM, 08 Jan 2019
    спасибо!
    а на какую дедупликацию можно рассчитывать? сейчас всё плохо с этим, постоянно хаваем дубли когда сеть нестабильная или ещё какие проблемы
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #82707 12:47 PM, 08 Jan 2019
    но сейчас просто мы не формируем идентичные блоки данных и думали что если начнём так делать и ретраить пока не запишем без ошибки то всё станет хорошо за счёт дедупликации ZK
  • https://t.me/clickhouse_ru
    @kbespalov #82708 12:47 PM, 08 Jan 2019
    а движок replicatedmergetree ?
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #82709 12:47 PM, 08 Jan 2019
    да
  • https://t.me/clickhouse_ru
    @kbespalov #82710 12:47 PM, 08 Jan 2019
    там кажется около 100 последних блоков хранится
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #82711 12:47 PM, 08 Jan 2019
    пишем в Distributed таблицу
  • https://t.me/clickhouse_ru
    @kbespalov #82712 12:48 PM, 08 Jan 2019
    короче 100 раз ретрай и приедете
  • https://t.me/clickhouse_ru
    @kbespalov #82713 12:48 PM, 08 Jan 2019
    где то можно в космос выкрутить параметр этот но я не помню точно
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #82714 12:48 PM, 08 Jan 2019
    печаль, но всё равно хоть какое-то решение, пусть и не 100 процентное
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #82715 12:49 PM, 08 Jan 2019
    сейчас ситуация такая что пишем в Distributed таблицу (под ней два шарда в каждом по две реплики, таблицы ReplicatedMergeTree и internal_replication = false)
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #82711 #82716 12:50 PM, 08 Jan 2019
    Там по дефолту рандомно данные по шардам уедут, никакая дедупликация работать не будет
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #82717 12:51 PM, 08 Jan 2019
    да, об этом тоже думали что пора прекратить писать в distributed
    вот только прикол в том что дубликация оказалась не на шардах, а на репликах
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #82717 #82718 12:52 PM, 08 Jan 2019
    В репликах данные разные?
  • https://t.me/clickhouse_ru
    @kbespalov #82719 12:53 PM, 08 Jan 2019
    replicated_deduplication_window = 100
    replicated_deduplication_window_seconds = 7 * 24 * 60 * 60
  • https://t.me/clickhouse_ru
    @kbespalov #82720 12:53 PM, 08 Jan 2019
    кажется нашел
  • https://t.me/clickhouse_ru
    сейчас копаю историю, было давненько
  • https://t.me/clickhouse_ru
    @kbespalov #82723 12:54 PM, 08 Jan 2019
    @gofort это прям в движке настройка:
    https://github.com/yandex/ClickHouse/blob/0eed697623afd251c1908073c4a2850a9bfc9cdc/dbms/tests/integration/test_extreme_deduplication/configs/conf.d/merge_tree.xml
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data. Contribute to yandex/ClickHouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    это построчная дедупликация? или блочная?
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #82725 12:57 PM, 08 Jan 2019
    не очень понятно чем это лучше чем дедупликация ZK
  • https://t.me/clickhouse_ru
    @kbespalov #82726 12:57 PM, 08 Jan 2019
    How many last blocks of hashes should be kept in ZooKeeper (old blocks will be deleted). */
  • https://t.me/clickhouse_ru
    @kbespalov #82727 12:57 PM, 08 Jan 2019
    You can set very big replicated_deduplication_window to avoid duplicating INSERTs during that period of time.
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #82728 12:59 PM, 08 Jan 2019
    а ну это по сути и есть дедупликация через ZK
  • https://t.me/clickhouse_ru
    @kbespalov #82729 12:59 PM, 08 Jan 2019
    ну я про нее и говорю. по умолчанию она помнит последние 100 вставок
  • https://t.me/clickhouse_ru
    @kbespalov #82730 01:00 PM, 08 Jan 2019
    если во время ретраев у вас набежит 100 вставок то 101я стрельнет дубликатом
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #82731 01:01 PM, 08 Jan 2019
    ну там zookeper expired, соответственно не встанет, судя по t.me/clickhouse_ru/82705
    Kirill Shvakov in ClickHouse не тормозит

    Если отвалилось по ZK значит блок не записался и чексум для дедупликации тоже нет. Просто ретрайте. PS: расчитывать на дедупликацию средствами КХ так себе.

  • https://t.me/clickhouse_ru
    в репликах данные в общем были одинаковые, просто они были продублированы несколько раз
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #82732 #82733 01:07 PM, 08 Jan 2019
    Ну, это ОК. Значит у вас проблема только с ретраями.
  • https://t.me/clickhouse_ru
    если я правильно понимаю то дубликация возникает только из-за того что я в следующий раз записываю теже даные но в рамках другого блока, так?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #82734 #82736 01:11 PM, 08 Jan 2019
    Там формируется блок для записи и чексумма этого блока проверяется. Поэтому нужно писать ровно тоже самое и в тот же шард
  • https://t.me/clickhouse_ru
    в рамках гошной либы возможно ли повторно сформировать такой же блок если tx не сохранился и был rollback?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    ага)
  • https://t.me/clickhouse_ru
    @kshvakov #82740 01:14 PM, 08 Jan 2019
    Можно, но чуть сложнее. Можно создавать блок на стороне приложения и работать с ним
  • https://t.me/clickhouse_ru
    @kshvakov #82741 01:14 PM, 08 Jan 2019
    ClickHouse-Ninja/Proton

    High performance Pinba server. Contribute to ClickHouse-Ninja/Proton development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    оО интересно, спасибо
    а если мы берём теже самые данные, в том же порядке и делаем tx.Begin, stmt,exec то мы получим такой же блок или нет?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #82742 #82743 01:19 PM, 08 Jan 2019
    Да
  • https://t.me/clickhouse_ru
    ещё вопросик такой, если запись происходит в distributed таблицу и произошла ошибка, то при повторе tx.Commit данные полетят на тот же шард (при том что шардирование рандомное в таблице указано) или нет?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #82744 #82745 01:22 PM, 08 Jan 2019
    Нет, только если пишите сами в какой-то конкретный шард
  • https://t.me/clickhouse_ru
    выходит что даже если сформировать одинаковый блок данных и писать его в distributed таблицу с рандомным шардированием, то можно с лёгкостью получить дубли данных только на разных шардах ...
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #82746 #82747 01:27 PM, 08 Jan 2019
    Да
  • https://t.me/clickhouse_ru
    хорошо, спасибо большое!
  • https://t.me/clickhouse_ru
    спасибо за помощь 🙂
  • https://t.me/clickhouse_ru
    @yourock88 #82750 02:25 PM, 08 Jan 2019
    Если вам важно отсутствие дублей, и вы не формируете всегда одинаковые блоки при вставке, то самый лучший вариант по моему мнению — это шардировать самому и использовать ReplacingMergeTree или похожий (CollapsingMergeTree). Но при выборке тоже нужно будет удалять дубликаты или делать SELECT ... FINAL
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #82751 02:29 PM, 08 Jan 2019
    правильнее просто блоки одинаковые писать, поэтому так и сделаем 🙂
  • https://t.me/clickhouse_ru
    @salttan ↶ Reply to #82672 #82752 02:29 PM, 08 Jan 2019
    Данные, которые вставлялись в таблицу в то время, когда шел populate, во вьюху не попадут
  • https://t.me/clickhouse_ru
    @343206394 #82753 02:40 PM, 08 Jan 2019
    Они не попадают и потом
  • https://t.me/clickhouse_ru
    @343206394 #82754 02:41 PM, 08 Jan 2019
    Вернее как я выше написал не все КМК
  • https://t.me/clickhouse_ru
    @343206394 #82755 02:41 PM, 08 Jan 2019
    Тоесть populate закончился а данные и через час новые с "пропусками"
  • @molchanovdp #82756 03:36 PM, 08 Jan 2019
    Добрый вечер!
    У меня кластер состоит из 4 шардов без реплик. Пользователю default на всех шардах указал пароль в sha256, в настройках кластера в config.xml везде прописал пароль пользователя default в открытом виде.
    Но кликхаус в логах все равно ругается: Password required for user default.

    Подскажите, нужно еще что-то сделать?

    Версия 18.14.15
  • https://t.me/clickhouse_ru
    А пользователю default разрешено ходить с адресов кластера?
  • @molchanovdp #82758 03:45 PM, 08 Jan 2019
    сейчас проверю
  • https://t.me/clickhouse_ru
    А то, помнится, наступал на что-то похожее...
  • @magdenik #82760 04:31 PM, 08 Jan 2019
    Joined.
  • @magdenik #82761 04:34 PM, 08 Jan 2019
    Здравствуйте. Стал при запуске писать такое, не пойму что делать. Подскажите пожалуйста
  • @MentalSky #82762 07:37 PM, 08 Jan 2019
    всем доброго времени суток, а как вывести из таблицы определенной кол-во строк, пропустим определенное их кол-во?
  • https://t.me/clickhouse_ru
    @orantius #82763 07:39 PM, 08 Jan 2019
    limit x, y
  • @MentalSky #82764 07:39 PM, 08 Jan 2019
    оу, из доки почему то не понял этого, спасибо, попробую
  • @u21974 #82765 07:49 PM, 08 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @Kasatikoff #82766 08:02 PM, 08 Jan 2019
    Здравствуйте! Есть запросы с сортировкой типа ORDER BY (value=1, value=3, value=6...) DESC на что можно заменить сортировку и сохранить последовательность?
  • https://t.me/clickhouse_ru
    @Abduqaxxorovich_i #82767 08:08 PM, 08 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    вопрос непотятный, т.е. у вас запрос order by value desc
    выводит
    6
    3
    1

    а вам надо убрать секцию order by value desc
    и что бы вывелось тоже самое
    6
    3
    1
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @orloffv #82770 08:18 PM, 08 Jan 2019
    а что не так с notEmpty & null?
  • https://t.me/clickhouse_ru
    @orloffv #82771 08:18 PM, 08 Jan 2019
    есть какой-то универсальный метод, который проверит пустой массив, пустую строку и null?
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #82771 #82772 08:25 PM, 08 Jan 2019
    на питоне пишете?
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82772 #82773 08:25 PM, 08 Jan 2019
    JS)
  • https://t.me/clickhouse_ru
    на самом деле выведет как написано 1, 3, 6
    просто этих value=group может быть и 10тыс и sql запрос получается на несколько страниц
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82774 #82775 08:27 PM, 08 Jan 2019
    положи в таблицу?
  • https://t.me/clickhouse_ru
    а что написать в ORDER BY ?
  • https://t.me/clickhouse_ru
    @orloffv #82777 08:28 PM, 08 Jan 2019
    ну ты поджойнить можешь и отсортировать по этому полю
  • https://t.me/clickhouse_ru
    дело в том что эта последовательность value=group не отсортирована по порядку
    может быть 100, 5, 1001, 2, 10, 22, 6
  • https://t.me/clickhouse_ru
    т.е. еще один атрибут нужен у группы, порядок сортировки, 1,2,3 , а не проще на клиенте это все сделать?
  • https://t.me/clickhouse_ru
    1. нужно чтобы результат запроса был такой же как и раньше
    2. там в запросе дальше еще LIMIT идет
  • https://t.me/clickhouse_ru
    ну тогда либо join либо словарь

    create table X ( val UInt64, group String, wei Int64) Engine = Join(ANY, LEFT, val);
    insert into X values(1, 'a', 1),(6, 'b', 2),(3,'c',3);

    select val, group from (select toUInt64(1) val union all select 3 union all select 6) any left join X using(val)
    order by wei
  • https://t.me/clickhouse_ru
    а если групп будет 5тыс? 5тыс all select N ?
    упрощенно запрос такой
    SELECT value, SUM(metric) ... GROUP BY value ORDER BY (value='169', value='117', value='153'...) DESC LIMIT 0,20
  • @madgopher #82783 09:34 PM, 08 Jan 2019
    а у вас сорцы гифок ещё остались? тут с переводами косяк
  • https://t.me/clickhouse_ru
    какая разница, на 5тыс. join-ы и словари отлично работают, вот если 5млн. тогда да, уже несколько секунд будет работать.
  • https://t.me/clickhouse_ru
    я про то что ты написал
    (select toUInt64(1) val union all select 3 union all select 6)
  • https://t.me/clickhouse_ru
    ты добавил три елемента и написал три select
  • https://t.me/clickhouse_ru
    это пример левой таблицы, там где у вас данные лежат
  • https://t.me/clickhouse_ru
    @den_crane #82788 11:09 PM, 08 Jan 2019
    а замены я предлагаю заинстертить в X
  • https://t.me/clickhouse_ru
    @den_crane #82789 11:09 PM, 08 Jan 2019
    вместе с полем wei -- порядок сортировки
  • https://t.me/clickhouse_ru
    еще не понял зачем три колонки в X, про wei понятно. достаточно же group, wei
  • https://t.me/clickhouse_ru
    ну значит у меня ваш предыдущий вопрос подмешался в голове, который вы задавали 3 дня назад.
  • https://t.me/clickhouse_ru
    он кстати в этом же запросе, пытаюсь соеденить его с LEFT JOIN. сделал более простой вариант в transform() вместо перечисления массивов в коде, сделал slect из таблицы
  • 09 January 2019 (229 messages)
  • https://t.me/clickhouse_ru
    @orloffv #82793 06:54 AM, 09 Jan 2019
    Не знает никто?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @orloffv #82795 06:54 AM, 09 Jan 2019
    а что не так с notEmpty & null?
  • https://t.me/clickhouse_ru
    @orloffv #82796 06:54 AM, 09 Jan 2019
    есть какой-то универсальный метод, который проверит пустой массив, пустую строку и null?
  • https://t.me/clickhouse_ru
    @dmitrikr #82797 06:57 AM, 09 Jan 2019
    😢👍😚🤪🤪
  • https://t.me/clickhouse_ru
    @dmitrikr #82798 06:57 AM, 09 Jan 2019
    я на твой тлф из справочника звоню
  • https://t.me/clickhouse_ru
    @Vasyaabr #82799 07:29 AM, 09 Jan 2019
    Привет!
    Решаем сейчас задачу предоставления доступа юзеру к определенным строкам таблицы. Т.к. нативно такого (пока) нет, решили сделать так:
    1. Создать на репликах отдельную БД, и в ней копию таблицы (по структуре). Юзеру дать доступ только к этой БД.
    2. Сделать mat view , который будет класть из основной таблицы основной базы в эту копию только нужные строки.

    Взлетит ли? Может есть способ попроще?
    Напрягает необходимость поддерживать структуру скопированной таблицы и mat view идентичной основной. Ну и необходимость дублирования данных тоже слегка мешает (хоть их и не много).
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82799 #82800 07:33 AM, 09 Jan 2019
    Можно не давать пользователю делать запросы в базу напрямую, а через обертку. Добавить ещё поле в таблицу про права и чтобы обертка делала добавляла where по этому ролю автоматом
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82799 #82801 07:34 AM, 09 Jan 2019
    Ещё был доклад про примерно это у ребят из дойчебанка вроде.
  • https://t.me/clickhouse_ru
    @orloffv #82802 07:35 AM, 09 Jan 2019
    004. Блиц доклады пользователей ClickHouse

    12 декабря в Яндексе прошла большая встреча, на которой мы подвели промежуточные итоги СУБД ClickHouse как открытого ПО. За это время сотни компаний начали ей пользоваться. Специалисты из известных компаний рассказывают о своём опыте использования ClickHouse. Чего удалось достичь и с какими проблемами довелось столкнуться. Другие видео встречи https://events.yandex.ru/events/meetings/12-dec-2017/

  • @332632270 #82803 08:11 AM, 09 Jan 2019
    Всем привет. Кто-нибудь сохранял в колонке таблицы данные в виде JSON? как я понял отдельного типа колонок для этого нет и данные хранятся как String? Сильно будет бить по производительности хранить неопределенные на момент проектирования таблицы данные таким образом, а потом во время запроса использовать соответствующие функции для для работы с JSON?
  • https://t.me/clickhouse_ru
    @Vasyaabr #82804 08:31 AM, 09 Jan 2019
    А почему не в массив класть?
  • 1. ну массив - это же данные одного типа? у меня могут быть и инты, и даты и строки. Или стоит сделать строковый массив и все это хранить в виде строк, парся при необходимости?
    2. мне нужно потом как-то различать параметры. нужно чтобы было некоторое key-value.
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82805 #82806 08:40 AM, 09 Jan 2019
    Две колонки. Keys, values
  • https://t.me/clickhouse_ru
    Да, в String. Имейте в виду, что парсить JSON можно только на уровне вложенности 1. Лучше всего создать потом несколько новых колонок, с нужным DEFAULT и выполнить OPTIMIZE TABLE ... FINAL, чтобы поиск по нужным колонкам был быстрым.
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82807 #82808 08:45 AM, 09 Jan 2019
    Не понял тебя
  • https://t.me/clickhouse_ru
    Из JSON вида {"a":{"b":5}} не получится получить вложенный b
  • На самом деле если структура вложенных ключей простая - то можно, хотя и немного чуднО:
    SELECT visitParamExtractInt(visitParamExtractRaw('{"a":{"b":5}}', 'a'), 'b') AS x

    ┌─x─┐
    │ 5 │
    └───┘
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #82811 08:56 AM, 09 Jan 2019
    А зачем так сложно?
    SELECT visitParamExtractInt('{"a":{"b":5}}', 'b')

    ┌─visitParamExtractInt('{"a":{"b":5}}', 'b')─┐
    │ 5 │
    └────────────────────────────────────────────┘
  • @mfilimonov #82812 08:57 AM, 09 Jan 2019
    А при инсертах - там не очень давно была добавлена возможность читать подключи в Nested поля. Но только для одного конкретного формата.
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #82813 08:57 AM, 09 Jan 2019
    Работает на любом уровне вложенности, но сам уровень контролировать нельзя
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82809 #82814 08:58 AM, 09 Jan 2019
    Не понял зачем final
  • https://t.me/clickhouse_ru
    Может и не нужен :), но так он точно материализует default колонки
  • https://t.me/clickhouse_ru
    Разве это не пофиксили?
  • Ну с этим двойным вызовом как раз можно контролировать:
    SELECT visitParamExtractInt(visitParamExtractRaw('{"b":1,"a":{"b":2},"b":3}', 'a'), 'b') AS x

    ┌─x─┐
    │ 2 │
    └───┘
  • https://t.me/clickhouse_ru
    Зачем же это фиксить? Это фича, а не бага
  • https://t.me/clickhouse_ru
    Так себе фича, имена ведь не обязаны быть уникальными
  • Немного сомнительная фича на самом деле :)
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #82821 09:01 AM, 09 Jan 2019
    RTFM )
    https://clickhouse.yandex/docs/ru/single/index.html?#funktsii-dlia-raboty-s-json

    3. Поля ищутся на любом уровне вложенности, без разбора. Если есть несколько подходящих полей - берётся первое.
    Документация ClickHouse | Документация ClickHouse

    ClickHouse-это быстрая система управления базами данных с открытым исходным кодом, ориентированная на столбцы, которая позволяет создавать аналитические отчеты о данных в режиме реального времени с использованием SQL-запросов

  • @mfilimonov #82822 09:02 AM, 09 Jan 2019
    Я так понимаю так сделано просто чтоб парсер работал максимально быстро.
  • https://t.me/clickhouse_ru
    @yourock88 #82823 09:02 AM, 09 Jan 2019
    (несмотря на то, что мы сами составляем JSON, обычно именно JSON используется тогда, когда мы "не хотим думать", и тут эта фича становится наоборот очень даже багом, мешающим получить правильный ответ, причем только иногда)
  • https://t.me/clickhouse_ru
    @yourock88 #82824 09:03 AM, 09 Jan 2019
    Поэтому я и говорю о том, что JSON правильно парсится только с уровнем вложенности 1
  • @mfilimonov #82825 09:04 AM, 09 Jan 2019
    По-моему то, что парсер "случайно" извлекает ключи и из глубоких структур JSON без возможности контролировать этот процесс - просто побочный эффект использования такого "quick & dirty" парсера.
  • @mfilimonov #82826 09:05 AM, 09 Jan 2019
    Я так понимаю связано это с тем что в Яндексе просто всегда плоские JSON используются.
  • @mfilimonov #82827 09:05 AM, 09 Jan 2019
    в этих visitParam
  • По идее можно практический любой JSON при определенных усилиях привести к плоскому. Типа
    {"a.b":"4"} вместо {"a":{"b":"4"}}. С таблицами хуже, но тоже можно.
  • Это есть в планах. Stay tuned, как говорится :) А если есть ресурсы (особенно в C++) то можете помочь проекту в этом.
  • @freezlite #82830 09:20 AM, 09 Jan 2019
    как импортнуть sql файл на несколько строк ?
  • https://t.me/clickhouse_ru
    @Vasyaabr ↶ Reply to #82829 #82831 09:23 AM, 09 Jan 2019
    Да, я видел issue с пометкой что "будет" :) Но надо сейчас, поэтому извращаемся.
  • @faerics #82832 09:27 AM, 09 Jan 2019
    скажите, а как создать табличку из запроса? Не получается угадать синтаксис, а в доке что-то не вижу.
  • Если там несколько отдельных запросов - то придется по одному.
  • @freezlite #82834 09:28 AM, 09 Jan 2019
    печаль
  • @freezlite #82835 09:28 AM, 09 Jan 2019
    в скрипте через xargs но в этом случае падают комментарии
  • Насколько я помню примерно так CREATE TABLE xxx Engine=... Partition by ... ORDER BY ... AS SELECT ...
  • @faerics ↶ Reply to #82836 #82837 09:31 AM, 09 Jan 2019
    Да, спасибо. Я ожидал, что сначала запрос, а потом параметры таблицы)
  • https://t.me/clickhouse_ru
    @bufoviridis #82838 09:36 AM, 09 Jan 2019
    Недавно на сервере подошло к концу место, кх перевёл одну таблицу в ro, что нормально, но при попытке записи в другую через clickhouse-client говорил, что всё ок, ничего при этом не записывая. Можно ли как-нибудь отменить поведение второго типа, чтобы кх сообщал о невозможности записи? Версия 18.14.15
  • https://t.me/clickhouse_ru
    @bufoviridis #82839 09:42 AM, 09 Jan 2019
    и вдогонку: как посчитать, сколько свободного места нужно кх для нормальной работы?
  • https://t.me/clickhouse_ru
    CH будет объединять куски данных, чтобы производить оптимизации (хранения и чтения). Допустим у вас есть 2 куска размером по N Gb. Оценка сверху - надо места 4 x N Gb ( 2 x N - исходные данные, и 2 x N на случай если объединение двух кусков не дало выигрыша по месту - в какой-то момент на диске будут и исходные данные и объединённые).
  • https://t.me/clickhouse_ru
    @bufoviridis #82841 09:55 AM, 09 Jan 2019
    Спасибо!
  • https://t.me/clickhouse_ru
    @skulkov #82842 10:27 AM, 09 Jan 2019
    Joined.
  • @freezlite #82843 10:29 AM, 09 Jan 2019
    а в Materialized view можно инсерт сделать без селекта?
  • @mmmhh93 #82844 10:38 AM, 09 Jan 2019
    Ставлю КХ из стабильной дебиан репы
    deb http://repo.yandex.ru/clickhouse/deb/stable/ main/
    , но system.build_options говорить что
    │ VERSION_DESCRIBE │ v18.16.1-testing

    Это ок?
  • @mmmhh93 #82845 10:38 AM, 09 Jan 2019
    Версия стабильная?
  • https://t.me/clickhouse_ru
    @kbespalov #82846 10:42 AM, 09 Jan 2019
    Привет. Кликхаус как нибудь опирается на знание о выбранном ключе шардирования в distributed или select все равно улетают на все шарды?
  • @kanterov ↶ Reply to #82846 #82847 11:13 AM, 09 Jan 2019
    В последней версии опция чтобы улетали только на нужные шарды, но она предполагает что данные правильно шардированы
  • https://t.me/clickhouse_ru
    @msg_kurt #82848 11:17 AM, 09 Jan 2019
    Приветствую. Возник вопрос по поводу мониторинга скорости отработки запросов. Нашел обертку, реализующую нативный протокол КХ с lz4. По логике вещей, забор инфы на клиент через нативный протокол должен происходить существенно быстрей, чем через JSON (ведь тут сериализация, пусть и быстрая, на стороне КХ, а потом десериализация на клиенте). Простой же бенчмарк на одном и том же запросе (результат - одна колонка) показывает ужасные результаты через нативный протокол (16384 записей приходят за 25 секунд), в то время как через json все укладывается в в секунду. Хочу для начала посмотреть все, что думает об этих запросах (через нативный и через JSON) КХ, а потом уже искать косяки в реализации нативного протокола.Можно было бы, конечно, оставиться на JSON-е и не морочить голову, но при объемах>100к результатов парсинг на клиенте жрет как не в себя оперативу и процессорное время. Ткните, пожалуйста, как правльно проводить бенчмарк на стороне КХ
  • https://t.me/clickhouse_ru
    Ну возьмите просто не JSON формат для ответа, а TabSeparated, например, и будет вам быстро и парсится легко и потоково :).
  • https://t.me/clickhouse_ru
    @yourock88 #82850 11:22 AM, 09 Jan 2019
    (это я к тому, что лучше не связываться с нативным протоколом вообще, если только вы не пишете кусок самого КХ)
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82849 #82851 11:23 AM, 09 Jan 2019
    та я уже думал об этом, и, скорей всего, так и будет.
  • @freezlite #82852 11:26 AM, 09 Jan 2019
    clickhouse-client не берет из системы env переменных как постгресс?
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82850 #82853 11:26 AM, 09 Jan 2019
    Меня взяло то, что в описании сказано, что это, мол, не просто какая-то обёртка над HTTP интерфейсом, а реализация нативного протокола которая взята и портирована из исходников КХ. Но ближе к делу оказалось, что что-то там не так)
  • https://t.me/clickhouse_ru
    @DmitryMishchenko #82854 11:33 AM, 09 Jan 2019
    всем привет, очень простой вопрос, как в clickhouse выбрать данные в +00:00 time_zone?
  • https://t.me/clickhouse_ru
    @DmitryMishchenko #82855 11:34 AM, 09 Jan 2019
    Пробую вот так: при подключении добавляю параметр ?location=UTC
  • @sergey239 #82856 11:40 AM, 09 Jan 2019
    Joined.
  • TZ=UTC clickhouse-client --use_client_time_zone=1
  • https://t.me/clickhouse_ru
    @sahaquielx #82858 11:53 AM, 09 Jan 2019
    Добрый день.
    Не подскажите разницы между системными таблицами query_log и query_thread_log ?
  • https://t.me/clickhouse_ru
    А через http?
  • Глобальной настройки нет. Но есть возможность использовать функцию toTimeZone для нужных столбцов.
    toTimeZone(t, 'UTC')
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82848 #82861 11:56 AM, 09 Jan 2019
    Воспользусь, что @milovidov_an гуру в треде. Мне там чуть ниже посоветовали не морочить голову, и юзать http интерфейс и парсить TSV. Так и быть? Или, может, есть какие-то советы?
  • https://t.me/clickhouse_ru
    @Shegloff #82862 11:58 AM, 09 Jan 2019
    Все привет, есть ли подводные камни при переходе с 18.12.17 на последнюю версию? Помню, какой-то был параметр, который влияет на селекты из вьюх, что-то такое

    А, вроде поправили:
    Настройка enable_optimize_predicate_expression выключена по умолчанию.
  • https://t.me/clickhouse_ru
    @343206394 #82863 11:58 AM, 09 Jan 2019
    Может сегодня больше народу в канале, продублирую
    https://t.me/clickhouse_ru/82672
    Vladimir Tretyakov in ClickHouse не тормозит

    Добрый день. Есть вопрос по вью. Чувствую что-то не так делаю или не понимаю очевидного. Есть таблица (реплицированная, распределенная) в которую постоянно пишут (пишут в локальные таблицы), на основе ее создаем вью чтобы аггрегировать данные. CREATE MATERIALIZED VIEW default.MetricStats ON CLUSTER metrics ENGINE = ReplicatedAggregatingMergeTree('/clickhouse/tables/metrics/{shard}/MetricStats', '{replica}') PARTITION BY floor(time / 86400) ORDER BY (time, appId) POPULATE AS SELECT uniqExactState(tags.value[indexOf(tags.name, 1)]) AS `os.host`, uniqExactState(tags.value[indexOf(tags.name, 72)]) AS `container.id`, uniqExactState(tags.value[indexOf(tags.name, 1131263)]) AS `container.host.hostname`, appId, floor(timestamp / 60) * 60 AS time FROM default.Metrics WHERE timestamp > now()-300 GROUP BY time, appId Распределенная над вью для чтения CREATE TABLE IF NOT EXISTS default.MetricStatsDistributed ON CLUSTER metrics AS default.MetricStats ENGINE = Distributed(metrics, default…

  • Native протокол может быть существенно эффективнее, но при условии, что для него есть хорошая реализация. Сам ClickHouse использует его для передачи данных между серверами и между clickhouse-client и сервером. А про эффективность реализаций в third-party библиотеках я не могу быть уверен. Для примера, даже C++ библиотека clickhouse-cpp хоть и довольно эффективная, но будет уступать по скорости реализации в самом ClickHouse.
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82864 #82865 12:06 PM, 09 Jan 2019
    Спасибо за комментарий и за волшебный продукт. На счет реализации вопросов нет, конечно, просто меня подкупило описание репозитория, что мол, это не какая-нибудь вам обертка над http-интерфейсом, а прям выдранная из исходников и портированная на .net реализация.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @igor_dia #82867 12:16 PM, 09 Jan 2019
    Из-за чего такая картина возможна?
  • https://t.me/clickhouse_ru
    @Krashuevina #82868 12:16 PM, 09 Jan 2019
    Партицирование по суткам. В старых сутках куски большие, дольше мержатся
  • https://t.me/clickhouse_ru
    @Krashuevina #82869 12:16 PM, 09 Jan 2019
    В начале нового дня куски маленькие, и мержатся быстро
  • https://t.me/clickhouse_ru
    @Krashuevina #82870 12:17 PM, 09 Jan 2019
    Вчерашний день заканчивает мержиться к 4 утра
  • https://t.me/clickhouse_ru
    @igor_dia #82871 12:19 PM, 09 Jan 2019
    спасибо. будем думать
  • https://t.me/clickhouse_ru
    @igor_dia #82872 12:27 PM, 09 Jan 2019
    А можно партиционирование сделать как-нибудь равномернее?
  • https://t.me/clickhouse_ru
    Тут ещё важно, какой объем данных вы вытаскиваете. Я бы сказал, что Native протокол становится действительно необходим, когда вы переливаете таблицы целиком (сотни гигабайт данных в сыром виде), или же перешардируете их. В этом случае экономия CPU и сети весьма значительна, если переливка идёт из КХ в КХ. В других случаях этот формат вам только доставит головной боли и ничего больше.
  • https://t.me/clickhouse_ru
    @yourock88 #82874 12:33 PM, 09 Jan 2019
    Ну и ещё интересный факт — поскольку clickhouse-client содержит в себе и сервер, то он по возможности тоже общается с сервером по native протоколу прозрачно для вас
  • https://t.me/clickhouse_ru
    @kshvakov #82875 12:35 PM, 09 Jan 2019
    Он только по нему и общается. У КХ очень интересный протокол, очень многое нужно делать на клиенте, например преобразование типов (даты, UUID и т.д).
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82873 #82876 12:35 PM, 09 Jan 2019
    Я бы не сказал, что парсинг json результата большая проблема на небольших объемах. Но когда надо распарсить около 300к объектов, то это занимает больше времени, чем сам их забор. Что для юзера веб-интерфейса малоприятно. Вот и ищу оптимальные пути
  • https://t.me/clickhouse_ru
    Попробуйте TabSeparated, его легко парсить
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #82876 #82878 12:37 PM, 09 Jan 2019
    В нативном протоколе к вам полетят не строки, а колонки, нужно вычитывать большие блоки прежде чем сможете отдавать клиенту что-то построчно
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82877 #82879 12:37 PM, 09 Jan 2019
    Да, попробовал, и это существенно быстрей, чем json, но все же это ещё одно колено
  • https://t.me/clickhouse_ru
    Для КХ составить ответ в любом формате не составляет труда, я бы рекомендовал Вам использовать тот вариант, который легче всего парсить на клиенте
  • https://t.me/clickhouse_ru
    @yourock88 #82881 12:39 PM, 09 Jan 2019
    Это может быть хоть JSONEachRow с ленивым созданием объектов из строки :)
  • https://t.me/clickhouse_ru
    @yourock88 #82882 12:39 PM, 09 Jan 2019
    300к это даже близко не тот объём, где разница на стороне сервера будет заметна
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82880 #82883 12:40 PM, 09 Jan 2019
    Так оно-то понятно, и у меня нет особых проблем с парсингом. Проблема в его скорости. Пока оптимальным остаётся tsv, но я все же не теряю надежды найти ещё быстрей вариант:)
  • https://t.me/clickhouse_ru
    @yourock88 #82884 12:41 PM, 09 Jan 2019
    Native, очевидно, колоночный, и не подходит для Ваших целей
  • https://t.me/clickhouse_ru
    @yourock88 #82885 12:42 PM, 09 Jan 2019
    Попробуйте RowBinary, его парсить легче всего и серверу легко его составлять
  • https://t.me/clickhouse_ru
    @yourock88 #82886 12:42 PM, 09 Jan 2019
    Но надо будет писать много кастомного кода, возможно, и нужно знать типы возвращаемых данных
  • https://t.me/clickhouse_ru
    Скорость и есть проблема, причем обычно самая сложная из всех :)
  • @oleg_kozlyuk #82888 12:44 PM, 09 Jan 2019
    RowBinary, кстати, не сильно сложен. Я писал клиента на плюсах, заняло меньше недели с отладкой. Жаль выложить в OSS не могу
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82884 #82889 12:45 PM, 09 Jan 2019
    ну почему. Я могу могу заполнять поля объекта параллельно. Просто в той реализации нативного протокола существенный косяк в плане скорости забора результата, аж страшно: `262144 records: 316264 ms. IDataReader.ReadAll
    262144 records: 309254 ms. ExecuteSelectCommand
    262144 records: 6812 ms. JSON
    262144 records: 3001 ms. TSV`
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82887 #82890 12:48 PM, 09 Jan 2019
    в описании реализации заявлено что это чуть ли копипаста из исходников, вот я и понадеялся что это спасение. И она работает, и под парсинг результата удобно заточена. Но блин, как же медленно. Будто два маленьких гнома вручную переписывают
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82888 #82891 12:49 PM, 09 Jan 2019
    то бишь потенциально он должен быть быстрей TSV?
  • https://t.me/clickhouse_ru
    Для компилируемых языков это будет примерно в 100% случаев быстрее, если речь о скорости парсинга
  • @oleg_kozlyuk #82893 12:52 PM, 09 Jan 2019
    Есть нюанс - если много нулевых или околонулевых значений, на больших сетах TSV может оказаться быстрее, потому что "0\t" занимает 2 байта, а double или Int64 - 8. В итоге передача по сети может съесть преимущества от парсинга
  • @faerics #82894 12:52 PM, 09 Jan 2019
    Вопрос про конфиги: как намертво отрубить enable_optimize_predicate_expression? Иногда забываю, а запросы мои не работают с этой настройкой.
    может, в конфиге где её прописать надо?
  • https://t.me/clickhouse_ru
    @noomckalb #82895 12:53 PM, 09 Jan 2019
    Всем привет, с праздниками))

    А не подскажете, есть ли способ преобразования hex - строки в int в строке запроса?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @noomckalb #82897 12:54 PM, 09 Jan 2019
    Большое спасибо! Искал эту страницу, похоже))
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82893 #82898 12:55 PM, 09 Jan 2019
    В моем случае значения будут всегда больше ноля. Жаль только, что в документации суховато написано. Но я попробую
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82897 #82899 12:55 PM, 09 Jan 2019
    да не за что. я сам такой же. то до конца страницы не докручу, то посмотрю на решение, и подумаю, что оно мне не подходит
  • В default профиле
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82892 #82901 01:06 PM, 09 Jan 2019
    Интересно. Для 2^16 бинари оказлся медленеей, чем tsv. но дальше - круче
    65536 records: 2306 ms. JSON
    65536 records: 1095 ms. TSV
    65536 records: 1481 ms. Binary
    131072 records: 2901 ms. JSON
    131072 records: 2228 ms. TSV
    131072 records: 1492 ms. Binary
    262144 records: 3963 ms. JSON
    262144 records: 5214 ms. TSV
    262144 records: 2990 ms. Binary
  • Главное узкое место всех клиентов использующих Native протокол - это конвертация столбцов в строки. Это очень сложно сделать со скоростью хотя бы близкой с скорости с которой это делает сам КХ. Представтьте что у вас 50 колонок, которые приходят в такой последовательности - сначала 65 тысяч значений для первой колонки, потом 65 тысяч значений для второй и так до 50, потом снова - следующие 65 тысяч значений для первой колонки и т.д И первую строку вы сможете прочитать только когда все 65 тысяч строк для 50 колонок будут прочитаны. Если подумать как это всё безобразие будет представлено в памяти с помощью структур вашего любимого ЯП, как будет выделяться / перевыделяться память и т.п. Короче добиться такой же скорости этой конвертации какой удалось добиться Алексею и его коллегам из Яндекса - почти не реально.
  • https://t.me/clickhouse_ru
    @Krashuevina #82903 01:08 PM, 09 Jan 2019
    Коллеги, есть вопросец.
    Подумываем заиспользовать GraphiteMergeTree, чтобы самим не писать логику rollup и downsampling. Единственное, что меня беспокоит это решардинг (т.е. когда в кластер нод докинем, то метрики начнут в другие шарды сыпаться, и downsampling перестанет работать). Есть у кого идеи, как это элегантно порешать, не вынося, например, в клиента функции consistent-hashing и проч. ?
  • consistenthahsing есть в КХ, можно использовать как ключ шардирования и инсертить через Distributed.
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82902 #82905 01:11 PM, 09 Jan 2019
    "Короче добиться такой же скорости этой конвертации какой удалось добиться Алексею и его коллегам из Яндекса - почти не реально." не знаю как его, коллеги, но мне кажется, что Алексей находится на этой планете чтобы создать что-то невообразимое, например КХ =). А за комментарий спасибо, прояснилось
  • https://t.me/clickhouse_ru
    Но при добавлении шарда часть ключей всё равно съедет, я так понимаю
  • https://t.me/clickhouse_ru
    @Krashuevina #82907 01:13 PM, 09 Jan 2019
    Есть ощущение, что нужен будет clickhouse-copier, и 2x места
  • @mfilimonov #82908 01:13 PM, 09 Jan 2019
    Угу. Там просто при увеличении числа "корзинок" данные попадают чаще в те же места куда и перед увеличением.
  • @mfilimonov #82909 01:15 PM, 09 Jan 2019
    Да вроде как это решардирование в вашем случае не особо и нужно.
  • @mfilimonov #82910 01:16 PM, 09 Jan 2019
    Перед увеличением количества шардов - все данные с одного счетчика лежат вместе. Т.е. будут хорошо схлапываться.
  • @mfilimonov #82911 01:17 PM, 09 Jan 2019
    Потом после увеличения количества шардов - будет определенный промежуток времени когда будет избыточные данные храниться на каждом шарде. И схлапываться будут только при чтении distributed.
  • @mfilimonov #82912 01:17 PM, 09 Jan 2019
    но когда-нибудь этот промежуток времени закончится и снова всё будет ок.
  • @mfilimonov #82913 01:19 PM, 09 Jan 2019
    Кажется так. (но могу и ошибаться, GraphiteMergeTree никогда "не курил").
  • https://t.me/clickhouse_ru
    Мне кажется, что если метрика переедет на другой шард, то rollup поломается
  • @mfilimonov #82915 01:21 PM, 09 Jan 2019
    будет на каждом шарде отдельно схлапывать. Хз, какие-то граничные ошибки наверное возможны.
  • https://t.me/clickhouse_ru
    @Krashuevina #82916 01:21 PM, 09 Jan 2019
    вот про них и речь :)
  • @mfilimonov #82917 01:23 PM, 09 Jan 2019
    Т.е. если у вас данные со счетчика Х за 2018 оказались на одном шарде, а за 2019 - на другом. То при "недельном" схлапывании в одном шарде будет схопнут один день 31.12 а во втором - 6 дней 01.01-06.01. При этом если будете селект за эту неделю выпонлять - то он выполнит ещё одно схлапывание.
  • @mfilimonov #82918 01:27 PM, 09 Jan 2019
    Ну а дальше зависит от того даст ли это финальное схлапывание правильный результат из двух частично схлопнутых. Скорее всего - да.
  • https://t.me/clickhouse_ru
    Интереснее граничный эффект на втором уровне агрегации, когда недели будут схлопываться в месяцы
  • @i4nt1k #82920 01:28 PM, 09 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82902 #82921 01:30 PM, 09 Jan 2019
    С вашего позволения уточняющий вопрос. Имеется объект class Result {string val1; string val2; string valn;}
    Правильно ли я понимаю логику, что оптимальным путем забора инфы в таком формате через нативный протокол будет создание коллекции объектов на основании значений первого столбца collection.Push(new Result (){val1=GetValue(i)}), после чего для каждого объекта из коллекции устанавливать значение следующего столбца collection[i].valn = GetValue(i)
  • @mfilimonov #82922 01:30 PM, 09 Jan 2019
    Я бы сказал что много зависит о того какую функцию для схлапывание использовать. Напрамер при использовании any - я бы не предвидел никаких побочных эффектов. :D
  • https://t.me/clickhouse_ru
    @ku4eryashe4ka #82923 01:30 PM, 09 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    Оптимальным путём будет создание метода getVal1(), который внутри из внешнего массива возьмёт значение для i.
  • https://t.me/clickhouse_ru
    @Krashuevina #82925 01:35 PM, 09 Jan 2019
    Т.е. массивы с данными колонок аллоцируются большими пачками, что уменьшает фрагментацию, и бла-бла-бла
  • Я не специалист в .NET, и не знаю каков оверхед в частности использования классов (не знаю как они представляются в памяти) и сколько будет релокаций при использовании collection.push. Идеально - это сразу взять большой кусок памяти с запасом, и потом заполнять его простыми типами.
  • @mfilimonov #82927 01:38 PM, 09 Jan 2019
    Так чтоб уменьшить количество реалокаций / фрагментацию.
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82926 #82928 01:43 PM, 09 Jan 2019
    ну, памятью тут GarbageCollector занимается, хотя можно и с unsafe'ом побаловаться. Я просто хочу устаканить сам процесс. По текущей логике добавление объектов в коллекцию будет вызвано столько раз, сколько есть значений в первом столбце. Это дешево. Дороже будет апдейтить оставшиеся пустыми остальные поля каждого объекта инфой из следующих столбцов.
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82927 #82929 01:43 PM, 09 Jan 2019
    Я предполагаю ходить по колекции по индексу, так что особой каши быть не должно
  • Можно попробовать, например так как предлагает Alex. Когда обращение к i-той строке просто читает i-ые элементы какждого из массивов содержаних данные по отдельным колонкам. Но если таких строк будет много, а построчные обращения к данным будут очень интенсивно - то возможно лушче будет и так переформатировать к честному строковому представлению. Чтобы кэш процессора мог нормально работать без постоянных перезагрузок.
  • @i4nt1k #82931 01:47 PM, 09 Jan 2019
    Ребята, подскажите пожалуйста, если я на клиенте делаю аборт запроса, прекращается ли выполнение запроса в clickhouse или надо перед абортом запускать КILL QUERY?
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #82930 #82932 01:48 PM, 09 Jan 2019
    Вроде ясно пока. Спасибо!
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82931 #82933 01:48 PM, 09 Jan 2019
    а что за клиент и что такое abort?
  • @IlyaVrum #82934 01:50 PM, 09 Jan 2019
    Joined.
  • @i4nt1k #82935 01:52 PM, 09 Jan 2019
    На nodejs, но это же касается и командной строки. Если я прерываю http запрос нажав ctrl+c, прерывается ли выполнение запроса в кликхаусе.
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82935 #82936 01:53 PM, 09 Jan 2019
    я на ноде киляю
  • @i4nt1k #82937 01:55 PM, 09 Jan 2019
    В смысле сначала KILL QUERY?
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82937 #82938 01:56 PM, 09 Jan 2019
    а какая разница до или после?
  • https://t.me/clickhouse_ru
    @orloffv #82939 01:57 PM, 09 Jan 2019
    я все запросы в рамках сессии помечаю одним префиксом.
    и перед тем, как пользователь обрывает соединение - убиваю их
  • @i4nt1k #82940 01:57 PM, 09 Jan 2019
    я понял, спасибо.
  • clickhouse-client если нажать Ctrl+C - пытается убить запрос.
    При некорректном завершении работы clickhouse-client (например `kill -9`) или при разрыве соединения HTTP сервер будет молоть данные до конца.
  • https://t.me/clickhouse_ru
    @yourock88 #82942 02:03 PM, 09 Jan 2019
    Кстати было бы прикольно, если бы можно было задать какую-нибудь опцию в HTTP или в настройках сервера, чтобы запрос убивался сразу же, как только соответствующий HTTP запрос отменен или соединение оборвалось 🙂
  • @i4nt1k #82943 02:03 PM, 09 Jan 2019
    Спасибо
  • https://t.me/clickhouse_ru
    @yourock88 #82944 02:03 PM, 09 Jan 2019
    Вроде как в том же MySQL, например, запросы себя так и ведут
  • Да... :) Можете написать что-нибудь от себя: https://github.com/yandex/ClickHouse/issues/1403
    HTTP interface: kill queries after disconnect. · Issue #1403 · yandex/ClickHouse

    If you will just close the HTTP connection with lasting query, the execution of that query is not stopped. May be for DDL queries that bahaviour can be considered as acceptable, but for usual SELEC...

  • https://t.me/clickhouse_ru
    Поставил палец вверх 🙂
  • https://t.me/clickhouse_ru
    а как mysql узнает что http клиент отвалился?
  • https://t.me/clickhouse_ru
    MySQL общается по кастомному TCP протоколу 🙂
  • https://t.me/clickhouse_ru
    @yourock88 #82949 02:10 PM, 09 Jan 2019
    В любом случае, в HTTP есть возможность, как минимум, закрыть соединение
  • https://t.me/clickhouse_ru
    @yourock88 #82950 02:11 PM, 09 Jan 2019
    В HTTP/2, возможно, есть возможность отменить какой-то конкретный запрос, но я не смотрел детали
  • https://t.me/clickhouse_ru
    @athathot ↶ Reply to #82949 #82951 02:11 PM, 09 Jan 2019
    послать пакет с флагом, а что с этим пакетом сделает tcp-сервер, это отдельный вопрос :)
  • https://t.me/clickhouse_ru
    нафига?
    notEmpty(assumeNotNull(
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #82952 #82953 02:27 PM, 09 Jan 2019
    вот за этим и спрашивал, спасибо
  • https://t.me/clickhouse_ru
    ночь полянка в тайге, горит костерок, подходит мужик спрашивает "А, какой автобус довезет меня до лувра?"
  • Ну если клиент корретно закрыл tcp соедиенения - то об этом узнать не сложно. Нужно просто проверить статут сокета.
  • https://t.me/clickhouse_ru
    @kapustor #82956 02:35 PM, 09 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    Даже если некорректно, то только если не случился kernel panic или не пропала сеть на несколько минут, то всё равно будет всё хорошо. Ну или использовать TCP keepalive
  • https://t.me/clickhouse_ru
    @atutik #82958 02:36 PM, 09 Jan 2019
    Привет, скажите есть что-то типа group_concat в КХ ?
  • groupArray
  • Ну могут быть ситуации когда клиент вроде есть, а вроде и нет (по таймауту только можно понять). Но если клиент отправил TCP FIN пакет - то значит что дальше разговаривать с ним не о чем.
  • @mfilimonov #82961 02:39 PM, 09 Jan 2019
    И какие-то данные для него молоть - пустая трата времени.
  • https://t.me/clickhouse_ru
    Ну да, TCP keepalive как раз эту проблему решает.
  • https://t.me/clickhouse_ru
    @kapustor #82963 02:46 PM, 09 Jan 2019
    Коллеги, всем привет!
    Приглашаем вас на наш 4-ый митап Scale-out databases and engines - обсуждаем распределённые СУБД, их эксплуатацию, разработку и развитие.

    В этот раз поговорим об open-source в enterprise-среде - опыт компаний, кейсы внедрений, слухи, скандалы, интриги, расследования. В частности, коллеги из Alytics.ru расскажут о создании data-платформы на базе связки CH + Greenplum.

    Москва, 7 февраля, самый центр. Вход свободный, но нужна регистрация по ссылке. Будем рады вас видеть!

    https://www.meetup.com/Scale-out-databases-and-engines/events/257153368/
    Open-source в Enterprise: это фантастика?

    Thu, Feb 7, 2019, 7:30 PM: Как найти DI TelegraphВход в здание со стороны Газетного переулка напротив церкци, которая за Макдоналдсом.Стеклянная дверь с вывеской DI TelegraphДальше поднимаетесь на 5-й

  • https://t.me/clickhouse_ru
    @atutik ↶ Reply to #82959 #82964 02:48 PM, 09 Jan 2019
    спасибо, то что нужно
  • https://t.me/clickhouse_ru
    @zahnik #82965 02:52 PM, 09 Jan 2019
    Всем привет.
    На одном сервере может быть несколько баз. В каждой базе нужно использовать одни и те же внешние словари, но суть в том, что каждая база должна ссылаться на словарь из нужной внешней базы (postgresql). Как такое организовать?
  • https://t.me/clickhouse_ru
    никак, называйте словари по разному
  • Есть параметр -n или --multiquery
    printf 'CREATE TABLE IF NOT EXISTS yy(b UInt8) Engine = TinyLog;\nINSERT INTO yy(b) VALUES (1);\nINSERT INTO yy(b) VALUES (2);\n SELECT * FROM yy;' | clickhouse-client -n
  • @freezlite #82968 03:13 PM, 09 Jan 2019
    —query же нужен, не?
  • Из stdin тоже умеет читать
  • @freezlite #82970 03:14 PM, 09 Jan 2019
    а ты пробовал так ?
  • @freezlite #82971 03:14 PM, 09 Jan 2019
    вроде не работает в доке же зачем то написано что мультиквери не ест
  • @freezlite #82972 03:14 PM, 09 Jan 2019
    и я зачем то xargs спользвал же
  • @faerics #82973 03:15 PM, 09 Jan 2019
    так он умеет в мультиквери? Замечательно.
  • @freezlite #82974 03:17 PM, 09 Jan 2019
    не умеет
  • Этот пример выше скопировал из консоли. Работает.
  • @freezlite #82976 03:18 PM, 09 Jan 2019
    By default, you can only process a single query in batch mode. To make multiple queries from a "script," use the --multiquery parameter. This works for all queries except INSERT
  • @freezlite #82977 03:18 PM, 09 Jan 2019
    у меня инсерты)
  • Да, с инсертами как-то странно работает. Но работает.
  • @freezlite #82979 03:19 PM, 09 Jan 2019
    странно это как ? данные заменяет ? ))
  • @mfilimonov #82980 03:19 PM, 09 Jan 2019
    Кажется VALUES должны кончаться новой строкой.
  • @mfilimonov #82981 03:20 PM, 09 Jan 2019
    Иначе кусок SQL который идет после VALUES игнорит.
  • @freezlite #82982 03:20 PM, 09 Jan 2019
    в доке не написано что хоть как то можно
  • @mfilimonov #82983 03:21 PM, 09 Jan 2019
    ➜ printf 'CREATE TABLE IF NOT EXISTS yy(b UInt8) Engine = TinyLog;\nINSERT INTO yy(b) VALUES (111);\nINSERT INTO yy(b) VALUES (222);\n SELECT count() FROM yy;' | clickhouse-client -n
    23
    ➜ printf 'CREATE TABLE IF NOT EXISTS yy(b UInt8) Engine = TinyLog;\nINSERT INTO yy(b) VALUES (111);\nINSERT INTO yy(b) VALUES (222);\n SELECT count() FROM yy;' | clickhouse-client -n
    25
    ➜ printf 'CREATE TABLE IF NOT EXISTS yy(b UInt8) Engine = TinyLog;\nINSERT INTO yy(b) VALUES (111);\nINSERT INTO yy(b) VALUES (222);\n SELECT count() FROM yy;' | clickhouse-client -n
    27
    ➜ printf 'CREATE TABLE IF NOT EXISTS yy(b UInt8) Engine = TinyLog;\nINSERT INTO yy(b) VALUES (111);\nINSERT INTO yy(b) VALUES (222);\n SELECT count() FROM yy;' | clickhouse-client -n
    29
    ➜ printf 'CREATE TABLE IF NOT EXISTS yy(b UInt8) Engine = TinyLog;\nINSERT INTO yy(b) VALUES (111);\nINSERT INTO yy(b) VALUES (222);\n SELECT count() FROM yy;' | clickhouse-client -n
    31
    ➜ printf 'CREATE TABLE IF NOT EXISTS yy(b UInt8) Engine = TinyLog;\nINSERT INTO yy(b) VALUES (111);\nINSERT INTO yy(b) VALUES (222);\n SELECT count() FROM yy;' | clickhouse-client -n
    33
  • https://t.me/clickhouse_ru
    @den_crane #82984 03:21 PM, 09 Jan 2019
    clickhouse-client -mn
    и тогда концы запросов парсятся по ;
  • с инсертами это не работает. Попробуй пример выше.
  • @mfilimonov #82986 03:22 PM, 09 Jan 2019
    С -mn выполняет только первый инсерт.
  • https://t.me/clickhouse_ru
    @den_crane #82987 03:28 PM, 09 Jan 2019
    да странно, я не замечал, видимо по везению всегда писал в разных строках
  • https://t.me/clickhouse_ru
    @den_crane #82988 03:29 PM, 09 Jan 2019
    и input_format_values_interpret_expressions не влияет
  • https://t.me/clickhouse_ru
    @den_crane #82989 03:36 PM, 09 Jan 2019
    а ну понятно, фактически разделитель перевод строки, но для интерактивного режима есть костыль
    Исполняется только один запрос, поэтому всё, что введено после точки с запятой, игнорируется.
  • @381244074 #82990 04:25 PM, 09 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @kolyan333 #82991 04:27 PM, 09 Jan 2019
    Joined.
  • @Sergeyman12 #82992 04:34 PM, 09 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @248983972 #82993 04:43 PM, 09 Jan 2019
    Joined.
  • @creadone #82994 05:41 PM, 09 Jan 2019
    Последовательно вливаю CSV-файлами по 300К строк через CLI с той же машины, где размещена база.

    Через некоторое время появляется ошибка:

    File x59 can't be inserted: Code: 210. DB::NetException: Connection refused: (localhost:9000, 127.0.0.1)

    И база перестает откликаться на некоторое время. Подскажите, пожалуйста, это может быть вызвано нехваткой ресурсов на машине (это копеечная виртуалка для экспериментов) или проблема в чем-то другом?
  • https://t.me/clickhouse_ru
    OOM убивает ваш КХ. Раз в 10 мин. упавший КХ стартует назад кроном. Сколько памяти у виртуалки?
  • @creadone #82996 05:48 PM, 09 Jan 2019
    2 Гб.
  • https://t.me/clickhouse_ru
    @den_crane #82997 05:49 PM, 09 Jan 2019
    ооо, анриал. У КХ есть параметры типа кушать для начала 5.
  • @creadone ↶ Reply to #82997 #82998 05:49 PM, 09 Jan 2019
    Понял, увеличу ресурсов. Спасибо!
  • https://t.me/clickhouse_ru
    @den_crane #82999 05:50 PM, 09 Jan 2019
    вот этот уменьшите в 10 раз

    <!--mark_cache_size>5368709120</mark_cache_size-->
  • https://t.me/clickhouse_ru
    @den_crane #83000 05:50 PM, 09 Jan 2019
    отключите uncompressed_cache если включали
  • @creadone #83001 05:52 PM, 09 Jan 2019
    О! Спасибо!
  • https://t.me/clickhouse_ru
    @den_crane #83002 05:52 PM, 09 Jan 2019
    отключите <compile_expressions>0</compile_expressions> там возможно утечка в 18.16.1
  • https://t.me/clickhouse_ru
    @kbespalov #83003 06:16 PM, 09 Jan 2019
    А можно как то вывести на экран настройки, с которыми запущен clickhouse ?
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83003 #83004 06:18 PM, 09 Jan 2019
    Табличка есть же
  • https://t.me/clickhouse_ru
    @orloffv #83005 06:18 PM, 09 Jan 2019
    System settings вроде
  • @faerics #83006 06:19 PM, 09 Jan 2019
    Select * from system.settings
  • https://t.me/clickhouse_ru
    @kbespalov #83007 06:19 PM, 09 Jan 2019
    спасибо!
  • @milovidov_an #83009 08:04 PM, 09 Jan 2019
    Надо скидывать кейсы с ошибочной работой настройки enable_optimize_predicate_expression сюда:
    https://github.com/yandex/ClickHouse/issues/3942

    Суть в том, что я знаю, что реализация неудобная и подвержена ошибкам, но так как эта настройка выключена, мы сейчас уже не знаем, сколько проблем там осталось.

    У нас внутри статус такой, что некоторые пользователи включают эту настройку вручную для своих запросов.
    Question: What is the status of enable_optimize_predicate_expression ? · Issue #3942 · yandex/ClickHouse

    Hello This setting is still deactivated by default due to a few bugs. We have made a few test and in certain context, activating the setting allow us to gain a factor of 100 ( 2.3 sec vs 0.026 sec)...

  • @faerics ↶ Reply to #83009 #83010 08:08 PM, 09 Jan 2019
    ну, видимо, если она результат не портит, то можно включать)
  • https://t.me/clickhouse_ru
    @webmaks #83011 10:27 PM, 09 Jan 2019
    Приветствую При выполнении SELECT он возвращает только первые 10 000 результатов Как увеличить это ограничение?
  • https://t.me/clickhouse_ru
    @orantius #83012 10:29 PM, 09 Jan 2019
    возвращает куда
  • https://t.me/clickhouse_ru
    @webmaks #83013 10:29 PM, 09 Jan 2019
    в консоль, пробовал в файл
  • https://t.me/clickhouse_ru
    @webmaks #83014 10:30 PM, 09 Jan 2019
    INTO OUTFILE '/tmp/aaa' FORMAT Vert
    icalRaw;
  • https://t.me/clickhouse_ru
    @orantius #83015 10:31 PM, 09 Jan 2019
    clickhouse-client --query "select * from numbers(100000)" | wc -l
    100000
  • https://t.me/clickhouse_ru
    @orantius #83016 10:34 PM, 09 Jan 2019
    не знаю что такое VerticalRaw, но INTO OUTFILE '/tmp/aaa' тоже 100к строк записалось
  • https://t.me/clickhouse_ru
    @webmaks #83017 10:35 PM, 09 Jan 2019
    а вот у меня тольк 10 000 и он в конце пишет
    Showed first 10000.
  • https://t.me/clickhouse_ru
    @webmaks #83018 10:36 PM, 09 Jan 2019
    >не знаю что такое VerticalRaw,
    да это просто форматирование, без него или с ним он 10 000 возвращает
  • https://t.me/clickhouse_ru
    @salttan ↶ Reply to #83017 #83019 10:49 PM, 09 Jan 2019
    select * from system.settings where value='10000'
  • https://t.me/clickhouse_ru
    @webmaks #83020 10:50 PM, 09 Jan 2019
    select * from system.settings where value='10000';

    select *
    from system.settings
    where value='10000'

    ┌─name──────────────────────────┬─value─┬─changed─┬─description────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │ mark_cache_min_lifetime │ 10000 │ 0 │ If the maximum size of mark_cache is exceeded, delete only records older than mark_cache_min_lifetime seconds. │
    │ output_format_pretty_max_rows │ 10000 │ 0 │ Rows limit for Pretty formats. │
    └───────────────────────────────┴───────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

    Ok. 2 rows in set. Elapsed: 0.018 sec. Processed: 0 rows, 0.0B (0 rows/s, 0.0B/s)
  • @faerics ↶ Reply to #83017 #83021 10:51 PM, 09 Jan 2019
    В файл должны все писаться.
  • @faerics #83022 10:52 PM, 09 Jan 2019
    Круто, что это настраивается, поставлю себе 100.
  • 10 January 2019 (179 messages)
  • https://t.me/clickhouse_ru
    @ded42 #83023 08:37 AM, 10 Jan 2019
    Joined.
  • @343647023 #83024 08:46 AM, 10 Jan 2019
    Всем привет!
    Подскажите. В плане оптимизации селектов, к примеру, по полю А, что будет оптимальней?
    Разбить большую таблицу на партиции с ключом партицирования А, либо включить А в начало первичного ключа?
  • @saphronov #83025 08:50 AM, 10 Jan 2019
    Joined.
  • @616650576 #83026 09:01 AM, 10 Jan 2019
    Всем привет. Подскажите плз. Как создать dist таблицу без кластера?
  • https://t.me/clickhouse_ru
    @stufently #83027 09:03 AM, 10 Jan 2019
    просто описать кластер в конфиге и потом создать дист таблицу
  • https://t.me/clickhouse_ru
    @vse_chetk0 #83028 09:21 AM, 10 Jan 2019
    Кто нибудь подскажет для каких целей полезна таблица system.query_thread_log и много ли я потеряю если выключу логирование ?
  • https://t.me/clickhouse_ru
    @Krashuevina #83029 09:25 AM, 10 Jan 2019
    Там per-thread профилирование запросов
  • https://t.me/clickhouse_ru
    @Krashuevina #83030 09:25 AM, 10 Jan 2019
    разные таймеры, что делали треды во время запроса
  • https://t.me/clickhouse_ru
    @Siroja #83031 09:46 AM, 10 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @IlyaSkriblovsky #83032 10:23 AM, 10 Jan 2019
    Добрый день!

    У меня две реплики работали на версии 18.12.17. Обновил одну на 18.16.1. Теперь она потребляет в 4.5 раза больше памяти чем та, что осталась на старой версии и продолжает расти.

    Это ожидаемо? В новых версиях что-то изменилось в плане работы с памятью? В ченджлоге не нашёл ответа.
  • https://t.me/clickhouse_ru
    @Alesapin #83033 10:27 AM, 10 Jan 2019
    Попробуйте выключить настройку compile_expressions = 0
  • https://t.me/clickhouse_ru
    @Mike_Er ↶ Reply to #83032 #83034 10:29 AM, 10 Jan 2019
    мы только что пробовали обновиться на 18.16.1, в лог посыпались ошибки, вернулись на 18.14.18
  • https://t.me/clickhouse_ru
    понял, спасибо
  • https://t.me/clickhouse_ru
    @dmr2015 #83036 10:38 AM, 10 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    Спасибо, вы помогли нагуглить точно такую же жалобу: https://github.com/yandex/ClickHouse/issues/3976
  • https://t.me/clickhouse_ru
    @metikovvadim #83038 10:46 AM, 10 Jan 2019
    Привет всем!
    Как понять, почему не удаляюлся данные с помощью ALTER TABLE ... DELETE WHERE ...
    в таблице с движком ReplicatedReplacingMergeTree
    Мутации сразу становятся is_done=1 строки не исчезают
  • https://t.me/clickhouse_ru
    на первый взгляд вроде помогло, спасибо!
  • https://t.me/clickhouse_ru
    @vse_chetk0 #83040 11:41 AM, 10 Jan 2019
    Используем Tableau в связке с КХ с помощью https://github.com/yandex/clickhouse-odbc, часто в логах попадается вот такая ошибка
    <Error> executeQuery: Code: 164, e.displayText() = DB::Exception: Cannot drop table in readonly mode, e.what() = DB::Exception (from 172.16.0.170:61687) (in query: DROP TABLE `XT01_58903EC7_5737_44A3_94CA_483644D99DC3_2_Connect`), Stack trace:

    что это за таблица и где искать ошибку ?
    GitHub - ClickHouse/clickhouse-odbc: ODBC driver for ClickHouse

    ODBC driver for ClickHouse. Contribute to ClickHouse/clickhouse-odbc development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #83040 #83041 11:43 AM, 10 Jan 2019
    Табло при работе делает много разной магии похожей на такие таблицы, само создало и само удалило
  • https://t.me/clickhouse_ru
    @vse_chetk0 #83042 11:44 AM, 10 Jan 2019
    так, видно что прав нету прав, как на создание, так и на удаление
  • https://t.me/clickhouse_ru
    Господа, хочу я в рамках перехода от одного формата данных к другому узнать, были ли селекты к таблице со старым форматом. Можно ли узнать это не из логов?
  • @carrolcox #83044 12:24 PM, 10 Jan 2019
    Joined.
  • Кхм. Ответ на этот и другие загадки вселенной ищите в следующем сезоне "Битвы экстрасенсов"... :) Это я к тому что без логов (прежде всего system.query_log) можно только угадывать.
  • https://t.me/clickhouse_ru
    Просто подумал, что может в новых версиях дополнительная статистика есть типа счётчиков запросов по-таблично...
  • @mfilimonov #83047 12:35 PM, 10 Jan 2019
    А чем плох query_log?
  • https://t.me/clickhouse_ru
    В основном, объёмом, пожалуй.
  • https://t.me/clickhouse_ru
    @olegkovalov #83049 12:36 PM, 10 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    Ну и тем, что некоторые метрики типа "сколько запросов за интервал делалось к таблице с данными по биллингу, дабы выразить своё фе программистам за упавший сервис" - это надо отдельно считать, а не просто сохранять счётчики скриптом по крону.
  • https://t.me/clickhouse_ru
    @mr_anton_kuznetsov #83051 01:45 PM, 10 Jan 2019
    Ребят подскажите, есть такая пробелма - создал на нескольких нодах таблицу devices_local с движком - engine = ReplicatedReplacingMergeTree('/clickhouse/tables/{shard}/devices', '{replica}',
    'ver') ORDER BY device_id, и создал дистрибьютед таблу devices движок - engine = Distributed(wifi, wifi, devices_local, rand());. и соотвтесвенно ожидаю, что данные запросы должны давать равный реультат - select count(*) from devices final;
    select count(distinct device_id) from devices;. Но почему то final не удаляет все дубли, когда применяю ее на табле с distributed движком
  • Ну можно же чистить так часто как хочется.
  • https://t.me/clickhouse_ru
    Это уже считай, ещё одна инфраструктура :-)
  • @mfilimonov #83054 01:55 PM, 10 Jan 2019
    Ну да - 2-строчный скрипт на баше в кроне, это тоже инфраструктура :)
  • https://t.me/clickhouse_ru
    Таки да, ибо требует отладки.
  • https://t.me/clickhouse_ru
    Ну хотя бы проверки.
  • https://t.me/clickhouse_ru
    Впрочем тут-то и забить можно - дело одноразовое пока что.
  • Ну КХ это база для аналитики, вот им и пользуйтесь чтоб аналитику вести, безо всяких там "сохранять счетчики скриптом по крону" :P
  • https://t.me/clickhouse_ru
    Иногда таки проще счётчики, чем развесистый запрос, который заодно уронит сервер по oom...
  • https://t.me/clickhouse_ru
    Правда, это пока ещё не тот случай.
  • https://t.me/clickhouse_ru
    Но предусмотреть не помешает, по-моему...
  • https://t.me/clickhouse_ru
    select count(*) cnt, device_id from devices final group by device_id having cnt>1
  • https://t.me/clickhouse_ru
    @orloffv #83063 02:46 PM, 10 Jan 2019
    никто не сталкивался с тем, что обычная view таблица и просто запрос ведут себя по разному?
  • @yurifal ↶ Reply to #83040 #83064 02:52 PM, 10 Jan 2019
    Ваш коллега Алексей спросил то же самое в чатике Табло 🙂 Это скорее всего времянка (которую Табло попросило создать, а КХ видимо разрешил создать -- и должна быть запись об этом в логах -- а вот с удалением незадача случилась). Теоретически может помочь кастомизация настроек ODBC драйвера. Для запрета времянок достаточно двух настроек в TDC файле: 'CAP_CREATE_TEMP_TABLES' value='no' и 'CAP_SELECT_INTO' value='no' Но можно оставить все, которые рекомендуют коллеги.
  • https://t.me/clickhouse_ru
    )) да, мир тесен
  • https://t.me/clickhouse_ru
    @paveltyavin #83066 02:59 PM, 10 Jan 2019
    А мы можем нашим комьюнити как-то форсить у табло нативную поддержку CH?
  • https://t.me/clickhouse_ru
    @432498234 #83067 03:00 PM, 10 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    Решилось, движок схлопывал данные только в рамках 1 шарда
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83063 #83069 03:08 PM, 10 Jan 2019
    @milovidov_an
  • https://t.me/clickhouse_ru
    @orloffv #83070 03:08 PM, 10 Jan 2019
    тоесть я натурально меня from c таблицы на запрос, который во view и другие данные
  • https://t.me/clickhouse_ru
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data. Contribute to yandex/ClickHouse development by creating an account on GitHub.

  • @yurifal ↶ Reply to #83066 #83072 03:12 PM, 10 Jan 2019
    это вопрос скорее к уважаемым админам.
  • https://t.me/clickhouse_ru
    Вряд ли.
  • https://t.me/clickhouse_ru
    @den_crane #83074 03:14 PM, 10 Jan 2019
    не проще форсить в обратную сторону, СH в сторону стандартов SQL ? Все 15 пользователей КХ вряд-ли что-то зафорсят в табло.
  • Может быть сталкивались, а как именно по-разному?
  • https://t.me/clickhouse_ru
    @orloffv #83076 03:17 PM, 10 Jan 2019
    не доезжают данные во вьюху, но я вчера похоже игрался с enable_optimize_predicate_expression
  • https://t.me/clickhouse_ru
    @orloffv #83077 03:17 PM, 10 Jan 2019
    может оно зааффектило, я сейчас выключу везде - попробую
  • @milovidov_an #83078 03:18 PM, 10 Jan 2019
    Да, это экспериментальная возможность. Обо всех случаях, когда она плохо работает, следует подробно писать, например, сюда: https://github.com/yandex/ClickHouse/issues/3942 чтобы разработчик смог увидеть.
    Question: What is the status of enable_optimize_predicate_expression ? · Issue #3942 · yandex/ClickHouse

    Hello This setting is still deactivated by default due to a few bugs. We have made a few test and in certain context, activating the setting allow us to gain a factor of 100 ( 2.3 sec vs 0.026 sec)...

  • @yurifal ↶ Reply to #83074 #83079 03:26 PM, 10 Jan 2019
    по моим представлениям, это вендор (разработчик движка) обращается в табло на предмет "сертификации" (условный термин) драйвера (и самого движка?) на совместимость с кодом, который табло генерит и отдает драйверу. как именно происходит эта с позволения сказать "сертификация", и какие еще требования могут быть -- понятия не имею.
  • https://t.me/clickhouse_ru
    я чего-то не понял видимо, под нативной поддержкой что понимается? Чтобы табло умел КХ SQL или чтобы КХ odbc драйвер в облачное табло приделали?
  • https://t.me/clickhouse_ru
    @Siroja #83081 03:31 PM, 10 Jan 2019
    https://community.tableau.com/ideas/6454 вот сюда бы несколько тысяч голосов)
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83078 #83082 03:41 PM, 10 Jan 2019
    а как мне отменить эту настройку?
    я ее "включал" через параметры в http запросе
  • https://t.me/clickhouse_ru
    какая версия у вас? там был баг что выключить для view можно только рестартом
  • https://t.me/clickhouse_ru
    @orloffv #83084 03:42 PM, 10 Jan 2019
    а удалить/создать - прокатит?
  • https://t.me/clickhouse_ru
    млин версия КХ ????????????
  • https://t.me/clickhouse_ru
    @den_crane #83086 03:43 PM, 10 Jan 2019
    18.12.17 - enable_optimize_predicate_expression incorrectly masks rows in views · Issue #3149 · yandex/ClickHouse

    Haven't tested with earlier versions or master however in 18.12.17 enable_optimize_predicate_expression incorrectly masks other rows. Steps to reproduce: set enable_optimize_predicate_expressio...

  • https://t.me/clickhouse_ru
    @orloffv #83087 03:43 PM, 10 Jan 2019
    v18.12.17-testing
  • https://t.me/clickhouse_ru
    @den_crane #83088 03:43 PM, 10 Jan 2019
    да это оно, 100500 лет назад исправлено
  • https://t.me/clickhouse_ru
    @orloffv #83089 03:43 PM, 10 Jan 2019
    спасибо
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83088 #83090 03:44 PM, 10 Jan 2019
    обязательно рестартить или можно пересоздать вьюшку?
  • https://t.me/clickhouse_ru
    @den_crane #83091 03:46 PM, 10 Jan 2019
    я не помню
  • https://t.me/clickhouse_ru
    @feriat ↶ Reply to #83064 #83092 04:57 PM, 10 Jan 2019
    А можете меня добавить в чат Табло, плиз?
  • https://t.me/clickhouse_ru
    Я плюсанул
  • @NormandFR #83094 05:26 PM, 10 Jan 2019
    Joined.
  • @yurifal ↶ Reply to #83092 #83095 05:27 PM, 10 Jan 2019
    Tableau в России

    Всё о Tableau Чат Tableau: @tableau_chat По всем вопросам: @n_smirnova

  • и с title'ами тоже не в порядке
  • @madgopher #83097 06:52 PM, 10 Jan 2019
    а тут есть кто-то из меинтейнеров https://github.com/mailru/go-clickhouse?
    GitHub - mailru/go-clickhouse: Golang SQL database driver for Yandex ClickHouse

    Golang SQL database driver for Yandex ClickHouse. Contribute to mailru/go-clickhouse development by creating an account on GitHub.

  • @madgopher #83098 06:53 PM, 10 Jan 2019
    там сегодня драйвер сломали, мы фикс притащили, кого можно дёрнуть дополнительно?
  • @yurganov #83099 06:53 PM, 10 Jan 2019
    привет

    У меня тормозит кликхаус, может кто-то подскажет :-%

    создаю таблицу такого вида

    CREATE TABLE newsfeed (
    uuid UUID,
    app_id Int32,
    geo_id Int32,
    field String,
    value String,
    md5_value String,
    event_date Date,
    event_datetime DateTime,
    is_init UInt8,
    prev_uuid UUID

    ) engine=MergeTree(event_date, (app_id, geo_id, field), 8192);

    и потом по ней читаю вот так

    SELECT md5_value
    FROM newsfeed
    WHERE app_id = ? AND
    geo_id = ? AND
    field =?
    ORDER BY event_datetime desc limit 1;

    данных в таблице сейчас всего 80000 штук

    если запускать 1 селект, то его время 0.007 sec

    если запустить 20 воркеров, которые будут делать такого плана запросы, то время выполнения каждого вырастает до 0.5 sec и очень сильно возрастает CPU usage

    вот кусок из лога

    2019.01.10 18:52:54.441555 [ 9733 ] {596ee62a-3ba7-460f-9c52-34e2086f1dec} <Debug> executeQuery: (from [::1]:27218) SELECT md5_value FROM newsfeed WHERE app_id = 207052
    2019.01.10 18:52:54.442739 [ 9733 ] {596ee62a-3ba7-460f-9c52-34e2086f1dec} <Debug> apptica_stat.newsfeed (SelectExecutor): Key condition: (column 0 in [207052, 207052])
    2019.01.10 18:52:54.442857 [ 9733 ] {596ee62a-3ba7-460f-9c52-34e2086f1dec} <Debug> apptica_stat.newsfeed (SelectExecutor): MinMax index condition: unknown
    2019.01.10 18:52:54.442927 [ 9733 ] {596ee62a-3ba7-460f-9c52-34e2086f1dec} <Debug> apptica_stat.newsfeed (SelectExecutor): Selected 2 parts by date, 2 parts by key, 2 marks to read from 2 ranges
    2019.01.10 18:52:54.443084 [ 9733 ] {596ee62a-3ba7-460f-9c52-34e2086f1dec} <Trace> apptica_stat.newsfeed (SelectExecutor): Reading approx. 16384 rows with 2 streams
    2019.01.10 18:52:54.443174 [ 9733 ] {596ee62a-3ba7-460f-9c52-34e2086f1dec} <Trace> InterpreterSelectQuery: FetchColumns -> Complete
    2019.01.10 18:52:54.443371 [ 9733 ] {596ee62a-3ba7-460f-9c52-34e2086f1dec} <Debug> executeQuery: Query pipeline:
    Union
    Expression × 2
    Expression
    Filter
    MergeTreeThread
  • @yurganov #83100 06:53 PM, 10 Jan 2019
    Спасибо!
  • /cc @bgaifullin
  • https://t.me/clickhouse_ru
    это не аналитический запрос.
    КХ не предназначен для навигационных запросов по индексу, тем более там нет никаких оптимизаций для ORDER BY event_datetime desc limit 1
    этот запрос будет работать все дольше и дольше с каждым днем, нужен фильтр хотя бы event_date >= и event_date в индексе.
  • @yurganov #83103 07:05 PM, 10 Jan 2019
    понимаю, да

    но также нужно понимать и то, что результат после фильтра по ключу, но до навигации по order by - это 30-40 строк

    также, не понимаю просадку производительности при множестве одновременных запросов
  • https://t.me/clickhouse_ru
    set max_threads = 1 перед запросом
    mysql лучше возмите
  • https://t.me/clickhouse_ru
    @den_crane #83105 07:08 PM, 10 Jan 2019
    field), 8192);
    замените на меньшее число, пока в кеш марков влезает
  • https://t.me/clickhouse_ru
    @den_crane #83106 07:09 PM, 10 Jan 2019
    может даже и 128 (у меня в одном месте так работает)
  • @yurganov #83107 07:10 PM, 10 Jan 2019
    я правильно понимаю, что гранулярность грубо говоря это то, сколько результатов будет в результате фильтра по всем полям индекса?
  • @yurganov ↶ Reply to #83106 #83108 07:11 PM, 10 Jan 2019
    не помогло(
  • https://t.me/clickhouse_ru
    @den_crane #83109 07:12 PM, 10 Jan 2019
    это значит что в индексе лежат отметки для каждых 8192 записей, поэтому ваш запрос

    pptica_stat.newsfeed (SelectExecutor): Reading approx. 16384 rows with 2 streams

    курочит 16384 записей
  • @yurganov #83110 07:12 PM, 10 Jan 2019
    угу
  • https://t.me/clickhouse_ru
    уже все перезалили?
  • @yurganov #83112 07:12 PM, 10 Jan 2019
    ага
  • @yurganov #83113 07:12 PM, 10 Jan 2019
    там миллион строк всего
  • @yurganov #83114 07:13 PM, 10 Jan 2019
    2019.01.10 19:12:52.808502 [ 3247470 ] {5fec48e8-872f-4055-a573-d8cd8979c5e6} <Debug> apptica_stat.newsfeed (SelectExecutor): Key condition: (column 0 in [11434, 11434]), (column 1 in [54, 54]), and, (column 2 in ['PrivacyPolicy', 'PrivacyPolicy']), and
    2019.01.10 19:12:52.808557 [ 3247470 ] {5fec48e8-872f-4055-a573-d8cd8979c5e6} <Debug> apptica_stat.newsfeed (SelectExecutor): MinMax index condition: unknown, unknown, and, unknown, and
    2019.01.10 19:12:52.808642 [ 3247470 ] {5fec48e8-872f-4055-a573-d8cd8979c5e6} <Debug> apptica_stat.newsfeed (SelectExecutor): Selected 5 parts by date, 5 parts by key, 5 marks to read from 5 ranges
    2019.01.10 19:12:52.808798 [ 3247470 ] {5fec48e8-872f-4055-a573-d8cd8979c5e6} <Trace> apptica_stat.newsfeed (SelectExecutor): Reading approx. 640 rows with 5 streams
    2019.01.10 19:12:52.808861 [ 3247470 ] {5fec48e8-872f-4055-a573-d8cd8979c5e6} <Trace> InterpreterSelectQuery: FetchColumns -> Complete
    2019.01.10 19:12:52.809128 [ 3247470 ] {5fec48e8-872f-4055-a573-d8cd8979c5e6} <Debug> executeQuery: Query pipeline:
  • @yurganov #83115 07:13 PM, 10 Jan 2019
    -
  • @yurganov #83116 07:14 PM, 10 Jan 2019
    apt01.apptica.tech 🙂 select * from newsfeed limit 1;

    SELECT *
    FROM newsfeed
    LIMIT 1

    ┌─────────────────────────────────uuid─┬─app_id─┬─geo_id─┬─field─────────┬─value─┬─md5_value────────────────────────┬─event_date─┬──────event_datetime─┬─is_init─┬────────────────────────────prev_uuid─┐
    │ 65a8a3b7-73c1-4de9-b2ca-885fc15b6b53 │ 15 │ 1 │ ContentRating │ Teen │ 9553d6ff3248107191902859d514202e │ 2019-01-10 │ 2019-01-10 19:12:11 │ 1 │ 00000000-0000-0000-0000-000000000000 │
    └──────────────────────────────────────┴────────┴────────┴───────────────┴───────┴──────────────────────────────────┴────────────┴─────────────────────┴─────────┴──────────────────────────────────────┘

    1 rows in set. Elapsed: 0.151 sec.

    вот скорость выборки одной строки при 20 потоках
  • https://t.me/clickhouse_ru
    @den_crane #83117 07:14 PM, 10 Jan 2019
    а set max_threads=1 меняет что-нибудь?
  • @yurganov #83118 07:14 PM, 10 Jan 2019
    а вот я их отключаю (20 потоков)
  • @yurganov #83119 07:14 PM, 10 Jan 2019
    apt01.apptica.tech 🙂 select * from newsfeed limit 1;

    SELECT *
    FROM newsfeed
    LIMIT 1

    ┌─────────────────────────────────uuid─┬─app_id─┬─geo_id─┬─field─────────┬─value─┬─md5_value────────────────────────┬─event_date─┬──────event_datetime─┬─is_init─┬────────────────────────────prev_uuid─┐
    │ 65a8a3b7-73c1-4de9-b2ca-885fc15b6b53 │ 15 │ 1 │ ContentRating │ Teen │ 9553d6ff3248107191902859d514202e │ 2019-01-10 │ 2019-01-10 19:12:11 │ 1 │ 00000000-0000-0000-0000-000000000000 │
    └──────────────────────────────────────┴────────┴────────┴───────────────┴───────┴──────────────────────────────────┴────────────┴─────────────────────┴─────────┴──────────────────────────────────────┘

    1 rows in set. Elapsed: 0.006 sec.
  • @yurganov ↶ Reply to #83117 #83120 07:15 PM, 10 Jan 2019
    не очень удобно его тестить, потому что нельзя мультиплай запросы делать

    но на первый взгляд не меняет
  • https://t.me/clickhouse_ru
    все параметры можно задать для запроса прямо урле, и часть через settings в самом sql
  • @yurganov #83122 07:17 PM, 10 Jan 2019
    ok ща попробую, но
  • @yurganov #83125 07:18 PM, 10 Jan 2019
    неужели это связано с тем, что CH по максимуму расходует треды на те запросы?
  • https://t.me/clickhouse_ru
    @den_crane #83126 07:19 PM, 10 Jan 2019
    нет, просто КХ аналитическая база, он старается выделить все 100% ресурсов одному запросу, чтобы запрос за 20 мин. выполнился а не за 2 часа.
  • @yurganov #83128 07:20 PM, 10 Jan 2019
    ok?
  • @yurganov #83129 07:20 PM, 10 Jan 2019
    помогло
  • @yurganov #83130 07:21 PM, 10 Jan 2019
    но при этом
  • https://t.me/clickhouse_ru
    @den_crane #83132 07:21 PM, 10 Jan 2019
    зачем использовать КХ для такой фигни? чем mysql не устраивает?
  • @yurganov #83133 07:23 PM, 10 Jan 2019
    согласен, но

    а) это один из запросов, у меня есть другие, которые как раз аналитические
    б) см второй вопрос
  • @yurganov #83134 07:24 PM, 10 Jan 2019
    как такое может быть

    миллион строк в постгресе весят 1200 мб

    миллион строк в кх весят 50мб
  • https://t.me/clickhouse_ru
    @den_crane #83135 07:24 PM, 10 Jan 2019
    какая версия КХ, не видно, если 18.16 отключите compile_expressions и рестартуйте
  • https://t.me/clickhouse_ru
    @nicname #83136 07:24 PM, 10 Jan 2019
    кх сжимает хорошо
  • @yurganov #83137 07:24 PM, 10 Jan 2019
    архиватор попова?
  • @yurganov #83138 07:24 PM, 10 Jan 2019
    ну правда, я не понимаю
  • @yurganov #83139 07:25 PM, 10 Jan 2019
    при этом с отключенным ZSTD
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83137 #83140 07:25 PM, 10 Jan 2019
    ну сжимать по колонкам явно эффективнее, с одним типом данных
  • @yurganov ↶ Reply to #83140 #83141 07:25 PM, 10 Jan 2019
    о
  • @yurganov #83142 07:25 PM, 10 Jan 2019
    ну да, согласен
  • https://t.me/clickhouse_ru
    @ikostukovski #83143 07:25 PM, 10 Jan 2019
    скорее вопрос что у вас в постгресе за индесы на миллион строк на гиг
  • @yurganov #83144 07:25 PM, 10 Jan 2019
    это данные, не индексы
  • https://t.me/clickhouse_ru
    @ikostukovski #83145 07:26 PM, 10 Jan 2019
    может бинарь общий с соседними таблицами ?) что то задофига для примера данных выше
  • https://t.me/clickhouse_ru
    @ikostukovski #83148 07:28 PM, 10 Jan 2019
    может дикты какие левые подклчюены по уникальным полям? несоразмерный размер базы к кол-ву записей как раз таки у вас на постгресе
  • @yurganov #83149 07:28 PM, 10 Jan 2019
    угу
  • @yurganov #83150 07:29 PM, 10 Jan 2019
    диктов никаких нет
  • https://t.me/clickhouse_ru
    @ikostukovski #83151 07:29 PM, 10 Jan 2019
    у меня есть база прода на миллион с компейками пользовтаелей, так она на перконе целиком 6 гигов весит, а тут какой то лям новостей
  • @yurganov #83152 07:29 PM, 10 Jan 2019
    -
  • @yurganov #83153 07:29 PM, 10 Jan 2019
    туплю)
  • https://t.me/clickhouse_ru
    @ikostukovski #83154 07:30 PM, 10 Jan 2019
    ага )
  • @yurganov #83155 07:30 PM, 10 Jan 2019
    грешу на одно поле type=text
  • @yurganov ↶ Reply to #83151 #83157 07:30 PM, 10 Jan 2019
    ща)
  • @yurganov #83159 07:32 PM, 10 Jan 2019
    но там только int да bool
  • @yurganov #83160 07:32 PM, 10 Jan 2019
    и весит она нормально
  • @yurganov #83161 07:32 PM, 10 Jan 2019
    а тут непонятно что
  • @yurganov #83162 07:32 PM, 10 Jan 2019
    ну вообще мы ушли от темы)
  • @faerics ↶ Reply to #83137 #83163 07:36 PM, 10 Jan 2019
    это колоночная штука, колонки лучше жмутся, чем строки.
  • @yurganov #83164 07:37 PM, 10 Jan 2019
    да, осознал уже, спасибо!
  • @yurganov ↶ Reply to #83135 #83165 07:37 PM, 10 Jan 2019
    Connected to ClickHouse server version 18.16.1 revision 54412.
  • @yurganov #83166 07:37 PM, 10 Jan 2019
    -
  • https://t.me/clickhouse_ru
    @ikostukovski #83167 07:38 PM, 10 Jan 2019
    мы когда прод с логами переводили с марии колумнстора то кликхаус нам места в 2 раза выйграл
  • https://t.me/clickhouse_ru
    @ikostukovski #83168 07:38 PM, 10 Jan 2019
    единственный минус конечно что в марии хотя бы в теории можно было апдейт сделать …))
  • @yurganov ↶ Reply to #83135 #83169 07:38 PM, 10 Jan 2019
    вроде это пофиксили в 18.16.1

    если вы про это

    Исправления выполнения запросов при включенной настройке compile_expressions (включена по-умолчанию) - убрана свёртка недетерминированных константных выражений, как например, функции now. #3457
  • @yurganov ↶ Reply to #83168 #83170 07:38 PM, 10 Jan 2019
    в кликхаусе тоже можно только тсс)
  • https://t.me/clickhouse_ru
    @ikostukovski #83171 07:39 PM, 10 Jan 2019
    не совсем, в кликхаусе происходит детач и повторный аттач того участка где есть данные для апдейта
  • https://t.me/clickhouse_ru
    @ikostukovski #83172 07:39 PM, 10 Jan 2019
    то есть по факту что бы сделать апдейт одной строки может быть затронут блок в 300 метров
  • @yurganov ↶ Reply to #83167 #83173 07:39 PM, 10 Jan 2019
    так я так же думал сделать, а по итогу получил боль с неаналитическими запросами
  • https://t.me/clickhouse_ru
    я не об этом

    сделайте и рестартуйте
    # cat /etc/clickhouse-server/conf.d/compile_expressions.xml
    <?xml version="1.0"?>
    <yandex>
    <profiles>
    <default>
    <!-- 18.12.17 It does not work yet -->
    <compile_expressions>0</compile_expressions>
    </default>
    </profiles>
    </yandex>
  • https://t.me/clickhouse_ru
    ну так колоночные базы то впринципе для селектов where uuid=xxxx не используются )))
  • https://t.me/clickhouse_ru
    @ikostukovski #83176 07:40 PM, 10 Jan 2019
    они обычно рядышком стоят, на отдельных серверах себе
  • @yurganov ↶ Reply to #83175 #83177 07:41 PM, 10 Jan 2019
    у меня нет таких запросов
  • https://t.me/clickhouse_ru
    @ikostukovski #83178 07:41 PM, 10 Jan 2019
    ну я образно
  • https://t.me/clickhouse_ru
    @ikostukovski #83179 07:42 PM, 10 Jan 2019
    плюс ваша боль связана с тем что для ваших запросов наверное надо матвью сделать с другим индексом
  • https://t.me/clickhouse_ru
    @ikostukovski #83180 07:42 PM, 10 Jan 2019
    ну либо хотя бы prewhere доабвить в такой запрос
  • https://t.me/clickhouse_ru
    @ikostukovski #83181 07:42 PM, 10 Jan 2019
    данных перелапатит столько же с диска, но быстрее
  • @faerics ↶ Reply to #83176 #83182 07:42 PM, 10 Jan 2019
    то есть ставят колоночную и рядом что-то типа постгреса, свои запросы в каждую из баз?
  • https://t.me/clickhouse_ru
    @ikostukovski #83183 07:42 PM, 10 Jan 2019
    зависит от проекта, но в целом да
  • @yurganov ↶ Reply to #83174 #83184 07:42 PM, 10 Jan 2019
    стало сильно лучше
  • @yurganov #83185 07:42 PM, 10 Jan 2019
    2019.01.10 19:42:44.753594 [ 266 ] {0f3df0f2-a272-481f-9dc0-dbd6703d40f7} <Debug> MemoryTracker: Peak memory usage (for query): 58.52 KiB.
    2019.01.10 19:42:44.753482 [ 184 ] {537dfb36-3f05-4d08-ae31-6232c44eaef9} <Debug> MemoryTracker: Peak memory usage (for query): 40.36 KiB.
    2019.01.10 19:42:44.753394 [ 223 ] {99b6aeb2-1462-422f-861a-2aa4caae0816} <Debug> MemoryTracker: Peak memory usage (for query): 46.44 KiB.
  • @yurganov #83186 07:43 PM, 10 Jan 2019
    а было 5-20 мб
  • @faerics #83187 07:43 PM, 10 Jan 2019
    Ну не знаю, у меня, конечно, больно выполняются такие точечные запросы, но в целом работает) Если ключ в индексе, конечно.
  • https://t.me/clickhouse_ru
    да, я в курсе, я это нашел.
    https://github.com/yandex/ClickHouse/issues/3976
    18.16.1 compile_expressions eats memory · Issue #3976 · yandex/ClickHouse

    Without compile expressions CH eats ~3 GB (2 cache_marks + 1 dictionary) With compile expressions upto 30GB (maybe indefinite) RSS (top): 8.5GB metric value formatReadableSize(value) CompiledExpres...

  • @yurganov #83189 07:43 PM, 10 Jan 2019
    а что ты нашел именно?
  • https://t.me/clickhouse_ru
    что память течет и куча лишней работы для вашего запроса (https://github.com/yandex/ClickHouse/issues/3976)
    и понял что у вас именно это глядя на rss в вашем htop.
  • @yurganov #83191 07:45 PM, 10 Jan 2019
    угу
  • @yurganov #83192 07:45 PM, 10 Jan 2019
    почитал issue
  • https://t.me/clickhouse_ru
    нуууууууу, каждый сам хозяин своих проблем 🙂
  • https://t.me/clickhouse_ru
    @ikostukovski #83194 07:46 PM, 10 Jan 2019
    все таки для точечных запросов обычные базы лучше, там поиндексировать можно как угодно и что угодно )
  • https://t.me/clickhouse_ru
    @ikostukovski #83195 07:46 PM, 10 Jan 2019
    а у кх деревце как ни крути, чем глубже тем дольше
  • @yurganov ↶ Reply to #83194 #83196 07:48 PM, 10 Jan 2019
    За все придется платить
  • https://t.me/clickhouse_ru
    гайз серьезная проблема. надо решать!1
  • https://t.me/clickhouse_ru
    @tratatataass #83198 08:26 PM, 10 Jan 2019
    поломали совместимость от версии к версии ооооооч неприятно
  • уже в мастере
  • https://t.me/clickhouse_ru
    @tratatataass #83200 08:32 PM, 10 Jan 2019
  • @559528006 #83202 09:28 PM, 10 Jan 2019
    реализацию protobuf опять перенесли :( есть ли шанс увидеть данный функционал в ближайшем будущем или уже не стоит надеяться?
  • 11 January 2019 (342 messages)
  • @580482552 #83204 03:17 AM, 11 Jan 2019
    Joined.
  • @381244074 #83205 04:14 AM, 11 Jan 2019
    Доброе утро! Посоветуйте, какое максимальное значение можно поставить для параметра "max_concurrent_queries" при 8GB ОЗУ и 4-х ядрах? Ожидается по 2000-5000 запросов в минуту в таблицу с 600 млн записей с простыми запросами.
  • @mmmhh93 #83206 04:15 AM, 11 Jan 2019
    Возможно под такие запросы потребуется железо пожирнее
  • @mmmhh93 #83207 04:16 AM, 11 Jan 2019
    Вы с настройками из коробки замеряли производительность?
  • Да, 100 одновременных запросов выполняются быстро. Если количество одновременных запросов поднять до 300 - появляется ошибка про конкуренцию запросов и показывается этот параметр "max_concurrent_queries"
  • @mmmhh93 #83209 04:23 AM, 11 Jan 2019
    Странно, как КХ успевает 100 запросов на 4-х ядрах выполнять
  • @mmmhh93 #83210 04:23 AM, 11 Jan 2019
    Вы одно и тоже запрашиваете?
  • @mmmhh93 #83211 04:23 AM, 11 Jan 2019
    в 100 запросах
  • https://t.me/clickhouse_ru
    какой ад, участие в формуле 1 на садовой тачке.
  • @381244074 #83213 04:25 AM, 11 Jan 2019
    Нет, запросы разные. Но запросы простые - по 1-му индексному полю с узким временным диапазоном.
  • ClickHouse пока позволяет :)
  • @mmmhh93 #83215 04:27 AM, 11 Jan 2019
    Подозреваю, что всеравно будете ходить по краю
  • @mmmhh93 #83216 04:27 AM, 11 Jan 2019
    и жить от сбоя к сбою
  • https://t.me/clickhouse_ru
    на 8 гигах оом к вам придет через пару часов. Потом начнет все тормозить потому что данных слишком много и в кеш невлазят, в итоге 3 запроса параллельно будут работать.
  • @mmmhh93 #83218 04:30 AM, 11 Jan 2019
    Хотя я предвзято относился к КХ. А оказывается не умел его готовить + нарвался на косяк с сетью. Потом разобрался и у меня получилось записать примерно 60к ивентов по 1КБ в сек на ноду
  • @381244074 #83219 04:34 AM, 11 Jan 2019
    Спасибо всем за советы. Будем ставить железо более производительное :) Все же ради спортивного интереса хотелось бы примерно узнать какие есть рекомендации по параметру "max_concurrent_queries" :) Тем не менее то, что позволяет делать ClickHouse на данном железе просто фантастика.
  • @mmmhh93 #83220 04:35 AM, 11 Jan 2019
    Подскажите будет ли ощутимая разница в скорости записи/чтения при пропускной способности сети 1ГБит и 10Гбит?
  • https://t.me/clickhouse_ru
    5000 запросов в минуту это неправильный сценарий, КХ аналитическая бд, надо одним запросом сразу все окучивать.
  • @mmmhh93 #83222 04:36 AM, 11 Jan 2019
    ну такое ) пользователям не скажешь групироваться и подглядывать в отчеты к другим пользователям
  • @mmmhh93 #83223 04:37 AM, 11 Jan 2019
    Я думаю, что на больших кластерах существенно выше частота запросов
  • https://t.me/clickhouse_ru
    А в я.метрике нет API? Там пользователи меньше 5к делают запросов чтения на кластер?
  • https://t.me/clickhouse_ru
    если что я не работник яндекса, и даже никогда не видел метрику, подозреваю что в Я 400 серверов с 500ГБ озу в каждом, потянут 5к запросов
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #83226 04:43 AM, 11 Jan 2019
    Да, я понимаю, это был риторический вопрос) я к тому, что 5к надо наверно просто заскейлить а не говорить, что это плохой сценарий. Вполне нормальный для аналитического большого кластера
  • https://t.me/clickhouse_ru
    @den_crane #83227 05:00 AM, 11 Jan 2019
    В любом случае 8гб это нереально, 5 гб займут марки еще гиг всякая фигня в кх еще гиг линукс и для кеша диска и выполнения запросов уже ничего не остается. У меня кх сервер который тупо данные заливает, и не выполняет селектов жрет 20гб RES.
  • https://t.me/clickhouse_ru
    при 600м записей марки столько не займут :)
  • https://t.me/clickhouse_ru
    У меня вот базу на 200гб/30млрд постоянно пишется и мало читается, и КХ занимает 2–3 гига памяти. Конечно, что от запросов зависит, но память под них может и найтись.
  • https://t.me/clickhouse_ru
    @JenZolotarev #83230 06:18 AM, 11 Jan 2019
    всем привет,
    подскажите, cpp клиент в качестве либы есть где-то? правильно понимаю, что клиент только один - https://github.com/artpaul/clickhouse-cpp ?

    кто-то его использовал, есть за и против?
    GitHub - artpaul/clickhouse-cpp: ClickHouse C++ client library

    ClickHouse C++ client library. Contribute to artpaul/clickhouse-cpp development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @IlyaSkriblovsky #83231 06:20 AM, 11 Jan 2019
    Я использовал, но только для написания программ массовой вгрузки данных. На вид и на ощупь очень прикольный. Но моё использование было очень коротким и поверхностным.
  • https://t.me/clickhouse_ru
    @JenZolotarev #83232 06:21 AM, 11 Jan 2019
    у меня аналогичная цель, пушить данные в КХ напрямую из приложения, минуя запись в файл
  • https://t.me/clickhouse_ru
    @JenZolotarev #83233 06:21 AM, 11 Jan 2019
    вижу, что как минимум тип Nested отсутствует
  • https://t.me/clickhouse_ru
    присутствует
  • https://t.me/clickhouse_ru
    @IlyaSkriblovsky #83235 06:22 AM, 11 Jan 2019
    но заморочено немного, пришлось разбираться
  • https://t.me/clickhouse_ru
    @JenZolotarev #83236 06:22 AM, 11 Jan 2019
    readme проэкспайрился?
  • https://t.me/clickhouse_ru
    @IlyaSkriblovsky #83237 06:23 AM, 11 Jan 2019
    а, не, всё верно
  • https://t.me/clickhouse_ru
    @IlyaSkriblovsky #83238 06:23 AM, 11 Jan 2019
    Nested же это просто массивы :)
  • https://t.me/clickhouse_ru
    @IlyaSkriblovsky #83239 06:23 AM, 11 Jan 2019
    а они поддерживаются
  • https://t.me/clickhouse_ru
    @JenZolotarev #83240 06:24 AM, 11 Jan 2019
    wooops :)
  • https://t.me/clickhouse_ru
    @JenZolotarev #83241 06:24 AM, 11 Jan 2019
    по производительности данных нет?
  • https://t.me/clickhouse_ru
    То есть надо создавать параллельные массивы, как-то так:
    auto col_ot_b1 = make_shared<ColumnArray>(make_shared<ColumnUInt8>());
    auto ot_b1 = make_shared<ColumnUInt8>();
    ot_b1.Append(...);
    ot_b1.Append(...);
    col_ot_b1->AppendAsColumn(ot_b1);
  • https://t.me/clickhouse_ru
    Точных чисел не помню. У меня была задача переложить кучу данных из Монги в КХ, слегка сконвертировав на лету. Так вот, узким местом оказалась не запись в КХ, а судя по всему парсинг BSON'ов (в одном потоке). Скорость получилась порядка полмиллиона-миллион строк в секунду на одной машине (но это не точно).
  • https://t.me/clickhouse_ru
    @JenZolotarev #83244 06:29 AM, 11 Jan 2019
    в один поток вставка шла?
  • https://t.me/clickhouse_ru
    @JenZolotarev #83245 06:30 AM, 11 Jan 2019
    в целом, думаю, подойдет, надо попробовать что-то простое написать
  • https://t.me/clickhouse_ru
    @JenZolotarev #83246 06:30 AM, 11 Jan 2019
    с клиентом
  • https://t.me/clickhouse_ru
    да, с батчингом по миллиону строк
  • https://t.me/clickhouse_ru
    У нас прод кластер 128 гиг оперативы на каждом шарде, каждую минуту пишется около 200гигов сырых данных(до сжатия) постоянно выполняются запросы глубиной до года. После перехода на кх не видел пиков выше 25 гигов оперативки. КАК у вас там 20 гигов на запись что то ест?!
  • https://t.me/clickhouse_ru
    а сколько у вас шардов при такой интенсивности записей, если не секрет?
  • https://t.me/clickhouse_ru
    @ikostukovski #83250 07:12 AM, 11 Jan 2019
    15 штук на кликхаус
  • @mmmhh93 #83251 07:17 AM, 11 Jan 2019
    А процы какие? И 200Гигов это сколько строк примерно?
  • https://t.me/clickhouse_ru
    @krokodile #83252 07:20 AM, 11 Jan 2019
    Годовые запросы в сырую таблицу? Или в агрегаты? Если второе - то вручную строите агрегаты (аля кроны) или через MV с чем-то вроде SummingMergeTree
  • https://t.me/clickhouse_ru
    Intel(R) Xeon(R) Gold 5115 CPU @ 2.40GHz
    строк очень много, ивенты маленькие, но сейчас сказать точный порядок не могу
  • https://t.me/clickhouse_ru
    спасибо, но в моем сообщении вопроса про оптимизацию не было 🙂
  • https://t.me/clickhouse_ru
    @ikostukovski #83255 07:22 AM, 11 Jan 2019
    хотя если мне кто нибудь раскажет почему шард на который прилетает запрос, ест меньше оперативки чем подзапросы на соседей и как следствие подзапрос на нем работает намного дольше я буду крайне признателен 🙂
  • @mmmhh93 #83256 07:23 AM, 11 Jan 2019
    А пропускная способность сети какая? А то у меня 1Гбит и я пытаюсь спрогнозировать будет ли прирост от 10Гбит
  • https://t.me/clickhouse_ru
    @ikostukovski #83257 07:23 AM, 11 Jan 2019
    а как пропускная способность сети на производительность веников влиять будет )
  • @70532431 ↶ Reply to #83251 #83258 07:23 AM, 11 Jan 2019
    Процы курят бамбук
  • https://t.me/clickhouse_ru
    @ikostukovski #83259 07:24 AM, 11 Jan 2019
    +
  • @mmmhh93 #83260 07:24 AM, 11 Jan 2019
    Пропусная способность сети будет влиять только на скорость передчи данных.
  • @mmmhh93 #83261 07:24 AM, 11 Jan 2019
    по сети
  • https://t.me/clickhouse_ru
    считайте свой трафик на запись, смотрите мониторинг загруженности канала, если увидите что переполнение бывает то ставьте 10ки
  • https://t.me/clickhouse_ru
    @ikostukovski #83263 07:25 AM, 11 Jan 2019
    сложно так наобум без метрик сказать
  • https://t.me/clickhouse_ru
    @ikostukovski #83264 07:25 AM, 11 Jan 2019
    но честно говоря гигабит в секунду…. у нас вроде шарды вообще медью связаны )))
  • @mmmhh93 #83265 07:26 AM, 11 Jan 2019
    ну медь без проблем гигабит выдаст
  • @mmmhh93 #83266 07:27 AM, 11 Jan 2019
    По крайней мере когда я совместил писателя и КХ на одной ноде, прирост получил значительный
  • @mmmhh93 #83267 07:28 AM, 11 Jan 2019
    Так что мониторинг сети вещь обманчивая
  • @mmmhh93 #83268 07:28 AM, 11 Jan 2019
    может быть половина занята, а прирост будет от увеличения канала
  • @70532431 #83269 07:28 AM, 11 Jan 2019
    У нас 2Gбит агрегация 2 медных, больше 300 мбит при нагрузке 200Г сырых данных/минуту не видел.
    Чем шире канал - тем быстрее будете добавлять реплики, восстанавливать их, итд.
    Это задел именно на такие операции.
  • https://t.me/clickhouse_ru
    @ikostukovski #83270 07:31 AM, 11 Jan 2019
    Ну если у вас по этому же линку гоняются пользовательские запросы и что то ещё то вероятно смысл есть
  • https://t.me/clickhouse_ru
    @ikostukovski #83271 07:31 AM, 11 Jan 2019
    А вообще при возможности их лучше физически разделить
  • @mmmhh93 #83272 07:32 AM, 11 Jan 2019
    У нас запросы редкие
  • @mmmhh93 #83273 07:33 AM, 11 Jan 2019
    и простые
  • https://t.me/clickhouse_ru
    @KonstantinSemchishkin #83274 07:33 AM, 11 Jan 2019
    Joined.
  • @mmmhh93 #83275 07:33 AM, 11 Jan 2019
    данные выбираются редко большими кусками
  • @mmmhh93 #83276 07:33 AM, 11 Jan 2019
    Не совсем olap нагрузка
  • https://t.me/clickhouse_ru
    @ikostukovski #83277 07:34 AM, 11 Jan 2019
    Тогда смысла вам от той 10 на самом деле нету )
  • @pookieShmukie #83278 07:34 AM, 11 Jan 2019
    Всем привет! А в каком случае может высыпать Cancelled merging parts?
  • https://t.me/clickhouse_ru
    @ikostukovski #83279 07:34 AM, 11 Jan 2019
    2 десятки это трафик мелкого интернет провайдера беларуси ))))
  • https://t.me/clickhouse_ru
    имхо, это может быть просто потому, что в пределах локалхоста нет накладных расходов на TCP и всё что ниже
  • https://t.me/clickhouse_ru
    @Konstantin_Viktorovich #83281 07:39 AM, 11 Jan 2019
    Joined.
  • @mmmhh93 #83282 07:39 AM, 11 Jan 2019
    В любом случае прирост будет от расширения канала. Но возможно не значительный. А трафик если прикинуть то сейчас 1 нода может обработать и записать порядка 40-50тыс ивентов в секунду примерно по 1кб
  • @mmmhh93 #83283 07:39 AM, 11 Jan 2019
    + репликация
  • @mmmhh93 #83284 07:39 AM, 11 Jan 2019
    грубо говоря трафик удваивается
  • https://t.me/clickhouse_ru
    @ikostukovski #83285 07:41 AM, 11 Jan 2019
    48 метров в секунду
  • https://t.me/clickhouse_ru
    @ikostukovski #83286 07:42 AM, 11 Jan 2019
    Ну если реплик 2 то уже впритык может быть
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #83287 07:43 AM, 11 Jan 2019
    Кто-нибудь использует fluentd для вставки в КХ?
  • https://t.me/clickhouse_ru
    @Vincent_57 #83288 07:44 AM, 11 Jan 2019
    напрямую?
  • https://t.me/clickhouse_ru
    @Vincent_57 #83289 07:44 AM, 11 Jan 2019
    или через кафку?
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #83290 07:45 AM, 11 Jan 2019
    В виде
    приложение - fluentd - clickhouse
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #83291 07:45 AM, 11 Jan 2019
    Или оно не батчит логи перед вставкой?
  • https://t.me/clickhouse_ru
    Пару лет назад не батчило. Правда, там не кх был, но тем не менее...
  • https://t.me/clickhouse_ru
    Если поток логов небольшой - можно и в буфер, по-моему.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #83295 07:53 AM, 11 Jan 2019
    Судя по доке - всё же буфиризирует перед вставкой. Спасибо, буду пробовать
  • https://t.me/clickhouse_ru
    @248983972 #83296 07:59 AM, 11 Jan 2019
    У нас ребята его для вставки в hdfs используют. И говорят при росте трафика столкнулись с тем, что fluent теряет данные. Сейчас вот дебагают почему так
  • https://t.me/clickhouse_ru
    Причем вновь вставленные строки подходящие под условие удаления - удаляются. А старые - нет. Вставляю аналогичную строку с Deleted=1, Select final выводит только ее, но это не срабатывает. Grafana отображает данные.
  • https://t.me/clickhouse_ru
    @metikovvadim #83298 08:35 AM, 11 Jan 2019
    Куда копать? Или только Drop table.... поможет?
  • https://t.me/clickhouse_ru
    @zahnik #83299 08:37 AM, 11 Jan 2019
    Подскажите, можно ли сделать внешний словарь, который будет отдавать массив? В тип отдаваемой колонки записать Array(UInt32) не могу и в доках не вижу функции, которая бы работала с такими словарями.
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #83280 #83300 08:41 AM, 11 Jan 2019
    Именно так. В реализации нативного протокола КХ клиенту и серверу надо обмениваться несколько раз обмениваться сообщениями. Чем быстрей пинг и толще канал - тем лучше. В идеале - вообще один хост для клиента и КХ, но одна зона доступности AWS тоже пойдёт весьма неплохо, или свои железяки в одной lan сети
  • https://t.me/clickhouse_ru
    @orantius #83302 10:10 AM, 11 Jan 2019
    Left.
  • @r_tolmachev #83304 10:19 AM, 11 Jan 2019
    Подскажите, пожалуйта, без RAID/LVM можно использовать несколько дисков; multi data path пока не появилось? В случае с RAID/LVM, первое будет предпочтительнее, или "на вкус и цвет"?
  • Симлинками можно разнести разные базы / таблицы по разным дискам (можно наверное и сразу диск подмонтовать в нужную папку). В документации LVM использовать не советуют:
    https://clickhouse.yandex/docs/ru/operations/tips/#raid
  • Спасибо
  • Нет. Можно сделать какой-нибудь comma-separated и передеать в КХ как строку, а потом в КХ разобрать строку в таблицу.
  • https://t.me/clickhouse_ru
    @metikovvadim #83308 11:00 AM, 11 Jan 2019
    clickhouse-serer присылает собственные метрики с таймстампом в 59ю секунду кадой минуты. Это имеет побочные эффекты. Как -то можно поменять это?
  • https://t.me/clickhouse_ru
    @orloffv #83309 11:06 AM, 11 Jan 2019
    rename column пока нет?
  • https://t.me/clickhouse_ru
    @orloffv #83310 11:09 AM, 11 Jan 2019
    есть способы без пересоздания таблицы?
  • А NCQ имеет смысл для одного диска? Без RAID то есть.
  • Можно так попробовать (если данных много то OPTIMIZE будет долгим).
    ALTER ... ADD column DEFAULT old_column
    OPTIMIZE TABLE ... FINAL
    ALTER ... DROP old_column
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83312 #83313 11:14 AM, 11 Jan 2019
    О, хорошая идея, спасибо!
  • https://t.me/clickhouse_ru
    @orloffv #83314 11:14 AM, 11 Jan 2019
    А optimize сам выполняется раз в какое-то время?
  • https://t.me/clickhouse_ru
    Нет
  • https://t.me/clickhouse_ru
    @yourock88 #83316 11:19 AM, 11 Jan 2019
    Но более мелкие куски в более крупные в фоне мержатся
  • https://t.me/clickhouse_ru
    @yourock88 #83317 11:19 AM, 11 Jan 2019
    Но нет гарантии, что они когда-нибудь станут как после явного optimize
  • https://t.me/clickhouse_ru
    @yourock88 #83318 11:20 AM, 11 Jan 2019
    Мы на некоторых серверах с GraphiteMergeTree гоняем OPTIMIZE раз а неделю из-за этого :)
  • @terrifilch #83319 11:20 AM, 11 Jan 2019
    Добрый день. А есть уже люди, который начали писать rsyslogom в clickhouse логи?
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83317 #83320 11:20 AM, 11 Jan 2019
    А если у меня есть колонка, которая хеш вычисляет от поля. Она всегда это на каждый запрос делает? Или это разные кейсы
  • Полный (final) не выполняется никогда. Т.е. он регулярно в фоне выбирает части для слияния создавая из двух (или более) старых небольших частей одну новую (большую). В новой части уже будет новая колонка заполнена данными. Чем больше старая часть тем реже она будет выбираться фоновыми слияниями. Если у вас куски УЖЕ большие, то фоновые слияния скорее всего не будут выбирать для слияния - никогда или очень редко. В любом случае без OPTIMIZE дожидаться полной "материализации" добавлненной колонки - можно примерно бесконечно долго (но на самом деле будет работать и без этой материализации - просто будет вычислять на лету из DEFAULT выражения, пока старая колонка на месте)
  • https://t.me/clickhouse_ru
    Разные :)
  • Если это колонка типа MATERIALIZED, или с DEFAULT выражением - то она заполняется однократно при вставках или при фоновых слияниях (если до этого отсутствовала). Если это колонка типа ALIAS - каждый раз "на лету".
  • https://t.me/clickhouse_ru
    @orloffv #83324 11:22 AM, 11 Jan 2019
    Спасибо!
  • Я сам не проверял, но вроде бы NCQ должен наносить пользу и причинять добро и при одном диске тоже.
  • @mfilimonov #83326 11:35 AM, 11 Jan 2019
    Он же служит тому чтоб изменить порядок выполнения дисковых чтений / записей там чтоб минимилизировать количество перескоков головок.
  • @mfilimonov #83327 11:37 AM, 11 Jan 2019
    В принципе КХ всегда пишет/читает данные на диск относительно большими кусками, поэтому чтение обычно линейное без большого количества скачков головками, и польза от NCQ теоретически не так велика, но мешать он вроде бы не должен.
  • https://t.me/clickhouse_ru
    @zion_o_zaur #83328 11:39 AM, 11 Jan 2019
    Добрый день, коллеги.
    В чейнджлоге есть вот такое:
    » Для таблиц семейства MergeTree появилась возможность указать различный ключ сортировки (ORDER BY) и индекс (PRIMARY KEY). Ключ сортировки может быть длиннее, чем индекс. #3581

    Собственно, вопросы следующие:
    1. в чем заключается отличие "ключа сортировки" и "индекса" в терминах кликхауса?
    2. можно ли изменить индекс (PRIMARY KEY) у существующей таблицы с данными и к чему это может привести?
  • А SSD?
  • https://t.me/clickhouse_ru
    @zahnik #83330 11:41 AM, 11 Jan 2019
    Так и сделал, но строки обрезались до 1023 символов
  • https://t.me/clickhouse_ru
    @zahnik #83331 11:41 AM, 11 Jan 2019
    Нет. Можно сделать какой-нибудь comma-separated и передеать в КХ как строку, а потом в КХ разобрать строку в таблицу.
  • MySQL group_concat?
  • https://t.me/clickhouse_ru
    @zahnik #83333 11:42 AM, 11 Jan 2019
    PostgreSQL array_to_string
  • https://t.me/clickhouse_ru
    @zahnik #83334 11:43 AM, 11 Jan 2019
    Нашел уже другое решение проблемы. Без массивов.
  • https://t.me/clickhouse_ru
    о, спасибо.
  • https://t.me/clickhouse_ru
    @metikovvadim #83337 11:44 AM, 11 Jan 2019
    В логе :
    default.graphite_tree (StorageReplicatedMergeTree): Cannot select parts for optimization: Entry for part 20171201_20171201_0_7_1_470266 hasn't been read from the replication log yet
    Кто сталкивался ?
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83312 #83338 11:46 AM, 11 Jan 2019
    ALTER TABLE errors_replicated_index ADD COLUMN testIds DEFAULT experiments
    select experiments, testIds from errors_replicated_index where notEmpty(experiments) limit 10
  • https://t.me/clickhouse_ru
    @orloffv #83339 11:46 AM, 11 Jan 2019
    Code: 10, e.displayText() = DB::Exception: Not found column testIds in block. There are only columns: experiments, e.what() = DB::Exception
  • https://t.me/clickhouse_ru
    а что касается второй части моего вопроса, если мне нужно изменить именно индекс(primary key)? только переимпортом данных или create from select?
  • https://t.me/clickhouse_ru
    @orloffv #83341 11:46 AM, 11 Jan 2019
    не знаешь в чем дело?
  • У SSD - тоже есть своё NCQ (просто очередь заданий). Тоже должно быть скорее полезным чем вредным. Но повторюсь - я никогда не экспериментировал с этим, поэтому лучше проверять.
  • Да вот тоже не экспериментировали. Спасибо!
  • @ztlpn ↶ Reply to #83340 #83344 11:50 AM, 11 Jan 2019
    Есть (была) недокументированная возможность добавлять новые столбцы в PRIMARY KEY, реализована только для нереплицированных таблиц. Так как решили, что новая фича полностью покрывает кейсы использования старой, в новых версиях её уже не будет. Если изменение ключа какое-то более хитрое, то да, только insert select в новую таблицу.
  • https://t.me/clickhouse_ru
    да, я хочу (float32, float32, datetime) -> (uint64, datetime)
  • https://t.me/clickhouse_ru
    @zion_o_zaur #83346 11:54 AM, 11 Jan 2019
    последний идиотский вопрос - create from select не влезает в память. понятно, что можно разделить на несколько запросов, но может есть способ как-то в один запрос это сделать?
  • Не знаю. У меня работает (с) :)
  • @mfilimonov #83348 11:55 AM, 11 Jan 2019
    create table yyy Engine = MergeTree ORDER BY tuple() PARTITION BY tuple() as SELECT * from numbers(100);

    alter table yyy add column c UInt64 DEFAULT number;

    select c from yyy;
    --100 rows in set. Elapsed: 0.003 sec.
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83348 #83349 11:56 AM, 11 Jan 2019
    может связано, что у меня таблица относительно большая - 3млрд записей
  • @ztlpn ↶ Reply to #83346 #83350 11:56 AM, 11 Jan 2019
    попробуйте число потоков уменьшить, set max_threads=1
  • Шарды / реплики / дистрибютед?
  • https://t.me/clickhouse_ru
    оно в принципе не влезет, данных значимо больше, чем памяти в наличии
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83351 #83353 11:56 AM, 11 Jan 2019
    2 реплики в сумме, шардов нет
  • https://t.me/clickhouse_ru
    @jamal_sale #83354 11:59 AM, 11 Jan 2019
    Привет, подскажите пжл куда копать - есть кластер из 6 нод (3 шарда по 2 ноды с репликацией в каждом). Есть ReplicatedMergeTree таблица и Distributed над ней.
    4 ноды кластера версии 18.14.18 revision 54409 - работают без ошибок. На двух нодах 3го шарда обновлен КХ до 18.16.1 revision 54412. В err логе такие ошибки:

    2019.01.11 14:24:22.498309 [ 14 ] {} <Error> table_local (StorageReplicatedMergeTree): DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = No message received, e.what() = No message received

    Из симптомов еще - на ноды где ошибки пишется меньше данных чем в остальные. С весом на каждом шарде по 1 - на проблемный шард пишется примерно 1/10 данных, вместо положенных 1/3 (1/6 на ноду) (впрочем через weight можно "отрегулировать" )
    Вопрос основной - это фишка/баг новой версии? Стоит ли откатываться или апгрейдить остальные ноды?
  • @ztlpn ↶ Reply to #83352 #83355 11:59 AM, 11 Jan 2019
    Потребление памяти при потоковом селекте должно быть O(1), вот только константа довольно большая :)
  • https://t.me/clickhouse_ru
    ок, попробую в один поток. не взлетит - ну, побью запрос
  • https://t.me/clickhouse_ru
    спасибо
  • Были несколько ишью про "Not found column". Или это одна из них или что-то новое. Если можете повторить - то можно на github добавить.
  • Откатываться и ждать нового релиза. Этот баг уже исправлен в мастере, но пока не в релизе:
    https://github.com/yandex/ClickHouse/issues/3891
    ALTER timeout on ReplicatedMergeTree · Issue #3891 · yandex/ClickHouse

    On release 18.16.0, when applying ALTER TABLE ... ADD COLUMN on ReplicatedMergeTree table, ALTER completed on current replica, but other replicas coudn't download and apply ALTER action. On...

  • https://t.me/clickhouse_ru
    спасибо огромное!
  • @mfilimonov #83361 12:06 PM, 11 Jan 2019
    Workaround: после рестарта реплики или даунгрейда должно починиться.
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83359 #83362 12:06 PM, 11 Jan 2019
    похоже на тот же баг
  • https://t.me/clickhouse_ru
    @orloffv #83363 12:07 PM, 11 Jan 2019
    https://github.com/yandex/ClickHouse/issues/3209
    если в where указываю, то нормально селектит
    Exception: Not found column in block · Issue #3209 · yandex/ClickHouse

    Версия 18.12.17. Запрос ` CREATE TABLE default.test ( date_check Date , id1 UInt64 , id2 UInt64 , sign Int8 ) ENGINE = CollapsingMergeTree(date_check, (date_check, id1), 8192, sign); INSERT INTO de...

  • @r_abd #83364 12:09 PM, 11 Jan 2019
    Joined.
  • @r_abd #83365 12:15 PM, 11 Jan 2019
    Привет, вопрос про VersionedCollapsingMergeTree

    В документаци сказано, что cansel row должен быть полностью идентичен той записи, которую он схплонет, помимо поля sign
    > The first row cancels the previous state of the object (user). It should copy all of the fields of the canceled state excepting Sign
    https://clickhouse.yandex/docs/ru/operations/table_engines/versionedcollapsingmergetree/#example-of-use
    При этом в описании алгоритма сказано, что он смотрит на primary key, version, sign.
    > When ClickHouse merges data parts, it deletes each pair of rows having the same primary key and version and different Sign. The order of rows does not matter.
    Так на что в итоге он смотрит при схлопывании? можно ли не сохранять state всех полей, а просто удалить предыдущую версию через primary_key, version и sign == -1?
  • Проблема в том что он удалится "может быть" "когда-нибудь" при фоновых слияниях.
  • @mfilimonov #83367 12:25 PM, 11 Jan 2019
    А если вставить с правильными значениями - то можно получать правильные агрегации без FINAL
  • @mfilimonov #83368 12:27 PM, 11 Jan 2019
    Т.е. если вставить например
    value=100,sign=1
    value=100,sign=-1
    value=200,sign=1

    А потом сделать select sum(sign * value) то у вас будет правильное значение даже если фоновые слияния не закончены.
  • @mfilimonov #83369 12:27 PM, 11 Jan 2019
    Если же вы встравите просто
    value=100,sign=1
    value=0,sign=-1
    value=200,sign=1

    То результат будет невереный до завершения фоновых слияний (будет 300 вместо 100).
  • @r_abd ↶ Reply to #83367 #83370 12:29 PM, 11 Jan 2019
    А, спасибо.
    Рассчитывал, что версии будет достаточно, чтобы кх осознал, какой строке я делаю cancel
  • А вам точно нужен Collapsing?
  • https://t.me/clickhouse_ru
    @metikovvadim #83372 12:34 PM, 11 Jan 2019
    Есть специалисты по движку ReplicatedGraphiteMergeTree ?
  • А почему вы спрашиваете? :)
  • @44465839 #83374 12:42 PM, 11 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    Вопрос есть: в какой момент КХ прореживает данные, если партишен уже месяца 4 как не мерджится, правила такие:
    <pattern>
    <regexp>..............</regexp>
    <function>avg</function>
    <retention>
    <age>0</age>
    <precision>60</precision>
    </retention>
    <retention>
    <age>7776000</age><!-- 90 days -->
    <precision>600</precision>
    </retention>
    </pattern>
    И в данных все ещё минуты:
    SELECT
    Value,
    Time,
    Date,
    toDateTime(Time)
    FROM graphite201809
    WHERE (Date = '2018-09-01') AND (Path = '...................')
    LIMIT 10

    ┌─Value─┬───────Time─┬───────Date─┬────toDateTime(Time)─┐
    │ 67847 │ 1535749200 │ 2018-09-01 │ 2018-09-01 00:00:00 │
    │ 67847 │ 1535749260 │ 2018-09-01 │ 2018-09-01 00:01:00 │
    │ 67847 │ 1535749320 │ 2018-09-01 │ 2018-09-01 00:02:00 │
    │ 67847 │ 1535749380 │ 2018-09-01 │ 2018-09-01 00:03:00 │
    │ 67847 │ 1535749440 │ 2018-09-01 │ 2018-09-01 00:04:00 │
    │ 67847 │ 1535749500 │ 2018-09-01 │ 2018-09-01 00:05:00 │
    │ 67847 │ 1535749560 │ 2018-09-01 │ 2018-09-01 00:06:00 │
    │ 67847 │ 1535749620 │ 2018-09-01 │ 2018-09-01 00:07:00 │
    │ 67847 │ 1535749680 │ 2018-09-01 │ 2018-09-01 00:08:00 │
    │ 67847 │ 1535749740 │ 2018-09-01 │ 2018-09-01 00:09:00 │
  • @r_abd ↶ Reply to #83371 #83376 12:45 PM, 11 Jan 2019
    возможно мне подойдет replacing merge tree и argmax при селекте, хочу оставлять последнюю запись для одного primaryKey
    Аля, key value.
  • Хм. А если вручную запустить OPTIMIZE на таблице и посмотреть что появится в логах? Попробуйте так:
    SET optimize_throw_if_noop=1;
    SET send_logs_level='trace';
    OPTIMIZE TABLE xxx;
  • https://t.me/clickhouse_ru
    Оптимайз проходил, не поменялось ничего, сейчас выполняю команды, но получаю на 2й:
    :) SET send_logs_level='trace';

    SET send_logs_level = 'trace'

    Received exception from server (version 18.6.0):
    Code: 115. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Unknown setting send_logs_level.

    0 rows in set. Elapsed: 0.079 sec.
  • https://t.me/clickhouse_ru
    @metikovvadim #83379 12:57 PM, 11 Jan 2019
    1я отработала
  • https://t.me/clickhouse_ru
    @metikovvadim #83380 12:58 PM, 11 Jan 2019
    Весь партишен(1ТБ данных) сегодня был прооптимизирован.
  • https://t.me/clickhouse_ru
    @metikovvadim #83381 01:00 PM, 11 Jan 2019
    правила rollup - верные. graphite-clickhouse отображает данные до 13 октября как агрегированные до 10 минут, в датафайлах за сентябрь - минутные точки
  • @mfilimonov #83382 01:00 PM, 11 Jan 2019
    send_logs_level - в вашей версии ещё не поддерживается, нужно просто заглянуть в /var/log/clickhouse-server/clickhouse-server.log
  • @110657893 #83383 01:05 PM, 11 Jan 2019
    Добрый день, подскажите в запросе
    ALTER TABLE [db.]table DETACH PARTITION 'name’
    имя партиции можно указать как промежуток?
  • или по одной тольок можно деаттачить?
  • @mfilimonov #83385 01:08 PM, 11 Jan 2019
    Я не ковырял graphiteMergeTree но подозреваю что прореживание там будет происходит только при фоновых слияниях, и что алгоритм выбора частей которые должны быть подвержены слиянию там обычный. Т.е. старые и большие части будут выбираться для слияния реже чем новые и маленькие. Поэтому прореживание старых частей может происходить редко. А если вся партиция слилась в одну часть - то и вовсе никогда не будет сливать / прореживать. Решение - ручные OPTIMIZE старших данных, или даже OPTIMIZE FINAL.
  • По одной.
  • а обязательно делать через кликхаус клиент, или можно просто переместить файлы?
  • @mfilimonov #83388 01:11 PM, 11 Jan 2019
    В общем случае - обязательно через клиент
  • @mfilimonov #83389 01:14 PM, 11 Jan 2019
    Сделайте так - будет у вас список запросов. Потом копи-пасте нужного фрагмента (ну или можете WHERE добавить).
    select 'ALTER TABLE '||database||'.'||table||' DETACH PARTITION '||partition||';' from system.parts group by database,table,partition ORDER BY database, table, partition FORMAT TSVRaw;
  • Спасибо! Подскажите еще заодно, эти запросы среплицируются да?
  • https://t.me/clickhouse_ru
    Заглянул. Что искать?
  • @mfilimonov #83392 01:21 PM, 11 Jan 2019
    Я не ковырял graphiteMergeTree но подозреваю что прореживание там будет происходит только при фоновых слияниях, и что алгоритм выбора частей которые должны быть подвержены слиянию там обычный. Т.е. старые и большие части будут выбираться для слияния реже чем новые и маленькие. Поэтому прореживание старых частей может происходить редко. А если вся партиция слилась в одну часть - то и вовсе никогда не будет сливать / прореживать. Решение - ручные OPTIMIZE старших данных, или даже OPTIMIZE FINAL.
  • ^
  • да.
  • https://t.me/clickhouse_ru
    Сегодня прошёл именно optimize final и все слилось в один кусок. Данные не проредились
  • Тогда - да, странно. И действительно теперь один новый и большой кусок? Можете ещё включить part_log чтобы легко было дебаговать что именно он сливает.
  • https://t.me/clickhouse_ru
    @metikovvadim #83397 01:32 PM, 11 Jan 2019
    Ок, гляну, спасибо
  • https://t.me/clickhouse_ru
    @RecycleSup #83398 01:33 PM, 11 Jan 2019
    а давно в кх миллисекунды завезли?
  • yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data. Contribute to yandex/ClickHouse development by creating an account on GitHub.

  • Фотошоп? :)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    очевидно же что ваш клиент криво конверитит,
    или toString(_completed_at) или clickhouse-client
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #83402 #83404 01:40 PM, 11 Jan 2019
    так может там поле стринговое и лежит с миллисекундами?
  • https://t.me/clickhouse_ru
    @RecycleSup #83405 01:40 PM, 11 Jan 2019
    ааа
  • https://t.me/clickhouse_ru
    @RecycleSup #83406 01:40 PM, 11 Jan 2019
    прошу прощения, я кривой
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @stovm #83408 01:45 PM, 11 Jan 2019
    Всем добрый вечер…
    А можно как-то склеить массивы, группируя, при этом?
    user_id Int32, params Array(Int32)
    По 1 пользователю может быть много таких строк… хочу сделать такой такой group by user_id, чтобы получить уникальные user_id, params, где params состоит из всех значений.. Дальше, arrayReduce-ом уникализирую…
  • https://t.me/clickhouse_ru
    @orantius #83409 01:45 PM, 11 Jan 2019
    groupArrayArray?
  • https://t.me/clickhouse_ru
    @stovm #83410 01:46 PM, 11 Jan 2019
    Я не знаю, что такое groupArrayArray
  • https://t.me/clickhouse_ru
    Это тоже что и groupArray, но с модификатором Array. Про модификаторы - читайте в доке
  • Можно ещё groupUniqArrayArray ;)
  • https://t.me/clickhouse_ru
    @stovm #83413 01:55 PM, 11 Jan 2019
    Да, то что нужно
  • https://t.me/clickhouse_ru
    @stovm #83414 01:55 PM, 11 Jan 2019
    Спасибо всем
  • @ovovka #83415 01:55 PM, 11 Jan 2019
    привет всем, вопрос по поводу структуры:
    есть в таблице 3 поля:
    заказ_в_обработке (0/1/-1) | заказ_подтвержден (0/1/-1) | заказ_отменен (0/1/-1)
    т.е. закаказ поступил данные будут 1 | 0 | 0
    этот же заказ подтвердили, данные будут добавлены: -1 | 1 | 0
    чтобы при суммировании этих строк было 0 | 1 | 0

    а теперь нужно еще суммы цены заказов посчитать

    1) можно по аналогии: цена_заказа_в_обработке | цена_заказа_подтвержденного | цена_заказа_отмененного
    2) можно просто одно поле "цена" со значением а при подсчете статистики просто использовать конвтрукцию типа
    SUM( IF(заказ_подтвержден=1, цена, 0) ) AS сумма_цен_подтвержденных

    как думаете лучше 1 или 2й вариант, при первом варианте, кол-во полей получается +3, просто потом еще появляется сумма доставки, сумма отчислений, ... и на каждое такое доп. поле, надо еще 3 поля.
    или все же лучше использовать if не сильно ли он будет замедлять работу на больших данных?
  • https://t.me/clickhouse_ru
    @stovm ↶ Reply to #83412 #83416 01:57 PM, 11 Jan 2019
    правда после выполнения
    Code: 32. DB::Exception: Attempt to read after eof: while receiving packet from…и хост отваливается очень грустно:

    clickhouse-client -h ch810405
    ClickHouse client version 18.16.1.
    Connecting to ch810405:9000.
    Code: 210. DB::NetException: Connection refused (ch810405:9000, 10.0.104.133)
  • @mfilimonov #83417 01:58 PM, 11 Jan 2019
    ойойой, да нехорошо.
  • На простом примере работает:
    SELECT groupUniqArrayArray(x)
    FROM
    (
    SELECT arrayJoin([[1, 2, 3], [4, 5, 6]]) AS x
    )
  • @mfilimonov #83419 02:00 PM, 11 Jan 2019
    Стектрейс с сервера нужен.
  • https://t.me/clickhouse_ru
    @stovm #83420 02:00 PM, 11 Jan 2019
    Да, уже прошу у админов
  • @mmmhh93 ↶ Reply to #83415 #83421 02:02 PM, 11 Jan 2019
    Так себе как-то. Почему изначально не сделать 1 поле "order_status" и "инкрементить" .
  • @mmmhh93 #83422 02:02 PM, 11 Jan 2019
    Да и вообще может 1с лучше справится с такми задачами )
  • https://t.me/clickhouse_ru
    Неплохо
  • https://t.me/clickhouse_ru
    @stovm ↶ Reply to #83423 #83424 02:04 PM, 11 Jan 2019
    Да, у меня на руках select запрос, который кладёт сервер) Наигрывается 100%
  • Было бы здорово если бы удалось воспроизвести на каком-то небольшом примере.
  • @mfilimonov #83426 02:09 PM, 11 Jan 2019
    BTW: точно не OOM-killer?
  • @ovovka ↶ Reply to #83421 #83427 02:10 PM, 11 Jan 2019
    инкрементить чтобы знать какое состояние последнее, а при выборке брать максимальный ?
    мне кажется этого кх не выдержит, там около 10 тыс в день заказов и в день по каждому заказу раза 3 статус меняется (еще и около миллиона в день хитов) и если надо будет посчитать сумму заказов подтвержденных за 3 месяца, например...
    Вариант 1й - там просто суммирование без вычислений, сейчас работает без проблем (но теперь нужно больше данных писать)
  • @mmmhh93 #83428 02:11 PM, 11 Jan 2019
    Для сумм я бы отдельны колонки заводил
  • @mmmhh93 #83429 02:11 PM, 11 Jan 2019
    а вот для статуса 1
  • @mmmhh93 #83430 02:11 PM, 11 Jan 2019
    Когда писал о инкременте имел в виду не апдейт, а добавление строк и агрегацию или вообще просто последнее значение брать
  • https://t.me/clickhouse_ru
    @stovm #83431 02:12 PM, 11 Jan 2019
    Если и он, то странно, потому что суть запроса, который я делаю такая:
    SELECT
    dt,
    user_id,
    groupArrayArray(params)
    FROM
    (
    SELECT
    dt,
    user_id,
    params
    FROM table_1
    WHERE (dt = yesterday()) AND (user_id = 12345)
    UNION ALL
    SELECT
    dt,
    user_id,
    params
    FROM table_2
    WHERE (dt = yesterday()) AND (user_id = 12345)
    )
    GROUP BY
    dt,
    user_id
  • https://t.me/clickhouse_ru
    @stovm #83432 02:12 PM, 11 Jan 2019
    Внутренний select union all select отрабатывает быстро:
    2 rows in set. Elapsed: 0.091 sec. Processed 40.29 million rows, 161.15 MB (441.69 million rows/s., 1.77 GB/s.)
  • https://t.me/clickhouse_ru
    @stovm #83433 02:14 PM, 11 Jan 2019
    В логих ничего, даже на trace
  • @ovovka ↶ Reply to #83429 #83434 02:14 PM, 11 Jan 2019
    т.е. типа:
    в обработке = 0
    подтвержден = 1
    отменен = 2

    но у меня вопрос как раз про суммы, т.к. для статусов 3 поля они как есть так и не увеличатся (некритично), а вот разные виды сумм добавляются
  • OOM-killer?
    dmesg
  • @mmmhh93 #83436 02:15 PM, 11 Jan 2019
    Я думаю что IF в агрегационной функции дорогое удовольствие
  • https://t.me/clickhouse_ru
    @stovm #83438 02:16 PM, 11 Jan 2019
    SELECT
    dt,
    user_id,
    groupUniqArrayArray(params)
    FROM
    (
    SELECT
    dt,
    user_id,
    params
    FROM table_1
    WHERE (dt = yesterday())
    UNION ALL
    SELECT
    dt,
    user_id,
    params
    FROM table_2
    WHERE (dt = yesterday())
    )
    GROUP BY
    dt,
    user_id
  • https://t.me/clickhouse_ru
    @stovm #83439 02:16 PM, 11 Jan 2019
    Да, при этом такой запрос отрабатывает. Хотя требует явно больше памяти
  • @ovovka ↶ Reply to #83436 #83440 02:17 PM, 11 Jan 2019
    ок, спасибо, я тоже об этом думал, тогда добавлю больше колонок
  • В кликхаусе есть так называемые модификаторы аггрегатных функций, один из низ -If. Т.е. можно написать sumIf(amount, state='processed')
  • https://t.me/clickhouse_ru
    @stovm ↶ Reply to #83435 #83442 02:18 PM, 11 Jan 2019
    нет его
  • @mfilimonov #83443 02:18 PM, 11 Jan 2019
    Значит должен быть stacktrace :P
  • @mmmhh93 ↶ Reply to #83440 #83444 02:20 PM, 11 Jan 2019
    sumIf(amount, state='processed') возможно так будет приемлемо работать. Но я пока в КХ не сильно знаток
  • @mmmhh93 ↶ Reply to #83441 #83445 02:21 PM, 11 Jan 2019
    Это будет делать предрасчеты? или просто синтаксический сахар?
  • Сахар, но хороший :)
  • @ovovka ↶ Reply to #83444 #83447 02:22 PM, 11 Jan 2019
    спасибо буду знать, но тут вопрос скорее в том какие это будет накладные расходные создавать или просто лучше доп. колонки использовать а там в расчетах будет просто SUM() по колонкам
  • @mmmhh93 #83448 02:23 PM, 11 Jan 2019
    Тест всему голова
  • У вас объемы для КХ смешные. Разве что вы будете эти суммы лет на 100 считать.
  • @mfilimonov #83450 02:26 PM, 11 Jan 2019
    Так что не парьтесь (пока) накладными расходами. Важно: если у вас заказы в перемешку с другими событиями - то отфильтруйте их сначала - с помощью WHERE (а если заказов по сравнению с остальными событиями мало - то с помощью PREWHERE).
  • @ovovka ↶ Reply to #83449 #83451 02:27 PM, 11 Jan 2019
    может быть, и это радует, но даже смешные по объему базы можно положить "неверной" структурой и соответствующими запросами
  • @mmmhh93 ↶ Reply to #83451 #83452 02:28 PM, 11 Jan 2019
    Это у вас единственная база или есть OLTP?
  • @mmmhh93 #83453 02:28 PM, 11 Jan 2019
    А КХ только для аналитики
  • @mmmhh93 #83454 02:29 PM, 11 Jan 2019
    Я нихочу никого подстегивать, но врядли КХ лучший вариант для базы учета
  • @ovovka ↶ Reply to #83453 #83455 02:31 PM, 11 Jan 2019
    кх только для агрегации - для аналитики, статистики, но ей пользуются много пользователей.
    Ранее для этого использовали mysql там агрегация была, но mysql с какого-то момента с этим не справляется, слишком большие составные индексы (составной индекс почти по всем полям)
  • @mmmhh93 #83456 02:32 PM, 11 Jan 2019
    Он же наверное кластерный?
  • @ovovka #83457 02:32 PM, 11 Jan 2019
    да
  • @mmmhh93 #83458 02:32 PM, 11 Jan 2019
    Для аналитики, точно ок
  • https://t.me/clickhouse_ru
    @frenkyoptic #83459 02:37 PM, 11 Jan 2019
    Ребята а где можно еще почитать про странное поведение между версиями 18.14.12 new и old 1.1.542
    new:
    SELECT max(adId) AS maxAdId
    FROM d_events
    WHERE date > '2020-01-01'

    ┌─maxAdId─┐
    │ 0 │
    └─────────┘

    1 rows in set. Elapsed: 0.013 sec.

    old:

    SELECT max(adId) AS maxAdId
    FROM d_events
    WHERE date > '2020-01-01'

    Ok.

    0 rows in set. Elapsed: 0.007 sec.

    Теперь всегда выдает резултат 0 если нету данных?
  • Ну вот если бы у вас было 10000 заказов в секунду, то я бы посоветовал сделать статус как битовое поле. 1=processed,2=confirmed,4=cancelled. Потом с помощью groupBitOr получить информацию о том в каких статусах побывал заказ. Использование одного (и к тому же небольшого) поля намного эффективнее, а битовые операции намного дешевле чем тот же max.
  • @mfilimonov #83461 02:41 PM, 11 Jan 2019
    а amountы для каждого заказа - если не меняются то брать один. Если меняются - то и так придется какой-то if делать.
  • https://t.me/clickhouse_ru
    @stovm ↶ Reply to #83425 #83462 02:42 PM, 11 Jan 2019
    SET allow_experimental_low_cardinality_type = 1;

    CREATE TABLE test.table1
    (
    dt Date,
    id Int32,
    arr Array(LowCardinality(String))
    ) ENGINE = MergeTree PARTITION BY toMonday(dt)
    ORDER BY (dt, id) SETTINGS index_granularity = 8192;

    CREATE TABLE test.table2
    (
    dt Date,
    id Int32,
    arr Array(LowCardinality(String))
    ) ENGINE = MergeTree PARTITION BY toMonday(dt)
    ORDER BY (dt, id) SETTINGS index_granularity = 8192;

    insert into test.table1 (dt, id, arr)
    values (toDate(now()), 1, ['aaa']);
    insert into test.table2 (dt, id, arr)
    values (toDate(now()), 1, ['aaa','bbb','ccc']);

    select dt,
    id,
    groupArrayArray(arr)
    from (
    select dt, id, arr
    from test.table1
    where dt = today()
    and id = 1
    UNION ALL
    select dt, id, arr
    from test.table2
    where dt = today()
    and id = 1
    )
    group by dt, id
  • https://t.me/clickhouse_ru
    @stovm #83463 02:43 PM, 11 Jan 2019
    Завести issue?
  • https://t.me/clickhouse_ru
    @Krashuevina #83464 02:43 PM, 11 Jan 2019
    А кто в курсе, судьба per-column конфигурируемого сжатия какова? В частности интересует, будет ли delta-compression
  • @ovovka ↶ Reply to #83460 #83465 02:43 PM, 11 Jan 2019
    например, надо посчитать за 3 дня кол-во заказов в обработке и подтвержденных и отменных и еще суммы их цен с соответствующим разделением и еще суммы доствок с соотвествующим разделении.

    если под каждый параметр свое поле - просто суумируем по столбцам и сразу убиваем всех зайцев без каких либо накладных расходов (кроме кол-ва колонок)
  • Да. Воспроизвелось :) Но это всё-таки experimental и low_cardinality, так что в определенном смысле простительно. :)
  • https://t.me/clickhouse_ru
    @stovm ↶ Reply to #83466 #83467 02:46 PM, 11 Jan 2019
    Да при таких скоростях, всё простительно, если честно)))) Непростительна только самопроизвольная потеря при записи или утечки памяти))))
  • а альтер запросы сейчас все реплицируются?
  • Не все, например FREEZE не реплицируется. В документации вроде всё должно быть.
  • https://t.me/clickhouse_ru
    # cat /etc/clickhouse-server/conf.d/empty_result_instead_of_zero.xml
    <?xml version="1.0"?>
    <yandex>
    <profiles>
    <default>
    <!-- 1.1.54362 We are not ready for aggregating functions to return 0 insted of an empty set -->
    <empty_result_for_aggregation_by_empty_set>1</empty_result_for_aggregation_by_empty_set>
    </default>
    </profiles>
    </yandex>

    Релиз ClickHouse 1.1.54362, 2018-03-11
    Агрегация без GROUP BY по пустому множеству (как например, SELECT count(*) FROM table WHERE 0) теперь возвращает результат из одной строки с нулевыми значениями агрегатных функций, в соответствии со стандартом SQL. Вы можете вернуть старое поведение (возвращать пустой результат), выставив настройку empty_result_for_aggregation_by_empty_set в значение 1.
  • https://t.me/clickhouse_ru
    Огромное спасибо!
  • @mmmhh93 #83472 04:09 PM, 11 Jan 2019
    Вообще сейчас какая версия по настоящему стабильная? Поставил недавно 18.16.1, но слышу что периодически вылазят проблемы с этой версией
  • https://t.me/clickhouse_ru
    @den_crane #83473 04:13 PM, 11 Jan 2019
    1.1.54394 самый стейбл
  • @mmmhh93 #83474 04:14 PM, 11 Jan 2019
    Это типа несколько летней давности?
  • https://t.me/clickhouse_ru
    @den_crane #83475 04:14 PM, 11 Jan 2019
    июнь
  • @mmmhh93 #83476 04:14 PM, 11 Jan 2019
    мне как минимум апдейты нужны
  • https://t.me/clickhouse_ru
    @den_crane #83477 04:14 PM, 11 Jan 2019
    шашечки или ехать
  • https://t.me/clickhouse_ru
    @nicname #83478 04:15 PM, 11 Jan 2019
    ехать и проблесковые маячки )
  • https://t.me/clickhouse_ru
    @den_crane #83479 04:16 PM, 11 Jan 2019
    билдим из мастера и в прод
  • @mmmhh93 #83480 04:16 PM, 11 Jan 2019
    Я в прод только целюсь
  • @mmmhh93 #83481 04:16 PM, 11 Jan 2019
    и точно все еще не раз буду перепроверять
  • @mmmhh93 #83482 04:17 PM, 11 Jan 2019
    Спрашиваю скорее о проблемах уровня блокер
  • @mmmhh93 #83483 04:17 PM, 11 Jan 2019
    есть ли такие
  • @mmmhh93 #83484 04:18 PM, 11 Jan 2019
    Еще и от распрастраненности продукта зависит. К примеру мною любимый спарк, там можно не сильно опасаясь многие эксперементал фичи в проде использовать.
  • @mmmhh93 #83485 04:19 PM, 11 Jan 2019
    Так как огромное ко-во "тестировщиков" все отлавливают
  • @mmmhh93 #83486 04:19 PM, 11 Jan 2019
    И столько же желающих фиксить
  • https://t.me/clickhouse_ru
    @den_crane #83487 04:20 PM, 11 Jan 2019
    жаль что КХ не спарк.
  • @mmmhh93 #83488 04:20 PM, 11 Jan 2019
    Довольно разные продукты, но по поулярности пока не спарк.
  • @ztlpn #83489 04:28 PM, 11 Jan 2019
    Например альтинити у себя в блоге публикуют какую версию не страшно использовать по их мнению :) Сейчас - 18.14.19
  • @mmmhh93 ↶ Reply to #83489 #83490 04:30 PM, 11 Jan 2019
    Спасибо за полезную информацию 👍
  • @mmmhh93 #83491 05:43 PM, 11 Jan 2019
    Я что-то не правильно делаю или новую базу данных нужно на всех нодах создавать?
  • @mmmhh93 #83492 05:43 PM, 11 Jan 2019
    Или это говорит о проблемах с зукипером?
  • @mmmhh93 #83493 05:44 PM, 11 Jan 2019
    Я только что насетапил 8 нод и создаю схему
  • https://t.me/clickhouse_ru
    на всех, все ноды КХ независимы и не знаю друг про друга.

    можно создать on cluster
  • @mmmhh93 #83495 05:44 PM, 11 Jan 2019
    я в доке не нашел он кластер конструкцию у create database
  • https://t.me/clickhouse_ru
    @den_crane #83496 05:45 PM, 11 Jan 2019
    в доке вообще много чего не написано
  • @faerics ↶ Reply to #83495 #83497 05:45 PM, 11 Jan 2019
    Собираю потихоньку это все, хочу сделать PR.
  • @mmmhh93 #83498 05:46 PM, 11 Jan 2019
    Выходит я неправильно делал. Я чисто логически думаю, а если нод много - это же унижение на каждой базу создавать
  • @faerics ↶ Reply to #83498 #83499 05:47 PM, 11 Jan 2019
    Скриптом можно )
  • @mmmhh93 #83500 05:48 PM, 11 Jan 2019
    Я был на грани раздумий запустить ансибл сценарий который через локальный клиент создаст базу, но решил спросить
  • Сейчас реализация снова в разработке. Я думаю, можно ожидать в феврале.
  • @mmmhh93 #83502 07:19 PM, 11 Jan 2019
    Протобаф - это только RPC или батчить тоже умеет?
  • @mmmhh93 #83503 07:20 PM, 11 Jan 2019
    Иначе какие приемущества перед HTTP и нативным клиентом?
  • Делают больше.
  • Импорт и экспорт данных в protobuf.
  • @oleg_kozlyuk #83506 07:51 PM, 11 Jan 2019
    У протобафа есть огромный недостаток - потребляемая память
  • @oleg_kozlyuk #83507 07:51 PM, 11 Jan 2019
    До 2-3 раз от сообщения
  • @oleg_kozlyuk #83508 07:52 PM, 11 Jan 2019
    Если бы я что-то похожее делал, то смотрел бы в сторону FlatBuffers либо Cap'n Proto (хотя последним не пользовался)

    Хех. А Cap'n proto-то уже есть, похоже. Надо мне чаще смотреть в исходники
  • https://t.me/clickhouse_ru
    Тут все чинно
    SELECT *
    FROM system.part_log

    ┌─event_type────┬─event_date─┬──────────event_time─┬─duration_ms─┬─database─┬─table──────────┬─part_name───────────────────────┬─────────rows─┬─size_in_bytes─┬─merged_from─────────────────────────────────────────────────────────────────────────────────────┬─bytes_uncompressed─┬──────read_rows─┬─────read_bytes─┬─error─┬─exception─┐
    │ MERGE_PARTS │ 2019-01-11 │ 2019-01-11 11:57:53 │ 43605327 │ default │ graphite201809 │ 20180901_20180930_1_3_2_1143814 │ 243205159999 │ 1187658212930 │ ['20180901_20180930_1_1_0_1143814','20180901_20180930_2_2_1_1143814','20180911_20180911_3_3_0'] │ 34036679123426 │ 34036679124474 │ 34036679124474 │ 0 │ │
    │ REMOVE_PART │ 2019-01-11 │ 2019-01-11 12:06:09 │ 0 │ default │ graphite201809 │ 20180901_20180930_1_1_0_1143814 │ 243205128308 │ 1183465936173 │ [] │ 0 │ 0 │ 0 │ 0 │ │
    │ REMOVE_PART │ 2019-01-11 │ 2019-01-11 12:06:09 │ 0 │ default │ graphite201809 │ 20180901_20180930_2_2_1_1143814 │ 31691 │ 273323 │ [] │ 0 │ 0 │ 0 │ 0 │ │
    │ REMOVE_PART │ 2019-01-11 │ 2019-01-11 12:06:09 │ 0 │ default │ graphite201809 │ 20180911_20180911_3_3_0 │ 8 │ 1018 │ [] │ 0 │ 0 │ 0 │ 0 │ │
    └───────────────┴────────────┴─────────────────────┴─────────────┴──────────┴────────────────┴─────────────────────────────────┴──────────────┴───────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────┴────────────────────┴────────────────┴────────────────┴───────┴───────────┘
  • По проекту, protobuf будет выводиться и считываться потоково, без создания временных объектов-сообщений. Иначе есть шанс, что он окажется медленнее, например, CSV.
  • Cap'n'Proto поддерживается только на чтение (импорт) данных. Потому что разработчикам этой фичи, было необходимо только импортировать данные в этом формате.
  • А парсить обратно его можно без потребления дополнительной памяти?
  • @milovidov_an #83513 09:04 PM, 11 Jan 2019
    Да.
  • @oleg_kozlyuk #83514 09:06 PM, 11 Jan 2019
    Тогда подскажите как, потому что я видимо чего-то не знаю?)
  • @milovidov_an #83515 09:09 PM, 11 Jan 2019
    Примерно аналогично RowBinary - читаем нужные байты в нужном порядке. Кстати, есть доступные библиотеки, которые тоже позволяют это делать...
  • @oleg_kozlyuk #83516 09:10 PM, 11 Jan 2019
    Ну то есть не средствами самого protobuf?
  • @milovidov_an #83517 09:10 PM, 11 Jan 2019
    Да, но из protobuf получаем работу с метаданными (дескрипторы сообщений).
  • @oleg_kozlyuk #83518 09:14 PM, 11 Jan 2019
    Ну, если действительно удастся zero-copy и будет документация как ее сделать - тоже хороший вариант
  • https://t.me/clickhouse_ru
    @vlad10nik #83519 09:31 PM, 11 Jan 2019
    Привет все вопрос про engine Kafka
    Не записываются данные в конечную таблицу
    Создал
    1) Kafka engine таблицу
    2) таблицу в которую должны сохранить яться данные
    3 материализованное представление

    Из уточнений
    1) Kafka на сервере доступна по dsn xxx-kafka1-xxx.com:9092
    2) данные в kafka хранятся в JSON
    3) в созданных таблицах не перечислены все поля, которые есть в сообщениях Kafka

    Никакой информации, что что-то не работает в Логах clickhouse не появляется( скорее всего я просто не вижу этого)

    Был бы рад содействию в решении проблемы.

    Спасибо!
  • https://t.me/clickhouse_ru
    @den_crane #83520 09:36 PM, 11 Jan 2019
    что подразумевается под JSON ? JSONEachRow ?
  • https://t.me/clickhouse_ru
    @den_crane #83521 09:37 PM, 11 Jan 2019
    КХ понимает очень ограниченный json тренируйтесь на простых примерах {a:5,b:6}
  • https://t.me/clickhouse_ru
    @vlad10nik #83522 09:38 PM, 11 Jan 2019
    Сообщения в kafka - это json’ы. Разделитель ‘\n
  • https://t.me/clickhouse_ru
    @den_crane #83523 09:38 PM, 11 Jan 2019
    КХ не умеет JSON на input https://clickhouse.yandex/docs/en/interfaces/formats/
  • https://t.me/clickhouse_ru
    В json есть вложенные структуры с глубиной до 4
  • https://t.me/clickhouse_ru
    @vlad10nik #83525 09:44 PM, 11 Jan 2019
    Но в примере из документации при создании Kafka engine указывается kafka_format = JSONEachRow.
    Т.е на сколько я понимаю, Clickhouse принимает json на вход.
    Или я что-то неправильно понимаю?
  • https://t.me/clickhouse_ru
    отлично, КХ не умеет этого.
    https://clickhouse.yandex/docs/ru/interfaces/formats/#jsoneachrow
  • все правильно.
    у вас в одном json сразу множество строк описано? у меня так не заработало. получилось только когда1 сообщение в кафке содержало 1 строку для таблицы
  • https://t.me/clickhouse_ru
    @vlad10nik #83528 09:47 PM, 11 Jan 2019
    у меня одно сообщнюение кафки = одной строке clickhouse
  • https://t.me/clickhouse_ru
    @vlad10nik #83529 09:48 PM, 11 Jan 2019
    Точнее должно быть равно одной строке Clickhouse
  • @332632270 #83530 09:48 PM, 11 Jan 2019
    а для чего разделитель \n нужен?
  • https://t.me/clickhouse_ru
    @vlad10nik #83531 09:49 PM, 11 Jan 2019
    Сообщения в кафке разделены через разделитель
  • https://t.me/clickhouse_ru
    @vlad10nik #83532 09:51 PM, 11 Jan 2019
    Возможно вы подскажете, что должно появиться в логах Кликхаус в случае успешного/ неуспешного подключения к Кафке ?
  • https://t.me/clickhouse_ru
    @nicname #83533 09:54 PM, 11 Jan 2019
    в случае успешного что-то типа
    2019.01.11 21:53:51.438585 [ 20 ] {} <Debug> StorageKafka (KafkaTable): Started streaming to 1 attached views
  • @332632270 #83534 09:58 PM, 11 Jan 2019
    я у себя замечал некоторые странности с движком кафки. бывало, что данные в конечную таблицу долго не приходили (в течении нескольких минут), а потом появлялись. бывало, что вроде все правильно настроено, но данные снова не доходят. тогда я пересоздавал таблицы, пересоздавал топики, занова наполнял их данными - и получалось. думаю что причина в том что я что-то неправильно делал так как большого опыта не имею. но попробовать все пересоздать могу посоветовать на всякий случай если не появится идей по-лучше
  • https://t.me/clickhouse_ru
    @vlad10nik #83535 09:59 PM, 11 Jan 2019
    Sergey Спасибо!
  • https://t.me/clickhouse_ru
    @vlad10nik #83536 10:02 PM, 11 Jan 2019
    Хотел бы на всякий случай уточнить: Я хотел бы писать толкько несколько полей из JSON сообщений kafka. С этим не должно быть проблем? Или же это реализовано таким образом, что нужно записывать все поля?
  • @332632270 #83537 10:05 PM, 11 Jan 2019
    незнаю, я у себя все пишу. если таблица с движком кафки должна записывать в себя все данные, может можно не писать в результирующую таблицу не указав лишние колонки в мат. вью?
    если возможно, то помогло бы увидеть пример сообщения в формате JSONEachRow и Запросы на создание таблиц. У меня как-то не заполнялось из-за того, что я строку забыл как нулейбл при создании таблицы указать, хотя нулы туда слал.
  • https://t.me/clickhouse_ru
    @vlad10nik #83538 10:15 PM, 11 Jan 2019
    Sergey {
    "hostname": "s2",
    "adhash": "{*********}",
    "ext": {
    "adhash_ext": null,
    "****_ext": {
    "*****": "***************************************"
    },
    "****_ext": null,
    "keywords": "*******:*****,*******,1111,******:11111"
    },
    "*******": 604800,
    "*******": 0,
    "*******": 0,
    "****_****": {
    "***_***": {
    "****_***": {
    "6007": 1111111111,
    "6014": 1111111111,
    "6016": 1111111111,
    }
    },
    "timestamp": "2019-01-11 22:09:49",
    "bid_timestamp": "2019-01-11 22:09:49",
    "timezone": "-0500",
    }
  • https://t.me/clickhouse_ru
    @vlad10nik #83539 10:16 PM, 11 Jan 2019
    это грубый пример сообщения, для таблицы в Clickhouse нужно доставать значения из только из первого уровня вложеннности ( например hostname timstamp, bid_timestamp)
  • https://t.me/clickhouse_ru
    @vlad10nik #83540 10:17 PM, 11 Jan 2019
    Это DDL для создания таблиц

    CREATE TABLE IF NOT EXISTS kafka_test.queue (
    timestamp String,
    bid_timestamp String,
    hostname String
    )
    ENGINE = Kafka
    SETTINGS
    kafka_broker_list = 'localhost:9092',
    kafka_topic_list = 'sometopic',
    kafka_group_name = 'somwgroupid',
    kafka_format = 'JSONEachRow',
    kafka_row_delimiter = '\n',
    kafka_num_consumers = 1;

    CREATE TABLE IF NOT EXISTS kafka_test.topic (
    date Date,
    bid_date Date,
    hostname String
    )
    ENGINE = MergeTree(date, (date, bid_date, hostname), 8192);

    CREATE MATERIALIZED VIEW kafka_test.consumer
    TO kafka_test.topic
    AS
    SELECT toDate(toDateTime(timestamp)) as date, toDate(toDateTime(bid_timestamp)) as bid_date, hostname
    FROM kafka_test.queue;
  • https://t.me/clickhouse_ru
    КХ умеет JSONEacherow, однострочные json, без вложенности
  • так выглядит 1 мессадж в топике кафки? думаю таблица в кликхаусе не в состоянии выбрать только полян на 1 уровне вложенности проигнорировав сложные поля
  • @332632270 #83543 10:20 PM, 11 Jan 2019
    {
    "hostname": "s2",
    "timestamp": "2019-01-11 22:09:49",
    "bid_timestamp": "2019-01-11 22:09:49"
    }
    вот с таким сообщением она бы наверное справилась
  • https://t.me/clickhouse_ru
    @vlad10nik #83544 10:21 PM, 11 Jan 2019
    @snbulgakov Я ожидал, что Кликхаус где-то ругнется, что что-то не так, но в логах девственная чистота
  • https://t.me/clickhouse_ru
    @vlad10nik #83545 10:22 PM, 11 Jan 2019
    Sergey В любом случае спасибо !
  • @332632270 #83546 10:24 PM, 11 Jan 2019
    Незачто. Вы логи тут смотрите: /var/log/clickhouse-server/clickhouse-server.err.log ? файл вообще пустой?
  • https://t.me/clickhouse_ru
    @vlad10nik #83547 10:25 PM, 11 Jan 2019
    Да, конечно тут)
  • https://t.me/clickhouse_ru
    @nicname #83548 10:27 PM, 11 Jan 2019
    а уровень логгирования какой?
  • 12 January 2019 (23 messages)
  • https://t.me/clickhouse_ru
    @frolovigoru #83549 09:09 AM, 12 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @frolovigoru #83550 09:23 AM, 12 Jan 2019
    Всем привет)
    Не могу побороть ошибку DB::Exception: Cannot read array from text. Больше ничего не пишет

    Есть две одинаковые таблицы в clcikHouse, в одной есть некоторые поля String формата ['aa','bb'] в другой эти поля имеют тип Array(String).
    Переливаю данные из одной в другую (insert into table target_table select * from table_str)
    Какая то часть данных добавляется, массивы заполнены, потом возникает эта ошибка

    Нашел пару подобных ошибок в данной группе, но не помогло. Может кто знает все случаи в каких возникает эта ошибка? и как можно отловить строку на которой падает?
  • @762782427 #83551 09:36 AM, 12 Jan 2019
    Joined.
  • бот влил бота
  • Возможно, у некоторых записей в этом поле лежит пустая строка?
  • https://t.me/clickhouse_ru
    @vic_gald ↶ Reply to #83552 #83554 10:18 AM, 12 Jan 2019
    рекурсия
  • https://t.me/clickhouse_ru
    Таблица которая со строками заливал spark, все поля обрабатывались
    даже каунтами проверил на длину строк
  • @antonio_antuan #83556 10:21 AM, 12 Jan 2019
    Ну самый банальный выход, который приходит в голову: insert from select... order by some_date_field limit X. И уменьшайте X, пока не найдете кривую строчку.
  • https://t.me/clickhouse_ru
    @frolovigoru #83557 10:21 AM, 12 Jan 2019
    у меня 80млн))
  • @antonio_antuan #83558 10:22 AM, 12 Jan 2019
    Начните с 30кк :)
  • https://t.me/clickhouse_ru
    @frolovigoru #83559 10:22 AM, 12 Jan 2019
    а он их не рандомно берет?
  • @antonio_antuan #83560 10:22 AM, 12 Jan 2019
    Нет, если сделаете order by
  • И нет строк, у которых длина этого поля = 0?
  • https://t.me/clickhouse_ru
    @frolovigoru #83562 10:25 AM, 12 Jan 2019
    ну кстати как вариант) спасибо

    А ещё вопрос, почему
    truncate distributed table выдает DB::Exception: Can't proxy this query. Unsupported query type.
  • https://t.me/clickhouse_ru
    @frolovigoru #83563 10:26 AM, 12 Jan 2019
    да, нет таких строк
  • https://t.me/clickhouse_ru
    @frolovigoru #83564 10:28 AM, 12 Jan 2019
    и когда ему пустую строку подсовываешь он выдает ошибку то что должно начинаться с '
  • https://t.me/clickhouse_ru
    @frolovigoru #83565 10:30 AM, 12 Jan 2019
    точнее вот эту
    DB::Exception: Cannot parse input: expected [ at end of stream..
  • @antonio_antuan #83566 10:32 AM, 12 Jan 2019
    А "селект фром инсерт... лимит 1" проходит?
  • https://t.me/clickhouse_ru
    @frolovigoru #83567 10:33 AM, 12 Jan 2019
    да
  • https://t.me/clickhouse_ru
    Вдруг кому пригодится
    В одном из полей попалось значение ['кот д'ивуар']

    так что надо проверять поля тщательнее))
  • https://t.me/clickhouse_ru
    @dgrvv #83569 07:35 PM, 12 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @dmitry_razumikhin #83570 09:01 PM, 12 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    Ох, это больно
  • 13 January 2019 (15 messages)
  • https://t.me/clickhouse_ru
    @i_1van #83572 01:12 AM, 13 Jan 2019
    Joined.
  • @170810829 #83573 09:51 AM, 13 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @NanoBjorn #83574 04:18 PM, 13 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @NanoBjorn #83575 04:18 PM, 13 Jan 2019
    Куда можно задавать тупые вопросы по кх?
  • https://t.me/clickhouse_ru
    @orloffv #83576 04:18 PM, 13 Jan 2019
    сюда
  • https://t.me/clickhouse_ru
    @NanoBjorn #83577 04:19 PM, 13 Jan 2019
    Нормально, что у меня docker-compose build не собирает мастер?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @igor_dia #83579 04:20 PM, 13 Jan 2019
    А как плотность распределения построить? Как функцию распределения через квантили сделать - я разобрался. а вот разницу междусоседними квантилями теперь как?
  • https://t.me/clickhouse_ru
    @nicname #83580 04:29 PM, 13 Jan 2019
    а как функцию распределения через квантили сделали?
  • https://t.me/clickhouse_ru
    @igor_dia #83581 04:35 PM, 13 Jan 2019
    SELECT min(x), quantiles(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9)(x) as quant_yield, max(x) FROM table
  • https://t.me/clickhouse_ru
    @nicname #83582 04:42 PM, 13 Jan 2019
    спасибо, подписшусь на ответы про плотность распределения
  • https://t.me/clickhouse_ru
    @igor_dia #83583 04:44 PM, 13 Jan 2019
    я пока разницу между соседними сделал в остальной части приложения на питоне, но, как понимаете, ценой снижения скорости
  • https://t.me/clickhouse_ru
    @igor_dia #83585 04:54 PM, 13 Jan 2019
    Проверил расчеты. там надо выдавать не разность квантилей, а step/(x_i - x_{i-1}) - это значение плотности распределения в точке (x_i+x_{i-1})/2, step - это с каким шагом берем квантили
  • https://t.me/clickhouse_ru
    @igor_dia #83586 07:44 PM, 13 Jan 2019
    С clickhouse_driver кто-нибудь работал? У меня на двух последовательных запросах в базу выдает ошибку:
    clickhouse_driver.errors.UnknownPacketFromServerError: Code: 100. Unknown packet 4 from server clickhouse:9000
    И причем только на одной странице сайта. остальные запросы выполняются штатно
  • https://t.me/clickhouse_ru
    @igor_dia #83587 07:47 PM, 13 Jan 2019
    И периодически такая:
    Unexpected packet from server clickhouse:9000 (expected Pong, got Data)
  • 14 January 2019 (179 messages)
  • https://t.me/clickhouse_ru
    @voldemarkorenev #83588 04:18 AM, 14 Jan 2019
    Внешний словарь может выступать источником для мат.представления? В качестве источника внешнего словаря пробую файл. Мат.представление должно забирать данные из dictionary-таблицы, но не хочет этого делать. Так и должно быть?
  • https://t.me/clickhouse_ru
    не может. MV это триггер на инсерт, вычисляется над вставляемым блоком.
  • https://t.me/clickhouse_ru
    @voldemarkorenev #83590 04:40 AM, 14 Jan 2019
    Понятно. Какие тогда есть варианты перенести данные внешнего словаря в mergetree?
  • https://t.me/clickhouse_ru
    @voldemarkorenev #83591 04:45 AM, 14 Jan 2019
    Ну, кроме ручного insert 🙂
  • https://t.me/clickhouse_ru
    А зачем? это бесмыссленно,словари ведь маленькие и статичные. Один раз можно и инсертом.
  • https://t.me/clickhouse_ru
    Суть задачи следующая :есть в Oracle таблица, содержимое которой постоянно меняется. Пускай, раз в час. Была идея забирать эту таблицу через словарь и складывать полученное в mergetree
  • https://t.me/clickhouse_ru
    @kiserp #83594 04:57 AM, 14 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    есть табличная odbc функция, и есть engine odbc, тупо запросом раз в час insert select.
  • https://t.me/clickhouse_ru
    @aliabdullaev1993 #83596 05:58 AM, 14 Jan 2019
    Заметил одну странность - колонку первичного ключа в clickhouse нельзя переключать с Enum16 на Enum8. Я один на такое наткнулся?
  • https://t.me/clickhouse_ru
    @tkostyan ↶ Reply to #83586 #83597 06:04 AM, 14 Jan 2019
    https://github.com/mymarilyn/clickhouse-driver/issues/69

    Нужны примеры запросов и данные на которых это возникает
    clickhouse_driver.errors.UnknownPacketFromServerError: Code: 100. Unknown packet XXX from server · Issue #69 · mymarilyn/clickhouse-driver

    This error happens for some queries only. File "/usr/local/lib/python3.7/site-packages/clickhouse_driver/client.py", line 137, in execute columnar=columnar File "/usr/loc...

  • https://t.me/clickhouse_ru
    @igor_dia ↶ Reply to #83597 #83598 06:14 AM, 14 Jan 2019
    Достаточно вместо данных команды, которой создавалась таблица?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @igor_dia #83600 06:23 AM, 14 Jan 2019
    Вот так создавалось и селектилось
  • https://t.me/clickhouse_ru
    @igor_dia #83601 06:24 AM, 14 Jan 2019
    в смысле селект у меня формировался в питоновском коде, но на выходе получилось такое. Из Табикса работает нормально
  • https://t.me/clickhouse_ru
    @tkostyan #83602 06:26 AM, 14 Jan 2019
    Дело в сочетании данных и самого запроса) в общем надо воспроизвести проблему, чтобы посмотреть, что не так. Или фиксить методом пристального взгляда
  • https://t.me/clickhouse_ru
    @igor_dia #83603 06:28 AM, 14 Jan 2019
    А, то есть вам еще и наполнение таблицы скинуть? Куда и в каком формате?
  • https://t.me/clickhouse_ru
    @tkostyan #83604 06:29 AM, 14 Jan 2019
    Там что-то не так с вычиткой строковых колонок из блока. Но у нас это не стреляет.

    Данные можно залить в csv формате куда вам удобно будет.
  • https://t.me/clickhouse_ru
    @tkostyan #83605 06:30 AM, 14 Jan 2019
    И да, вся таблица точно не нужна. Достаточно будет минимального куска, который вызывает проблему
  • https://t.me/clickhouse_ru
    @igor_dia #83606 06:32 AM, 14 Jan 2019
    как его определить? методом научного тыка?
  • https://t.me/clickhouse_ru
    @frolovigoru #83607 06:32 AM, 14 Jan 2019
    Ну самый банальный выход, который приходит в голову: insert from select... order by some_date_field limit X. И уменьшайте X, пока не найдете кривую строчку.
  • https://t.me/clickhouse_ru
    @frolovigoru #83608 06:33 AM, 14 Jan 2019
    Я вот так определял битую строку
    Может поможет
  • https://t.me/clickhouse_ru
    @frolovigoru #83609 06:33 AM, 14 Jan 2019
    Уменьшал пополам X
  • https://t.me/clickhouse_ru
    @igor_dia #83610 06:40 AM, 14 Jan 2019
    Это тоже из кода питоновского драйвера, как я понимаю?
  • https://t.me/clickhouse_ru
    @ikostukovski #83611 06:40 AM, 14 Jan 2019
    Минимальный максимальный порог по дате которая в выборке с ошибкой например, и весь кусок выгрузить, или внутрь питоновского драйвера залазите, где вычитка из блока, смотрите блок целиком
  • https://t.me/clickhouse_ru
    @igor_dia #83612 06:41 AM, 14 Jan 2019
    ох. ладно. К этому тогда вернемся вечером. сейчас еще порбаотать надо
  • https://t.me/clickhouse_ru
    @ikostukovski #83613 06:41 AM, 14 Jan 2019
    Только учтите что в блоках инфа по массивам из колонок будет представлена, а не построчно
  • https://t.me/clickhouse_ru
    @ikostukovski #83614 06:42 AM, 14 Jan 2019
    Плюс посмотрите аналогичный запрос на срр клиенте, возможно у вас старый питоновский клиент и новый сервер кликхауса
  • https://t.me/clickhouse_ru
    @igor_dia #83615 06:42 AM, 14 Jan 2019
    а если наоборот?
  • https://t.me/clickhouse_ru
    @ikostukovski #83616 06:43 AM, 14 Jan 2019
    Новый питоновский вряд ли бы бил unexpected packet)
  • https://t.me/clickhouse_ru
    @ikostukovski #83617 06:43 AM, 14 Jan 2019
    Плюс нативный протокол пакеты не убирал насколько я помню
  • https://t.me/clickhouse_ru
    @ikostukovski #83618 06:43 AM, 14 Jan 2019
    Типы пакетов *
  • https://t.me/clickhouse_ru
    @igor_dia #83619 06:46 AM, 14 Jan 2019
    у меня КХ в докере запущен и работает, при этом при каждой сборке своего образа я ставлю из пипа драйвер.
    Connected to ClickHouse server version 18.10.3 revision 54405
    clickhouse-driver==0.0.16
  • https://t.me/clickhouse_ru
    @igor_dia #83620 06:47 AM, 14 Jan 2019
    Ну.... ок, можно попробовать обновить драйвер...
  • https://t.me/clickhouse_ru
    @ikostukovski #83621 06:48 AM, 14 Jan 2019
    Я точно версионность не знаю у того который из пипа, мы форкнулись давно
  • https://t.me/clickhouse_ru
    @igor_dia #83622 07:04 AM, 14 Jan 2019
    обновление до 0,0,17 не помогло
  • https://t.me/clickhouse_ru
    @igor_dia #83623 07:08 AM, 14 Jan 2019
    хотя ошибки поменялись
  • https://t.me/clickhouse_ru
    @igor_dia #83624 07:10 AM, 14 Jan 2019
    clickhouse_driver.errors.UnknownPacketFromServerError: Code: 100. Unknown packet 4 from server clickhouse:9000
    EOFError: Unexpected EOF while reading bytes
    Code: 102. Unexpected packet from server clickhouse:9000 (expected Pong, got Data)
  • https://t.me/clickhouse_ru
    @igor_dia #83628 07:19 AM, 14 Jan 2019
    А может есть менее костыльный способ строить плотность вероятности, а не отдельно через квантили?
  • @oleg_kozlyuk #83629 07:43 AM, 14 Jan 2019
    Вроде есть функция гистограммы: https://github.com/yandex/ClickHouse/pull/2521 если нормировать, будет дискретная плотность вероятности
    CLICKHOUSE-3547 streaming histogram aggregation by ssmike · Pull Request #2521 · yandex/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en

  • https://t.me/clickhouse_ru
    @igor_dia #83630 07:44 AM, 14 Jan 2019
    То, что надо!
  • @SergKiva #83631 07:46 AM, 14 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @igor_dia #83632 07:47 AM, 14 Jan 2019
    А можете просто вести где-нибудь список недокументированных функций. Просто, что она есть и пример использования. А то просто второй раз уже находится нужное в недокументированном. Первый раз помогло какое-то озарение, чтобы найти)
  • https://t.me/clickhouse_ru
    @igor_dia #83633 07:48 AM, 14 Jan 2019
    Или просто список функций
  • @antonio_antuan #83634 07:50 AM, 14 Jan 2019
    select * from system.functions
  • https://t.me/clickhouse_ru
    @igor_dia #83635 07:50 AM, 14 Jan 2019
    А) ок. Спасибо, проверю
  • @antonio_antuan #83636 07:51 AM, 14 Jan 2019
    а ещё есть table_functions и aggregate_function_combinators
  • https://t.me/clickhouse_ru
    @igor_dia #83637 07:53 AM, 14 Jan 2019
    А недокументированные джойны будут в system.functions?
  • @faerics ↶ Reply to #83634 #83638 07:53 AM, 14 Jan 2019
    Гараниируется, что там все существующие функции?
  • @antonio_antuan #83639 07:54 AM, 14 Jan 2019
    в документации об этом ничего не сказано. могу предположить, что да, но моё мнение - так себе источник :)
    https://clickhouse.yandex/docs/en/operations/system_tables/#system-functions
  • джоины и функции это разные вещи
  • а что за "недокументированный джоин"?
  • https://t.me/clickhouse_ru
    @igor_dia #83642 07:55 AM, 14 Jan 2019
    Cross join
  • @faerics ↶ Reply to #83637 #83643 07:55 AM, 14 Jan 2019
    Какие джойны недокументированы?
    Собираю все недокументированное.
  • @faerics #83644 07:58 AM, 14 Jan 2019
    Все, что нашел)
  • @faerics #83645 07:58 AM, 14 Jan 2019
    SELECT floor((y/x-1)/(begin-end), 4) as changes, begin, end, (end-begin) as duration
    FROM (
    SELECT name, high AS y, date AS end
    FROM servers.load GROUP BY name
    )
    CROSS JOIN
    (
    SELECT low AS x, date AS begin
    FROM servers.load GROUP BY name
    ) USING name
  • @faerics #83646 07:58 AM, 14 Jan 2019
    left array join
  • https://t.me/clickhouse_ru
    @igor_dia ↶ Reply to #83643 #83647 07:58 AM, 14 Jan 2019
    Упоминание о cross join нашлось случайно методом озарения на github. Вроде в пулл-реквестах и вроде от августа того года.
  • https://t.me/clickhouse_ru
    @igor_dia #83648 07:59 AM, 14 Jan 2019
    CROSS JOIN not documented · Issue #2857 · yandex/ClickHouse

    Full cartesian product is quite usefull simetimes. It's supported in ClickHouse, but not documented.

  • https://t.me/clickhouse_ru
    @ikostukovski #83649 08:02 AM, 14 Jan 2019
    нашли пример данных и запрос который валится? интересно у нас проверить
  • https://t.me/clickhouse_ru
    @igor_dia #83650 08:04 AM, 14 Jan 2019
    Ой. Это не раньше вечера. Я пока всё на локалхосте гоняю, ибо фдев даже пока рано
  • https://t.me/clickhouse_ru
    @igor_dia #83651 08:05 AM, 14 Jan 2019
  • @sr_maks1 #83652 08:07 AM, 14 Jan 2019
    Ребята привет! подскажите можно ли сделать кластер и при этом писать только на определенную ноду. Например - есть разрозненные инстансы приложений, которые по разному грузят диск. Если писать в один КХ - то просто IO не справится. При этом в КХ планируется вести дополнительно какой либо справочник для единой точки входа. Или же проще писать в кластер а КХ сам распределит нагрузку?
  • https://t.me/clickhouse_ru
    @igor_dia #83653 08:08 AM, 14 Jan 2019
    Или писать в Kafka
  • https://t.me/clickhouse_ru
    @igor_dia #83654 08:09 AM, 14 Jan 2019
    С настроенным zookeeper
  • @faerics ↶ Reply to #83647 #83655 08:15 AM, 14 Jan 2019
    saved, спасибо.
  • https://t.me/clickhouse_ru
    @kbespalov #83656 08:17 AM, 14 Jan 2019
    кажется, чтобы распределить нагрузку на запись, нужно шардироваться, чтение осуществлять с distributed таблицы.
    причем шардироваться желательно вручную, потому что запись в distributed обладает надежность уровня insert into /dev/null
  • @faerics #83657 08:18 AM, 14 Jan 2019
    есть ещё chproxy, который, насколько мне известно, распределяет нагрузку и пишет в нужный шард напрямую.
  • https://t.me/clickhouse_ru
    @kbespalov #83658 08:20 AM, 14 Jan 2019
    а chproxy синхронно пишет ?
  • https://t.me/clickhouse_ru
    @kbespalov #83659 08:20 AM, 14 Jan 2019
    тут как бы основная претензия к distibuted в плане каких либо гарантий это асинхронность
  • https://t.me/clickhouse_ru
    @kbespalov #83660 08:26 AM, 14 Jan 2019
    # Requests are spread in round-robin + least-loaded fashion among nodes.
    # Unreachable and unhealthy nodes are skipped.

    ну такое себе. поретраился, два одинаковых блока записал в разные шарды.
    я поэтому шардируюсь вручную на клиенте.
  • https://t.me/clickhouse_ru
    @igor_dia ↶ Reply to #83656 #83661 08:40 AM, 14 Jan 2019
    Шардирование для разных приложений может помочь, но я так понял, что у автора проблема с IO. Из-за чего она может быть? Например, из-за вставки значений маленькими пачками в базу. Значит, надо увеличить банч данных для вставки. Значит, нужна какая-то очередь, желательно, распределенная. Подходит Kafka. Если для каждой ноды КХ будет своя Kafka, и эта нода будет читать данные только из своей кафки не сильно часто, но большими пачками, то IO должно справиться. При этом можно писать в любую ноду кафки.
  • https://t.me/clickhouse_ru
    @igor_dia #83662 08:42 AM, 14 Jan 2019
    Вопрос опять же в потоке данных, который идет на кластер. Выглядит странно, что сеть с нагрузкой справляется, а диск - нет.
  • https://t.me/clickhouse_ru
    +1 за то, что вставляют мелкими пачками строк
  • @sr_maks1 ↶ Reply to #83662 #83664 08:46 AM, 14 Jan 2019
    Ничего не вижу странного. Размер данных по сети может быть меньше или больше размера вставки. Разве нет?)) Размер пачки норм. Просто вставка очень интенсивная.
  • https://t.me/clickhouse_ru
    @igor_dia #83665 08:48 AM, 14 Jan 2019
    По иерархии памяти скорость сети и диска отличается на порядки (в 10-100 раз обычно). Сомнительно, что размер вставки после получения пакета возрастает в те же 10-100 раз.
  • https://t.me/clickhouse_ru
    @egor_baibara #83666 09:00 AM, 14 Jan 2019
    Joined.
  • @jnwuigr #83667 09:06 AM, 14 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @DmitryZaytsev #83668 09:16 AM, 14 Jan 2019
    Коллеги, вопрос - а как лучше/эффективнее сделать 1 большой MV c группировкой по разным полям или разбить на более мелкие?
  • @faerics #83669 09:22 AM, 14 Jan 2019
    user_files_path мне самовольно приделывает домашнюю директорию к аргументу функции file. Кто-нибудь сталкивался?
  • https://t.me/clickhouse_ru
    А путь к файлу - относительный или абсолютный? Попробуйте абсолютный
  • @faerics ↶ Reply to #83670 #83671 09:24 AM, 14 Jan 2019
    уже попробовал. Абсолютный — норм, но это странно: просят же относительный.
  • @faerics #83672 09:26 AM, 14 Jan 2019
    Ожидаемое поведение: абсолютный воспринимается "как есть", относительный — относительно user_files_path.
    Поведение по факту: абсолютный — относительно user_files_path, относительный — относительно домашней директории и затем относительно user_files_path.
    Хмм...
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #83673 09:26 AM, 14 Jan 2019
    Добро пожаловать в Клуб КХ
  • https://t.me/clickhouse_ru
    @vladenisov #83674 09:33 AM, 14 Jan 2019
    создал materialized view, в логах появилась ошибка

    <Error> HTTPHandler: Code: 393, e.displayText() = DB::Exception: There is no query: while pushing to view,  

    из-за которой ломается инсерт в основную таблицу. что в таком случае можно сделать?
  • @faerics ↶ Reply to #83672 #83675 10:21 AM, 14 Jan 2019
    с абсолютным путём тоже не работает :( Я поторопился с выводами)
  • @faerics #83676 10:30 AM, 14 Jan 2019
    Работает пока в следующем варианте: user_files_path находится внутри домашней директории, путь указывается относительно домашней директории.
  • @odainic #83677 10:36 AM, 14 Jan 2019
    Всем привет.
    Есть ли бенчмарки по скорости работы с JSON
    1. Key and Value columns of Array(String) type.
    2. Store whole JSON in String field and access fields with visitParamExtract family of functions.

    Какой выбрать?)
  • @faerics #83678 11:16 AM, 14 Jan 2019
    Коллеги, кому приходилось джойнить с табличной функцией file? Может, я не знаю каких-то тонкостей, получаю Attempt to read after eof
  • что-то оно на синтаксис ругается. а есть дока на это?
  • @freezlite #83680 12:07 PM, 14 Jan 2019
    Можно ли группировать по полю типа массив ?
  • @freezlite #83681 12:08 PM, 14 Jan 2019
    Arr: [1, 2], Val: 100, Arr: [1, 3] Val: 125, на выходе 1: 225, 2: 100, 3: 125
  • https://t.me/clickhouse_ru
    @orantius #83682 12:11 PM, 14 Jan 2019
    array join, group by
  • https://t.me/clickhouse_ru
    @zahnik #83683 12:17 PM, 14 Jan 2019
    Какое будет поведение у внешнего словаря, если по одному ключу будет несколько значений?
  • @VladimirKoptev #83684 12:23 PM, 14 Jan 2019
    шард встал раком: 3 реплики фетчат друг с друга данные и пытаются всё смержить. при этом кликхаус периодически выжирает ооочень много памяти и перестаёт реагировать на что либо кроме "килл -9".
    вставку и чтение остановили. но 2 часа никакого прогресса.
    куда можно посмотреть?
  • а как быстро это будет работать? ) думаю не очень
  • progess по мержам выше 0.1 вообще мало где поднимается.
    началось всё с того, что один мерж висел с elapsed 12k+ (заметили незадолго до начала падений). а потом повалила жесть с перекидыванием нагрузки с реплики на реплику, попытками смержить куски и т.п.
  • https://t.me/clickhouse_ru
    Несколько мелких, меньше строк быстрее селекты, к тому же можно разный order by сделать.
  • https://t.me/clickhouse_ru
    1й. массивы быстро работают, парсинг строк медленнее.
  • https://t.me/clickhouse_ru
    А какая версия? В changelog надо смотреть, эта фича появилсь полгода назад.
  • очень старая, к сожалению. 1.1.54343. никак не решались обновиться. и теперь стало поздно :(
  • https://t.me/clickhouse_ru
    вернет одно из значений, при построении вычисляется хеш, по этому адресу кладется значение, если ключ повторяется то просто перезатирается значение.
  • https://t.me/clickhouse_ru
    а если тупо выключить реплики и дождаться конца мержей?
  • https://t.me/clickhouse_ru
    Память выжирает мерж?
  • @VladimirKoptev #83694 12:59 PM, 14 Jan 2019
    да, выжирает. и выключение реплик не помогает.
  • https://t.me/clickhouse_ru
    @den_crane #83695 12:59 PM, 14 Jan 2019
    Уменшите размер макс. кусков, мне однажды пришлось 45гб поставить
  • @VladimirKoptev #83696 01:06 PM, 14 Jan 2019
    max_block_size?
  • это max_block_size или какая-то другая переменная?
  • https://t.me/clickhouse_ru
    @Vasyaabr #83698 01:07 PM, 14 Jan 2019
    Привет!
    А как нидуь можно в логах отследить работу мутации? Какие-нибудь ключевые слова? Хочется понять, она просто тупо висит, или лопатит что-то.
  • https://t.me/clickhouse_ru
    @Vasyaabr #83699 01:07 PM, 14 Jan 2019
    ALTER TABLE ... DELETE .. запущено, если что.
  • https://t.me/clickhouse_ru
    Смотрите системную таблицу system.mutations
  • https://t.me/clickhouse_ru
    @Vasyaabr #83701 01:09 PM, 14 Jan 2019
    Там я смотрел, она висит уже полдня. Как был 1 партишн для обработки, так и остался.
  • https://t.me/clickhouse_ru
    @Vasyaabr #83702 01:09 PM, 14 Jan 2019
    В смысле, parts_to_do=1
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #83703 01:10 PM, 14 Jan 2019
    Тогда смотрите в лог КХ. Такое может быть если условие для мутации некоректно задано (команда мутации не проверяет коректность записи условия в WHERE)
  • https://t.me/clickhouse_ru
    @Vasyaabr #83704 01:11 PM, 14 Jan 2019
    Вот я как раз и пытаюсь что-то там найти. Но ошибок нет, а в основном логе тяжко искать - там дико много сообщений. Понять бы по какому ключевому слову погрепать.
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #83705 01:16 PM, 14 Jan 2019
    Я на ошибку в условии команды мутации натыкался, вот issue https://github.com/yandex/ClickHouse/issues/2588
    Пока в логе КХ не увидел сообщение - так же было непонятно что делать. Ищите
    Зацикливание команды удаления · Issue #2588 · yandex/ClickHouse

    Создал реплицируемую таблицу (удалёный сервер) Залил туда данные (из обычной MergeTree через INSERT INTO ... SELECT ... примерно 200кк записей) На ноуте а. пробросил порты для Zookeeper и ClickHous...

  • https://t.me/clickhouse_ru
    max_bytes_to_merge_at_max_space_in_pool
  • @VladimirKoptev #83707 01:19 PM, 14 Jan 2019
    спасибо
  • https://t.me/clickhouse_ru
    @Vasyaabr #83708 01:29 PM, 14 Jan 2019
    Разобрался. Ошибок и правда не было, просто мутация вместо того чтобы перетряхнуть только нужную партицию, петеряхнула вхолостую всю базу. В логах было видно, что она берет каждую партицию, клонирует, применяет мутацию, видит что изменений нет, и переходит к следующей. Вот только что оно само таки завершилось.
    @ztlpn , является ли это багом? Стоит ли зарепортить? 18.14.11.
  • https://t.me/clickhouse_ru
    так а условие вообще в where было по которому можно определить что не надо заходить в партицию?
  • https://t.me/clickhouse_ru
    @yourock88 #83710 01:33 PM, 14 Jan 2019
    Подскажите, никто не знает, есть ли у ClickHouse какие-нибудь настройки, которые распространяются не только на размер партиции, но и на её возраст :)? Например, запретить удалять партиции моложе 3 месяцев.
  • https://t.me/clickhouse_ru
    @Vasyaabr #83712 01:33 PM, 14 Jan 2019
    Да, было.
  • https://t.me/clickhouse_ru
    нет. а как определить возраст? например для partition by floor(x/13.75)
  • https://t.me/clickhouse_ru
    @Vasyaabr #83714 01:34 PM, 14 Jan 2019
    В смысле, выражение партиционирования было RecordDate (старый формат создания таблицы), и условие было по RecordDate + ещё ряд условий
  • https://t.me/clickhouse_ru
    Ну для партиций на основе даты 🙂
  • https://t.me/clickhouse_ru
    RecordDate >= или там у вас километровая функция была?
  • https://t.me/clickhouse_ru
    @Vasyaabr #83717 01:37 PM, 14 Jan 2019
    BETWEEN
  • https://t.me/clickhouse_ru
    тогда бага
  • https://t.me/clickhouse_ru
    @nodermann #83719 01:44 PM, 14 Jan 2019
    Ссылка на опрос 📢Вы теряли данные в Clickhouse?:
    https://t.me/QuanBot?start=poll_1047039_94483
  • А это как? Я только что попробовал в директории docker/builder набрать make build и всё Ок.
  • https://t.me/clickhouse_ru
    (оффтоп: с десктом версии можно встроенные в клиент опросы, в меню чата/канала)
  • https://t.me/clickhouse_ru
    Я из корня мастера делал docker-compose build, может в этом была проблема
  • https://t.me/clickhouse_ru
    @stufently #83723 04:29 PM, 14 Jan 2019
    а откуда может браться такая вот ошибка, после обновления с 18.12.17 на 18.16.1 , при этом реплики и запись все идут нормально
  • https://t.me/clickhouse_ru
    @stufently #83724 04:29 PM, 14 Jan 2019
    2019.01.14 16:26:01.962230 [ 16 ] {} <Error> default.asks (StorageReplicatedMergeTree): DB::StorageReplicatedMergeTree::queue
    Task()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() =
    No message received, e.what() = No message received
  • https://t.me/clickhouse_ru
    @stufently #83725 04:29 PM, 14 Jan 2019
    в error логе
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @stufently #83727 04:34 PM, 14 Jan 2019
    Вроде не критично , буду ждать апдейт
  • https://t.me/clickhouse_ru
    @Tangoon #83728 05:01 PM, 14 Jan 2019
    будет ли существенная разница в скорости выполнения запросов (с указанием времени) к таблицам:

    1) create table ... (ts Datetime, ...) ... order by ts...
    2) create table ... (ts DateTime, ts_hour DateTime DEFAULT toStartOfHour(ts), ...) ... order by ts_hour

    и как вообще каноничнее делать?)
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #83729 05:44 PM, 14 Jan 2019
    @milovidov_an Добрый вечер, Алексей. Появилась проблема после сбоя кластера, на репликах в логах ошибки вида ClusterProxy::SelectStreamFactory: Local replica of shard 2 is stale (delay: 38806s.) и не отвечают реплики нормально и отваливаются по таймаутам. И delay не сокращается. Как можно и нужно с этим бороться?
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83728 #83730 05:52 PM, 14 Jan 2019
    Ну вроде как круче, когда соседние записи похожи. А у тебя получается разные будут, раз сортировка по ts. Антипаттерн
  • Нужно посмотреть в таблице system.replication_queue информацию по очередям репликации - и там же найти сообщения об ошибках - почему записи в очереди репликации не могут быть обработаны.
  • https://t.me/clickhouse_ru
    А можно как-то корректно очистить очередь? Потому что у некоторых записей кол-во попыток репликации оч большое: num_tries: 18444
  • @milovidov_an #83733 06:26 PM, 14 Jan 2019
    Да, можно форсировать восстановление реплики без разбора очереди. Но сначала нужно разрбраться в причине ошибки. Какую версию ClickHouse вы используете?
  • https://t.me/clickhouse_ru
    1.1.54343
    а как запустить форсированно? в last_exception записи вида DB::Exception: No active replica has part 201901_1000788_1000793_1 or covering part, e.what() = DB::Exception
  • Необходимо обновить на свежую версию.
  • https://t.me/clickhouse_ru
    @739055345 #83736 06:37 PM, 14 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    Данных очень много, по 50Т на репликах. Страшно обновлять, так как много чего уже изменилось, и влучае фатального падения никто нам не поможет) то есть без обновления мы никак кластер не можем привести в порядок? А обновление может нам дать новых проблем? Или обновление с нашей версии до последней не сулит существенных изменений в самой БД?
  • Версии обратно совместимы по данным. То есть, новая версия поддерживает данные старой версии.

    Могут быть несовместимости по мелочам. Посмотрите пункты "обратно несовместимые изменения" в changelog.
  • @milovidov_an #83739 06:48 PM, 14 Jan 2019
    Обновление проверяйте в тестинге.
  • https://t.me/clickhouse_ru
    а когда будет свежая версия с фиксом https://github.com/yandex/ClickHouse/issues/3891
    ALTER timeout on ReplicatedMergeTree · Issue #3891 · yandex/ClickHouse

    On release 18.16.0, when applying ALTER TABLE ... ADD COLUMN on ReplicatedMergeTree table, ALTER completed on current replica, but other replicas coudn't download and apply ALTER action. On...

  • @milovidov_an #83741 06:50 PM, 14 Jan 2019
    Сообщение
    No active replica has part 201901_1000788_1000793_1

    говорит о том, что такой кусок, либо покрывающий кусок, невозможно найти на активных (живых) репликах.

    Посмотрите статус других реплик - подняты ли они, принимают ли соединения, есть ли там нужные данные.
  • Это ожидается в ближайшей версии (19.0).
  • https://t.me/clickhouse_ru
    А есть какието советы по апгрейду кластера? Как лучше обновить все?
  • https://t.me/clickhouse_ru
    возможно и чтото потерялось. Но реплики все доступны. Можно ли как-то заставить кликхаус забыть об этом в нашей версии и чтобы он работал в штатном режиме? Потому что num_tries растет и не падает.
  • Устанавливайте новый пакет и перезапускаете реплики.
    Сначала проверяйте обновление на тестинге, потом на продакшене.
  • Да, можно сбросить очередь, но реплики будут расходиться.
  • https://t.me/clickhouse_ru
    а как это сделать?
  • Очистить содержимое ноды queue у реплики в ZooKeeper.
  • https://t.me/clickhouse_ru
    А если реплики будут разных версий - то есть какаято обратная совместимость?
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #83750 07:01 PM, 14 Jan 2019
    вдруг данных успеют записаться по новому, и в результате кликхаус не поймет формат
  • Работа реплик сильно разных версий друг с другом не поддерживается. Но ничего плохого при этом не происходит, репликация просто приостанавливается, и продолжается, когда реплики обновятся. Это сделано специально для возможности обновления без даунтайма (реплики перезапускаются по очереди, но в течение небольшого времени).
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #83752 07:11 PM, 14 Jan 2019
    @milovidov_an Спасибо большое, Алексей, за развернутые ответы! Также спасибо за прекрасный продукт! 👍
  • https://t.me/clickhouse_ru
    @igor_dia ↶ Reply to #83602 #83753 07:33 PM, 14 Jan 2019
    Что-то я совсем не понимаю, что происходит. По отдельности два запроса работают нормально, а если вместе, то плохо. Может быть дело в том, что отправляю я запросы в БД через клиентское приложение (jQuery -> Django -> clickhouse_driver -> clickhouse) асинхронно, драйвер их перенаправляет КХ, а потом не может понять, на какой из запросов пришел ответ? Просто я то же самое сейчас проделал тупо из терминала и ошибок не было. А когда с клиента запросы льются, то либо один отвалится с Code 100: Unknown packet 4 from server clickhouse:9000, либо другой с Code: 102. Unexpected packet from server clickhouse:9000 (expected Pong, got Data).
    Если я прав, то дело не в данных, и драйвер должен вести себя некорректно вплоть до падения всего приложения, если асинхронно и примерно одновременно отправлять быстрый и медленный запрос, или два медленных. Например, SELECT histogram(10) FROM (...) CROSS JOIN (...) WHERE на числовых данных и SELECT ... FROM (...) ANY LEFT JOIN (...) на числовых и строковых. И такое должно быть на любых данных.
  • https://t.me/clickhouse_ru
    @igor_dia #83754 07:33 PM, 14 Jan 2019
    соединение с базой одно, если что
  • https://t.me/clickhouse_ru
    @igor_dia #83755 07:34 PM, 14 Jan 2019
    Пора на aioch?
  • https://t.me/clickhouse_ru
    А можно еще вопрос, а после очищения нужно ребутнуть проблемные реплики или полностью зуу? потому что очередь в system.replication_queue не изменилась
  • https://t.me/clickhouse_ru
    А еще, очистили очередь, ребутнули реплики, но они все равно растут и не прекращаются. Может чтото нужно еще сделать?
  • Да, надо перезапустить.
  • https://t.me/clickhouse_ru
    Спасибо еще раз!
  • Придётся искать причину.
  • https://t.me/clickhouse_ru
    @Coderxlsn #83761 07:54 PM, 14 Jan 2019
    привет всем. я правильно понимю. тип таблицы CollapsingMergeTree
    сделал ключ
    ORDER BY (sipHash64(devtype), CreateDate, PlayerId)
    ожидаю что все строки по этому ключу смержатся. откуда дубль взялся и как с ним боротся(
  • https://t.me/clickhouse_ru
    @Coderxlsn #83762 07:54 PM, 14 Jan 2019
    я что-то неправильно делаю
  • Скорее всего - ошибка в реализации драйвера или в его использовании. Я не работал с этими драйверами и не могу за них поручиться.
  • https://t.me/clickhouse_ru
    @igor_dia ↶ Reply to #83763 #83764 08:00 PM, 14 Jan 2019
    Да. Меня разработчики здесь как раз выше и просили предоставить запрос и сами данные, на которых валится.
  • https://t.me/clickhouse_ru
    https://clickhouse.yandex/docs/ru/operations/table_engines/collapsingmergetree/

    CollapsingMergeTree(sign)

    При слиянии, для каждой группы идущих подряд одинаковых значений первичного ключа (столбцов, по которым сортируются данные), остаётся не более одной строки со значением столбца sign_column = -1 ("отрицательной строки") и не более одной строки со значением столбца sign_column = 1 ("положительной строки"). То есть - производится схлопывание записей из лога изменений.
    ....

    Существует несколько способов получения полностью "схлопнутых" данных из таблицы типа CollapsingMergeTree:

    Написать запрос с GROUP BY и агрегатными функциями, учитывающими знак. Например, чтобы посчитать количество, надо вместо count() написать sum(Sign); чтобы посчитать сумму чего-либо, надо вместо sum(x) написать sum(Sign * x) и т. п., а также добавить HAVING sum(Sign) > 0. Не все величины можно посчитать подобным образом. Например, агрегатные функции min, max не могут быть переписаны.
    Если необходимо вынимать данные без агрегации (например, проверить наличие строк, самые новые значения которых удовлетворяют некоторым условиям), можно использовать модификатор FINAL для секции FROM. Это вариант существенно менее эффективен.
  • https://t.me/clickhouse_ru
    @Coderxlsn #83766 08:07 PM, 14 Jan 2019
    да уже нашел про финал. как всегда недочитал доки.
  • https://t.me/clickhouse_ru
    @Coderxlsn #83767 08:08 PM, 14 Jan 2019
    я думал оно сразу мержит. данные просто за 11 месяц
  • https://t.me/clickhouse_ru
    некоторые куски не будут смержены никогда, из-за размера например или просто очередь дойдет через пару лет.
  • https://t.me/clickhouse_ru
    @den_crane #83769 08:22 PM, 14 Jan 2019
    вот например я вижу 4 парта для 201801 (150 + 33 + 8 + 1) GB
  • @random1st #83770 09:49 PM, 14 Jan 2019
    Joined.
  • 15 January 2019 (147 messages)
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #83753 #83771 01:51 AM, 15 Jan 2019
    а каким образом у вас работает "асинхронность в django" ?
  • https://t.me/clickhouse_ru
    А уиды кто генерит?
  • https://t.me/clickhouse_ru
    @ikostukovski #83773 05:21 AM, 15 Jan 2019
    Может второй запрос с таким же улетает а дальше банальная проблема в коде и дохнут оба?
  • https://t.me/clickhouse_ru
    @ikostukovski #83774 05:22 AM, 15 Jan 2019
    Хотя нет, первый умереть не должен, это надо постараться )
  • https://t.me/clickhouse_ru
    @bufoviridis #83775 05:24 AM, 15 Jan 2019
    Нарываюсь на Received exception from server (version 18.14.15):
    Code: 15. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Column '0' already exists: (while reading from part /var/lib/clickhouse/data/default/nr_views_t8/20160912_20160928_0_0_0_38620/).

    при селектах с условиями типа where d>='2018-12-26 21:00:00' and d<'2018-12-27 21:00:00' ... and a_50p_o=0 and a_100p_o=0, где колонки UInt8.
    Если убрать правое условие, запрос выполняется.
    Если вынести ограничение по дате в prewhere, запрос выполняется

    На 18.16.1 то же самое. Таблица была создана как MergeTree, потом переделана в ReplicatedMergeTree

    Структура таблицы со временем менялась, но поля из условия были всегда
  • https://t.me/clickhouse_ru
    @tkostyan ↶ Reply to #83753 #83776 05:49 AM, 15 Jan 2019
    Покажите как именно вы реализовали асинхронность. Можно в личку
  • https://t.me/clickhouse_ru
    @metikovvadim #83777 07:01 AM, 15 Jan 2019
    Привет всем!
    При перезагрузке сервров КХ кластера с изменеием конфига (таблица ReplicatedGraphiteMergeTree) один сервер успел перемерджить пару кусков по старым правилам, а второй - нет. В результате 2й сервер постоянно пишет checksum mismatch и мерджит 4 куска непрерывно, сбрасывая результаты. Это длится уже около суток. Поможет ли временный останов 2го сенрвера, что бы он не мерджил а скачал потом эти куски ? На какое время сервер должен отстать, что бы стянуть себе с реплики и не мерджить?
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #83777 #83779 07:48 AM, 15 Jan 2019
    А может на 1ом партицию детач, на 2-ом просто грохнуть ее, и на 1ом снова аттач. Второй просто партицию скачает и все
  • https://t.me/clickhouse_ru
    @Shegloff #83780 07:49 AM, 15 Jan 2019
    Ну или не грохать, а на втором зайти в папку detached и удалить битые куски
  • https://t.me/clickhouse_ru
    @metikovvadim #83781 07:55 AM, 15 Jan 2019
    такой вариант попробуем через время, если не разрешится само, так как в партишене весь январь, который читается постоянно, надеюсь на
    We will download merged part from replica to force byte-identical result.
  • https://t.me/clickhouse_ru
    Спасибо!
  • @terrifilch #83783 07:58 AM, 15 Jan 2019
    @milovidov_an - все же Clickhouse тормозит?
    https://www.percona.com/blog/2019/01/14/should-you-use-clickhouse-as-a-main-operational-database
    Should You Use ClickHouse as a Main Operational Database? - Percona Database Performance Blog

    There are some cases where with careful planning ClickHouse has value as a main operational database. Alexander Rubin harnesses ClickHouse strengths

  • https://t.me/clickhouse_ru
    @leidruid #83784 08:00 AM, 15 Jan 2019
    Товарищи, а у меня пара вопросов по detach/attach
    1. в каталоге detached показываются каталоги ignored_* - что c ними по канону надо делать?
    2. При attach не все партиции переностятся из тех, что лежали в detached - это нормально? в них, в целом, данных немного, но очень не хотелось бы на них просто забивать
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83783 #83785 08:03 AM, 15 Jan 2019
    В аналитической бд. Пытаются получить одно сообщение из 4млрд. Что за бред?
  • https://t.me/clickhouse_ru
    @Imaskar #83786 08:06 AM, 15 Jan 2019
    похоже, они захотели посчитать worst case, но как-то странно это подали
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #83785 #83787 08:07 AM, 15 Jan 2019
    В метрике примерно также наверное, получают данные для 1 юзера (id), только у них индекс нормальный, а не как там, по created только, ещё и id стринговый. И одна нода всего.
  • https://t.me/clickhouse_ru
    На таймсериес различия на порядок два в пользу кх к сожалению, так что все ок
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #83783 #83789 08:08 AM, 15 Jan 2019
    Можно и 20 млрд грузануть с индексом только по created, а потом выбирать по стринговой id и говорить что медленно :)
  • но сравнение же все таки приводят в конечном счете с mysql

    в любом случае пост явно информирует, что mysql сдает позиции clickhouse, ибо просто так бы не бросались какашками
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #83790 #83791 08:11 AM, 15 Jan 2019
    Я после селекта по id закрыл
  • https://t.me/clickhouse_ru
    @kbespalov #83792 08:13 AM, 15 Jan 2019
    Так они и показывают как не надо использовать ch.
    Наоборот хорошо.
  • @T90jasd98 #83793 08:18 AM, 15 Jan 2019
    Подскажите, плз, можно ли переименовать колонку в существующей таблице?
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83793 #83794 08:18 AM, 15 Jan 2019
    Нет.
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83312 #83795 08:18 AM, 15 Jan 2019
    Можно вот так
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #83796 08:19 AM, 15 Jan 2019
    Всем привет! Один кусок долго мержиться на ноде (данные с system.merges):
    elapsed: 11865.068640084
    progress: 0.17395293991257757
    num_parts: 10
    source_part_names: ['201901_1144003_1145634_6','201901_1145635_1145856_3','201901_1145857_1146704_4','201901_1146705_1147837_5','201901_1147838_1148763_4','201901_1148764_1148918_3','201901_1148919_1149297_4','201901_1149298_1149977_5','201901_1149978_1150167_3','201901_1150168_1150371_3']
    result_part_name: 201901_1144003_1150371_7
    total_size_bytes_compressed: 144000203938
    total_size_marks: 131790
    bytes_read_uncompressed: 313667301961
    rows_read: 1079587421
    bytes_written_uncompressed: 359078264525
    rows_written: 1079587421
    columns_written: 21
    memory_usage: 54231811
    thread_number: 31

    как можно понять, с чем проблема, почему так долго, и что можно сделать чтобы быстрее такое мержилось?
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #83784 #83797 08:19 AM, 15 Jan 2019
    не уж то никто не встречал?
  • https://t.me/clickhouse_ru
    @leidruid #83798 08:19 AM, 15 Jan 2019
    @ztlpn, видимо, только ты сможешь помочь ) В прошлый раз тоже никто не ответил
  • Спасибо, супер!
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #83784 #83800 08:24 AM, 15 Jan 2019
    У меня как-то и то и то бывает, в кх лежат сырые показы, а в mysql сгруппированные, я их мониторингом мониторю, чтобы сходились. Без сожаления сношу все из detached, если показы сходятся :)
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #83800 #83801 08:25 AM, 15 Jan 2019
    К сожалению, сравнивать не с чем
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #83801 #83802 08:26 AM, 15 Jan 2019
    Можно создать рядом такую же таблицу, туда аттачнуть эти куски, посмотреть есть ли они в исходной, и если что заинсертить туда
  • https://t.me/clickhouse_ru
    @Shegloff #83803 08:27 AM, 15 Jan 2019
    Но мне так думается, что это могут быть артефакты слияния кусков
  • https://t.me/clickhouse_ru
    никто не сталкивался?
  • https://t.me/clickhouse_ru
    Покажите запрос создания вьюхи
  • https://t.me/clickhouse_ru
    CREATE MATERIALIZED VIEW local.view__broadcasts ON CLUSTER sports ( site String, match_id UInt32, user_type String, event_date Date, views UInt64) ENGINE = ReplicatedSummingMergeTree('/clickhouse/tables/{shard}/view__broadcasts', '{replica}', event_date, (site, match_id), 8192) AS select site, match_id, user_type, event_date, sum(start) as views FROM (select site, path(url) as pt, event_date, argMax(page_id, page_id) as match_id, multiIf(user_is_mobile = 0, 'web-desktop', lower(user_browser_name) LIKE '%view%', 'apps', 'web-mobile') as user_type, count() as start from local.clickstream_new WHERE is_event = 1 AND event_category = 'broadcast' AND event_label = 'click' GROUP BY site, url, user_type, event_date) WHERE match_id > 0 AND user_type IS NOT NULL group by site, match_id, user_type, event_date
  • @stasQa #83807 09:24 AM, 15 Jan 2019
    здравствуйте, подскажите плз, закончилось место на диске, серверные логи перестали писаться в то время как вставка в кх MergeTree продолжала выполняться успешно

    есть ли какая-то магия у кх по этому поводу?
  • https://t.me/clickhouse_ru
    @yourock88 #83808 09:39 AM, 15 Jan 2019
    В ClickHouse можно значительно уменьшить накладные расходы от выборки 1-100 строк по ключу, если:
    1. Выбирать только нужные колонки вместо *
    2. Уменьшить гранулярность индекса (который 8192 все ставят не задумываясь)
    3. Уменьшить max_threads до 1

    После этих манипуляций становится реально получить до 1-2k qps на сервер на довольно простых селектах
  • https://t.me/clickhouse_ru
    Если выполнить запрос после AS - отрабатывает?
  • https://t.me/clickhouse_ru
    Да, конечно. Таким образом сделал инсерт старых данных – залилось без проблем.
  • https://t.me/clickhouse_ru
    Возможно именно у матвью проблемы с запросами с подзапросами. Создавайте issue. А насчёт попробовать заксотылить - попробуйте тут
    http://joxi.ru/Q2KGdVKi4V1vb2
    всё что в первом FROM - заменить на обращение к обычной view, а уже во вьюхе - запрос с подзапросом. Возможно поможет
  • https://t.me/clickhouse_ru
    @metikovvadim #83812 09:59 AM, 15 Jan 2019
    Received exception from server (version 18.6.0):
    Code: 49. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Part 20181001_20181031_1_6_2 intersects next part 20181001_20181031_2_2_1_1634300 (state Committed). It is a bug..

    0 rows in set. Elapsed: 235265.541 sec.

    это уже починили, кто-то знает ?
  • https://t.me/clickhouse_ru
    это опытным путем найдено или можно в доке найти такие советы?
  • https://t.me/clickhouse_ru
    спасибо, заведу issue.
  • https://t.me/clickhouse_ru
    Комбинация и того и другого, плюс опыт CloudFlare и разговоров непосредственно с Алексеем Миловидовым :).
  • @ztlpn ↶ Reply to #83798 #83816 10:51 AM, 15 Jan 2019
    Куски перекидываются в detached/ignored_* если, если после рестарта сервер не обнаружил записи о них в ZooKeeper. Такие куски могут появляться, если сервер жёстко перезапускали, и он не успел добавить только что вставленные куски в ZK. Так как в этом случае Ack клиенту ещё не был послан, потери данных нет. Ещё возможный случай - если был вставлен батч-дубликат, тогда кусок с этими данными ещё остаётся некоторое время на файловой системе (но не в рабочем наборе). Тут потери данных тоже нет, т.к. данные уже есть в таблице.

    То есть в большинстве случаев ignored_ куски можно смело удалять. Автоматически они не удаляются, чтобы кликхаус не снёс вам пол-таблицы, если вы случайно подключились не к тому ZooKeeper.
  • https://t.me/clickhouse_ru
    Ах, клаудфлер:3
  • @ztlpn ↶ Reply to #83784 #83818 11:01 AM, 15 Jan 2019
    По второму вопросу: в detached может лежать набор кусков, некоторые из которых покрывают друг друга. Тогда при attach добавляются только куски "верхнего уровня", а покрытые куски переименовываются в detached/inactive_*, чтобы при повторном аттаче не возникло дублей (ведь покрытые куски содержат часть строк кусков верхнего уровня).
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #83813 #83819 11:01 AM, 15 Jan 2019
    В документации нет советов, но про гранулярность индекса там хорошо расписано, про КХ выбирает только нужные колонки (он внезапно поколоночный) тоже. Про max_threads на запрос тоже есть, по умолчанию создается несколько потоков, для простых селектов которые выгребают мало данных это может быть излишне, поэтому уменьшение max_threads в плоть до одного может положительно влиять
  • https://t.me/clickhouse_ru
    @kshvakov #83820 11:02 AM, 15 Jan 2019
    Еще важный момент что настройки можено указывать на конкретный запрос добавляя в конце SETTINGS key = value....
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #83816 #83821 11:06 AM, 15 Jan 2019
    Спасибо! А что делать с теми кусками которые не переместились после attach ?
  • @ztlpn #83822 11:06 AM, 15 Jan 2019
    если attach прошёл, inactive_ можно смело удалять
  • https://t.me/clickhouse_ru
    Спасибо большое
  • https://t.me/clickhouse_ru
    @Shegloff #83824 11:50 AM, 15 Jan 2019
    после обновления с 18.12 до 18.16.1 сломалась заливка в одну реплицированную таблицу, на каждый инсерт ругается:<Error> executeQuery: std::exception. Code: 1001, type: std::bad_variant_access, e.what() = Unexpected index
  • https://t.me/clickhouse_ru
    @Shegloff #83825 11:51 AM, 15 Jan 2019
    встречал кто-то такое?
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #83822 #83826 11:56 AM, 15 Jan 2019
    Они не inactive_* каталоги выглядят как нормальные части партиций
  • https://t.me/clickhouse_ru
    @igor_dia #83827 12:02 PM, 15 Jan 2019
    Я правильно понимаю, что КХ обрывает соединение после каждого запроса?
  • https://t.me/clickhouse_ru
    @frankegoesdown #83828 12:24 PM, 15 Jan 2019
    Добрый день, есть такой вопрос: как можно сделать 2 конфига graphite_rollup для разных таблиц типа GraphiteMergeTree ??
  • https://t.me/clickhouse_ru
    что если перед запросом выполнить
    set compile_expressions = 0;
  • https://t.me/clickhouse_ru
    ничего не меняется
  • Давайте посмотрим на примере. Можете скинуть определение таблицы и полный запрос (можно в личку). Надо ещё проверить, влияет ли на ошибку настройка optimize_move_to_prewhere.
  • Мы делали улучшение в этом месте недавно (но я уже не помню, в какой версии). Также вы можете удалить на сервере исходные куски из файловой системы и перезапустить его - тогда он скачает померженный кусок с реплики.
  • Хорошая статья. Кстати, в Метрике есть key-value запросы из ClickHouse для двух сценариев:
    - показать профиль посетителя;
    - вебвизор.
  • 1. С ignored можно ничего не делать или удалить. Это куски, которые были помержены в более крупные и ещё не были удалены. При ATTACH используются уже померженные куски, а старые переименовываются в ignored.
  • https://t.me/clickhouse_ru
    @bosyakova #83835 12:45 PM, 15 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #83824 #83836 12:48 PM, 15 Jan 2019
    пришлось откатиться обратно, теперь работает норм
  • Нет, мы с этим ещё не сталкивались. Для понимания мне понадобится структура таблицы. Используют ли DEFAULT или MATERIALIZED поля внешние словари?
  • https://t.me/clickhouse_ru
    @bosyakova #83838 12:52 PM, 15 Jan 2019
    кто-нибудь знает должны ли автоматически аттачиться MATERIALIZED VIEW при рестарте ClickHouse сервера?
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #83837 #83839 12:56 PM, 15 Jan 2019
    да, там еще и вьюхи есть, но не было времени разбираться на проде =) не ожидал просто такого. попробую сэмулировать на тесте, напишу
  • Если не удалось записать в лог (в том числе, когда закончилось место), то факт об этой ошибке не прокидывается пользователю.
  • @milovidov_an #83841 12:58 PM, 15 Jan 2019
    Если в разделе с логами закончилось место, а в разделе с данными - нет, то INSERT будут успешно продолжаться.
  • Да.
  • @stasQa ↶ Reply to #83841 #83843 12:59 PM, 15 Jan 2019
    спасибо большое!
  • https://t.me/clickhouse_ru
    В докере крутится ClickHouse версии 18.16.1, детачу view, там же делаю service clickhouse-server restart, и ничего не происходит
  • Причины возникновения таких ошибок починили.

    Но для старых кусков, ошибка будет присутствовать, если она возникла раньше. При этом есть два варианта: - не обращать внимания на это сообщение; - починить вручную (detach, attach).
  • Нет, это не так. В случае работы через clickhouse-client или по родному протоколу, используется одно соединение на сессию. В случае работы по HTTP используется Keep-Alive:

    $ curl -v 'http://localhost:8123/' -d 'SELECT 1'
    * Trying 127.0.0.1...
    * TCP_NODELAY set
    * Connected to localhost (127.0.0.1) port 8123 (#0)
    > POST / HTTP/1.1
    > Host: localhost:8123
    > User-Agent: curl/7.55.1
    > Accept: */*
    > Content-Length: 8
    > Content-Type: application/x-www-form-urlencoded
    >
    * upload completely sent off: 8 out of 8 bytes
    < HTTP/1.1 200 OK
    < Date: Tue, 15 Jan 2019 13:05:52 GMT
    < Connection: Keep-Alive
    < Content-Type: text/tab-separated-values; charset=UTF-8
    < X-ClickHouse-Server-Display-Name: milovidov-Pro-P30
    < Transfer-Encoding: chunked
    < Keep-Alive: timeout=3
    <
    1
    * Connection #0 to host localhost left intact
  • https://t.me/clickhouse_ru
    @igor_dia #83847 01:07 PM, 15 Jan 2019
    спасибо
  • Да.
  • https://t.me/clickhouse_ru
    @frankegoesdown #83849 01:15 PM, 15 Jan 2019
    @milovidov_an отлично, а как это можно сделать? положить 2 файлика рядом или в одном описать 2 конфига?
  • @milovidov_an #83850 01:16 PM, 15 Jan 2019
    В одном конфиге сделать рядом две секции.
    И указать имя секции при создании таблицы:

    ENGINE = GraphiteMergeTree(config_section)
  • https://t.me/clickhouse_ru
    @frankegoesdown #83851 01:16 PM, 15 Jan 2019
    @milovidov_an thx a lot :)
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #83846 #83852 01:17 PM, 15 Jan 2019
    Кстати, есть фича реквест, по крайней мере уже несколько людей спрашивали. Есть необходимость видеть информацию по активным соединениям, можно сделать запрос SHOW *** + системную таблицу, там информация переданая на хендшейке + время когда соединение установленно.
  • @milovidov_an #83853 01:18 PM, 15 Jan 2019
    Типа SHOW CONNECTIONS.
    (MySQL это показывает сразу в SHOW PROCESSLIST)
    Тоже рассматривал такую возможность, но пока не запланировано.
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #83854 01:19 PM, 15 Jan 2019
    А какие планы по ближайшим релизам? Видел коммиты по нескольким join в рамках одного запроса
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #83853 #83855 01:21 PM, 15 Jan 2019
    Да. Сейчас там прочто счетчик чтоб в метриках показывать количество соединений, но хочется больше информации.
  • https://t.me/clickhouse_ru
    @milovidov_an мне бы хоть какую-нибудь идею почему такое может происходить
  • Ближайший релиз планируем в течение двух недель.
  • Вы делаете DETACH TABLE и перезапускаете сервер?
  • https://t.me/clickhouse_ru
    да, если под перезапуском понимается рестарт именно службы "service clickhouse-server restart"
  • https://t.me/clickhouse_ru
    Спасибо за ответ. Очень ждём join-ы
  • При DETACH TABLE меняется только состояние сервера в оперативке. Он "забывает" про таблицу. В данных на диске ничего не меняется, и при перезапуске, таблицы снова доступны. Я проверил это поведение только что на своей машине. Но не в Docker.
  • https://t.me/clickhouse_ru
    я вижу данные на диске, метаданные тоже на месте, я могу выполнить запрос SHOW CREATE, руками приаатачить обратно, но рестарт не дает ожидаемого эффекта ((
  • https://t.me/clickhouse_ru
    в логе какие сообщения про эту MV при старте? Может таблица не существует в этот момент? Какая у вас таблица во from у MV ?
  • @milovidov_an #83864 01:46 PM, 15 Jan 2019
    Посмотрите SELECT uptime(), чтобы было ясно, что сервер был перезапущен.
  • @460254773 #83865 01:51 PM, 15 Jan 2019
    всем привет!
    тоже наступил на грабли в виде
    <Error> executeQuery: Code: 159, e.displayText() = DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000000003 is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 3 unfinished hosts (0 of them are currently active), they are going to execute the query in background

    спасибо каналу, ответы нашел, исправил
    один вопрос
    как теперь в zk почистить зависшие таски?
    нужно ручками?
  • Да, можно удалить их вручную.
  • @381244074 #83867 01:54 PM, 15 Jan 2019
    Алексей, спасибо Вам за ClickHouse ! Заюзали на днях. В шоке от скоростей!
  • https://t.me/clickhouse_ru
    да, с uptime какая-то проблема, судя по этому параметру сервер не перезапускается
    рестарт выдает мне такой результат
    service clickhouse-server restart
    Start clickhouse-server service: Path to data directory in /etc/clickhouse-server/config.xml: /var/lib/clickhouse/
    DONE
  • https://t.me/clickhouse_ru
    может вы перезапускаете КХ в другом контейнере?
  • https://t.me/clickhouse_ru
    да он у меня один, именованный, сложно ошибиться
  • https://t.me/clickhouse_ru
    вижу там свои view в метаданных
  • https://t.me/clickhouse_ru
    ок, что за контейнер у вас? официальный с докер хаб?

    что в логе КХ при перезапуске?
  • https://t.me/clickhouse_ru
    образ официальный
    сделала тест, новый контейнер, без бд, без таблиц, при рестарте в логах такое:
    <Error> Application: DB::Exception: Cannot lock file /var/lib/clickhouse/status. Another server instance in same directory is already running.
  • https://t.me/clickhouse_ru
    а, я посмотрел docker file. На самом деле там нельзя так рестартовать КХ.
    В обычном линуксе есть init процесс с pid 1 , в этом контейнере pid 1 это КХ, если убить КХ (1) то контейнер умрет. И стартовать КХ назад будет нето чтобы некому, а просто негде.
    Поэтому рестарт КХ === рестарт контейнера.

    docker restart {container_name_or_id}
  • https://t.me/clickhouse_ru
    @bosyakova #83875 02:48 PM, 15 Jan 2019
    @den_crane @milovidov_an спасибо за помощь
  • https://t.me/clickhouse_ru
    @azubarev #83876 02:52 PM, 15 Jan 2019
    Привет!
    Есть ли возможность видеть данные из Clickhouse в PostgreSQL (или MySQL)? Для select и insert.
    Наоборот я знаю что можно.

    Что кейс странный - это понятно :)
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #83876 #83877 02:55 PM, 15 Jan 2019
    postgres_fdw вам в помощь
  • https://t.me/clickhouse_ru
    @azubarev ↶ Reply to #83877 #83878 02:58 PM, 15 Jan 2019
    Спасибо. Я об этом читал. Но как я понял из описания это работает только как PG <-> PG
  • https://t.me/clickhouse_ru
    @emakarov #83879 02:59 PM, 15 Jan 2019
    нет, в частности например вот есть проект https://github.com/Infinidat/infi.clickhouse_fdw
    Infinidat/infi.clickhouse_fdw

    A PostgreSQL foreign data wrapper for ClickHouse. Contribute to Infinidat/infi.clickhouse_fdw development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @azubarev ↶ Reply to #83879 #83880 02:59 PM, 15 Jan 2019
    Круто! Спасибо!)
  • https://t.me/clickhouse_ru
    @kshvakov #83881 03:02 PM, 15 Jan 2019
    Кстати, для PostgreSQL делается "нормальный" fdw без Multicorn :)
  • https://t.me/clickhouse_ru
    @azubarev ↶ Reply to #83881 #83882 03:03 PM, 15 Jan 2019
    А есть какой-нибудь пример?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #83882 #83883 03:04 PM, 15 Jan 2019
    Нет, просто он делается человеком который сильно знаком с внутренностями PostgreSQL и есть надежда что получится очень хорошо
  • https://t.me/clickhouse_ru
    @azubarev ↶ Reply to #83883 #83884 03:07 PM, 15 Jan 2019
    Звучит интересно. А это можно где-нибудь отслеживать (github там) или это внутренний проект?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #83884 #83885 03:08 PM, 15 Jan 2019
    Я думаю что ребята из Percona, как придет время, везде об этом напишут )
  • @460254773 #83886 03:30 PM, 15 Jan 2019
    @milovidov_an спасибо за ответ
  • @460254773 #83889 04:57 PM, 15 Jan 2019
    Еще вопрос
    при добавления нового поля в таблицу
    и необходимости добавления оного в первычный ключ
    схема не изменилась ?
    создать новую таблицу , INSERT SELECT ...
    или я что то пропустил и достаточно выполнить ALTER ?
    движок Replicated
  • @Dalmaneo #83890 05:55 PM, 15 Jan 2019
    Подскажите, пожаулйста.
    Можно ли подключать справочники с layout = range_hashed к source = clickhosue?
    А то, все настроил, а запросы с обращением к таким справочникам висят(выполняются бесконечно)
  • https://t.me/clickhouse_ru
    нет, не изменилась.

    появилась такая штука

    Для таблиц семейства MergeTree появилась возможность указать различный ключ сортировки (ORDER BY) и индекс (PRIMARY KEY). Ключ сортировки может быть длиннее, чем индекс.

    но это для сравнения в движках типа summing / aggregating
  • https://t.me/clickhouse_ru
    можно, работает.

    что показывает select * from system.dictionaries where name = ....

    и какая версия КХ
  • @Dalmaneo ↶ Reply to #83892 #83893 06:36 PM, 15 Jan 2019
    Висит запрос. Версия 18.16.1
  • https://t.me/clickhouse_ru
    своппинг? сколько строк в таблице в КХ ?
  • @Dalmaneo #83895 06:42 PM, 15 Jan 2019
    В таблице строк 5, тестовую создал, чтобы проверить, а про своппинг не понял
  • спасибо!
  • https://t.me/clickhouse_ru
    смотрите в логах
    create table x_r(a Int64, d1 Date, d2 Date, v String) Engine = MergeTree order by (a,d1);
    insert into x_r values(1,'2019-01-01','2019-01-05','1-01-05'),(1,'2019-01-06','2019-01-15','1-06-15')

    cat x_r.xml
    <?xml version="1.0"?>
    <dictionaries>
    <dictionary>
    <name>x_r</name>
    <source>
    <clickhouse>
    <host>localhost</host><port>9000</port>
    <user>default</user><password/><db>default </db><table>x_r</table>
    </clickhouse>
    </source>
    <lifetime>60</lifetime>
    <layout>
    <range_hashed/>
    </layout>
    <structure>
    <id>
    <name>a</name>
    </id>
    <range_min>
    <name>d1</name>
    </range_min>
    <range_max>
    <name>d2</name>
    </range_max>
    <attribute>
    <name>v</name>
    <type>String</type>
    <null_value/>
    </attribute>
    </structure>
    </dictionary>
    </dictionaries>

    SELECT dictGetString('x_r', 'v', toUInt64(1), toDate('2019-01-01')) AS v

    ┌─v───────┐
    │ 1-01-05 │
    └─────────┘
  • https://t.me/clickhouse_ru
    @mchekh #83898 07:27 PM, 15 Jan 2019
    Joined.
  • @Dalmaneo ↶ Reply to #83897 #83899 07:27 PM, 15 Jan 2019
    Спасибо за пример. Попробовал, но все равно запрос так же висит. Посмотрю в логах,может чего найду..
    <?xml version="1.0"?> - с этой сторокой файл не переварвиается кликхаусом.
    вот такой конфиг у меня для таблицы из примера
    <yandex>
    <dictionaries>
    <dictionary>
    <name>x_r</name>
    <source>
    <clickhouse>
    <host>localhost</host><port>8123</port>
    <user>default</user><password/><db>default</db><table>x_r</table>
    </clickhouse>
    </source>
    <lifetime>60</lifetime>
    <layout>
    <range_hashed/>
    </layout>
    <structure>
    <id>
    <name>a</name>
    </id>
    <range_min>
    <name>d1</name>
    </range_min>
    <range_max>
    <name>d2</name>
    </range_max>
    <attribute>
    <name>v</name>
    <type>String</type>
    <null_value/>
    </attribute>
    </structure>
    </dictionary>
    </dictionaries>
    </yandex>
  • https://t.me/clickhouse_ru
    Спасибо большое. Табличка нереплицированная, аттач в неё и делал. Что между detach и attach?
  • Ничего. Просто DETACH и ATTACH кусков починит эту ошибку.
  • https://t.me/clickhouse_ru
    @igor_dia #83902 10:39 PM, 15 Jan 2019
    А есть драйвер к базе на каком-либо языке, который поддерживает асинхронность? Или сам протокол синхронный и даже не планируется асинхронность вводить ни в каком виде ни для нативной версии, ни для HTTP? Если я отправлю 2 запроса подряд, то ответ мне придет совсем вперемешку или просто неизвестно, на какой из запросов этот ответ?
  • @mmmhh93 #83903 10:53 PM, 15 Jan 2019
    На ноде полюбому должен поддерживать
  • https://t.me/clickhouse_ru
    Этот вроде неплохой https://www.npmjs.com/package/clickhouse
    npm: clickhouse

    Client for ClickHouse

  • https://t.me/clickhouse_ru
    @igor_dia #83905 10:57 PM, 15 Jan 2019
    А на го?
  • @mmmhh93 #83906 10:58 PM, 15 Jan 2019
    Можешь походить по репам почитать https://clickhouse.yandex/docs/en/interfaces/third-party/client_libraries/
  • https://t.me/clickhouse_ru
    @igor_dia #83907 10:59 PM, 15 Jan 2019
    Ну по питоновским и плюсовым прошёлся. Не устраивает.
  • @mmmhh93 #83908 11:01 PM, 15 Jan 2019
    А какая задача стоит? Не висеть в ожидании запроса?
  • @mmmhh93 #83909 11:02 PM, 15 Jan 2019
    Я не много языков знаю, но к примеру в Джаве, Скале и самому без проблем можно накрутить слой асинхронности.
  • @mmmhh93 #83910 11:02 PM, 15 Jan 2019
    Что бы http клиент кх стал асинхронным, по идее достаточно асинхронный HTTP клиент использовать
  • https://t.me/clickhouse_ru
    @igor_dia #83911 11:08 PM, 15 Jan 2019
    Недостаточно. Я сейчас попробовал сделать хттп клиент на boost.asio с асинхронщиной, так оно не умеет в keep-alive, и колбэк на чтение результата вызывается только при Connection: close; В противном случае я даже отследить момент не могу, что данные пришли.
  • https://t.me/clickhouse_ru
    @igor_dia #83912 11:11 PM, 15 Jan 2019
    Там максимум, что можно сделать - это очередь запросов с имитацией асинхронности. Скорости не добавит, но хоть данные в кашу не превратятся
  • @mmmhh93 #83913 11:17 PM, 15 Jan 2019
    Странно это звучит
  • @mmmhh93 #83914 11:17 PM, 15 Jan 2019
    Может так и есть
  • https://t.me/clickhouse_ru
    @igor_dia #83915 11:19 PM, 15 Jan 2019
    Задача такая: желательно без лишних затрат ресурсов сделать многопоточный асинхронный клиент с обвязкой на питоне. По 3 из 4 требований boost подходит. Осталась только асинхронность. Хочется просто 1 раз на каждый поток соединиться с базой и потом интенсивно дергать селекты из питона. Чтобы они между собой перепугались. На данный момент питоновский драйвер или мешает в кашу всё, или нужно делать синхронную очередь на питоне, что на порядки медленнее будет.
  • @mmmhh93 #83916 11:19 PM, 15 Jan 2019
    Это скорее всего проблема однопоточного питона
  • @mmmhh93 #83917 11:20 PM, 15 Jan 2019
    Можно конечно глянуть что в ноде происходит
  • @mmmhh93 #83918 11:20 PM, 15 Jan 2019
    Если они не нативный протокол используют
  • https://t.me/clickhouse_ru
    @igor_dia #83919 11:21 PM, 15 Jan 2019
    Асинхронность с многопоточностью слабо связана. Дополняют они друг друга хорошо, но и друг без друга жить могут
  • https://t.me/clickhouse_ru
    @igor_dia #83920 11:23 PM, 15 Jan 2019
    Ну я пока 3 драйвера перерыл в поисках ответов. Не нашел. Думаю теперь из родного выдрать весь клиент в библиотеку, но это надо запотеть, чтоб такое сделать...
  • 16 January 2019 (162 messages)
  • https://t.me/clickhouse_ru
    @emakarov #83921 02:35 AM, 16 Jan 2019
    так а aioch не подошел?
  • https://t.me/clickhouse_ru
    Почему вот такие вещи случаются и как их предвидеть и бороться с ними?
  • https://t.me/clickhouse_ru
    @kiserp #83923 03:38 AM, 16 Jan 2019
    Доброго дня, кто-нибудь ClickHouse Я.облака работал из .Net по нативному протоколу (ClickHouse.Ado) ?
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #83924 03:53 AM, 16 Jan 2019
    Ребят, а когда добавляешь новый шард в кластер, распределенную таблицу всегда пересоздавать нужно? А также если партицирование по месяцам PARTITION BY toYYYYMM(date) - то это как влияет на новый шард? Партиции в него не будут просто сохранятся, пока новый месяц не наступит?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #83902 #83925 05:34 AM, 16 Jan 2019
    Протокол синхронный, в планах было про то что его стоило бы переделать на асинхронный, в протоколе есть вещи которых не хватает
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #83905 #83926 05:40 AM, 16 Jan 2019
    Нативный при параллельных запросах открывает по новому соединению (там рулятся настройки времени жизни и максимального количества соединений) и держит их в пуле.
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #83923 #83927 06:01 AM, 16 Jan 2019
    Я работал, только с гугл клаудом. Небось проблемы со скоростью?
  • https://t.me/clickhouse_ru
    @olegkovalov #83928 06:18 AM, 16 Jan 2019
    Новый бенчмарк от Mark Litwintschik
    https://tech.marksblogg.com/billion-nyc-taxi-rides-clickhouse-cluster.html
    1.1 Billion Taxi Rides: 108-core ClickHouse Cluster

    Benchmarks & Tips for Big Data, Hadoop, AWS, Google Cloud, PostgreSQL, Spark, Python & More...

  • https://t.me/clickhouse_ru
    @ram00X #83929 06:52 AM, 16 Jan 2019
    Коллеги, добрый день, в последнее время начали наблюдать трафик на гео-апи яндекса с наших серверов CH. С гео сами не работаем. Никаких других приложений на серверах не стоит. Вопрос напрашивается сам собой.
  • https://t.me/clickhouse_ru
    @ilya_flakin #83930 06:55 AM, 16 Jan 2019
    теперь и вас посчитали
  • https://t.me/clickhouse_ru
    @igor_dia ↶ Reply to #83925 #83931 07:11 AM, 16 Jan 2019
    Да, можно, например, в хедеры добавить время в наносекундах запроса клиента, чтоб хоть как-то понимать, какой запрос какому ответу соответствует, и не ломать обратной совместимости.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #83931 #83932 07:12 AM, 16 Jan 2019
    Каждому запросу можно присвоить свой идентификатор, это есть в протоколе
  • https://t.me/clickhouse_ru
    @igor_dia #83933 07:17 AM, 16 Jan 2019
    Ладно. Тогда я ещё раз внимательнее прочитаю протокол...
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #83933 #83934 07:21 AM, 16 Jan 2019
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data. Contribute to yandex/ClickHouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @igor_dia #83935 07:23 AM, 16 Jan 2019
    А там протокол поддерживает раздельную отправку запросов и ответов? Например, если я завожу 2 сокета - один на отправку, другой на прием ответов сервера, и на каждый вешаю по очереди.
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #83929 #83936 07:23 AM, 16 Jan 2019
    серьезное заявление ) а детали какие? например URL запросов?
  • https://t.me/clickhouse_ru
    @ram00X ↶ Reply to #83936 #83937 07:25 AM, 16 Jan 2019
    geocode-maps.yandex.ru
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #83935 #83938 07:35 AM, 16 Jan 2019
    нет, он же синхронный, открываете соединение и пишите/читаете из него. Соединений может быть много
  • https://t.me/clickhouse_ru
    У нас тоже кликхаус какие то данные на yandex отправляет, еще и наши ip из-за трафика заблокировали, но это же их трафик....😱
  • @Mete0 #83940 07:54 AM, 16 Jan 2019
    Joined.
  • @mminaev #83941 08:22 AM, 16 Jan 2019
    Столкнулся с проблемой, есть таблица которая читает кафку и matview которая сбрасывает эту таблицу в mergetree, но сброс данных происходит очень редко, где то раз в 10 минут, хотя stream_flush_interval_ms = 7500 нашел баг https://github.com/yandex/ClickHouse/issues/2508 но он до сих пор open, есть какаой нибудь рабочий workaround что бы обойти эту проблему?
    High latency when importing stream from kafka · Issue #2508 · yandex/ClickHouse

    After created queue kafka table, target table and consume material view, clickhouse kafka docs, Kafka data is imported but with high latency(around 15minutes). Refer to former issue, lower max_bloc...

  • https://t.me/clickhouse_ru
    @nedosekov_dev #83942 08:26 AM, 16 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    а в sudo netstat -ptw что пишут?
  • https://t.me/clickhouse_ru
    @igor_dia #83944 09:17 AM, 16 Jan 2019
    А насколько часто дока обновляется на сайте? При каждом релизе?
  • https://t.me/clickhouse_ru
    стихийно, к сожалению
  • https://t.me/clickhouse_ru
    @igor_dia #83946 09:18 AM, 16 Jan 2019
    без всякого CI/CD...
  • https://t.me/clickhouse_ru
    @Imaskar #83947 09:19 AM, 16 Jan 2019
    полагаю, он имеет в виду, что из репо она быстро обновляется, но в репо не коммитят достаточно быстро после изменения в коде, а как придётся
  • https://t.me/clickhouse_ru
    @RecycleSup #83949 09:26 AM, 16 Jan 2019
    Добрый день! У меня следующий запрос:
    SELECT *
    FROM test.candidates_states
    WHERE _status_id = 'employment'
    AND _status_set_by_id in (
    SELECT _member_ids
    FROM test.user_team
    WHERE _name = 'Total'
    )
    в _member_ids лежит массив из строк. Как правильно обратиться к этому массиву для проверки на вхождение в него.
  • https://t.me/clickhouse_ru
    @frankegoesdown #83950 09:26 AM, 16 Jan 2019
    добрый день, есть такой вопрос: возможно в кликхаусе вычивать сообщения из определенных партиций топика кафки, допустим в одну таблицу читать только из 1й и 3й партиции, а в другую таблицу из 2й и 4й
  • https://t.me/clickhouse_ru
    таблицу пересоздавать не нужно, только добавить новый шард в xml файл с описанием кластера.
    данные начнут писаться сразу, со следующим инстертом.
  • https://t.me/clickhouse_ru
    только уменьшение max_block_size , теперь его можно поставить для кафки таблицы, емнип.
  • https://t.me/clickhouse_ru
    @igor_dia ↶ Reply to #83947 #83953 09:32 AM, 16 Jan 2019
    Последний коммит в мастер не виден на основном сайте. Следовательно, обновляется не чаще, чем при релизе
  • https://t.me/clickhouse_ru
    SELECT *
    FROM test.candidates_states
    WHERE _status_id = 'employment'
    AND _status_set_by_id in (
    SELECT arrayJoin(_member_ids)
    FROM test.user_team
    WHERE _name = 'Total'
    )
  • https://t.me/clickhouse_ru
    Отлично! Спасибо
  • https://t.me/clickhouse_ru
    @rakovskiy28 #83956 09:36 AM, 16 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @rakovskiy28 #83957 09:51 AM, 16 Jan 2019
    Привет, перешел с MySQL на ClickHouse. В секунду выполняется около 500 инсертов и около 200-300 селектов.
    В мускуле в конфиге был установлен параметр который отвечает за запись на диск, данные сначала пишутся в память, а потом только на диск.

    В CH как я понимаю для этого есть буферные таблицы.
    Данные пишу в буфер, а читаю с основной. Но появилась задержка в выборках т.к данные с буфера доходят в основную таблицы через 30-60 сек (в зависимости от настроек буферной таблицы).
    Если чтение повесить на буфер, то появляются жуткие тормоза при выборке.
    Как я понимаю это из-за того что буфер во время записи блокируется.

    Нужно убрать задержки при выборке (сделать realtime) и убрать тормоза при выполнении запросов выборки.

    Как быть?
  • https://t.me/clickhouse_ru
    В аналитике сутки это уже риалтайм, минута ничто.
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83957 #83959 09:53 AM, 16 Jan 2019
    можно чуть изменить сервис который пишет, что бы писал чуть по реже сразу в таблицу основную
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83958 #83960 09:54 AM, 16 Jan 2019
    не согласен
  • https://t.me/clickhouse_ru
    @rakovskiy28 #83961 09:56 AM, 16 Jan 2019
    Нет возможности уменьшить кол-во инсертов. Запросы идут от других сервисов.
    В мускуле всё работает хорошо, в кх решил перейти из-за больших объёмов данных которые с каждым днём растут.
    А тут такая проблема, думаю её можно как-то решить?
  • https://t.me/clickhouse_ru
    Типа у вас и словари обновляются раз в секунду и Кафка и 100500 других источников и ETL и все быстрее 1 мин?
  • https://t.me/clickhouse_ru
    У меня не совсем аналитика, логи храню.
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83962 #83964 09:57 AM, 16 Jan 2019
    я не про словари, а про формулировку, что в аналитике пофиг на актуальность данных.
    когда зависят большие деньги, то не пофиг
  • https://t.me/clickhouse_ru
    Согласен абсолютно. Я тоже хочу все и сразу согласен взять купюрами даже по 10 долларов.
  • https://t.me/clickhouse_ru
    @ondanna ↶ Reply to #83961 #83966 10:00 AM, 16 Jan 2019
    Хммм я на совсем несильном железе пишу «логи» из JMeter напрямую в таблицу, 1000+ инсертов сек, но я их пакетами отправляю штук по 100, сжимаю (средствами библиотеки) и на стороне сервера использую chproxy, попробуйте может что из этого поможет
  • https://t.me/clickhouse_ru
    @rakovskiy28 #83967 10:02 AM, 16 Jan 2019
    Может попробовать в буферной таблице сделать запись каждую секунду?
    Таким образом будут собираться пачки по ~500 запросов и залетать на диск
  • https://t.me/clickhouse_ru
    @grazhdankov #83968 10:05 AM, 16 Jan 2019
    Всем привет!
    Подскажите плиз, кто нить завел MS SISS c CH для перекачки данных из MS SQL
  • https://t.me/clickhouse_ru
    @zahnik #83969 10:11 AM, 16 Jan 2019
    Привет.
    На ежедневной основе нужно будет перегружать несколько партиций данных с PostgreSQL в CH.
    Есть следующий вариант:
    1) Используя COPY postgres'a сгенерировать нужную CSV'шку.
    2) Дропнуть нужные партиции (опять же вопрос как лучше? DROP PARTITION или DETACH с дальнейшим удалением файлов партиции)
    3) Загрузить данные в CH командой типа: cat data.csv | clickhouse-client --query="INSERT INTO table FORMAT CSV"
    Есть ли еще какие-нибудь хорошие варианты реализации этого?
  • Табличная функция odbc
  • https://t.me/clickhouse_ru
    @zahnik ↶ Reply to #83970 #83971 10:17 AM, 16 Jan 2019
    Можно немного подробнее?
  • https://t.me/clickhouse_ru
    @Mike_Er #83972 10:32 AM, 16 Jan 2019
    Коллеги, а подскажите плиз, для словарей из ODBC (pgsql) есть ли аналог опции where (нужно фильтровать данные, которые в словарь попадают) или придется вьюху со стороны пг делать?
  • https://t.me/clickhouse_ru
    @konstantin_ptr #83973 10:48 AM, 16 Jan 2019
    Подскажите, почему постоянно падает?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @konstantin_ptr #83975 10:49 AM, 16 Jan 2019
    восстанавливается периодически минут через 10
  • https://t.me/clickhouse_ru
    Oom убивает? Сколько памяти у сервера?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    бывают перегрузки
  • https://t.me/clickhouse_ru
    У вас 2 гига??? У кликхауза кеш марков 5г по умолчанию. Надо памяти больше и свопа и настроить кх.
  • https://t.me/clickhouse_ru
    @konstantin_ptr #83980 11:01 AM, 16 Jan 2019
    окей спасибо
  • @faerics ↶ Reply to #83979 #83981 11:02 AM, 16 Jan 2019
    какой вообще минимум по оперативке? На 8г можно завести?
  • https://t.me/clickhouse_ru
    @Gulshan5k #83982 11:05 AM, 16 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    В тестах работало на 4, но всякие кеши резал
  • ClickHouse никак не взаимодействует с серверами Яндекса. Разве что, если вы настроили HTTP или executable словари, которые туда идут.
    Проверьте конфигурацию, а также всё, что происходит на ваших серверах.
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #83984 #83985 11:12 AM, 16 Jan 2019
    а есть публичные словари?
  • https://t.me/clickhouse_ru
    @Imaskar ↶ Reply to #83979 #83986 11:32 AM, 16 Jan 2019
    марки - это что?
  • @faerics ↶ Reply to #83986 #83987 11:40 AM, 16 Jan 2019
    типа засечки, где искать то или иное значение ключа, по которому упорядочены данные.
  • https://t.me/clickhouse_ru
    @Imaskar #83988 11:41 AM, 16 Jan 2019
    ок, спасибо.
  • https://t.me/clickhouse_ru
    @iv_samokhin #83989 11:41 AM, 16 Jan 2019
    Добрый день.
    Есть ли тут кто-то, кто использует плагин Clickhouse для Grafana? Конкретно меня интересует работа табличной функции merge() внутри данного плагина. На данный момент я вижу, что если использовать GROUP BY внутри запроса с FROM merge(...), то данные не агрегируются и графики строятся не верные.
    Кто-нибудь сталкивался с такой проблемой?
  • https://t.me/clickhouse_ru
    @Imaskar #83990 11:42 AM, 16 Jan 2019
    он не все "5г по умолчанию" использует, это только кэш. работать будет медленно, но будет. а на минимальных данных в каких-нибудь интеграционных тестах он вообще на копейках памяти может отработать
  • https://t.me/clickhouse_ru
    @ka_ktus ↶ Reply to #83989 #83991 11:44 AM, 16 Jan 2019
    Попробуйте откатиться на версию плагина 1.4.3.
  • https://t.me/clickhouse_ru
    к сожалению, не помогло
  • https://t.me/clickhouse_ru
    @388240071 #83993 12:09 PM, 16 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @388240071 #83994 12:12 PM, 16 Jan 2019
    Здравствуйте, можно ли отключить запись логов в таблицу system.query_thread_log? логируются все по умолчанию
  • https://t.me/clickhouse_ru
    @Mike_Er #83995 12:32 PM, 16 Jan 2019
    Коллеги, кто пентахой пользуется и КХ, у вас получилось куб из нескольких таблиц собрать? Упираюсь в Logical error: unknown combination of JOIN :(
  • Публичного geoip словаря от Яндекса нет.
  • Да, настройка log_query_threads, прописывается в users.xml для профиля пользователя.
  • https://t.me/clickhouse_ru
    @149051052 #83998 12:45 PM, 16 Jan 2019
    Привет!
  • https://t.me/clickhouse_ru
    @149051052 #83999 12:45 PM, 16 Jan 2019
    Можно ли задать FINAL для последней (для указанной) партиции?
  • В запросе SELECT нет возможности задавать FINAL для отдельных партиций.

    А в запросе OPTIMIZE можно указать какую угодно партицию.
  • https://t.me/clickhouse_ru
    @149051052 #84001 12:47 PM, 16 Jan 2019
    Исторические данные оптимизируем, а вот в последний месяц данные идут постоянно
    Требуется получить данные за N лет. С FINAL это работает долго. Без FINAL данные за последний месяц приходят искаженными (нужны точные результаты)
  • https://t.me/clickhouse_ru
    @149051052 #84002 12:48 PM, 16 Jan 2019
    Таким образом было бы очень удобно указать FINAL и партицию, чтобы ускорить запрос
  • https://t.me/clickhouse_ru
    @149051052 #84003 12:50 PM, 16 Jan 2019
    Это реализуемо? Имеет ли смысл попататься сделать PULL REQUEST с добавлением этой возможности или проще разделить запрос на отдельных?
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #84004 12:50 PM, 16 Jan 2019
    А есть тут кто-нибудь, у кого ClickHouse бегает на Azure?
  • https://t.me/clickhouse_ru
    а какая разница на каких виртуалках он бегает?
  • https://t.me/clickhouse_ru
    @stufently #84006 12:50 PM, 16 Jan 2019
    у них же вроде нет кх as service
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #84007 12:51 PM, 16 Jan 2019
    Огромная. Разное железо, разная виртуализация, разный storage
  • Это реализуемо. Не сразу ясно, как выглядело бы удобное решение. Ведь указывать одну партицию - тоже не исчерпывающий вариант.

    PS. Я вообще не люблю использовать FINAL в SELECT.
  • https://t.me/clickhouse_ru
    У них есть просто аналог EC2
  • https://t.me/clickhouse_ru
    ну мне кажется особой разницы нет , там по сути просто цпу память диски, нынче все на хардваре виртуализации, так что не сказать чтобы были сильные разлиция в перфомансе.
  • https://t.me/clickhouse_ru
    К сожалению периодически приходят дублирующиеся данные (испоьзуется replacingMergeTree)
  • https://t.me/clickhouse_ru
    @stufently #84013 12:53 PM, 16 Jan 2019
    я гонял много виртуалок в азуре когда давали на тест деньги , никакой разницы с дигитал ошен, ец2 или хетзнер клауд не заметил
  • https://t.me/clickhouse_ru
    @stufently #84014 12:54 PM, 16 Jan 2019
    вообще давно не помню какой то специфики в хардварно виртуализированных впсках
  • https://t.me/clickhouse_ru
    Вернее обноленные данные
  • https://t.me/clickhouse_ru
    Ну, скажем, у них есть сейчас инстансы на AMD Epic, есть на Intel Broadway, и другие. Номенклатура сильно отличается от Амазона и большинства хостингов.
  • https://t.me/clickhouse_ru
    @stufently #84017 12:58 PM, 16 Jan 2019
    ну у меня сейчас много на эпиках , тоже специфики не заметил , в прошлом году много перевел на них в силу очень много ядер за очень дешево , в квм и lxc отличий не было
  • https://t.me/clickhouse_ru
    @stufently #84018 12:59 PM, 16 Jan 2019
    за последние лет 10 смены интеловых процов , траблы были только с одной волной процов где тупо висло ядро с патчами для openvz
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #84019 01:02 PM, 16 Jan 2019
    Меня в меньшей степени траблы интересуют, в большей — сравнение производительнсти и опыт эксплуатации ClickHouse в Azure. На Амазоне много кто хостится, а на Azure почему-то нет. Почему?
  • @serlex777 #84020 01:07 PM, 16 Jan 2019
    может кто сталкивался с билдом КХ на OS X
    FAILED: contrib/librdkafka-cmake/CMakeFiles/rdkafka.dir/__/librdkafka/src/crc32c.c.o
    /usr/local/bin/gcc-8 -DUNALIGNED_OK -DWITH_GZFILEOP -DX86_64 -DZLIB_COMPAT -I../contrib/zlib-ng -Icontrib/zlib-ng -isystem ../contrib/ssl/include -isystem ../contrib/librdkafka-cmake/include -isystem ../contrib/librdkafka/src -fdiagnostics-color=always -msse4.1 -msse4.2 -mpopcnt -fno-omit-frame-pointer -Wall -Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-result -Wno-deprecated-declarations -Wno-maybe-uninitialized -Wno-format -Wno-misleading-indentation -Wno-stringop-overflow -Wno-implicit-function-declaration -Wno-return-type -Wno-array-bounds -Wno-bool-compare -Wno-int-conversion -Wno-switch -O2 -g -DNDEBUG -O3 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -MD -MT contrib/librdkafka-cmake/CMakeFiles/rdkafka.dir/__/librdkafka/src/crc32c.c.o -MF contrib/librdkafka-cmake/CMakeFiles/rdkafka.dir/__/librdkafka/src/crc32c.c.o.d -o contrib/librdkafka-cmake/CMakeFiles/rdkafka.dir/__/librdkafka/src/crc32c.c.o -c ../contrib/librdkafka/src/crc32c.c
    In file included from ../contrib/librdkafka/src/rd.h:51,
    from ../contrib/librdkafka/src/crc32c.c:48:
    ../contrib/librdkafka/src/tinycthread.h:36:10: fatal error: threads.h: No such file or directory
    #include <threads.h>
    ^~~~~~~~~~~
    compilation terminated.
  • https://t.me/clickhouse_ru
    @proller #84021 01:12 PM, 16 Jan 2019
    cmake -DENABLE_RDKAFKA=0
  • @serlex777 #84022 01:12 PM, 16 Jan 2019
    спасибо!
  • https://t.me/clickhouse_ru
    потому что у амазона самая большая доля на рынке облаков + он очень старый + он более линуксоориентирован а азуре более виндо ориентирован + у аамазона на порядок больше as service вещей где только больше плати и меньше думай
  • Должно быть отключено по-умолчанию на Mac OS?
  • https://t.me/clickhouse_ru
    @proller #84025 01:19 PM, 16 Jan 2019
    похоже что да, но нужен macos для экспериментов
  • https://t.me/clickhouse_ru
    @nicname #84026 01:32 PM, 16 Jan 2019
    а LowCardinality уже, так сказать, продакшн-реди?
  • Нет, ещё есть несколько мелких исправлений, которые только в master.
  • https://t.me/clickhouse_ru
    @nicname #84028 01:33 PM, 16 Jan 2019
    спасибо
  • @odainic #84029 01:38 PM, 16 Jan 2019
    Всем привет. А предполагается какой-нить аналог CTE запросок через WITH в будущем?
    И соответственно нормальные JOIN table ON вместо подзапросов. И множественные JOIN. Может я что-то пропустил, но в планах не увидел
  • > И соответственно нормальные JOIN table ON вместо подзапросов.

    Уже есть.

    > И множественные JOIN. Может я что-то пропустил, но в планах не увидел

    А это ещё будет.

    > А предполагается какой-нить аналог CTE запросок через WITH в будущем?

    А вот CTE пока не планируются.
  • @Dalmaneo ↶ Reply to #83899 #84031 01:41 PM, 16 Jan 2019
    Дело было в порте. Надо указывать там порт, который слушает сервер по tcp. (9000)
  • @odainic ↶ Reply to #84030 #84032 01:41 PM, 16 Jan 2019
    Понял. Спасибо. А можно ссылку на доку по JOIN table ON
  • Просто пишите JOIN с секцией ON как ожидается.
  • @Dalmaneo #84034 01:56 PM, 16 Jan 2019
    Товарищи, можно ли явно указать, какой тип использовать для диапазона rande_hashed словаря? В доках инфы не нашел на эту тему.

    Подключил словарь к таблице с диапазонами UInt32, но он их в Date перевел, а нужен UInt32.
  • @odainic ↶ Reply to #84033 #84035 02:02 PM, 16 Jan 2019
    А как обходить на CH проблему с Memory Limit? Если делать JOIN с подзапросом, то все ок, если прямым - начинает падать по памяти.
  • https://t.me/clickhouse_ru
    @andrey_konyaev #84036 02:03 PM, 16 Jan 2019
    Товарищи, в последнем релизе есть поддержка hdfs import/export

    Пытаюсь потестить, но он заявляет:
    StorageHDFS write is not supported yet

    Может что нужно в конфиге изменить?
  • Лучше всё-таки с подзапросом.
  • В последнем релизе только чтение.
  • https://t.me/clickhouse_ru
    Похоже, что скорее накодить поддержку write :)
  • https://t.me/clickhouse_ru
    @ioaioa #84040 02:04 PM, 16 Jan 2019
    Joined.
  • @odainic ↶ Reply to #84037 #84041 02:05 PM, 16 Jan 2019
    Это-то понятно) Но иногда это не очень удобно. Есть какие-нить workaround? Распределенные запросы? Или какие-нить еще варианты
  • @milovidov_an #84042 02:13 PM, 16 Jan 2019
    Настройка enable_optimize_predicate_expression должна была бы помогать для этого случая, но я сейчас не рекомендую её использовать,
  • @odainic #84043 02:26 PM, 16 Jan 2019
    Я так понимаю, что и материальные view могут помочь... но еще не тестировал.
  • https://t.me/clickhouse_ru
    @Oneshkip #84044 02:29 PM, 16 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @Oneshkip #84045 02:45 PM, 16 Jan 2019
    Привет
    Есть задача получить данные по заказам по двум периодам дат в csv файле
    Сложность в том, что есть подзапросы с ANY INNER JOIN

    и условие WHERE выполняется в последнем из них

    пока не могу придумать как это провернуть
    может кто-то делал подобное?
  • https://t.me/clickhouse_ru
    Можно. Также как для атрибутов тип указывайте. Если тип не указан используется date для совместимости со старыми версиями.
  • https://t.me/clickhouse_ru
    @Oneshkip #84047 02:48 PM, 16 Jan 2019
    текущий запрос для одного товара

    https://pastebin.com/vRkzPKVk
    SELECT createdAt, prodlevid, productName, specification, vendor, mainCategory, s - Pastebin.com

    Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.

  • https://t.me/clickhouse_ru
    Два запроса и соединить union all.
  • https://t.me/clickhouse_ru
    @Oneshkip #84049 02:50 PM, 16 Jan 2019
    🤔
  • https://t.me/clickhouse_ru
    @Oneshkip #84050 02:51 PM, 16 Jan 2019
    спасибо, сейчас попробую
  • https://t.me/clickhouse_ru
    Я не вам отвечал. И на другой вопрос. Just in case.
  • https://t.me/clickhouse_ru
    @Oneshkip #84052 02:58 PM, 16 Jan 2019
    внезапно помог другому, че😅
  • @Dalmaneo ↶ Reply to #84046 #84053 03:16 PM, 16 Jan 2019
    Да, нашел в исходниках, в тестах такое:
    <range_min>
    <name>StartDate</name>
    {range_hashed_range_type}
    </range_min>
    прописал у себя вот так
    <range_min>
    <name>start</name>
    UInt32
    </range_min>
    но все равно он исползует тип Date.
    При создании таблицы на этот словарь ругается, что start с типом Date
  • https://t.me/clickhouse_ru
    <type>UInt32</type>
  • @ycharnyy #84056 03:34 PM, 16 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @570003216 #84057 03:43 PM, 16 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    Пока так и делаем
  • @serlex777 #84059 04:25 PM, 16 Jan 2019
    когда используешь MySql Engine и пишешь WHERE field IN ('aaaa') кликхаус преобразует в WHERE field IN 'aaaa' и соответственно запрос падает с ошибкой
    если IN ('aaaa', 'bbbb') все ок
  • @serlex777 #84060 04:30 PM, 16 Jan 2019
    не понятно зачем убирать скобки в любом случае
    видимо в коде написано при парсинге запроса, если один элемент, то скобки не ставятся
  • Это по-дурацки, я посмотрю в код.
  • спасибо
  • @Dalmaneo ↶ Reply to #84055 #84064 04:56 PM, 16 Jan 2019
    Спасибо, я понял, в чем было дело!

    Сперва, я так и назвал типы, но сервер не запускался, а все из-за того, что у меня была таблица на этот словарь, у которой структура отличается от новой версии словаря...
    Надо внимательней логи читать...
  • https://t.me/clickhouse_ru
    @inlagdgurka #84065 06:01 PM, 16 Jan 2019
    Joined.
  • @serlex777 #84066 06:11 PM, 16 Jan 2019
    Подскажите плиз, FINAL для ReplacingMergeTree будет работать или только для CollapsingMergeTree?
  • Будет.
  • @serlex777 #84068 06:23 PM, 16 Jan 2019
    спасибо
  • @mobyman #84069 07:16 PM, 16 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @ikostukovski #84070 08:35 PM, 16 Jan 2019
    Кто может подсказать как победить проблему в кх кластере, когда рандомные запросы начинают падать с такой ошибкой
    <Error> ServerErrorHandler: Code: 210, e.displayText() = DB::NetException: Connection reset by peer: while reading from socket (x.x.x.x:47758), e.what() = DB::NetException, Stack trace:
    и дальше небольшой не информативный трейс
    где x.x.x.x это айпишник какого нибудь из шардов соседей
    канал не забит, ресурсы на сервере целые, одновременно с этим падением в системе обрабатываются запросы за эти же даты без ошибок
  • https://t.me/clickhouse_ru
    @ikostukovski #84071 08:37 PM, 16 Jan 2019
    рестарт запроса тоже проходит без каких либо ошибок
  • @milovidov_an #84072 08:41 PM, 16 Jan 2019
    Имеет смысл посмотреть график потерь пакетов между серверами. Получить его не очень удобно. Один способ - считать дельту счётчика tcp_retransmits. Где-то тут: cat /proc/net/netstat. Но значения могут быть наведёнными, если идут обращения к посторонним недоступным серверам.

    Второй вариант - снимать метрики количества ошибок с сетевого оборудования.

    Третий вариант - посмотреть с помощью утилиты mtr.

    Кстати, какая версия ClickHouse, не слишком ли старая?
  • @milovidov_an #84073 08:43 PM, 16 Jan 2019
    И конечно, посмотрите лог на сервере ClickHouse, который сделал Connection reset by peer.
  • https://t.me/clickhouse_ru
    @ikostukovski #84074 08:52 PM, 16 Jan 2019
    проблемы по сети проверили первым делом, есть небольшой хендшейк по tcp который совпадет по времени, но это уже следствие.

    ClickHouse server version 18.14.15 revision 54409.

    на сервере который резет бай пир
    {be99b680-1979-11e9-a208-d9862abc84cd} <Error> executeQuery: Code: 394, e.displayText() = DB::Exception: Query was cancelled, e.what() = DB::Exception (from 127.0.0.1:37724) (in query: XXX), Stack trace:
    .
    .
    .
    <Error> ServerErrorHandler: Code: 210, e.displayText() = DB::NetException: Connection reset by peer: while reading from socket (10.2.0.137:45964), e.what() = DB::NetException, Stack trace:
  • https://t.me/clickhouse_ru
    @ikostukovski #84075 08:55 PM, 16 Jan 2019
    https://pastebin.com/C3FXxbWj
    полный лог для отвалившегося запроса с этого сервера
  • @milovidov_an #84076 09:05 PM, 16 Jan 2019
    А на сервере 10.2.0.137 (который peer)?
  • https://t.me/clickhouse_ru
    @ikostukovski #84077 09:05 PM, 16 Jan 2019
    это именно с него и лог
  • https://t.me/clickhouse_ru
    @ikostukovski #84078 09:07 PM, 16 Jan 2019
    сейчас сделаю пасту с сервера который инициировал запрос. Может еще важная инфа - запросы идут через Distributed таблицы которые смотрят на ReplicatedMergeTree
  • https://t.me/clickhouse_ru
    @ikostukovski #84079 09:09 PM, 16 Jan 2019
    вот паста на сервере который запрос выполнял - https://pastebin.com/pv2DCNi7
  • https://t.me/clickhouse_ru
    аналогичный еррор лог на всех шардах которые участвовали в запросе(только что догадался проверить), то есть если бы не паралельные большие запросы все выглядит так как будто 137 по сети отваливается, за исключением 394 кода на нем
  • https://t.me/clickhouse_ru
    @ikostukovski #84081 09:24 PM, 16 Jan 2019
    executeQuery: Code: 394, e.displayText() = DB::Exception: Query was cancelled, e.what() = DB::Exception (from 127.0.0.1:37724)
    это начала всей цепоки умирания запроса
  • https://t.me/clickhouse_ru
    @ikostukovski #84082 09:27 PM, 16 Jan 2019
    на драйвер тоже сначала грешили, но один раз словили тоже самое обычным консольным клиентом
  • https://t.me/clickhouse_ru
    @ikostukovski #84083 09:28 PM, 16 Jan 2019
    повторить почти нереально, в среднем 1 запрос в 4 дня появляется
  • Когда в процессе выполнения распределённого запроса, с одного сервера приходит ошибка, то на все остальные серверы отправляется пакет cancel - просьба прекратить выполнение (что видно по сообщению Query was cancelled).
  • https://t.me/clickhouse_ru
    @ikostukovski #84085 09:39 PM, 16 Jan 2019
    Ага, то есть 137 это может быть и не виновник, а виновник какая то другая нода которая его прислала? Просто 394 только на одном сервере(137)
  • https://t.me/clickhouse_ru
    @ikostukovski #84086 09:40 PM, 16 Jan 2019
    Мне тогда надо время ещё раз все логи за это время со всех нод перешерстить, спасибо за наводку!
  • 17 January 2019 (159 messages)
  • https://t.me/clickhouse_ru
    лучше с подзапросом, потому что не доделано примерно все, не только enable_optimize_predicate_expression

    select *
    from (select 1 a) any left outer join (select 2 b) on (a=b)
    where b = 1

    ┌─a─┬─b─┐
    │ 1 │ 1 │
    └───┴───┘

    проталкивание не сделано для правой таблицы

    set enable_optimize_predicate_expression = 1;
    select 1 from (select '666' lp_name) left outer join dim_lp using(lp_name) where lp_key=666;
    Elapsed: 6.085 sec. Processed 11.65 million rows

    select 1 from (select '666' lp_name) left outer join (select * from dim_lp where lp_key=666) using(lp_name);
    Elapsed: 0.080 sec. Processed 65.54 thousand rows

    И возможно это хорошо. В секции where пишутся пост-джойн предикаты, джойн (и пре-джойн) пишутся с секции on.
    т.е. проталкивать нельзя как минимум предикаты по которым джойнится.

    пре-джойн предикаты on (t1.x = 5 and t1.id=t2.id) тоже не работают.
  • https://t.me/clickhouse_ru
    @den_crane #84088 06:41 AM, 17 Jan 2019
    т.е. при
    select 1 from t left outer join s on (t.id=s.id) where s.id is null
    where s.id это поле проекции t_s а не таблицы s
    поэтому результат отличается от
    select 1 from t left outer join s on (t.id=s.id and s.id is null)
  • https://t.me/clickhouse_ru
    @96053671 #84089 06:48 AM, 17 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @zukrain #84090 07:02 AM, 17 Jan 2019
    Добрый день. Подскажите, пожалуйста, по работе distributed-таблиц.

    Есть три шарда, на каждом создана база DB и таблицы dist_T1(Distributed), T1(MergeTree). Запись и чтение идет через dist_T1. При записи все отрабатывает корректно, данные разбиваются согласно ключу шардирования. Но при чтении не идет склейка данных, а идет запрос на один из трех шардов.
    Создавалась таблица запросом:
    CREATE TABLE db.dist_t1 AS db.t1
    ENGINE = Distributed(db_replica, db, t1, sipHash64(name))

    Почему чтение из Distributed-таблицы не склеивает данные? Из-за того, что через нее производится одновременно чтение/запись или ошибка настроек:
    <db_replica>
    <shard>
    <default_database>db</default_database>
    <host>192.168.0.1</host>
    <port>9000</port>
    </shard>
    <shard>
    <default_database>db</default_database>
    <host>192.168.0.2</host>
    <port>9000</port>
    </shard>
    <shard>
    <default_database>db</default_database>
    <host>192.168.0.3</host>
    <port>9000</port>
    </shard>
    </db_replica>
  • https://t.me/clickhouse_ru
    @zukrain #84091 07:59 AM, 17 Jan 2019
    Разобрался, причина в номере шарда в system.clusters.
  • https://t.me/clickhouse_ru
    причина - реплика из одного шарда была переделана на 3 шарда без реплицирования и при этом не была переименована.
  • https://t.me/clickhouse_ru
    @kiserp ↶ Reply to #83927 #84093 08:10 AM, 17 Jan 2019
    не, сертификат там нужен. Разобрался. Добавил проверку сервера по сертификату, надо запулить в репу.
  • @solresl #84094 09:15 AM, 17 Jan 2019
    Приветствую. Не подскажите, где то встречал нюанс, что в select при where необходимо писать поля с учётом сортировки при создании таблиц. Т.е. если в создании order (client,datetime). То select * from table where client = 1 and datetime = y. Если в where колонки поменять местами , то результаты могут отличаться?) Так ли это и если да, то почему?)
  • https://t.me/clickhouse_ru
    @harotobira #84095 09:22 AM, 17 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @igor_dia #84096 10:02 AM, 17 Jan 2019
    Почему КХ может отдавать пустые поля в селекте? Вручную проверил: пустых полей в таблице нет.
    Запрос такой:
    SELECT
    sector,
    countIf(x<y) as profitable,
    countIf(x>=y) as unprofitable
    FROM (
    SELECT
    ticker,
    argMin(date, low) AS x,
    argMax(date, high) AS y
    FROM quotes.stocks
    WHERE low!=0
    GROUP BY ticker
    ) ANY LEFT JOIN
    (
    SELECT
    ticker,
    sector
    FROM quotes.stock_info
    WHERE sector!=''
    ) USING ticker
    GROUP BY sector
  • https://t.me/clickhouse_ru
    @igor_dia #84097 10:02 AM, 17 Jan 2019
    В одной из строк sector - пустое
  • https://t.me/clickhouse_ru
    А как вы проверяли что пустое? Попробуйте length и lengthUTF8 посчитать
  • https://t.me/clickhouse_ru
    @igor_dia #84099 10:04 AM, 17 Jan 2019
    lengthUTF8 = 0
  • https://t.me/clickhouse_ru
    @igor_dia #84100 10:05 AM, 17 Jan 2019
    Можно, конечно, костыль вставить WHERE lengthUTF8(sector)!=0, но хочется разобраться, зачем он понадобился
  • https://t.me/clickhouse_ru
    @igor_dia #84101 10:10 AM, 17 Jan 2019
    или INNER JOIN
  • https://t.me/clickhouse_ru
    @azat_yarullin #84102 10:26 AM, 17 Jan 2019
    Joined.
  • @yurifal ↶ Reply to #84100 #84103 10:33 AM, 17 Jan 2019
    а если селекты в джойне местами поменять -- результат ведь изменится? и будет ли тогда пустой сектор вылезать?
  • https://t.me/clickhouse_ru
    Так если у вас для таблицы stocks по ключу ticker не будет найдена запись в stock_info - значит в поле из join будет пустая строка
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #84105 10:40 AM, 17 Jan 2019
    Если бы колонка была nullable - был бы null
  • https://t.me/clickhouse_ru
    @igor_dia #84106 10:50 AM, 17 Jan 2019
    а. теперь понятно
  • https://t.me/clickhouse_ru
    @SlimFlavor #84107 11:02 AM, 17 Jan 2019
    добрый день
    подскажите, пожалуйста, как правильно произносить названия этих функций?
    LAG/LEAD
    Лаг/Лед?
  • Нет, порядок условий в WHERE (для операторов and, or) совершенно не важен.
  • @mmmhh93 #84109 11:06 AM, 17 Jan 2019
    второе лид наверное, а вообще гугл переводчик умеет произносить довольно хорошо
  • https://t.me/clickhouse_ru
    @SlimFlavor #84110 11:07 AM, 17 Jan 2019
    да, как раз пошла с ним поговрить))
    но он же с обывательской точки зрения переводит
    а мне хотелось - с програмистской))
  • https://t.me/clickhouse_ru
    @ifoton ↶ Reply to #84004 #84111 11:12 AM, 17 Jan 2019
    У меня на ажуре кх, просто в виртуалке бежит. Данных не много так что по перфомансу подсказать не смогу.
  • https://t.me/clickhouse_ru
    @550524206 #84112 12:47 PM, 17 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @frankegoesdown #84113 01:07 PM, 17 Jan 2019
    Всем привет
    у меня есть табличка с движком GraphiteMergeTree я кидаю каждую секунду в нее метрики
    ┌─metric─ ────────┬─value┬──timestamp─┬───────date─┬────updated─┐
    │ main.dev.metric │ 24 │ 1547728662 │ 2019-01-17 │ 1547728662 │
    │ main.dev.metric │ 22 │ 1547728662 │ 2019-01-17 │ 1547728662 │
    │ main.dev.metric │ 17 │ 1547728662 │ 2019-01-17 │ 1547728662 │
    │ main.dev.metric │ 7 │ 1547728662 │ 2019-01-17 │ 1547728662 │
    │ main.dev.metric │ 4 │ 1547728662 │ 2019-01-17 │ 1547728662 │
    ...

    graphite_rollup выглядит следующим образом:
    <yandex>
    <graphite_rollup>
    <default>
    <function>avg</function>
    <retention>
    <age>0</age>
    <precision>60</precision>
    </retention>
    </default>
    </graphite_rollup>
    </yandex>
    Как движок должен прореживать данные, должно ли у меня уменьшиться количество строк в таблице после прореживания и можно ли его (прореживание) запустить руками, если да, то как??
    спасибо
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #84114 01:17 PM, 17 Jan 2019
    Всем привет! Кто знает, почему так может быть, кластер состоит из 5 шардов по 3 реплики, и когда идет много чтения (читаем через Distributed-таблицы), то обычно нагружается в потолок одна реплика только из трех, с чем это вызвано и как это можно забалансить между всеми репликами? Данные читаются те, которые уже есть на всех репликах, то есть не только что прибывшие
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #84115 01:19 PM, 17 Jan 2019
    А также было заметно, что одна реплика когда в большом нагрузе и не отвечает - запросы вообще перестают работать. Как сделать реплики отказоустойчивыми и сбалансированными на чтения?
  • https://t.me/clickhouse_ru
    @rakovskiy28 #84116 01:20 PM, 17 Jan 2019
    Сам по себе упал кликхаус сервер, в логах ошибка

    2019.01.17 16:13:51.896733 [ 1 ] {} <Error> Application: Access to file denied: /var/lib/clickhouse/data/master/users_notifications_hide/tmp_delete_201901_124_4608_4368/key.mrk

    Что делать?
  • https://t.me/clickhouse_ru
    @stufently #84117 01:21 PM, 17 Jan 2019
    Ну либо диск отвалился либо прав нет
  • https://t.me/clickhouse_ru
    Вы хотите что бы много одновременных запросов ходили в разные реплики? Или чтобы один запрос выполнялся тремя (это трудно)?
  • https://t.me/clickhouse_ru
    Много запросов? Или один?
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #84120 01:21 PM, 17 Jan 2019
    Хотя бы первое, да
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #84121 01:21 PM, 17 Jan 2019
    много запросов
  • https://t.me/clickhouse_ru
    @den_crane #84122 01:22 PM, 17 Jan 2019
    Жаль конечно что это чат, уже 180 раз это обсуждали
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #84123 01:22 PM, 17 Jan 2019
    Да, но читать нереально все :(
  • @pavlov_m ↶ Reply to #84120 #84124 01:22 PM, 17 Jan 2019
    chproxy размажет запросы по разным репликам равмномерно
  • @antonio_antuan #84125 01:22 PM, 17 Jan 2019
    кто-то вроде какой-то FAQ собирался делать
  • https://t.me/clickhouse_ru
    @rakovskiy28 #84126 01:23 PM, 17 Jan 2019
    Директория есть
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #84127 01:23 PM, 17 Jan 2019
    haproxy юзается. Но все равно реплика одна в потолке всегда от шарда
  • https://t.me/clickhouse_ru
    Так владелец рут а кликхаус
  • @pavlov_m #84129 01:24 PM, 17 Jan 2019
    в chproxy можно сконфигурить нагрузку на кластер, и если там есть уже работающие запросы, то он отправит на менее загруженный кластер
  • @pavlov_m #84130 01:24 PM, 17 Jan 2019
    и пока будет работать первая реплика, вторые и третие будут обрабатывают другие запросы
  • https://t.me/clickhouse_ru
    @rakovskiy28 #84131 01:24 PM, 17 Jan 2019
    Хм, а как он сам мог поменяться?
  • https://t.me/clickhouse_ru
    @stufently #84132 01:24 PM, 17 Jan 2019
    Если запросов много оно и так через дистрибьютед же размажется
  • https://t.me/clickhouse_ru
    Ну он не сам, а вы поменяли
  • https://t.me/clickhouse_ru
  • @pavlov_m ↶ Reply to #84132 #84135 01:25 PM, 17 Jan 2019
    ну только в рамках одного кластера (все первые реплики допустим)
  • https://t.me/clickhouse_ru
    @rakovskiy28 #84136 01:25 PM, 17 Jan 2019
    нет, я сутки на сервер не заходил.
  • https://t.me/clickhouse_ru
    Магии не бывает
  • https://t.me/clickhouse_ru
    Если неправильно настроен лоад балансинг в кх , то не будет
  • @pavlov_m ↶ Reply to #84138 #84139 01:26 PM, 17 Jan 2019
    это да, верно
  • https://t.me/clickhouse_ru
    @rakovskiy28 #84140 01:28 PM, 17 Jan 2019
    Подскажите, нужно такую команду выполнить?

    chown -R clickhouse:clickhouse /var/lib/clickhouse/*
  • https://t.me/clickhouse_ru
    а дефолтный load_balancing=random это неправильный балансинг уже? То есть этого не достаточно?
  • https://t.me/clickhouse_ru
    @igor_dia #84142 01:46 PM, 17 Jan 2019
    А как по-правильному сделать WHERE date<argMin(date, value)?
  • https://t.me/clickhouse_ru
    @igor_dia #84143 01:46 PM, 17 Jan 2019
    то есть вывести все данные, которые были до минимума функции
  • https://t.me/clickhouse_ru
    @athathot ↶ Reply to #84143 #84145 01:47 PM, 17 Jan 2019
    HAVING ? не?
  • https://t.me/clickhouse_ru
    можно сделать ддл запрос ON CLUSTER и все само найдется
  • https://t.me/clickhouse_ru
    @stufently #84149 01:52 PM, 17 Jan 2019
    в новой версии вроде как пофиксили и можно с не мастера запускать но сам не проверял
  • https://t.me/clickhouse_ru
    @stufently #84151 01:53 PM, 17 Jan 2019
    18.16.1 новая
  • https://t.me/clickhouse_ru
    @igor_dia ↶ Reply to #84145 #84154 01:54 PM, 17 Jan 2019
    GROUP BY date, value
    HAVING date<argMin(date, value)
    Так не сработало
  • @random_id #84155 01:55 PM, 17 Jan 2019
    Joined.
  • @random_id #84156 01:55 PM, 17 Jan 2019
    Ребята привет 👋
  • https://t.me/clickhouse_ru
    @athathot ↶ Reply to #84154 #84157 01:55 PM, 17 Jan 2019
    а чего написало? вообще странное какое-то сочетание group by и having
  • https://t.me/clickhouse_ru
    @Alesapin #84158 01:55 PM, 17 Jan 2019
    Hi!
  • https://t.me/clickhouse_ru
    @igor_dia #84159 01:55 PM, 17 Jan 2019
    ничего не написало. совсем
  • @random_id #84160 01:55 PM, 17 Jan 2019
    Кликхаус на центос сложно ставить?
  • https://t.me/clickhouse_ru
    @athathot ↶ Reply to #84160 #84161 01:56 PM, 17 Jan 2019
    я вот на Эльбрус не смог :~)
  • У меня обычный Интел )
  • https://t.me/clickhouse_ru
    @igor_dia ↶ Reply to #84161 #84163 01:56 PM, 17 Jan 2019
    Это извращенство
  • https://t.me/clickhouse_ru
    @athathot ↶ Reply to #84159 #84164 01:56 PM, 17 Jan 2019
    минуту
  • https://t.me/clickhouse_ru
    @athathot ↶ Reply to #84163 #84165 01:56 PM, 17 Jan 2019
    ты просто завидуешь :)
  • https://t.me/clickhouse_ru
    @qweran ↶ Reply to #84160 #84166 01:56 PM, 17 Jan 2019
    нет. Altinity уже даже пакеты собрали.
  • @random_id #84167 01:57 PM, 17 Jan 2019
    У меня сейчас куча трейдов в тысяче мускульных таблиц. Целесообразно для выборок все перегнать в кликхаус ?
  • @random_id #84168 01:57 PM, 17 Jan 2019
    В одну таблицу
  • https://t.me/clickhouse_ru
    @igor_dia #84169 01:57 PM, 17 Jan 2019
    смотря в каком виде
  • https://t.me/clickhouse_ru
    @igor_dia #84170 01:58 PM, 17 Jan 2019
    если в одну таблицу, то еще как-то жить можно
  • @random_id #84171 01:58 PM, 17 Jan 2019
    Ts, price, volume, action
  • @random_id #84172 01:58 PM, 17 Jan 2019
    Это стандартные поля в каждой таблице
  • https://t.me/clickhouse_ru
    @athathot ↶ Reply to #84167 #84173 01:58 PM, 17 Jan 2019
    заполмни два правила про бигдату:
    1. никаких джойнов
    2. максимальная денормализация
    3. никаких апдейтов
    4. это не OLAP
    ^)
  • https://t.me/clickhouse_ru
    @igor_dia #84174 01:58 PM, 17 Jan 2019
    Если тысяча таблиц будет, то все повиснет намертво
  • 1. Джойны не нужны
    2. Денормал есть
    3. Апдейтов нет, пополнение раз в 5 минут надо
  • https://t.me/clickhouse_ru
    @athathot ↶ Reply to #84175 #84176 02:00 PM, 17 Jan 2019
    апдейтов в бигдате нету, есть новая версия данных, с этим лучше смирится
  • Извини. Перепутал. Нет апов
  • https://t.me/clickhouse_ru
    есть еще промежуточные версии данных.
  • @random_id #84179 02:00 PM, 17 Jan 2019
    Просто пополнение
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #84161 #84180 02:00 PM, 17 Jan 2019
    а что мешало ?
  • @random_id #84181 02:00 PM, 17 Jan 2019
    А места много надо ?
  • @random_id #84182 02:01 PM, 17 Jan 2019
    Если например в мускуле все таблицы гиг
  • https://t.me/clickhouse_ru
    @stufently #84183 02:01 PM, 17 Jan 2019
    жмутся данные хорошо если не бинарные будут силньо меньше чем в мускуле занимать
  • Там децималы да сэт
  • https://t.me/clickhouse_ru
    @athathot ↶ Reply to #84180 #84185 02:01 PM, 17 Jan 2019
    компилятор там древний как говно мамонта, 4.8, а чтобы собрать gcc-7 из сырцов они зажали machine description файлы :(
  • https://t.me/clickhouse_ru
    тяжела работа в госкомпаниях )
  • https://t.me/clickhouse_ru
    @athathot ↶ Reply to #84186 #84187 02:03 PM, 17 Jan 2019
    нифига, я в интригаторе работаю :)
  • @pookieShmukie #84188 02:06 PM, 17 Jan 2019
    Всем привет! А есть знатоки по ch proxy? У нас проблемка. Подняли ch proxy, делаем через наш http клиент в него запрос, а КХ ругается ошибкой:
    DB::Exception: Unknown setting no_cache, e.what() = DB::Exception
    . Query: show tables'
  • https://t.me/clickhouse_ru
    А если выполнить запрос без ch proxy - всё хорошо?
  • https://t.me/clickhouse_ru
    @evsign ↶ Reply to #84189 #84190 02:13 PM, 17 Jan 2019
    ага
  • https://t.me/clickhouse_ru
    @evsign #84191 02:24 PM, 17 Jan 2019
    Короче разобрались, ток непонятно почему chproxy так делает. Там в коде сделано, что если запрос идёт через POST, то он в параметры добавляет no_cache=1 и шлёт это в кх
  • https://t.me/clickhouse_ru
    @evsign #84192 02:26 PM, 17 Jan 2019
    А в кх о такой настройке ваще упоминаний нету
  • https://t.me/clickhouse_ru
    это правильный для каких-то случаев.

    запрос приходит на одну из нод - инициатор
    инициатор смотрит у себя в описание кластера
    понимает что у данных три реплики, при random посылает запрос рандомно выбрав одну из
    собирает результат
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @kvapen #84195 02:43 PM, 17 Jan 2019
    Привет! Это я что-то не так делаю, или это баг?
    CREATE TABLE t (d Date, z UInt32) ENGINE = MergeTree(d, (z), 1)

    WITH (d < '2018-01-01') AND (d < '2018-01-02') AS x
    SELECT 1
    FROM t
    WHERE x

    Received exception from server (version 18.12.14):
    Code: 1001. DB::Exception: Received from 127.0.0.1:9000. DB::Exception: std::bad_typeid.
    Запрос валится только если условие вынесено в WITH и только если оно несколько раз трогает колонку d. И только если d не входит в первичный ключ.
  • https://t.me/clickhouse_ru
    @valeev_d #84196 02:54 PM, 17 Jan 2019
    Joined.
  • @nchereva #84197 02:58 PM, 17 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @konstantin_ptr #84198 03:06 PM, 17 Jan 2019
    csv как лучше отправлять, файлом или по строчно?
  • https://t.me/clickhouse_ru
    @athathot ↶ Reply to #84198 #84199 03:16 PM, 17 Jan 2019
    всегда кучей. не забудь, что есть ограничение на количество инсертов в секунду
  • https://t.me/clickhouse_ru
    @konstantin_ptr #84200 03:16 PM, 17 Jan 2019
    да уперся видимо в него уже (
  • https://t.me/clickhouse_ru
    @athathot ↶ Reply to #84200 #84201 03:18 PM, 17 Jan 2019
    ну и кстати говоря BULK/ARRAY DML завсегда и везде во всех БД привествуются
  • https://t.me/clickhouse_ru
    @godjil #84202 03:35 PM, 17 Jan 2019
    Коллеги.
    А есть возможность нативно из JSON инсёртить?
  • https://t.me/clickhouse_ru
    @godjil #84203 03:36 PM, 17 Jan 2019
    cat {json} | client --db blablabla
  • https://t.me/clickhouse_ru
    я правильнно понимаю, что не используемые данные можно вынести на другой сервер, а для экономии памяти на рабочем хранить только актуальные за определенный срок данные?
  • https://t.me/clickhouse_ru
    @athathot ↶ Reply to #84204 #84205 03:37 PM, 17 Jan 2019
    да, вполне хорошая идея, как по мне
  • @Dalmaneo #84206 05:05 PM, 17 Jan 2019
    Товарищи, в range_hashed словарях в качестве id поддерживается только UInt значение или можно кортежи использовать?
  • https://t.me/clickhouse_ru
    Насколько я знаю, кортежи нет
  • @Dalmaneo #84209 05:52 PM, 17 Jan 2019
    Понятно, спасибо.
  • https://t.me/clickhouse_ru
    Каждый insert это тяжелая операция с созданием нового парта (файла), потом их надо мержить, поэтому bulk лучше. Но нельзя вставить сразу миллиард особенно в широкую таблицу одним куском -- не хватит памяти, поэтому по умолчанию инсерт будет разбит на блоки по миллиону строк. Если у вас мало памяти вы можете уменьшить max_insert_block_size например до 100тыс. (параметр clickhouse-client).
  • https://t.me/clickhouse_ru
    @konstantin_ptr #84211 06:05 PM, 17 Jan 2019
    Спасибо!!
  • https://t.me/clickhouse_ru
    cat ...|clickhouse-client -q 'insert into tttt format JSONEachRow'
    jsoneachrow особый упрощенный формат
  • https://t.me/clickhouse_ru
    @Vasyaabr #84213 06:48 PM, 17 Jan 2019
    Кто-нибудь сталкивался с ошибкой вида:
    ZooKeeper session has been expired.: while pushing to view ...
    Интересует, что произойдет тогда с данными? Они не вставятся никуда? Вставятся только в основную таблицу? Вставятся только в таблицы мат вьюшек?
    Может кто-то знает как это лечиться?
  • https://t.me/clickhouse_ru
    @Vasyaabr #84214 06:49 PM, 17 Jan 2019
    Нашел issue на эту тему: https://github.com/yandex/ClickHouse/issues/2621
    Только не очень понятно, где конфигурировать параметры таймаутов зоокипера, в confix.xml ветке zookeeper?
    [MV] неполные данные · Issue #2621 · yandex/ClickHouse

    версия: 1.1.54385 ZK: 3.5.2 после обновления - появилось расхождение между таблицей и MV: проверочный запрос: SELECT date, h, shows1, shows2 FROM (SELECT date, toHour(timestamp) as h, sum(ev_type =...

  • https://t.me/clickhouse_ru
    @Vasyaabr #84215 06:55 PM, 17 Jan 2019
    Ага, пример конфига зоокипера в исходниках есть. Можно попытаться поиграться с таймаутами.
    <zookeeper>
    <node>
    <host>example1</host>
    <port>2181</port>
    </node>
    <node>
    <host>example2</host>
    <port>2181</port>
    </node>
    <session_timeout_ms>30000</session_timeout_ms>
    <operation_timeout_ms>10000</operation_timeout_ms>
    <!-- Optional. Chroot suffix. Should exist. -->
    <root>/path/to/zookeeper/node</root>
    <!-- Optional. Zookeeper digest ACL string. -->
    <identity>user:password</identity>
    </zookeeper>
  • https://t.me/clickhouse_ru
    В большинстве случаев вставка прошла в таблицу и во все вью у которых имя меньше в лексографическом порядке. Т.е. все предыщие вставки прошли. Но поведение зависит от настройки про параллельную заливку во вью. Сама ошибка никак не связана с таблицей и вью. Чините зукипер, сеть, железо, кол-во транзакций в зукипере порождаемое вставкой (маленькие блоки/много партиций).
  • https://t.me/clickhouse_ru
    @stovm #84217 07:56 PM, 17 Jan 2019
    Существует какой-то способ организовать словарь с составным ключём, но без склейки?….
    В основной таблице у меня есть события
    дата, пользователь, город, всякие колонки

    Я знаю, что активность зависит от погоды. Думаю отыграть словарём с температурой в городах… Типа дата, город, температура..
    Ключ у меня дата город… Городить строку вида dt + ‘_’ + city_id не хочется
  • https://t.me/clickhouse_ru
    @igor_dia #84218 08:03 PM, 17 Jan 2019
    А есть способ создать свою аггрегатную функцию?
  • https://t.me/clickhouse_ru
    @Imaskar ↶ Reply to #84218 #84219 08:03 PM, 17 Jan 2019
    git clone и вперёд
  • https://t.me/clickhouse_ru
    @igor_dia #84220 08:03 PM, 17 Jan 2019
    боль
  • https://t.me/clickhouse_ru
    @Imaskar #84221 08:06 PM, 17 Jan 2019
    что-то можно на лямбдах-массивах извернуться, наверно
  • https://t.me/clickhouse_ru
    complex* словари позволяют таплы в ключах.
    Точнее они именно для этого.
  • https://t.me/clickhouse_ru
    @stovm ↶ Reply to #84222 #84223 08:07 PM, 17 Jan 2019
    спасибо. Почитаю, что найду
  • https://t.me/clickhouse_ru
    @stovm #84224 08:09 PM, 17 Jan 2019
    Да… То, что нужно, спасибо большое!
  • https://t.me/clickhouse_ru
    @igor_dia #84225 08:16 PM, 17 Jan 2019
    А JOIN-ы в репозитории где лежат?
  • https://t.me/clickhouse_ru
    @399999446 #84226 08:24 PM, 17 Jan 2019
    Добрый вечер
    Если колонка типа String ,в которой содержится дата 26.10.2018
    Как преобразовать к типу Date?
    Если использовать toDate возвращает 0000-00-00
  • https://t.me/clickhouse_ru
    Разобрать substring потом склеить конкатенацией.
  • https://t.me/clickhouse_ru
    @399999446 #84228 08:37 PM, 17 Jan 2019
    спасибо,думал есть стандартные средства конверта
  • https://t.me/clickhouse_ru
    @igor_dia #84229 08:45 PM, 17 Jan 2019
    Как из правой таблицы в джоине передать значение в WHERE левой таблицы?
  • https://t.me/clickhouse_ru
    @igor_dia #84230 08:47 PM, 17 Jan 2019
    У меня просто с одним запросом совсем мозг плавится. Не могу придумать, как его правильно написать уже который день.
  • https://t.me/clickhouse_ru
    @igor_dia #84231 08:59 PM, 17 Jan 2019
    Задача: Необходимо из таблицы в формате (name, date, value) для всех одинаковых name вытащить локальный максимум левее глобального минимума, если функция в целом возрастающая (глобальный минимум находится левее глобального максимума).
    Что я делал:
    1) Для начала - примерный запрос, который разберем по частям
    SELECT
    name,
    prevMax
    FROM
    (
    SELECT
    name,
    argMax(date, value) as prevMax
    FROM db.mytable
    WHERE date<x
    GROUP BY name
    )
    INNER JOIN
    (
    SELECT
    name,
    argMin(date, value) AS x,
    argMax(date, value) AS y
    FROM db.mytable
    GROUP BY name
    HAVING x<y
    ) USING name
    2) Для начала надо составить временную таблицу глобальных экстремумов, где минимум левее максимума. Это делается запросом
    SELECT
    name,
    argMin(date, value) AS x,
    argMax(date, value) AS y
    FROM db.mytable
    WHERE value!=0
    GROUP BY name
    HAVING x<y
    3) Дальше по идее мне надо снова пройтись по таблице, но применяя условие, полученное из второй таблицы. Поэтому использую INNER JOIN
    4) Выставляю условие, что ищем левее минимума WHERE date<x и выводим дату максимума
    SELECT
    name,
    argMax(date, value) as prevMax

    Проблема в том, что date<x делать нельзя, так как левый запрос ничего не знает о правом.

    Any suggestions?
  • https://t.me/clickhouse_ru
    @igor_dia #84232 09:04 PM, 17 Jan 2019
    Или может есть среди недокументированных какой-нибудь CONDITIONAL JOIN, который позволит передавать значения из одного запроса в другой, которые можно использовать в HAVING/WHERE?
  • https://t.me/clickhouse_ru
    @igor_dia #84233 09:25 PM, 17 Jan 2019
    Только что нашел решение, но там аж 6 селектов с двумя джоинами. И по ходу перерасход памяти там неслабый.
  • https://t.me/clickhouse_ru
    а кстати, есть, в каком-то смысле
    select toDate(parseDateTimeBestEffort('2019.01.19'))
  • https://t.me/clickhouse_ru
    только дата в другом формате
    select toDate(parseDateTimeBestEffort('26.10.2018'))
    так не работает
  • https://t.me/clickhouse_ru
    а блин, я затупил.
  • Уже исправили в master. Теперь работает даже в таком формате :)
  • https://t.me/clickhouse_ru
    @live_man_oleg #84238 09:46 PM, 17 Jan 2019
    есть 2 вопроса
    1) можно ли использовать КХ для органиции файлового хранилища(аналог GridFS в MongoDB), ели можно, насколько такой подход правильный?
    2) чем пользуется яндекс, в своем яндекс диске, для развертывания хранилища?
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #84238 #84239 09:49 PM, 17 Jan 2019
    Как устроены облака Яндекса: Elliptics

    За последние несколько лет в мире IT появилась модная тенденция – использование всего «облачного» для разработки новых продуктов. Публичных облачных провайдеров...

  • https://t.me/clickhouse_ru
    данный софт у себя уж не развернуть, там все ссылки уже не рабочие, на страницы яндекса
    эту статью я читал
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #84240 #84241 09:51 PM, 17 Jan 2019
    в интернете много статей по этой теме. А это лишь ниточка за которую стоит просто потянуть
  • https://t.me/clickhouse_ru
    многие используют в этом плане CEPH
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #84242 #84243 09:53 PM, 17 Jan 2019
    есть такое дело
  • https://t.me/clickhouse_ru
    @live_man_oleg #84244 09:55 PM, 17 Jan 2019
    а на первый вопрос может кто ответить?
  • https://t.me/clickhouse_ru
    @Imaskar #84245 09:56 PM, 17 Jan 2019
    многие, наверно, в шоке от такого поворота событий. а... зачем? для кх это совершенно несвойственная нагрузка.
  • Нет, ClickHouse не подходит ни для хранения файлов, ни для работы с их метаданными. Но может использоваться для двух связанных задач:
    - аналитика по логам работы облачного хранилища;
    - аналитика по слепку метаданных или логам изменений метаданных.
    Считать всякие бизнес метрики. Находить подозрительную активность. Мониторинг сервиса и расследование инцидентов.
  • https://t.me/clickhouse_ru
    спасибо
    .... про аналитику вкурсе
  • https://t.me/clickhouse_ru
    @feriat ↶ Reply to #84247 #84248 10:11 PM, 17 Jan 2019
    Вы производите впечатление уверенного человека, который все знает.
  • https://t.me/clickhouse_ru
    я про КХ много читал и смотрел видосы ... просто решил спросить про конкретный кейс
  • https://t.me/clickhouse_ru
    @live_man_oleg #84250 10:12 PM, 17 Jan 2019
    так же, сами им пользуемся
  • https://t.me/clickhouse_ru
    @igor_dia #84251 11:14 PM, 17 Jan 2019
    @kshvakov клиент на го умеет минифицировать/сжимать запросы к базе? Я боюсь, что рано или поздно с учетом отступов и комментариев запрос не поместится в 16 кб...
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #84251 #84252 11:45 PM, 17 Jan 2019
    Привет, да, клиент умеет сжатие блоков.
  • 18 January 2019 (126 messages)
  • @iamigor #84253 12:10 AM, 18 Jan 2019
    Joined.
  • @iamigor #84254 12:10 AM, 18 Jan 2019
    привет! подскажите пожалуйста, а есть аналоги clickhouse-bulk (чтобы висел http-сервер, который не будет загибаться от кучи запросов на него и копить данные для инсерта в КХ)?
  • @shinebell #84255 12:34 AM, 18 Jan 2019
    кафка, буффер
  • @shinebell #84256 12:34 AM, 18 Jan 2019
    а чем балк не устраивает ?
  • @iamigor #84257 12:37 AM, 18 Jan 2019
    в целом почти всем устраивает, подумал, может пропустил чего :) спасибо
  • @iamigor #84258 12:38 AM, 18 Jan 2019
    буффер - в смысле, который этот? https://clickhouse.yandex/docs/en/operations/table_engines/buffer/
    Buffer | ClickHouse Documentation

    Buffer Table Engine Buffers the data to write in RAM, periodically flushing it to another table. During the read operati

  • @iamigor #84259 12:38 AM, 18 Jan 2019
    огонь, я че-то забыл совсем про него
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #84259 #84260 03:44 AM, 18 Jan 2019
    в buffer вроде бы тоже рекомендуют пачками вставлять
  • https://t.me/clickhouse_ru
    там количество инсертов в секунду поболе будет - несколько сот, а не пара десятков
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #84254 #84262 05:31 AM, 18 Jan 2019
    GitHub - VKCOM/kittenhouse

    Contribute to VKCOM/kittenhouse development by creating an account on GitHub.

  • kafka other mq?
  • https://t.me/clickhouse_ru
    @igor_dia ↶ Reply to #84252 #84264 06:40 AM, 18 Jan 2019
    Блоками только куски данных для инсерта называются? Если так, то у меня другая ситуация
  • https://t.me/clickhouse_ru
    @igor_dia #84265 06:43 AM, 18 Jan 2019
    Пока что селект 2 экрана занимает. Будет больше.
  • @312281446 #84266 07:03 AM, 18 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #84264 #84267 07:40 AM, 18 Jan 2019
    Если не влезает можно настройки размера запроса для пользователя поправить
  • https://t.me/clickhouse_ru
    Да, kittenhouse в режиме reverse proxy как раз для этого и создан.
  • https://t.me/clickhouse_ru
    @msg_kurt #84269 09:37 AM, 18 Jan 2019
    Всем привет. Вопрос то ли по кафке, то ли по materialized view. Пример: КХ слушает брокера. Для того, дабы иметь и сырую инфу с брокера, и аггрегированную (но не слушать два одинаковых потока), надо создать MergeTree таблицу, аналогичную кафке и к ней матвью, а потом еще одно матвью к, например SummingMergeTree таблице, которое будет дергать MergeTree таблицу? Или лучше делать две кафка-таблицы и из них уже тянуть?
  • https://t.me/clickhouse_ru
    @Lacost_e #84270 09:39 AM, 18 Jan 2019
    а для еще одного мат вью потом - 3ю кафка таблицу?:)
  • https://t.me/clickhouse_ru
    @Lacost_e #84271 09:40 AM, 18 Jan 2019
    имхо вытаскивать сырые данные из кафки в обычную mergetree таблицу а потом уже из нее строить всё что угодно.
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #84270 #84272 09:44 AM, 18 Jan 2019
    не, ну чтоб была таблица с аггрегатами
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #84271 #84273 09:44 AM, 18 Jan 2019
    ну в принципе да, зачем усложнять. Не знаю, как с этим бороться, чтоб не из пушки по воробьям
  • https://t.me/clickhouse_ru
    @konstantin_ptr #84274 10:02 AM, 18 Jan 2019
    Code: 27. DB::Exception: Cannot parse input: expected ; before: \n2019-01-18 11:50:07
    ————
    в чем может быть проблема после отправки файла?
  • https://t.me/clickhouse_ru
    не хватает ; перед строкой, начинаюшейся с 2019-01-18 11:50:07?
  • https://t.me/clickhouse_ru
    @konstantin_ptr #84276 10:07 AM, 18 Jan 2019
    дата это вторая строка и до нее перевод строки
  • @taralej_mindcrimer #84277 10:09 AM, 18 Jan 2019
    Коллеги, привет!
    Есть КХ 18.16.1
    В него пишутся данные из jaeger opentracing серез kafka engine.
    Далее клиенты в 5 потоков читают sql из КХ (также немного, редко когда суммарно более 300-400 запросов в минуту по индексам-партициям - быстро и легко).
    КХ работает, на виртсервере меряются стандартные метрики (место, память, процессор, иноды).
    Но замечено, что раз в сутки (иногда временной интервал побольше) клиенты начинают получать в очень больших количествах (порядка 99% от всей массы sql-запросов) либо ошибки, либо пустые rowset.
    Подскажите, какие метрики здоровья именно КХ вы порекомендуете (select count(*) from table, select now()) и на что стоит обратиь внимание?
    Благодарю за подсказки!
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #84246 #84278 10:24 AM, 18 Jan 2019
    Было бы здорово чтоб в документации или где-то еще были примеры по нахождению аномалий с помощью ClickHouse )
  • https://t.me/clickhouse_ru
    У нас есть такая штука, статью на Habr бахнем
  • https://t.me/clickhouse_ru
    так гридфс тормозная поделка на обьемах просто никакая, какой смысл использовать его не очень понятно.
  • https://t.me/clickhouse_ru
    @Krashuevina #84281 10:25 AM, 18 Jan 2019
    Не совсем аномалии, но "ранжирование наиболее сильно отклонившихся метрик"
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #84269 #84282 10:25 AM, 18 Jan 2019
    Нет, каскадно пока ничего не пишется. 1 МВ - 1 таблица
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #84279 #84283 10:25 AM, 18 Jan 2019
    Когда ?)
  • https://t.me/clickhouse_ru
    Я думаю, что в этом месяце сяду, напишу
  • https://t.me/clickhouse_ru
    ❤️
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #84284 #84286 10:26 AM, 18 Jan 2019
    Спасибо
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #84282 #84288 10:45 AM, 18 Jan 2019
    Я так понял, в планах есть реализация возможности прикручивания к кафке нескольких матвью с разными движками? А ля одно матвью собирает сырую инфу, а второе ее аггрегирует? Ну а сейчас самый простой выход - матвью с MergeTree, а потом уже аггрегируй как хочешь, так?
  • @SWx5YQ #84289 10:56 AM, 18 Jan 2019
    ребят, мб кто сталкивался
    СH не парсит CSV вида

    "2","11","3","[\"invalid_marketing_campaign\", \"notification_period_has_ended\"]", …

    из-за бекслешей в 4 поле. В доках не нашел таких настроек для CSV, может кто-то подскажет, что я упустил?
  • @SWx5YQ #84290 10:56 AM, 18 Jan 2019
    Column 3, name: validation_errors, type: Array(String), parsed text: <EMPTY>ERROR
  • https://t.me/clickhouse_ru
    уберите кавычки вокруг массива, должно завестись
  • https://t.me/clickhouse_ru
    @ikostukovski #84292 11:02 AM, 18 Jan 2019
    а вообще при выгрузке обычно указывюат optionally enclosed by а не форсом все в кавычки загоняют
  • https://t.me/clickhouse_ru
    это временное решение
  • @SWx5YQ ↶ Reply to #84291 #84294 11:09 AM, 18 Jan 2019
    не завелось
  • https://t.me/clickhouse_ru
    @sahaquielx #84295 11:09 AM, 18 Jan 2019
    Добрый день. Не нашел в документации описания <distributed_ddl> в документации, но ощущаю что он мне нужен.
    Где можно узнать, что именно делает этот параметр?
  • @SWx5YQ #84296 11:09 AM, 18 Jan 2019
    даже как простая строка не заводится
  • https://t.me/clickhouse_ru
    @stufently #84297 11:10 AM, 18 Jan 2019
    <!-- Allow to execute distributed DDL queries (CREATE, DROP, ALTER, RENAME) on cluster.
    Works only if ZooKeeper is enabled. Comment it if such functionality isn't required. -->
    <distributed_ddl>
    <!-- Path in ZooKeeper to queue with DDL queries -->
    <path>/clickhouse/task_queue/ddl</path>
    </distributed_ddl>
  • https://t.me/clickhouse_ru
    @stufently #84298 11:10 AM, 18 Jan 2019
    в дефолтном конфиге есть описание же
  • https://t.me/clickhouse_ru
    @stufently #84299 11:10 AM, 18 Jan 2019
    позволяет делать распределенные запросы сразу на весь кластер
  • https://t.me/clickhouse_ru
    @sahaquielx #84300 11:11 AM, 18 Jan 2019
    Спасибо :)
    default конфиг утрачен, не подумал там искать
  • @faerics #84301 11:34 AM, 18 Jan 2019
    Здравствуйте! А кх сам не умеет отдавать метрики в prometeus?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #84288 #84302 11:35 AM, 18 Jan 2019
    И сейчас так можно, но в этом случае эффективнее писать самим, а на таблицу с сырыми данными вешать МВ.
  • @irusin #84303 11:39 AM, 18 Jan 2019
    Joined.
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #84302 #84304 11:51 AM, 18 Jan 2019
    Спасибо!
  • https://t.me/clickhouse_ru
    @msg_kurt #84305 11:54 AM, 18 Jan 2019
    Поясните, пожалуйста, как работать с runningAccumulate, а то она на меня матерится Argument for function runningAccumulate must have type AggregateFunction - state of aggregate function. Запрос вроде как элементарный, хочу посмотреть органический рост юзеров:
    SELECT count, runningAccumulate(count), day FROM (SELECT uniqExact(usersDailyCount) AS count, toDate(firstSeen) AS day FROM
  • https://t.me/clickhouse_ru
    @Vasyaabr #84306 11:56 AM, 18 Jan 2019
    Нашел, всех благодарю:

    SELECT
    number,
    runningAccumulate(state)
    FROM
    (
    SELECT
    number,
    sumState(number) AS state
    FROM numbers(10)
    GROUP BY number
    ORDER BY number ASC
    )
  • @Dalmaneo ↶ Reply to #84231 #84307 11:57 AM, 18 Jan 2019
    Решили задачу?
  • https://t.me/clickhouse_ru
    @Vasyaabr #84308 11:57 AM, 18 Jan 2019
    Вообще ищите по чату, тут пробегают примеры использования почти всех функций. Или в исходниках тестов на гитхабе.
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #84306 #84309 11:57 AM, 18 Jan 2019
    Кто бы мог подумать, что в чате можно нажать Ctrl+F=) Спасибо, попробую
  • https://t.me/clickhouse_ru
    @konstantin_ptr #84310 12:11 PM, 18 Jan 2019
    я правильно понимаю, что данные /var/lib/clickhouse/data/database/table/ это очередь на вставку?
  • @yurifal ↶ Reply to #84233 #84311 12:14 PM, 18 Jan 2019
    Postgre нарисовал решение с четырьмя селектами и тремя джойнами (один из который вложенный, в КХ придется расшивать через подзапрос). Идея простая: найти для каждого name дату (date) глобального минимума, а потом найти два максимума -- слева и справа от этой даты. Если левый меньше правого, то это он и есть (локальный максимум, а правый тогда будет глобальный максимум).
  • https://t.me/clickhouse_ru
    @270358043 #84312 12:14 PM, 18 Jan 2019
    ~# /usr/bin/clickhouse-extract-from-config
    -bash: /usr/bin/clickhouse-extract-from-config: Operation not permitted что бы это могло значить?
  • https://t.me/clickhouse_ru
    @igor_dia ↶ Reply to #84307 #84313 12:14 PM, 18 Jan 2019
    Решил... Длинно получилось и выполняется почти секунду
  • https://t.me/clickhouse_ru
    @270358043 #84314 12:16 PM, 18 Jan 2019
    ~# strace /usr/bin/clickhouse-extract-from-config
    execve("/usr/bin/clickhouse-extract-from-config", ["/usr/bin/clickhouse-extract-from"...], 0x7ffe9a579d30 /* 10 vars */) = -1 EPERM (Operation not permitted)
    fstat(2, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 0), ...}) = 0
    write(2, "strace: exec: Operation not perm"..., 38strace: exec: Operation not permitted но зачем?
  • https://t.me/clickhouse_ru
    @Laminarela #84315 12:27 PM, 18 Jan 2019
    Joined.
  • @Dalmaneo ↶ Reply to #84313 #84316 12:50 PM, 18 Jan 2019
    Можно решить скриптом, не длиннее, чем в задаче, сравнением кортежей. Возможно, это будет быстрее, чем длинный вариант.
  • @random_id #84317 12:52 PM, 18 Jan 2019
    Ребята, а кх много памяти надо? Таблица миллионов на 50
  • https://t.me/clickhouse_ru
    @igor_dia #84318 12:53 PM, 18 Jan 2019
    Вроде рекомендуют столько, сколько нужно, чтобы они все целиком в памяти поместились
  • @random_id #84319 12:54 PM, 18 Jan 2019
    Ну тогда по идее немного. Пары гигов должно хватить
  • Спасибо 🤝
  • https://t.me/clickhouse_ru
    @k0st1an #84321 12:57 PM, 18 Jan 2019
    коллеги, подскажите. alter table delete/update уже в живом состоянии (да, еще бета) или лучше не трогать?
  • https://t.me/clickhouse_ru
    На простых запросах проверено — работает 🙂
  • https://t.me/clickhouse_ru
    @yourock88 #84323 12:58 PM, 18 Jan 2019
    Но вроде тут в чатике у людей в каких-то сложных случаях возникали проблемы или вопросы
  • https://t.me/clickhouse_ru
    @yourock88 #84324 12:58 PM, 18 Jan 2019
    например если хочется остановить идущий alter … delete , то нужно самому в ZooKeeper лезть, или что-то такое
  • https://t.me/clickhouse_ru
    @yourock88 #84325 12:59 PM, 18 Jan 2019
    или если делается update с подзапросами, то тоже всё очень медленно будет идти
  • https://t.me/clickhouse_ru
    @k0st1an #84326 12:59 PM, 18 Jan 2019
    ясно, значит надо где то всторонке проверять ))
  • https://t.me/clickhouse_ru
    Стабильно работает если запросы не сильно сложные
  • https://t.me/clickhouse_ru
    @stufently #84328 01:08 PM, 18 Jan 2019
    Ни одной проблемы с августа с ними не было
  • https://t.me/clickhouse_ru
    @k0st1an ↶ Reply to #84327 #84329 01:08 PM, 18 Jan 2019
    ок
  • https://t.me/clickhouse_ru
    Вообще все ровно наоборот.
    MV не каскадируются.
    Кафка энжин таблица проталкивает во все мат.вью которые на нее смотрят.
    Т.е. создаем одну кафка энжин таблицу и навешиваем на нее несколько MV.
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #84330 #84331 01:38 PM, 18 Jan 2019
    О. Так я так и думал сделать изначально. Замылился в документации, решил переспросить. Спасибо, буду пробовать
  • @random_id #84332 01:40 PM, 18 Jan 2019
    Ребята, а КХ сложно обслуживать? По всем параметрам, как база подходит. Будет крутиться на одной машине.
  • https://t.me/clickhouse_ru
    На одной машине - максимально просто
  • @random_id #84334 01:41 PM, 18 Jan 2019
    Я не админ. Программер )
  • Ну всё. Завтра поставлю ))
  • https://t.me/clickhouse_ru
    У нас крутиться, нормально. Правда бекапов нет, очень стремно. Потому планируем все же сделать репликацию, хотя одной ноды хватает
  • https://t.me/clickhouse_ru
    @kapustor #84337 01:43 PM, 18 Jan 2019
    Коллеги, всем привет!
    Приглашаем вас на наш 4-ый митап Scale-out databases and engines - обсуждаем распределённые СУБД, их эксплуатацию, разработку и развитие.

    В этот раз поговорим об open-source в enterprise-среде - опыт компаний, кейсы внедрений, слухи, скандалы, интриги, расследования. В частности, коллеги из Alytics.ru расскажут о создании data-платформы на базе связки CH + Greenplum + S3.

    Москва, 7 февраля, самый центр. Вход свободный, но нужна регистрация по ссылке. Будем рады вас видеть!

    https://www.meetup.com/Scale-out-databases-and-engines/events/257153368/
    Open-source в Enterprise: это фантастика?

    Thu, Feb 7, 2019, 7:30 PM: Как найти DI TelegraphВход в здание со стороны Газетного переулка напротив церкци, которая за Макдоналдсом.Стеклянная дверь с вывеской DI TelegraphДальше поднимаетесь на 5-й

  • https://t.me/clickhouse_ru
    @kapustor #84338 01:44 PM, 18 Jan 2019
    P.S. как раз в тему предыдущего обсуждения про сложность эксплуатации - мы (arenadata.io) как раз делаем универсальное средство управления и развёртывания для распределённых систем, там будет поддержка Clickhouse. На митапе будет релиз)
  • https://t.me/clickhouse_ru
    @kapustor #84340 01:45 PM, 18 Jan 2019
    Будет так же, но для КХ: https://www.youtube.com/watch?v=PJXuICqe3Fc
    Deploying Arenadata DB (based on Greenplum) in Google Cloud Platform with Arenadata Cluster Manager

    This short demo shows the process of deploying distributed MPP database, Arenadata Database (Greenplum), in Google Cloud Platform using Arenadata Cluster Manager. Arenadata Cluster Manager (ADCM) simplifies deploying and management of data services on premise, in private or public clouds. By splitting data landscape on two independent management layers – infrastructure layer and application layer – your platform becomes flexible, predictable and repeatable. ADCM is a modular system – you can add specific modules to support new applications, containers and cloud providers. You can develop your own modules to support your specific applications and proprietary systems. ADCM comes with open powerful REST API – you can easily integrate ADCM with your infrastructure. Arenadata Database (ADB) is a distributed database based on using MPP (massively parallel processing) principle. It takes its origin from Pivotal’s Greenplum database. ADB suits applications, where there is a large amount of semi-structured and unstructured…

  • @Mr_Cat_1275 #84342 02:20 PM, 18 Jan 2019
    Joined.
  • @Olegmygryn #84343 02:50 PM, 18 Jan 2019
    Всем привет! хотим перешардировать данные со старого КХ кластера на новый, но там и там свои ZK кластера, которые “не общаются” между собой.

    Вопрос: clickhouse-copier будет работать в случае разных кластеров со своими ZK ? Спасибо!
  • https://t.me/clickhouse_ru
    @msg_kurt #84344 02:52 PM, 18 Jan 2019
    я вот смотрю, что для хранения булевых значений используется UInt8 1 и 0. А как быть с кафка-движком, брокер будет продюсить в Json true и false, не хотелось бы морочить голову с пересериализацией инфы, стрим ожидается мощный. Но и хранить булевые значение строкой тоже вроде как не комильфо
  • Копир работает с одним zk кластером и берёт там задания, можете объединить zk в один кластер через dynamic conf
  • https://t.me/clickhouse_ru
    @den_crane #84346 03:36 PM, 18 Jan 2019
    dynamic conf позволяет менять конигурацию (добавлять обсерверов например), без ролинг рестарта нод зукипера. По-моему нет способа смержить два зукипер кластера, импротнуть данные КХ из одного зукипера в другой нельзя из-за автоинкременов.
  • https://t.me/clickhouse_ru
    @Krashuevina #84347 03:47 PM, 18 Jan 2019
    Беда пришла в мой кликхаус-дом
  • https://t.me/clickhouse_ru
    @Krashuevina #84348 03:48 PM, 18 Jan 2019
    Не первый раз, но в первый раз горбатая гора имеет столь стремительный уклон
  • https://t.me/clickhouse_ru
    @Krashuevina #84349 03:48 PM, 18 Jan 2019
    из того, что заметил залётного:
    SELECT *
    FROM metrics
    WHERE metric LIKE 'Memory%'

    ┌─metric───────────────────────────────────┬───────value─┐
    │ MemoryTracking │ 1307062507 │
    │ MemoryTrackingInBackgroundProcessingPool │ -3493881520 │
    │ MemoryTrackingInBackgroundSchedulePool │ 0 │
    │ MemoryTrackingForMerges │ 348253156 │
    └──────────────────────────────────────────┴─────────────┘
  • https://t.me/clickhouse_ru
    @Krashuevina #84350 03:48 PM, 18 Jan 2019
    отрицательное значение метрики
  • https://t.me/clickhouse_ru
    @stufently #84351 03:48 PM, 18 Jan 2019
    у меня после апдейта была проблема с памятью из за кеша выражений
  • https://t.me/clickhouse_ru
    @stufently #84352 03:49 PM, 18 Jan 2019
    добавил строчку в конфиг и все стало ок
  • https://t.me/clickhouse_ru
    @Krashuevina #84353 03:49 PM, 18 Jan 2019
    паттерн воспроизведения - интенсивно считает hyperloglog агрегации и квантили. Есть ощущение что где-то leak
  • https://t.me/clickhouse_ru
    @stufently #84354 03:49 PM, 18 Jan 2019
    обновлялся с 18.12 до 18.ё6
  • https://t.me/clickhouse_ru
    compile_expressions?
  • https://t.me/clickhouse_ru
    @stufently #84356 03:49 PM, 18 Jan 2019
    да compiled_expression_cache_size=500
  • https://t.me/clickhouse_ru
    @Krashuevina #84357 03:50 PM, 18 Jan 2019
    не актуально - 18.6.0 у меня
  • https://t.me/clickhouse_ru
    @Krashuevina #84358 03:50 PM, 18 Jan 2019
    нет там такой настройки
  • https://t.me/clickhouse_ru
    @Krashuevina #84359 03:50 PM, 18 Jan 2019
    строго говоря, оно и на более ранних релизах воспроизводилось
  • https://t.me/clickhouse_ru
    @Krashuevina #84360 03:50 PM, 18 Jan 2019
    но не столь драматично
  • https://t.me/clickhouse_ru
    compile_expressions однажды уже включали и выключали.
  • https://t.me/clickhouse_ru
    @Krashuevina #84362 03:54 PM, 18 Jan 2019
    compile и compile_expressions в нули выставлены
  • По поводу этих метрик - тут всё нормально. Отрицательное значение говорит о том, что память была освобождена в контексте BackgroundProcessingPool, а выделена где-то ещё. Это Ок.

    Почему растёт потребление памяти - из этих метрик не ясно.
  • @milovidov_an #84364 04:17 PM, 18 Jan 2019
    Нужно смотреть, как изменился профиль нагрузки. Также можно посмотреть график MemoryTracking за более длительное время. Ещё посмотрите график метрик аллокатора (они находятся в AsynchronousMetrics).
  • https://t.me/clickhouse_ru
    @sixdays ↶ Reply to #84321 #84365 05:16 PM, 18 Jan 2019
    оу, delete/update записей появился?
  • Мы делиты во всю пользуем. Там есть замечания, но если не косячить самим, то все вполне годно работает
  • https://t.me/clickhouse_ru
    @sixdays #84367 05:35 PM, 18 Jan 2019
    прост в доке на сайте сказано, нет их
  • https://t.me/clickhouse_ru
    @sixdays #84368 05:35 PM, 18 Jan 2019
    куда глянуть про нюансы?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @sixdays #84370 05:46 PM, 18 Jan 2019
    спасибо!
  • https://t.me/clickhouse_ru
    @zahnik #84371 05:52 PM, 18 Jan 2019
    Всём привет. Сделал партициирование По месяцам для таблицы, но в system.parts эти куски разделены не по месяцам, а по ~полмесяца. Нормально ли это и будет ли drop, attach, detach partition работать с месяцами?
  • https://t.me/clickhouse_ru
    У меня по неделям для нескольких таблиц сделано - без проблем вобщем-то
  • https://t.me/clickhouse_ru
    @Shegloff #84373 06:09 PM, 18 Jan 2019
    У меня по дням, в дне 200-300 млн строк, без проблем
  • https://t.me/clickhouse_ru
    @Shegloff #84374 06:11 PM, 18 Jan 2019
    У нас, бывает, косячат, приятней пару дней перезалить, а не весь месяц