• 01 October 2020 (249 messages)
  • Емнип в custom http handlers можно менять content-type (надо проверять)
  • @mfilimonov #184773 04:58 AM, 01 Oct 2020
    В форматах - нет, такой переключалки нет, но относильно несложно прикрутить, можете открыть ишью с FR может быть кто-то сделает
  • @knodl #184774 04:59 AM, 01 Oct 2020
    Joined.
  • HTTP-интерфейс | Документация ClickHouse

    HTTP-интерфейс HTTP интерфейс позволяет использовать ClickHouse на любой платформе, из любого языка программирования. У

  • @928029209 #184776 05:39 AM, 01 Oct 2020
    доброе утро,
    может кто-нибудь обьяснит что делаю не так?

    select sumStateOrNull(id) as n
    from (select 1 as id union all select 2)
    DB::Exception: Nested type AggregateFunction(sum, UInt8) cannot be inside Nullable type
    прошу прощения если совсем не в тему спросил, пытаюсь с комбинаотрами разобраться
  • @o1prokh #184779 05:58 AM, 01 Oct 2020
    Joined.
  • @ogavrilov #184780 06:00 AM, 01 Oct 2020
    здравствуйте! а случайно никто не проверял, greatCircleDistance и geoDistance точно в метрах считают, или всетаки в тысячных долях мили?
  • https://t.me/clickhouse_ru
    @neiroman2k #184781 06:29 AM, 01 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @popkovvvv #184782 06:42 AM, 01 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @dmnord #184783 06:44 AM, 01 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @shakhov #184784 06:48 AM, 01 Oct 2020
    Joined.
  • @MentalSky #184785 06:48 AM, 01 Oct 2020
    Всем доброго дня. Коллеги, можете научить уму разуму, как правильно указать параметр kafka_skip_broken_messages для Kafka Engine?

    сейчас kafka_skip_broken_messages = 1, и есть проблема:
    генерируются очень много JSONEachRow данных, среди них есть кривые, это не починить, только фильтровать или самому, или Clickhouse, он умеет отбрасывать кривые, но - через какое-то время получение данных из Кафки останавливается, в логах Clickhouse видим - что запись пропущена, все как обычно, но по факту данные не забираются... и ничего с этим поделать не можем, помогает только offset reset на позднее значение (

    очень похоже на бесконечный цикл, получаем кривое сообщение, почему-то не пропускаем его (не смещаем offset в топике кафки), и опять по новой
  • https://t.me/clickhouse_ru
    @zen_jedi #184786 06:56 AM, 01 Oct 2020
    Joined.
  • kafka_skip_broken_messages = N, где N - это максимальное количество сообщений в блоке, которое допустимо отбросить
    если количество битых сообщений в блоке больше N, то получается ситуация, которую Вы описываете
  • ага, уже понятнее... т.е. по идее, надо указать N = размеру блока, так?
  • @T90jasd98 #184789 07:00 AM, 01 Oct 2020
    если для Вашего случая допустимо отбросить даже весь блок, то да
  • да, это допустимо, спасибо, попробуем
  • https://t.me/clickhouse_ru
    при kafka_skip_broken_messages = 1 он должен отбрасывать все невалидное, где-то были комментарии на эту тему
  • Kafka | Документация ClickHouse

    Kafka Движок работает с Apache Kafka. Kafka позволяет: Публиковать/подписываться на потоки данных. Организовать отказоус

  • @T90jasd98 #184793 07:02 AM, 01 Oct 2020
    kafka_skip_broken_messages – максимальное количество некорректных сообщений в блоке. Если kafka_skip_broken_messages = N, то движок отбрасывает N сообщений Кафки, которые не получилось обработать. Одно сообщение в точности соответствует одной записи (строке). Значение по умолчанию – 0.
  • ну по факту этого не происходит... вернее так - работает пару часов, а потом останавливается
  • @solresl #184795 07:37 AM, 01 Oct 2020
    Напомните, вроде какими-то параметрами можно ускорить INSERT INTO... SELECT ... FROM?
  • https://t.me/clickhouse_ru
    А что вы вообще делаете? Зачем там sumState?
  • ну я, как и говорил, пытаюсь разобраться как работают state функции. И в данном случае возник вопрос почему sumStateOrNull бросает эксепшн. Хотя sumState и sumStateOrDefault вроде работают
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #184798 08:17 AM, 01 Oct 2020
    State нужны для Aggregate mat view. Они горорят КХ считай только промежуточные результаты агрегации. Делать селект к ними бессмысленно, чтобы увидеть результат нужно к таким столбца делать селект с sumMerge
  • да, я это понимаю. Даже если бы мой пример сработал, он бы вернул неособо читаемый результат. Но вопрос в том - почему он не работает, и должен ли он работать. Например пример с мердже тоже не работает

    select sumMergeOrNull(n) from (
    select sumStateOrNull(id) as n
    from (select 1 as id union all select 2)
    )
  • https://t.me/clickhouse_ru
    У КХ полно такого поведения, что шаг влево-вправо - не работает. Возможно тут
    select 1 as id union all select 2
    после union не хватает алиаса для 2
    Типа такого select 1 as id union all select 2 as id
  • https://t.me/clickhouse_ru
    @vbuttermaan #184801 09:20 AM, 01 Oct 2020
    Привет коллеги, немножко оффтоп, но 100% кто то из вас сталкивался с такой проблемой
    нужна кросс платформенная реализация функций хеширования чтобы результаты совпадали с ClickHouse - конкретно - cityHash64
    конкретно для php и java. поделитесь ссылкой / советом если встречали и используете.
    всегда есть варик взглянуть в сорцы и сделать аналог, я так для javahash делал, но вдруг есть готовое решение и я избирательно забанен в гугле.
  • https://t.me/clickhouse_ru
    А не пробовал, посмотреть какой init value в кх, и за инициализировать этим же значением в другой реализации?
  • https://t.me/clickhouse_ru
    спасибо за наводку, попробую!
  • https://t.me/clickhouse_ru
    @seriych #184804 09:46 AM, 01 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @No1zzz #184805 10:40 AM, 01 Oct 2020
    Господа, я уточнить 🙂
    табличку создавал без sample by, сейчас ес-но не работает и alter тоже - нету же семплирования по ключу)
    Так вот вопрос, есть ли способ добавить семплирование в таблицу, не создавая ее с нуля?)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @aem_ya #184807 10:49 AM, 01 Oct 2020
    Теперь он не даёт удалить view
  • @dj_mixer #184808 10:50 AM, 01 Oct 2020
    pereimenuyte SQL i nazvaniye vnutri SQL, i vse doljno byt' ok
  • @defntvdm #184809 10:52 AM, 01 Oct 2020
    Joined.
  • что-то на ссл ругается, он за пределами России доступен?
  • https://t.me/clickhouse_ru
    Link

    Команда разработки аналитической СУБД с открытым кодом ClickHouse вновь готовится провести онлайн-митап. Мы попробуем новый, более масштабный формат: три быстрых lightning talks и два доклада побольше. В том числе выступят опытные технические специалисты, которые не работают в Яндексе, но активно используют ClickHouse. Вы увидите и знакомые лица — Николай Кочетов уже рассказывал про развитие СУБД. Встречу традиционно завершит доклад Алексея Миловидова.

  • https://t.me/clickhouse_ru
    @aem_ya ↶ Reply to #184808 #184812 11:00 AM, 01 Oct 2020
    Тоже самое. И view не удаляется и изменить нельзя
  • @133452245 #184814 11:00 AM, 01 Oct 2020
    Он настоящий
  • https://t.me/clickhouse_ru
    @easya #184815 11:11 AM, 01 Oct 2020
    Надеюсь, будет запись докладов. Про матвью очень интересно послушать :)
  • https://t.me/clickhouse_ru
    @150442161 #184816 11:15 AM, 01 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    Можно сделать detach table "бубубу"
    И удалить файл .sql
  • @1030327237 #184818 11:32 AM, 01 Oct 2020
    Joined.
  • @Shalomchick #184819 11:53 AM, 01 Oct 2020
    Всем привет! Какая клиентская библиотека для C# более предпочтительна к использованию?
  • А так супер, спасибо
  • Не понял. Название файла в линуксе не меняется?
  • https://t.me/clickhouse_ru
    @flying_dev #184822 11:56 AM, 01 Oct 2020
    Добрый день, подскажите можно ли использовать столбцец типа Nested внутри Nested
  • https://t.me/clickhouse_ru
    @flying_dev #184823 11:57 AM, 01 Oct 2020
    Order Nested(
    ID Uint64.
    Products Nested(
    ...
    )
    )
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #184824 11:58 AM, 01 Oct 2020
    Всем привет! А подскажите, как можно бороться с проблемой большой уникальности значений в КХ? У меня такой кейс, что бывает очень много уникальных значений (сотни миллионов), и мне нужно сгруппировать их как-то, но ценность предоставляют только те, которых больше чем 100 (или что-то около того), но таких не много. То есть вот пример запроса:

    SELECT value, count() FROM t GROUP BY value LIMIT 50;

    и данные у меня вот такие выходят:

    value, count()
    v1, 2
    v2, 349340
    v3, 4
    v4, 1
    v5, 3939
    v6, 1
    ...
    v9999999, 3
    v100000000, 6

    то есть я бы хотел узнать кол-во только v2 и v5, но для этого нужно все значения сгруппировывать и КХ разумеется это не может сделать (фильтры я конечно же использую, там где могу). Может есть какие-то инструменты или интересные мысли как с таким можно обойтись на неприличных объемах данных?
  • https://t.me/clickhouse_ru
    @andredu #184825 11:59 AM, 01 Oct 2020
    Joined.
  • нет.
    https://t.me/clickhouse_ru/170385
    Denny Crane [not a Yandex bot] in ClickHouse не тормозит

    nested это сахар для create table. На самом деле это обычные массивы т.е. `Goals.ID` Array( UInt32) , `Goals.EventTime` Array(DateTime) если есть возможность выносить в колонки то лучше выносить. Например я столкнулся с такой проблемой у меня было `Goals.ID` Array(String) , `Goals.EventTime` Array(String) Goals.ID много разных, некоторые тяжелые, некоторые легкие и например выяснилось что если искать Goals.EventTime`[indexOf(`Goals.ID, 'aaaa')] то с диска читается 8TБ а если вынести в отдельную колонку Goals_aaaa то читает 80MB и запрос выполняется в 500 раз быстрее

  • @kobzarvlad #184827 12:00 PM, 01 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @flying_dev #184828 12:00 PM, 01 Oct 2020
    спасибо
  • https://github.com/DarkWanderer/ClickHouse.Client/

    нам ок. но вставку делаем через клиент в основном
    GitHub - DarkWanderer/ClickHouse.Client: .NET client for ClickHouse

    .NET client for ClickHouse. Contribute to DarkWanderer/ClickHouse.Client development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    SELECT value, count() c FROM t GROUP BY value
    having c>100
    LIMIT 50;
  • хотя может и можно, но будет у вас массивы массивов... но будет то же если руками их напишете
  • https://t.me/clickhouse_ru
    @den_crane #184832 12:04 PM, 01 Oct 2020
    вообще ничего хорошего в Nested(Nested или Array(Array не получится , надо избегать такого
    слишком большая колонка, огромного размера, и прочитать ее с диска уже проблема
  • https://t.me/clickhouse_ru
    @den_crane #184833 12:06 PM, 01 Oct 2020
    например у меня хранились так называемые audience аттрибуты K Array(String) V Array(String) это было невыносимо медленно
    теперь у меня 10 ведер K0,K1,,,,,,,,K9 V0,V1,,,,,,,,V9, стало чуть лучше, слава богу SQL запросы пишет бобот, и ему все равно
  • @lamGrigory #184834 12:09 PM, 01 Oct 2020
    Добрый день, подскажите пожалуйста по событию ZooKeeperUserExceptions в таблице system.events.
    Что это за событие такое и как его расследовать:
    1. Причины появления
    2. По каким ключевым словам искать в логах
    3. Рекомендации как избежать

    Версия CH: 20.5.2.7
  • Там же через HTTP, наверное лучше Native ?
  • https://t.me/clickhouse_ru
    ничего интересного на самом деле там нет и такое ощущение что половина из этого вообще не ошибки

    bool isUserError(Error zk_return_code)
    {
    return zk_return_code == Error::ZNONODE
    || zk_return_code == Error::ZBADVERSION
    || zk_return_code == Error::ZNOCHILDRENFOREPHEMERALS
    || zk_return_code == Error::ZNODEEXISTS
    || zk_return_code == Error::ZNOTEMPTY;
    }
  • https://t.me/clickhouse_ru
    @den_crane #184837 12:15 PM, 01 Oct 2020
    текст в логах
    https://github.com/ClickHouse/ClickHouse/blob/master/src/Common/ZooKeeper/IKeeper.cpp#L89
  • @lamGrigory #184838 12:16 PM, 01 Oct 2020
    Спасибо
  • https://t.me/clickhouse_ru
    @aem_ya ↶ Reply to #184821 #184839 12:17 PM, 01 Oct 2020
    View то не редактируются
  • https://t.me/clickhouse_ru
    @aem_ya ↶ Reply to #184817 #184840 12:18 PM, 01 Oct 2020
    Ща попробую буббубу
  • https://t.me/clickhouse_ru
    Через бинарный формат, там минимальный оверхед по сравнению с json, хорошая либа. есть ещё порт нативного формата в Clickhouse.Ado, но там есть проблемы с производительностью на винде из-за особенностей работы винды с сетью
  • У меня может быть и винда и linux . Приложение на .Net Core 3.1
  • https://t.me/clickhouse_ru
    Надо тогда бенчить. У меня на винде дольше сокет открывался с портом нативного протокола, чем весь запрос отрабатывал. А вот через http лучше было. Плюс в том http клиенте можно для простых запросов даппер заюзать
  • @manaam9 #184844 12:42 PM, 01 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @alkov #184845 12:46 PM, 01 Oct 2020
    Joined.
  • ну нет, вроде и с алиасом не работает. Но спасибо за помощь. Буду разбираться дальше
  • https://t.me/clickhouse_ru
    sumOrNullState VS sumStateOrNull
  • https://t.me/clickhouse_ru
    но так же не сработает, все равно придется все миллионы сначала сгруппировать, а потом уже отфильтровать по ">100" ? То есть КХ сделает тот же самый объем работы, что если бы и я кодом так фильтровал
  • https://t.me/clickhouse_ru
    я тогда не понял вопрос видимо.

    новый ответ: Вам надо просто хранить в SummingMergeTree готовые count , тогда почти не надо группировать
  • @Sergey_Klick #184850 01:04 PM, 01 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @nalofree #184851 01:26 PM, 01 Oct 2020
    Joined.
  • @kreuzerkrieg #184852 01:38 PM, 01 Oct 2020
    Коллеги, такой вопрос, есть запрос на создание MATERIALIZED VIEW, который вылетает с сообщением что памяти нет, мемори треккер бдит. ну, вылетает и вылетает. а оказывается я напрасно так верил мемори трекеру, если мы втыкаем в max_server_memory_usage_to_ram_ratio значение 2.0 этот запрос проходит. версия 20.4. есть какие то баги связанные с тем что там трекер считает? если смотреть на сам процесс, на его память которую скушал там вообще что то в районе 10Гб а падает он с сообщением что он вот вот границу в 100Гб пересечет
  • https://t.me/clickhouse_ru
    ну да и баги есть и неточно считает. Надо проверять в последних КХ ваш кейс.
    со спилингом на диск c max_bytes_before_external_group_by нормально считает память?
  • https://t.me/clickhouse_ru
    @dnkcnd #184854 01:43 PM, 01 Oct 2020
    Joined.
  • @kreuzerkrieg #184855 01:43 PM, 01 Oct 2020
    не знаю, у меня тут дебаггинг по переписке. насколько я помню он у нас включен. сеичас попрошу проверить
  • @kreuzerkrieg #184856 01:44 PM, 01 Oct 2020
    неточно настолько что промахнулся в десять раз?
  • https://t.me/clickhouse_ru
    @den_crane #184857 01:44 PM, 01 Oct 2020
    сегодня я кстати буду долго и нудно рассказывать почему populate в текущем виде не нужен и как без него все делать
  • @kreuzerkrieg #184858 01:44 PM, 01 Oct 2020
    на встрече? а она сегодня?
  • https://t.me/clickhouse_ru
    @den_crane #184859 01:45 PM, 01 Oct 2020
    через 15 минут.
  • @kreuzerkrieg #184860 01:45 PM, 01 Oct 2020
    черт вообще счет дням потерял с этим карантином
  • https://t.me/clickhouse_ru
    @den_crane #184861 01:46 PM, 01 Oct 2020
    в 20.4 наверное и в 10 раз мог промахнуться, было что-то такое
  • <max_bytes_before_external_group_by>96544594944</max_bytes_before_external_group_by>
  • @kreuzerkrieg #184863 01:49 PM, 01 Oct 2020
    в общем 95Гб
  • @kreuzerkrieg #184864 01:49 PM, 01 Oct 2020
    на машине 128гб
  • я нашел пару issues на гитхабе, но не уверен что это то что и у нас происходит
  • @kreuzerkrieg #184866 01:51 PM, 01 Oct 2020
    о господи, опять upstream merge делать...
  • https://t.me/clickhouse_ru
    @den_crane #184867 01:52 PM, 01 Oct 2020
    а нет митап через час. В 18 MSC
  • @kreuzerkrieg #184868 01:57 PM, 01 Oct 2020
    Коллеги, а на какой платформе будет онлайн встреча? стрим будет на youtube?
  • У меня юзекейс грубо такой: программа на .Net Core собирает данные с приборов (по сети Ethernet) каждую 0,5-1 секунду и должна ложить в БД. А клиенты (разные) должны их оттуда забирать как текущие так и архивные данные. Както так.
  • https://t.me/clickhouse_ru
    не должно быть существенной разницы http или tcp (для одного и того же формата типа Native)
  • https://t.me/clickhouse_ru
    Ну как по мне библиотека от DarkWanderer самое оно, там очень удобный инсерт через DataTable
  • https://t.me/clickhouse_ru
    @den_crane #184872 02:01 PM, 01 Oct 2020
    разница может быть из-за LowCardinality , т.е. если очень большой трафик, гигабайты, то LowCardinality может дать профит в Native.
    только проблема в том что LowCardinality дофига сложный и его умеет только clickhouse-client
  • https://t.me/clickhouse_ru
    @den_crane #184873 02:02 PM, 01 Oct 2020
    который на самом деле тот же бинарник что и сервер
  • вам надо открыть файл, поменять в нем скрипт, переиминовать файл. используя вим, нано или ещё что-то.. через КХ ничего делать не надо.. но бубубу+пересоздать тоже ок
  • Трафик не гигабайты. Килобайты или мегобайты. Спасибо за пояснения!
  • Спасибо. Буду юзать эту либу
  • @froderik #184877 02:05 PM, 01 Oct 2020
    >По умолчанию ClickHouse использует алгоритм hash join. ClickHouse берет <right_table> и создает для него хэш-таблицу в оперативной памяти. После некоторого порога потребления памяти ClickHouse переходит к алгоритму merge join.
    https://clickhouse.tech/docs/ru/sql-reference/statements/select/join/#memory-limitations

    добрый день, подскажите пожалуйста указанный merge join тоже имеет ограничения по memory или рано или поздно должен выполниться ? не могу найти деталей по merge join в доках
    JOIN | Документация ClickHouse

    Секция JOIN JOIN создаёт новую таблицу путем объединения столбцов из одной или нескольких таблиц с использованием общих

  • аха "лучше, быстрее, выше, сильнее".
    смотря для чего. я лично не заметил.

    Олег для нас допилил ещё поддержку сырых форматов. поэтому оно вообще теперь шикарно...
  • у нас тоже и винда и линукс (на .нет кор).
  • https://t.me/clickhouse_ru
    рано или поздно выполнится, разница может быть существенной, типа 17 сек HJ vs 17 часов MJ
    и есть настройки partial_merge_join_rows_in_right_blocks partial_merge_join_left_table_buffer_bytes
  • понял, а насколько предположительно повлияет использование ключа сортировки в условии join в этом случае ? (если таблицы по данному ключу отсортированы)
  • https://t.me/clickhouse_ru
    @aem_ya ↶ Reply to #184874 #184882 02:14 PM, 01 Oct 2020
    Ну после переименования файла что надо сделать? Клик то когда поймёт что поменялось в этой папке
  • https://t.me/clickhouse_ru
    никак не влияет вообще.
    это не чистый MJ , это partial MJ который считает что таблицы не отсортированы и нет оптимизаций за счет сортированности
  • https://t.me/clickhouse_ru
    @den_crane #184884 02:15 PM, 01 Oct 2020
    чистый MJ пока внедрить невозможно, он не вписывается в дизайн pipeline
  • https://t.me/clickhouse_ru
    детач / атач (или рестарт -- что ровно тоже самое)
  • https://t.me/clickhouse_ru
    @aem_ya ↶ Reply to #184885 #184886 02:17 PM, 01 Oct 2020
    А detach надо имени view сделать?
  • https://t.me/clickhouse_ru
    да, атач новому имени
  • А можно ли настроить CH так чтобы он последние поступающие N-записей в определенную таблмцу держал в памяти - для более быстрой отдачи данных клиентам ? Что то наподобие Disk + Memory Cache...
  • https://t.me/clickhouse_ru
    как бы нельзя и не нужно.
    в принципе они и так в кеше линукса лежат чаще всего.

    есть еще buffer engine -- он хранит в памяти записи которые еще сброшены в таблицу
  • https://t.me/clickhouse_ru
    нее, почему не надо группировать, так как кардинальность высокая, будет не 100 миллионов записей, а 90 миллионов, если я мат вью навешаю на таблицу. Это же не решит проблему, а лишь задублирует данные. Может в таких случаях SAMPLE секция как-то помочь?
  • Buffer Engine уже в самом CH? Его нужно настраивать ?
  • https://t.me/clickhouse_ru
    sample позволит как бы работать с рандомным 1%

    Я бы просто переливал записи у которых cnt >100 в отдельную таблицу кроном
  • https://t.me/clickhouse_ru
    в самом КХ, в документации читайте, скорее всего вам не поможет, да и вы пытаетесь решать несуществующую проблему
  • @dj_mixer #184894 02:38 PM, 01 Oct 2020
    Форма доступна только после авторизации
    Войдите в свой аккаунт или зарегистрируйтесь на Яндексе, чтобы открыть форму.

    —-
    ну вот
  • https://t.me/clickhouse_ru
    @den_crane #184895 02:41 PM, 01 Oct 2020
    ща ссылку кинут
  • https://t.me/clickhouse_ru
    @alexstegnienko #184896 02:44 PM, 01 Oct 2020
    Всем привет!

    Подскажите, пожалуйста, с чем может быть связана ошибка
    Code: 999, e.displayText() = Coordination::Exception: Connection loss (version 20.8.2.3 (official build))
    при удалении данных из таблицы ReplicatedMergeTree?
  • https://t.me/clickhouse_ru
    партов наверное больше чем 5000
    надо лог КХ чтобы увидеть ошибки полностью
  • @milovidov_an #184898 02:50 PM, 01 Oct 2020
    Митап:
    https://yandex.zoom.us/j/96362059647?pwd=Qzg3bW15cHdpdmNSeTJ6czh1WDkrZz09
    Join our Cloud HD Video Meeting

    Zoom is the leader in modern enterprise video communications, with an easy, reliable cloud platform for video and audio conferencing, chat, and webinars across mobile, desktop, and room systems. Zoom Rooms is the original software-based conference room solution used around the world in board, conference, huddle, and training rooms, as well as executive offices and classrooms. Founded in 2011, Zoom helps businesses and organizations bring their teams together in a frictionless environment to get more done. Zoom is a publicly traded company headquartered in San Jose, CA.

  • None
  • https://t.me/clickhouse_ru
    сюда можно скинуть?
  • https://t.me/clickhouse_ru
    @rjs45 ↶ Reply to #184898 #184901 02:51 PM, 01 Oct 2020
    А в ютубе не будет трансляции?
  • https://t.me/clickhouse_ru
    public async Task SaveData<TData>(ClickHouseConnection connection, IEnumerable<TData> data, string tableName, CancellationToken ct = default)
    {
    using (var bulkCopy = new ClickHouseBulkCopy(connection))
    {
    bulkCopy.DestinationTableName = tableName;
    DataTable table = new DataTable();
    using (var reader = ObjectReader.Create(data))
    {
    table.Load(reader);
    }
    await bulkCopy.WriteToServerAsync(table, ct);
    }
    } правда из стороннего еще FastMember заюзан для маппинга. А так - на входе коллекция объектов с такими же полями, как и столбцы таблицы, и вперед
  • https://t.me/clickhouse_ru
    должна быть емнип
  • https://t.me/clickhouse_ru
    ну кусок скопипасте, там наверное что-то про len() в zk
  • https://t.me/clickhouse_ru
    @alexstegnienko #184905 02:56 PM, 01 Oct 2020
    2020.10.01 14:46:52.950076 [ 26448 ] {983980f8-fda4-469e-b995-afaf46b3499d} <Error> executeQuery: Code: 999, e.displayText() = Coordination::Exception: Connection loss (version 20.8.2.3 (official build)) (from 10.0.0.7:44320) (in query: alter table [ALTERING TABLE HERE], Stack trace (when copying this message, always include the lines below):

    0. Poco::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x1
    a80ae30 in /usr/bin/clickhouse
    1. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0xff9
    e75d in /usr/bin/clickhouse
    2. Coordination::Exception::Exception(Coordination::Error) @ 0x1826763d in /usr/bin/clickhouse
    3. ? @ 0x18278b40 in /usr/bin/clickhouse
    4. DB::EphemeralLocksInAllPartitions::EphemeralLocksInAllPartitions(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1
    ::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::ba
    sic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, zkutil::ZooKeeper&) @ 0x17b8f356 in /usr/bin/clickho
    use
  • на канале ClickHouse тишина...
  • https://t.me/clickhouse_ru
    @alexstegnienko #184907 02:57 PM, 01 Oct 2020
    Про len() ничего нет.
    Там потом ворох ошибок "Session expired"
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Valenvaryon #184909 02:58 PM, 01 Oct 2020
    Привет
    В доке про distributed написано:
    "Для выбора шарда, на который отправляется строка данных, вычисляется выражение шардирования, и берётся его остаток от деления на суммарный вес шардов. Строка отправляется на шард, соответствующий полуинтервалу остатков от prev_weights до prev_weights + weight, где prev_weights - сумма весов шардов с меньшим номером, а weight - вес этого шарда. Например, если есть два шарда, и у первого выставлен вес 9, а у второго 10, то строка будет отправляться на первый шард для остатков из диапазона [0, 9), а на второй - для остатков из диапазона [9, 19)."

    а если выражение шардирования отдает строку?
  • https://t.me/clickhouse_ru
    select count() from system.parts where active and table = 'xxxx'
  • @greenv #184911 02:58 PM, 01 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @blinkovivan #184912 02:59 PM, 01 Oct 2020
    Прямо сейчас присоединяйтесь к митапу в Zoom
    https://yandex.zoom.us/j/96362059647?pwd=Qzg3bW15cHdpdmNSeTJ6czh1WDkrZz09 или YouTube https://www.youtube.com/watch?v=1LVJ_WcLgF8
    Join our Cloud HD Video Meeting

    Zoom is the leader in modern enterprise video communications, with an easy, reliable cloud platform for video and audio conferencing, chat, and webinars across mobile, desktop, and room systems. Zoom Rooms is the original software-based conference room solution used around the world in board, conference, huddle, and training rooms, as well as executive offices and classrooms. Founded in 2011, Zoom helps businesses and organizations bring their teams together in a frictionless environment to get more done. Zoom is a publicly traded company headquartered in San Jose, CA.

  • https://t.me/clickhouse_ru
    None
  • https://t.me/clickhouse_ru
    тогда вы должны использовать какую-то функцию хеширования

    например cityHash64(текстовоеполе)
  • https://t.me/clickhouse_ru
    @Valenvaryon #184915 03:00 PM, 01 Oct 2020
    кстати, какую лучше выбрать?
  • https://t.me/clickhouse_ru
    @Valenvaryon #184916 03:00 PM, 01 Oct 2020
    cip? city?
  • https://t.me/clickhouse_ru
    cityHash64
  • https://t.me/clickhouse_ru
    @aem_ya ↶ Reply to #184885 #184918 03:00 PM, 01 Oct 2020
    Детач не помогает. Удалил файл с этой view-рестартнул -ничего не изменилось. Drop table пишет file not found
  • https://t.me/clickhouse_ru
    так уже нет ее
  • https://t.me/clickhouse_ru
    @aem_ya ↶ Reply to #184919 #184920 03:01 PM, 01 Oct 2020
    Есть
  • https://t.me/clickhouse_ru
    каким образом вы узнали что она все еще есть?
  • https://t.me/clickhouse_ru
    @inamov_062 #184922 03:09 PM, 01 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @alexeykazimirov #184923 03:11 PM, 01 Oct 2020
    Joined.
  • @550330736 #184924 03:13 PM, 01 Oct 2020
    добрый вечер! подскажите, а как работает (или где почитать) функция max для tuple?
    В таком примере - SELECT max ((id,timestamp,msisdn)) FROM....

    Хотелось найти последнюю по id и timestamp запись для msisdn, но понял, что не знаю как с tuple работает max
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    а, ну ясно
    8800 - это больше, чем рекомендуется, насколько я помню
  • https://t.me/clickhouse_ru
    @alexstegnienko #184927 03:14 PM, 01 Oct 2020
    Планировал уменьшать число партиций, видимо, настал тот час.
  • https://t.me/clickhouse_ru
    @boris_ryazan #184928 03:14 PM, 01 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    это можно решить, добавив в ZK параметр с размером
  • https://t.me/clickhouse_ru
    @den_crane #184930 03:15 PM, 01 Oct 2020
    я писал про это тут в чате и гитхабе есть тикеты где я объяснял в чем дело и как чинить, после митапа найду если надо
  • https://t.me/clickhouse_ru
    спасибо, был бы очень благодарен!
  • https://t.me/clickhouse_ru
    о я вспомнил ключевое слово ! jute

    https://t.me/clickhouse_ru/172801
  • https://t.me/clickhouse_ru
    @alexstegnienko #184933 03:18 PM, 01 Oct 2020
    спасибо!
  • select max(aa) from (
    select tuple(1,0,0) aa UNION ALL
    select tuple(1,1,0) UNION ALL
    select tuple(0,0,1) UNION ALL
    select tuple(0,1,1)
    );
    -- (1,1,0)
  • теперь понятно, спасибо!
  • у вас найдется max id, среди них max timestamp, среди нах max phone
  • https://t.me/clickhouse_ru
    @den_crane #184937 03:26 PM, 01 Oct 2020
    элементы тупла сравниваются слева направо
    более простое обяснение (y , m, d ) > (2020, 10, 1)
  • @550330736 #184938 03:27 PM, 01 Oct 2020
    ага, логично!
  • https://t.me/clickhouse_ru
    @Moriehod #184939 03:37 PM, 01 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @95289798 #184940 03:38 PM, 01 Oct 2020
    Привет.
    has() в среднем должен быть быстрее чем arraySum() ?
    По тестам получается наоборот: https://pastebin.com/kzZny7JY
    не на много, но все-таки
    b90d01e0bd9a :) SYSTEM DROP MARK CACHE; WITH 6453 AS l, 2100 AS r SELECT count(c - 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
    @DimaVS #184941 03:54 PM, 01 Oct 2020
    Всем привет
    Подскажите, пожалуйста, куда капать?
    Сценарий следующий: есть скрипт, при помощи которого собирается таблица. Таблица собирается из других таблиц этой же схемы. В скрипте производится итерация по id (условно города). Вставка происходит пачками этих id. Происходит такое, что не производится вставка некоторые id.
    Дальше я определяю эти айди. Повторно осуществляю их вставку, но безуспешно. В чем дело?
  • https://t.me/clickhouse_ru
    insert_deduplication
  • https://t.me/clickhouse_ru
    https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/replication/

    Блоки данных дедуплицируются. При многократной записи одного и того же блока данных (блоков данных одинакового размера, содержащих одни и те же строчки в одном и том же порядке), блок будет записан только один раз. Это сделано для того, чтобы в случае сбоя в сети, когда клиентское приложение не может понять, были ли данные записаны в БД, можно было просто повторить запрос INSERT. При этом не имеет значения, на какую реплику будут отправлены INSERT-ы с одинаковыми данными. Запрос INSERT идемпотентный. Параметры дедуплицирования регулируются настройками сервера merge_tree
  • https://t.me/clickhouse_ru
  • @dj_mixer #184945 04:02 PM, 01 Oct 2020
    блин, теперь ходить по ФС и ЗК и искать у кого какой UUID =)
  • https://t.me/clickhouse_ru
    @DimaVS #184946 04:03 PM, 01 Oct 2020
    Спасибо @den_crane
  • вы уверены что это не просто девиация по ИО? сделайте max_threads=1
  • @dj_mixer #184948 04:19 PM, 01 Oct 2020
    а с какой версии ReplacingMT умеет удалять строки? (в доке не было про sign), я так понял collapsingMT больше не нужен
  • https://t.me/clickhouse_ru
    он не удаляет, они все там сохраняются
  • https://t.me/clickhouse_ru
    @den_crane #184950 04:20 PM, 01 Oct 2020
    ща все объяснят
  • https://t.me/clickhouse_ru
    @den_crane #184951 04:20 PM, 01 Oct 2020
    дальше
  • @dj_mixer #184952 04:20 PM, 01 Oct 2020
    на пред слайде было, что можно с sign=-1 вставить и оно схлопнет
  • @dj_mixer #184953 04:20 PM, 01 Oct 2020
    ок
  • @chashnikov #184954 04:20 PM, 01 Oct 2020
    Александр говорил что в запрос подставится WHERE _sign=1
  • @chashnikov #184955 04:21 PM, 01 Oct 2020
    если спецом в селект это поле не добавлять
  • @dj_mixer #184956 04:21 PM, 01 Oct 2020
    а, понятно теперь
  • https://t.me/clickhouse_ru
    @ddpechkin #184957 05:03 PM, 01 Oct 2020
    Всем привет! Подскажите, хочу лить в кх логи неструктурированные - большой стринг в message, какую степень сжатия можно ожидать?
  • так же как zstd/zip. зависит контента строки

    но лучше так не делать, это не про КХ
  • https://t.me/clickhouse_ru
    чОрт =) кто-то решил из 1С выргужать данные в ClickHouse ;))
  • селект работает из неё? имхо она уже не существует
  • https://t.me/clickhouse_ru
    @zorrozoroff #184961 05:19 PM, 01 Oct 2020
    Привет, чото дистинкт не работает...

    select di from (select distinct ins as di from allins final where toDate(ts)='2020-09-28') x where x.di not in (select distinct ins from allins_1d where toDate(ts)='2020-09-28')

    ┌─di───┐
    │ ACUS │
    └──────┘
    ┌─di──┐
    │ JJE │
    └─────┘
    ┌─di──┐
    │ JJE │
    └─────┘
    ┌─di──┐
    │ JJE │
    │ JJE │
    └─────┘
    ┌─di───┐
    │ RBIN │
    │ RBIN │
    └──────┘
  • https://t.me/clickhouse_ru
    @zorrozoroff #184962 05:20 PM, 01 Oct 2020
    заметим если убрать дистинкт из второго запроса, то всё норм. Final не влияет.
  • https://t.me/clickhouse_ru
    @Lego66 #184963 05:21 PM, 01 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @zorrozoroff #184964 05:22 PM, 01 Oct 2020
    UNION есть, MINUS / EXCEPT нету ;(
  • https://t.me/clickhouse_ru
    В доке написано, что только для типа static, что не подходит...
  • @477662432 #184967 06:20 PM, 01 Oct 2020
    А есть хороший туториал по созданию и управлению кластера? Или может даже целый курс какой то?
  • подвезли вот
  • @goosecat #184969 06:38 PM, 01 Oct 2020
    :-)
  • https://t.me/clickhouse_ru
    как здорово.
    “отличные новости, народ, я починил трубы для подачи ядовитой слизи!”
  • @goosecat #184972 06:55 PM, 01 Oct 2020
    Ох тыж
  • @goosecat #184973 06:56 PM, 01 Oct 2020
    Я щас того этого , попробовать
  • @goosecat #184976 07:02 PM, 01 Oct 2020
    Ой кряк
  • @goosecat #184977 07:02 PM, 01 Oct 2020
    Зачотно
  • @goosecat #184978 07:06 PM, 01 Oct 2020
    1514 чуваков в сети
  • @goosecat #184979 07:07 PM, 01 Oct 2020
    @pg_vadim здарова чувак
  • @dj_mixer #184980 07:07 PM, 01 Oct 2020
    что вы там пробуете... КХ не крякает =)
  • @goosecat #184981 07:10 PM, 01 Oct 2020
    Ой ли
  • @goosecat #184982 07:11 PM, 01 Oct 2020
    Да я вообще рад видеть ребят тут, что вирус никого не подкосил
  • @goosecat #184983 07:11 PM, 01 Oct 2020
    Что ты тут , ака
  • @goosecat #184984 07:14 PM, 01 Oct 2020
    Что все хорошо
  • https://t.me/clickhouse_ru
    @pixelbender #184985 07:14 PM, 01 Oct 2020
    Joined.
  • @goosecat #184986 07:15 PM, 01 Oct 2020
    Я отходил тут , отдыхал , лечился
  • https://t.me/clickhouse_ru
    @pixelbender #184987 07:16 PM, 01 Oct 2020
    Привет. Сделал MV над MV и он почему-то не заполняется. В доке не нашел почему. В чем может быть дело?
  • ой ли. завтра тут будет видео на ютюбе =) и там очень детально будет рассказано
  • https://youtu.be/1LVJ_WcLgF8
    смотреть с +2ч30м от момента начала
  • https://t.me/clickhouse_ru
    @inamov_062 #184990 07:30 PM, 01 Oct 2020
    Всем привет. Пишу сюда, т.к. уже весь день борюсь с одной проблемой в КХ.
    Мне нужно конвертнуть float32 to string. В базе, в колонках c float32, есть значения превышающие 7 знаков, допустимые для float32. Но отображаются они нормально когда использую jdbc драйвер для КХ (из приложения или из DataGrip). Но когда делаю select через клиент, то значения округляются.
    Мой вопрос в том, можно ли как-то выгрузить эти значения в виде string-a без округлений и потери точности.
    У меня получилось экспортную таблицу используя jdbc, но используя стандартный КХ клиент не получается (((
    Также подойдет решение напрямую конвертнуть float32 в Decimal128, но без заполнения оставшихся знаков после запятой шумом.
  • https://t.me/clickhouse_ru
    @inamov_062 #184991 07:30 PM, 01 Oct 2020
    Вот пример с запросом напрямую
  • https://t.me/clickhouse_ru
    @inamov_062 #184992 07:30 PM, 01 Oct 2020
    Вот из DataGrip
  • https://t.me/clickhouse_ru
    @lnuynxa #184993 07:34 PM, 01 Oct 2020
    SELECT toFloat64(a) FROM (SELECT CAST(9870109700 AS Float32) as a)
  • https://t.me/clickhouse_ru
    @lnuynxa #184994 07:35 PM, 01 Oct 2020
    Мб так еще точнее
  • https://t.me/clickhouse_ru
    @inamov_062 #184995 07:37 PM, 01 Oct 2020
    В другую сторону немного)
  • https://t.me/clickhouse_ru
    Да, но скорее всего это просто ближе к правде, а 700 это тоже какое то странное округление на самом деле
  • https://t.me/clickhouse_ru
    Ну 700 там на самом деле лежит
  • https://t.me/clickhouse_ru
    IEEE 754, он такой(
  • https://t.me/clickhouse_ru
    @inamov_062 #184999 07:40 PM, 01 Oct 2020
    (((
  • https://t.me/clickhouse_ru
    сильное заявление:)
    SELECT hex(a)
    FROM
    (
    SELECT CAST(9870109710, 'Float32') AS a
    )

    ┌─hex(a)───┐
    │ 7B131350 │
    └──────────┘

    Hex to float 9.87011e+09
  • https://t.me/clickhouse_ru
    @lnuynxa #185001 07:41 PM, 01 Oct 2020
    Я вот не уверен. что там на самом деле лежит
  • https://t.me/clickhouse_ru
    @inamov_062 #185002 07:42 PM, 01 Oct 2020
    Ну я его вручную таким вставлял просто
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Ну, вставлял ты одно, а сохранялся float и именно при сохранении происходит потеря точностьи
  • https://t.me/clickhouse_ru
    Теперь яснее. А чего он мне нормально тогда отображается тут?
  • https://t.me/clickhouse_ru
    Может JDBC запрашивает на самом деле не в float32, а в float64 или как то еще, а потом округляет
  • @avkondakov #185007 07:45 PM, 01 Oct 2020
    Добрый вечер, подскажите а как кликхаус удаляет записи? Была мысль освободить место на диске удалив записи не по ключу партиционирования. Сделал ALTER TABLE DELETE WHERE подождал записи типа удалились, по селекту их нет, но места особо не прибавилось :( Делал OPTIMIZE ждал сутки, но место не возвращается, походу где то они лежат. Можно их как то все таки зачистить?
  • @rikevoltz #185008 07:45 PM, 01 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    Хмм, интересное у него тогда поведение.
  • https://t.me/clickhouse_ru
    @pixelbender #185010 07:57 PM, 01 Oct 2020
    @dj_mixer Спасибо огромное. Было два косяка - не совпадало имя алиаса и прикрепил к .inner (уже думаю над тем чтоб делать отдельную таблицу)
  • Вася это ты?
  • https://t.me/clickhouse_ru
    @pixelbender #185012 08:00 PM, 01 Oct 2020
    Осталось понять который )
  • @goosecat #185013 08:01 PM, 01 Oct 2020
    Сингапур, у паши пьянка
  • @goosecat #185014 08:01 PM, 01 Oct 2020
    Я Гусь
  • @goosecat #185015 08:02 PM, 01 Oct 2020
    Мы бухали на шентон ,
  • https://t.me/clickhouse_ru
    @pixelbender #185016 08:02 PM, 01 Oct 2020
    Не ) не был там ни разу
  • @goosecat #185017 08:02 PM, 01 Oct 2020
    А ну пардон
  • https://t.me/clickhouse_ru
    @aem_ya ↶ Reply to #184960 #185018 08:11 PM, 01 Oct 2020
    По-моему. Drop помог. Но уже завтра посмотрю
  • https://t.me/clickhouse_ru
    @aem_ya ↶ Reply to #184989 #185019 08:12 PM, 01 Oct 2020
    У мв ничо такие диваны)
  • @dj_mixer #185020 08:19 PM, 01 Oct 2020
    все, скоро будут футболки курьерами )
  • @komdmitrii #185021 08:20 PM, 01 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #184116 #185022 08:47 PM, 01 Oct 2020
    нет не пробовали Sampling
  • @lucifron31 #185023 09:07 PM, 01 Oct 2020
    Большое спасибо за доклад, особенно про MV!
  • @lucifron31 #185024 09:07 PM, 01 Oct 2020
    И в целом новыеи фичи очень ждём :)
  • https://t.me/clickhouse_ru
    @midster #185025 09:17 PM, 01 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @Artur_Sab #185026 10:01 PM, 01 Oct 2020
    Joined.
  • 02 October 2020 (85 messages)
  • действительно sumOrNullState работает. Не понимаю еще почему и в чем между ними разница, но буду разбираться. спасибо
  • Вроде это чинили (относительно недавно)
  • @Nvarchar495 #185029 07:47 AM, 02 Oct 2020
    Коллеги а есть планы уйти с телеги? Это все таки мессенджер. Не очень удобно искать ответы на вопросы
  • удобно
  • @133452245 #185031 07:50 AM, 02 Oct 2020
    вроде
  • https://t.me/clickhouse_ru
    @nightpacifist #185032 07:52 AM, 02 Oct 2020
    Искать не удобно, переписываться отлично, было бы неплохо экспортировать в форум какой-то, что бы с поиска гугла находилось
  • https://t.me/clickhouse_ru
    Поиск вообще огонь
  • @andrey45263 #185034 08:45 AM, 02 Oct 2020
    есть канал в Slack, в нем очень удобны были бы треды для каждого вопроса. Но там активности пока не наблюдается. А для серьезных вопросов было бы хорошо двинуться туда
  • @Rijavskii #185035 08:48 AM, 02 Oct 2020
    Joined.
  • да ладно, из всех инструментов поиск лучше всего работает именно тут.
  • @dj_mixer #185037 08:57 AM, 02 Oct 2020
    Слак вообще черт-те что ужас в плане поиска
  • @Nvarchar495 #185038 08:59 AM, 02 Oct 2020
    Ну может stack, яндекс кью , гит, форум?
  • https://t.me/clickhouse_ru
    @Alotepetr #185039 08:59 AM, 02 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @t_linnich #185040 09:00 AM, 02 Oct 2020
    Joined.
  • @Rijavskii #185041 09:03 AM, 02 Oct 2020
    Здравствуйте. Пытаюсь удалить поле в базе, но в ответ DB::Exception: WRITE locking attempt on ... has timed out! (120000ms) Possible deadlock avoided
  • https://t.me/clickhouse_ru
    Выставил max_threads = 1. Тот же результат. Почему-то, когда время скорость чтения с диска равно между запросами, то и время работы запроса тоже почти равно, хотя "интуитивно" has() должен быть быстрее. Ну и почему-то с диска данные читаются быстрее когда используется arraySum() чем когда has().
    В https://pastebin.com/ZCVvCW5C несколько результатов запросов.
    03b65d9afb49 :) SYSTEM DROP MARK CACHE; SYSTEM DROP UNCOMPRESSED CACHE; WITH 645 - 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.

  • во время запуска СПУ одинаково нагружен?
    судя по разницам у вас прыгает ИО а в целом все одинаково примерно.
    можете проверить через time clickhouse-client -q "query" есть ли разница в СПУ time.

    по сути has сделает то же что у вас в аррайсум (сравнение), разницы быть особо и не должно.
  • https://t.me/clickhouse_ru
    Машина чистая. Только для теста.
    И arraySum же весь массив должен будет проверить, а has на первом же равном эллементе должен остановиться. Или нет ?
  • нет, там все сложнее думаю =) simd все дела...
  • ну и для аррайСум могут быть инструкции какие то, arraySumIf реально может быть быстрее. проверьте на очень длинных массивах
  • https://t.me/clickhouse_ru
    С значительно удлиненным массива буду пробовать, спасибо. arraySumIf не вижу такой функции. Да и -If вроде к аггрегаторам можно только прикрепить
  • да, упростил описание. имелось ввиду arraySum(If(xxx))
  • короче лучше тестировать через time - там покажет CPU time. т.е. может быть у вас latency на диске большой ещё 100500 причин
  • https://t.me/clickhouse_ru
    @95289798 #185050 09:33 AM, 02 Oct 2020
    Ясно, Буду дальше тестить. Спасибо.
  • @908415201 #185051 10:04 AM, 02 Oct 2020
    Joined.
  • @Rijavskii #185052 11:26 AM, 02 Oct 2020
    У кого то были проблемы при удалении колонки из кликхаус? У меня lock_acquire_timeout стоит на 5 минут, но ето не помогает
  • @ageevolegv #185053 11:30 AM, 02 Oct 2020
    Joined.
  • @lucifron31 #185054 11:54 AM, 02 Oct 2020
    добрый день коллеги! Вчера на митапе было сказано что последняя lts версия это 20.8.x , зашел на гитхаб и это никак не отражено.Так задумано или еще не добавили приписку lts к версии?
  • чтоб враги не догадались
  • а если серьезно?))
  • https://t.me/clickhouse_ru
    Ещё не добавили, в ближайшее время добавим.
  • спасибо!
  • https://t.me/clickhouse_ru
    @Alesapin #185059 12:03 PM, 02 Oct 2020
    Если что, lts пакет релизится и в бранч lts и в бранч stable репозитория с пакетами.
  • @avkondakov #185060 12:17 PM, 02 Oct 2020
    Добрый вечер, подскажите а как кликхаус удаляет записи? Была мысль освободить место на диске удалив записи не по ключу партиционирования. Сделал ALTER TABLE DELETE WHERE подождал записи типа удалились, по селекту их нет, но места особо не прибавилось :( Делал OPTIMIZE ждал сутки, но место не возвращается, походу где то они лежат. Можно их как то все таки зачистить?
  • https://t.me/clickhouse_ru
    на всех репликах
    select * from system.mutation where not is_done
  • https://t.me/clickhouse_ru
    и что много в % от общего кол-ва удалилось?
  • https://t.me/clickhouse_ru
    по-моему StateOrNull это комбинация которая не имеет смысла, т.е. она возможна, потому что это комбинатор, но в итоге получается нонсенс
  • Чуть больше 10%
  • https://t.me/clickhouse_ru
    ну из-за компресии могло добавится 5% места например
  • Code: 60, e.displayText() = DB::Exception: Table system.mutation doesn't exist. (version 20.9.2.20 (official build))
  • https://t.me/clickhouse_ru
    mutations
  • Screenshot

    Captured with Lightshot

  • https://t.me/clickhouse_ru
    ну а крайняя справа колонка где?

    latest_fail_reason │ String
  • она пустая
  • @Rijavskii #185071 12:32 PM, 02 Oct 2020
    Screenshot

    Captured with Lightshot

  • https://t.me/clickhouse_ru
    select count() from (
    select cast( country_id, 'Array(UInt16)') from ....
    )
  • 105936541350
  • https://t.me/clickhouse_ru
    похоже что эта мутация Array(UInt16) все еще идет. Надо ждать.
    Я бы в логах искал по имени мутации что там пишется.
  • https://t.me/clickhouse_ru
    @Alesapin #185075 12:39 PM, 02 Oct 2020
    Можно в system.merges посмотреть, там будет запись is_mutation=1. Если нет, то в логи по имени мутации.
  • @Rijavskii #185076 12:40 PM, 02 Oct 2020
    Спасибо
  • https://t.me/clickhouse_ru
    @spalaxinco #185077 01:10 PM, 02 Oct 2020
    Ребята, подскажите пожалуйста. Если у меня на одну партицию где-то 200 - 300 активных кусков собирается это нормально ? Или имеет смысл замедлять вставку и увеличивать количество буферизируемых данных перед вставкой ?
  • https://t.me/clickhouse_ru
    Сложный вопрос. Смотря сколько строк вы вставляете одним инсертом и как часто.
    В общем случае это много. КХ скорее всего тратит много лишних ресурсов на мелкие инсерты и мелкие мержи
  • @1382733415 #185079 01:32 PM, 02 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @f_mihail #185080 01:58 PM, 02 Oct 2020
    Добрый день! При выполнении
    (SELECT visitParamExtractRaw('{"periodFrom": "2020-09-01T00:00:00+06:00"}', 'periodFrom'))

    получаю '"2020-09-01T00:00:00+06:00"'
    не могли бы вы подсказать как получить '2020-09-01T00:00:00+06:00'?
  • https://t.me/clickhouse_ru
    visitParamExtractString но пробел лишний там у вас для visitParam

    поэтому JSONExtract
  • @125427421 #185082 02:53 PM, 02 Oct 2020
    привет SELECT count()
    FROM numbers(5, 10) что должен вывести этот запрос?
  • @125427421 #185083 02:53 PM, 02 Oct 2020
    я думал 5. а выводит 10
  • @125427421 #185084 02:53 PM, 02 Oct 2020
    20.8.3.18
  • https://t.me/clickhouse_ru
    выпросите начиная с 5 , дай мне 10 чисел
  • https://t.me/clickhouse_ru
    @den_crane #185086 02:58 PM, 02 Oct 2020
    SELECT *
    FROM numbers(5, 10)

    number

    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    10 rows in set. Elapsed: 0.001 sec.
  • @125427421 #185087 02:58 PM, 02 Oct 2020
    извините, видимо я не правильно прочитал смысл по документации
  • @477662432 #185088 03:06 PM, 02 Oct 2020
    Почитал доку по реплецированию, немного не понял каким образом клиент решает на какую реплику писать, ведь если я задам адрес определённо ноды и она упадёт, то приложение не сможет загрузить данные хотя есть другие живые ноды? Или мне нужно в приложении это предусмотреть и в случае фейла импортить во вторую ноду? Ну или как то из zookeeper'а читать кто сейчас живой..
  • @125427421 #185089 03:12 PM, 02 Oct 2020
    в приложении..
  • нужно либо в аппе решать либо использовать clickhouse-proxy
  • @477662432 #185091 03:13 PM, 02 Oct 2020
    Спасибо. сейчас гляну что за clickhouse-proxy
  • https://t.me/clickhouse_ru
    Я проксю использую, чтобы аналитиков натравить на реплики продукшен-нод, чтобы они не мучали основные ноды.
  • @494601802 #185093 03:32 PM, 02 Oct 2020
    Joined.
  • @494601802 #185094 03:49 PM, 02 Oct 2020
    Коллеги, здравствуйте.
    Помогите побороть curl клиент и отслеживание прогресса.

    Есть скрипт который через curl ходит выполнять долгий запрос в clickhouse.
    При этом мы хотим более менее отслеживать прогресс для чего пользуемся параметрами &send_progress_in_http_headers=1&http_headers_progress_interval_ms=1000

    Так же так как в результате предполагается довольно много данных мы результат выполнения сразу пишем в файл.

    Вопрос.
    Если в ходе выполнения запроса у CH кончится память, то он вернет некоторую ошибку ‘Code: 241, e.displayText() = DB::Exception: Memory limit’

    Проблема в том что curl при запросе последнего код ответа отдает 200. Response пустой, так как перенаправляли в файл.

    Есть ли возможность не заглядывая в файл и не читая поток налету определить, что в результате выполнения произошла ошибка?
    Без отслеживания прогресса конечно ловим 500
  • https://t.me/clickhouse_ru
    @psx03 #185095 03:49 PM, 02 Oct 2020
    Joined.
  • А при этом на каждой ноде есть distributed таблица с которой идут селекты, верно?
  • https://t.me/clickhouse_ru
    wait_end_of_query ?

    https://github.com/ClickHouse/ClickHouse/issues/10811
  • Спасибо. Попробую. Но не уверен что подойдет.
    Так как ответ в файл большой. И ждать полное завершение выполнения запроса и при этом не получать данных может быть проблематично
  • @1338131633 #185099 05:06 PM, 02 Oct 2020
    Joined.
  • @752212300 #185100 05:55 PM, 02 Oct 2020
    здравствуте! что в этом создании таблицы нет так? он работал летом
  • @752212300 #185101 05:55 PM, 02 Oct 2020
    CREATE TABLE Events2 (
    BulkId UUID,
    QueryString String,
    LogDate DateTime,
    EventDate Date,
    DeviceType LowCardinality(String),
    DeviceName LowCardinality(String),
    DeviceModel LowCardinality(String),
    OSName LowCardinality(String),
    OSVersion LowCardinality(String),
    AppVersion LowCardinality(String)
    )
    ENGINE = MergeTree
    PARTITION BY toYYYYMMDD(LogDate)
    ORDER BY LogDate
    TTL LogDate + INTERVAL 1 MINUTE DELETE
  • @752212300 #185102 05:56 PM, 02 Oct 2020
    такая ошибка сейчас:
  • @752212300 #185104 05:57 PM, 02 Oct 2020
    Expected one of: NOT, SETTINGS, FORMAT, LIKE, AND, OR, IN, BETWEEN, token, IS, NOT LIKE, NOT IN, GLOBAL IN, GLOBAL NOT IN, QuestionMark, PRIMARY KEY, SAMPLE BY, INTO OUTFILE (version 19.17.5.18 (official build))
  • https://t.me/clickhouse_ru
    @den_crane #185105 05:57 PM, 02 Oct 2020
    version 19.17.5.18 TTL LogDate + INTERVAL 1 MINUTE DELETE
  • https://t.me/clickhouse_ru
    @den_crane #185106 05:57 PM, 02 Oct 2020
    просто TTL LogDate + INTERVAL 1 MINUTE
  • https://t.me/clickhouse_ru
    @den_crane #185107 05:58 PM, 02 Oct 2020
    DELETE появился позже, в 20х, потому что появился еще MOVE
  • @752212300 #185108 05:58 PM, 02 Oct 2020
    большое спасибо!
  • @752212300 #185109 06:00 PM, 02 Oct 2020
    А вот такая ошибка - может сразу подскажите -
  • @752212300 #185110 06:00 PM, 02 Oct 2020
    DB::Exception: Cannot reserve 1.00 MiB, not enough space
  • @752212300 #185111 06:07 PM, 02 Oct 2020
    вопрос снят, это просто мой косяк, сории
  • https://t.me/clickhouse_ru
    @Ilya_ilinskiy #185112 10:37 PM, 02 Oct 2020
    Joined.
  • 03 October 2020 (66 messages)
  • https://t.me/clickhouse_ru
    @suxxorz #185113 07:00 AM, 03 Oct 2020
    Привет! Подскажите пожалуйста, есть 3 шарда по 2 реплики. Создаю топик в Kafka

    docker exec -t clickhouse-kafka \
    kafka-topics.sh \
    --bootstrap-server :9092 \
    --create \
    --topic TopicNameHere \
    --partitions 6 \
    --replication-factor 1

    но, если указать 6 партиций (--partitions 6) в топике, то читают только из двух шардов 3-я простаивает, а если указать больше, скажем 12 (--partitions 12), то все нормально. Почему не хватает 6 партиций там же по идее каждому должно достаться?
  • https://t.me/clickhouse_ru
    @abdulgalimov #185114 09:29 AM, 03 Oct 2020
    для CH важно чтобы данные в таблицу писались строго отсортированные по дате?
  • https://t.me/clickhouse_ru
    @abdulgalimov #185115 09:30 AM, 03 Oct 2020
    т.е. сперва записать инфу за сегодня, а потом за вчера - что нибудь сломается?
  • https://t.me/clickhouse_ru
    @nyoroon #185116 09:30 AM, 03 Oct 2020
    Пофиг
  • https://t.me/clickhouse_ru
    @abdulgalimov #185117 09:31 AM, 03 Oct 2020
    если потом я буду делать выборки по дате - запрос нормально отработается ?
  • https://t.me/clickhouse_ru
    @nyoroon #185118 09:34 AM, 03 Oct 2020
    Ну кх выберет парты, в которых есть нужные даты
  • https://t.me/clickhouse_ru
    @nyoroon #185119 09:35 AM, 03 Oct 2020
    В мета-информации партов хранится мин-макс дат
  • https://t.me/clickhouse_ru
    @nyoroon #185120 09:35 AM, 03 Oct 2020
    Но при желании можно написать запрос который будет работать не оптимально (будет сканировать все данные)
  • https://t.me/clickhouse_ru
    @abdulgalimov #185121 09:38 AM, 03 Oct 2020
    Запрос будет простой, просто получить все записи за период
  • @1188068464 #185122 09:49 AM, 03 Oct 2020
    Joined.
  • @752212300 #185123 10:25 AM, 03 Oct 2020
    Здравствуйте! Можно ли группировать по extractURLParameter(URL, name)? Задача такая - в таблицу сырых событий пишется queryString, весь. В мат вьюху хочу писать уже в отдельные поля разобранный queryString
  • @752212300 #185124 10:26 AM, 03 Oct 2020
    и сгруппированный по ним
  • @752212300 #185125 10:28 AM, 03 Oct 2020
    или queryString всеже лучше разбирать на клиенте?
  • @752212300 #185126 10:34 AM, 03 Oct 2020
    просто если в клике так можно, было бы круто
  • https://t.me/clickhouse_ru
    @nyoroon #185127 10:38 AM, 03 Oct 2020
    а в чём собственно проблема? должно работать
  • https://t.me/clickhouse_ru
  • @752212300 #185129 10:47 AM, 03 Oct 2020
    спасибо!
  • https://t.me/clickhouse_ru
    @yatakoim #185130 10:57 AM, 03 Oct 2020
    Всем привет.

    Подскажите пожалуйста синтаксис вставки в таблицу nginx.access_log этой записи timestamp + toIntervalMonth(1);.

    Так выдает отшибку
    INSERT INTO nginx.access_log
    TTL timestamp + toIntervalMonth(1);
  • https://t.me/clickhouse_ru
    @igor_trof #185131 10:59 AM, 03 Oct 2020
    Ребят не подскажите, как дебажить, есть табличка kafka engine, перестали в неё поступать данные, ошибки в логах: <Trace> StorageKafka (log_waffa5_in_parsed): Re-joining claimed consumer after failure, debug all не отображает доп. Информации. Я предполагаю, что изменился формат сообщения или что то не так с форматом jsonEachRow, которые приходят, поля совпадают, типы тоже. С виду с json все в порядке, но возможно я не отловил «плохие» сообщения. Собственно как это проверить, есть какой либо приклад на проверку соответствия сообщения формату/полям и т.п.? Или может быть кликхаус где то это логирует? Версия 20.8.53
  • https://t.me/clickhouse_ru
    Можно наверно так + interval 30 day
  • https://t.me/clickhouse_ru
    @yatakoim #185133 11:37 AM, 03 Oct 2020
    Подскажите пожалуйста как добавить в существующую таблицу время жизни записей 1 месяц. Или это можно сделать только во время создании таблицы?
  • https://t.me/clickhouse_ru
    @vyorkin #185134 11:39 AM, 03 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    alter table ... modify ttl ...
    alter table ... materialize ttl
  • https://t.me/clickhouse_ru
    alter table ... modify ttl + INTERVAL 1 MONTH
    alter table ... materialize ttl

    Верно?
  • https://t.me/clickhouse_ru
    @nyoroon #185137 11:48 AM, 03 Oct 2020
    там должно быть имя_колонки_с_date_или_datetime + INTERVAL 1 MONTH
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    Мои колонки

    event_datetime DateTime,
    event_date Date,
    server_name LowCardinality(String),
    remote_user String,
    http_x_real_ip UInt32,
    remote_addr UInt32,
    status UInt16,
    scheme LowCardinality(String),
    request_method LowCardinality(String),
    request_uri String,
    request_args String,
    server_protocol LowCardinality(String),
    body_bytes_sent UInt64,
    request_bytes UInt64,
    http_referer String,
    http_user_agent LowCardinality(String),
    request_time Float32,
    upstream_response_time Array(Float32),
    hostname LowCardinality(String),
    host LowCardinality(String),
    upstream_addr LowCardinality(String)
    )
    ENGINE = MergeTree()
    PARTITION BY toMonday(event_date)
    ORDER BY (hostname, request_uri, event_date)

    Значит event_datetime или event_date?
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    А какая из них?))

    event_datetime или event_date?
  • https://t.me/clickhouse_ru
    @nyoroon #185142 12:00 PM, 03 Oct 2020
    в случае когда точность нужна до дней - любая
  • https://t.me/clickhouse_ru
    @nyoroon #185143 12:00 PM, 03 Oct 2020
    если именно надо +- ровно через месяц удалить в это же время, то datetime
  • https://t.me/clickhouse_ru
    @yatakoim #185144 12:00 PM, 03 Oct 2020
    Еще раз спасибо )
  • https://t.me/clickhouse_ru
    Извиняюсь за дурацкие вопросы, но это нормально, что выполнение повисло?

    clickhouse-grafana-node-1-centos7 :) alter table access_log modify ttl event_datetime + INTERVAL 1 MONTH;

    ALTER TABLE access_log
    MODIFY TTL event_datetime + toIntervalMonth(1)
  • https://t.me/clickhouse_ru
    @nyoroon #185146 12:07 PM, 03 Oct 2020
    какая версия кх?
  • https://t.me/clickhouse_ru
    ClickHouse server version 20.7.2.30 (official build).
  • https://t.me/clickhouse_ru
    @yatakoim #185148 12:09 PM, 03 Oct 2020
    Итого такой

    clickhouse-grafana-node-1-centos7 :) alter table access_log modify ttl event_datetime + INTERVAL 1 MONTH;

    ALTER TABLE access_log
    MODIFY TTL event_datetime + toIntervalMonth(1)

    Timeout exceeded while receiving data from server. Waited for 300 seconds, timeout is 300 seconds.
    Cancelling query.
  • https://t.me/clickhouse_ru
    @kronosx2 #185149 12:53 PM, 03 Oct 2020
    всем привет
    подскажите плес, как гарантирован и где закреплен порядок полей таблицы?
    вот есть select * from tbl
    который возвращает
    id, name, surname
    можно ли полагаться, что select * возвращает именно такой же порядок полей во всех возможных драйверах/средах/нувыпонели
  • https://t.me/clickhouse_ru
    @orantius #185150 01:03 PM, 03 Oct 2020
    select * это запрос, который непредсказуемым образом себя ведет, в том плане что вы меняете схему и он молча начинает выдавать другое. select * в столбцовой базе это еще и подозрительный сценарий, т.к. мы много читаете и ничего не агрегируете. ну и вообще непонятно зачем в named структуре закладываться на порядок
  • https://t.me/clickhouse_ru
    то есть если добавить поле birthdate то select * может внезапно начать возвращать
    id, birthdate, name, surname ?
  • https://t.me/clickhouse_ru
    @orantius #185152 01:12 PM, 03 Oct 2020
    ну, я думаю что раскрытие звездочки как брало из таблицы список стоблцов, так и продолжит это делать, и они там в каком-то порядке, и наиболее очевидный порядок - это порядок из create. поэтому куда добавите, там и будет. проблема на мой взгляд в том, что вы делаете предположение про вещи, которые не контролируете, и становитесь уязвимы к ряду ошибок, которые в других случаях можете избежать. видимо, ради эффективности.
  • https://t.me/clickhouse_ru
    КХ гарантирует неизменность, новую колонку можно добавить в любое место (кроме первой?) указав AFTER. alter table x add column Col99 after Col1;

    папа прав, никто на * не полагается.
  • https://t.me/clickhouse_ru
    а таблица Engine=Kafka ваша с kafka_num_consumers = 1 ?
  • https://t.me/clickhouse_ru
    например ваша таблица создана как

    partition by B order by X

    типы B и X значения не имеют
    и вы вставляете 4 строки разом

    insert into T(B,X) values(1 , 44), (2 , -33), (1 , 16), (2 , 5.6)

    такой инсерт создаст в памяти 2 парта, внутри парты будут отсортированы, и после этого записаны на диск
    1, 44 1, 16 -orderby--> 1, 16 1, 44
    2, -33 2, 5.6 -orderby--> 2, -33 2, 5.6

    после записи на диск, парты попадут в список активных, и станут доступны селектам, и вернется управление клиенту (инсерт завершится)
  • https://t.me/clickhouse_ru
    он удаляет старые записи, все хорошо

    ClickHouse release v20.5.2.7-stable 2020-07-02

    Apply TTL for old data, after ALTER MODIFY TTL query. This behaviour is controlled by setting materialize_ttl_after_modify, which is enabled by default. #11042 (Anton Popov).

    то что отвалилось по таймауту значения никакого не имеет

    можно запускать
    ALTER TABLE table_for_ttl MODIFY TTL d + INTERVAL 1 YEAR SETTINGS materialize_ttl_after_modify = 0;
  • https://t.me/clickhouse_ru
    Спасибо за комментарий
  • https://t.me/clickhouse_ru
    проверьте что show create table .....
    показывает новый create table c TTL
  • https://t.me/clickhouse_ru
    Всё отлично

    SHOW CREATE TABLE nginx.access_log

    ┌─statement──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │ CREATE TABLE nginx.access_log
    (
    `event_datetime` DateTime,
    `event_date` Date,
    `server_name` LowCardinality(String),
    `remote_user` String,
    `http_x_real_ip` UInt32,
    `remote_addr` UInt32,
    `status` UInt16,
    `scheme` LowCardinality(String),
    `request_method` LowCardinality(String),
    `request_uri` String,
    `request_args` String,
    `server_protocol` LowCardinality(String),
    `body_bytes_sent` UInt64,
    `request_bytes` UInt64,
    `http_referer` String,
    `http_user_agent` LowCardinality(String),
    `request_time` Float32,
    `upstream_response_time` Array(Float32),
    `hostname` LowCardinality(String),
    `host` LowCardinality(String),
    `upstream_addr` LowCardinality(String)
    )
    ENGINE = MergeTree()
    PARTITION BY toMonday(event_date)
    ORDER BY (hostname, request_uri, event_date)
    TTL event_datetime + toIntervalMonth(1)
    SETTINGS index_granularity = 8192 │
  • https://t.me/clickhouse_ru
    @yatakoim #185160 02:20 PM, 03 Oct 2020
    Не подскажете, что значит SETTINGS materialize_ttl_after_modify = 0?
  • https://t.me/clickhouse_ru
    @ukchuvrus #185161 02:25 PM, 03 Oct 2020
    Привет, а может кто-то подсказать, куда смотреть, как кх сериализует бинарные данные, передаваемые на клиента?
  • https://t.me/clickhouse_ru
    @orantius #185162 02:28 PM, 03 Oct 2020
    Native Interface (TCP) | ClickHouse Documentation

    Native Interface (TCP) The native protocol is used in the command-line client, for inter-server communication during dis

  • https://t.me/clickhouse_ru
    @ukchuvrus #185163 02:31 PM, 03 Oct 2020
    Перфект, большое спасибо
  • https://t.me/clickhouse_ru
    @askjuise #185164 04:15 PM, 03 Oct 2020
    коллеги, подскажите, есть materialized view:
    CREATE MATERIALIZED VIEW bi.a TO bi.b AS SELECT ... FROM (SELECT ... FROM bi.kafka_stream)

    я хочу выставить TTL на таблицу, для удаления старых данных, достаточно ли выставить его только на bi.b или на materialized view - bi.a его тоже надо выставлять?
  • https://t.me/clickhouse_ru
    @nyoroon #185165 04:17 PM, 03 Oct 2020
    только на таблицу в TO
  • https://t.me/clickhouse_ru
    @askjuise #185166 04:17 PM, 03 Oct 2020
    спасибо!
  • https://t.me/clickhouse_ru
    Нет, я устанавливал kafka_num_consumers = 3
  • https://t.me/clickhouse_ru
    посмотрите тут https://youtu.be/1LVJ_WcLgF8?t=7503
    я за один час постарался ответить кратенько
  • https://t.me/clickhouse_ru
    эээ, так вы видимо совсем не поняли что этот параметр делает.

    если kafka_num_consumers=3 тогда партиций надо минимум 2*2*3=12, рекомендую 24
  • https://t.me/clickhouse_ru
    @den_crane #185170 05:04 PM, 03 Oct 2020
    kafka_num_consumers это сколько консьмеров запустить на одной ноде
  • https://t.me/clickhouse_ru
    @den_crane #185171 05:05 PM, 03 Oct 2020
    первая нода сожрет 3 партиции, еще одна еще 3, и так далее
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    Ааа)) спасибо!))
  • @vialorn #185174 05:58 PM, 03 Oct 2020
    здравствуйте. нужна помощь. при выполнении запроса вида
    INSERT ...
    SELECT ...
    FROM remote()запрос падает с ошибкой
    Received exception from server (version 20.5.5):
    Code: 241. DB::Exception: Received from processing-host:9000. DB::Exception: Received from remote-host:9000.
    DB::Exception: Memory limit (total) exceeded: would use 104.31 GiB (attempt to allocate chunk of 4457360 bytes), maximum: 104.31 GiB:
    (while reading column value): (while reading from part /var/lib/clickhouse/data/default/remote_table/20200802-1_0_28670_8/ from mark 24792 with max_rows_to_read = 32768): While executing MergeTreeThread.в какую сторону копать? до этого аналогичный запрос выполнился. в SELECT - простая выборка полей плюс фильтр по ключу партиционирования.
  • https://t.me/clickhouse_ru
    странно, ни order by ни group by ?

    set max_threads=1, max_insert_block_size=100000
  • да, ни ORDER BY, ни GROUP BY.
    спасибо, попробую max_threads, а то пока только до max_insert_threads=1 дошел, без него принимающая сторона валится
  • https://t.me/clickhouse_ru
    @adsrun #185178 09:05 PM, 03 Oct 2020
    Доброго.
    Можно ли при запросе на Клик, вот на такую табличку

    ) ENGINE = Merge(
    default,
    '^(log_event)|(log_1)|(log_2)'
    )

    исключить из выборки, например, таблицу - log_2 ?

    Или запросом ни как и уже новую создавать только без log_2 ?
  • https://t.me/clickhouse_ru
    @den_crane #185179 10:33 PM, 03 Oct 2020
    типа (log_2[^$]) (не проверял)
  • 04 October 2020 (83 messages)
  • https://t.me/clickhouse_ru
    @arhamont #185181 05:09 AM, 04 Oct 2020
    Joined.
  • @1314781735 #185182 06:38 AM, 04 Oct 2020
    Нал 0
  • https://t.me/clickhouse_ru
    @a1s_333444 #185183 07:17 AM, 04 Oct 2020
    /stat@combot
  • https://t.me/clickhouse_ru
    @combot #185184 b o t 07:17 AM, 04 Oct 2020
    Total messages: 185183
  • https://t.me/clickhouse_ru
    @yovgen #185185 08:12 AM, 04 Oct 2020
    Привет всем!
    У бизнеса возникла идея скрестить бигдату, кх и splunk. Пока вопросы к последнему пункту. Может ли кто по splunk проконсультировать? За денежку, конечно.
    Там что-то очень много маркетингом обмазано - загружаешь неструктурированный треш, а на выходе конфетка. Не верю :)
  • https://t.me/clickhouse_ru
    @MichaelNiki #185186 08:18 AM, 04 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @pnm000 #185189 09:07 AM, 04 Oct 2020
    Добрый день,
    кто то может подсказать как я могу контролировать порядок выполнения JOIN что то вроде HINTS для execution plan?
  • https://t.me/clickhouse_ru
    @DmitryZaytsev #185193 12:34 PM, 04 Oct 2020
    Никто случайно в обозримом прошлом кластер КХ на bare metal не поднимал? Интересуют параметры. Точных данных по предполагаемой нагрузке пока нету, для справки железо хочется оценить. С шардированием
  • нет но можно руками проставить в нужном порядке вроде
  • просто КХ сам в бекграунде то же самое делает
  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #185195 #185196 02:59 PM, 04 Oct 2020
    Ну мы просто видели что порядок вещей в запросе может интерпетироваться очень по разному с точки зрения execution plan и хотелось бы понять если мы может контролировать порядок выполнения sub queries.
  • На данный момент, сначала выполняется самый внутренний запрос.
  • https://t.me/clickhouse_ru
    @pnm000 #185198 03:01 PM, 04 Oct 2020
    Вопрос еще один очень интересный вопреки рекомендациями не использовать CH для хренения текстовых документов я все равно не могу объяснить этот эффект ?
    SELECT internal_id
    FROM articles
    WHERE internal_id = '6f58fa93be8424153cc0a4e27a42dc8649d98a1a'
    ┌─internal_id──────────────────────────────┐
    │ 6f58fa93be8424153cc0a4e27a42dc8649d98a1a │
    └──────────────────────────────────────────┘
    1 rows in set. Elapsed: 0.108 sec. Processed 3.27 million rows, 151.11 MB (30.39 million rows/s., 1.40 GB/s.)
    clickhouse-db-03.dmetrics.internal 🙂 SELECT internal_id,content
    :-] FROM articles where internal_id = '6f58fa93be8424153cc0a4e27a42dc8649d98a1a';
    SELECT
    internal_id,
    content
    FROM articles
    WHERE internal_id = '6f58fa93be8424153cc0a4e27a42dc8649d98a1a'
    ┌─internal_id──────────────────────────────┬─content────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │ 6f58fa93be8424153cc0a4e27a42dc8649d98a1a │ One selling point for Harris, is that her experience with cyber crimes could give her a leg up as someone qualified to protect our cyber security from hostile nations.Even if you accept the idiotic idea that Trump didn't collude with Putin, the nicest thing you can say about Trump is that he has failed to take any action to protect our elections , our power grid, nuclear power plants etc etc. In other words, he is either an agent of Putin, or a sniveling coward. There is a government report that states that China and Russia have the capabilities to shut down our power grid and interupt our gas suplly lines. Imagine if they had done this during this current freeze. Thousands would have died │
    └──────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
    1 rows in set. Elapsed: 10.399 sec. Processed 3.27 million rows, 14.89 GB (314.48 thousand rows/s., 1.43 GB/s.)
    Первый запрос по индексу берет 100 мс а тот же самой запрос который по индексу но и приносит текстовое поле дополнительное отвеает в 100 раз медленее ? Есть ли идеи почему ?
  • https://t.me/clickhouse_ru
    @tirelx ↶ Reply to #185198 #185199 03:17 PM, 04 Oct 2020
    первый запрос читает только из одной колонки: internal_id
    второй запрос читает из двух колонок: internal_id, content
    при этом content сильно больше по размеру - это можно увидеть в статистике по запросам:
    Processed 3.27 million rows, 151.11 MB против Processed 3.27 million rows, 14.89 GB
  • @dj_mixer #185200 03:23 PM, 04 Oct 2020
    Если у вас все запросы прям по индексу без fullсканов сделайте гранулярность индекса 1...
  • ^^^
  • Кх по минимуму читает одну гранулу. Т.е. если в ней 1000 строк, он прочтет 1000 гигантских текстов из другой колонки
  • https://t.me/clickhouse_ru
    @kronosx2 #185203 05:09 PM, 04 Oct 2020
    господа. а как вы пишете сиды для тестирования кликхаус кверей?
    в в распоряжении кх19.7, нода.
    проблема в том, что сейчас сиды у меня прописаны в виде массива массивов.
    вида
    [
    ['john', 'doe', 75]
    ]
    отдельно существует объект для маппинга, вида
    {
    name: 'String',
    surname: 'String',
    age: 'UInt8'
    }
    как вы понимаете, там колонок 50 в каждой записи.
    так что поддерживать весь этот зоопарк становится накладно, ибо приходится буквально считать запятые, чтобы воткнуть какое-то значение на какое-нибудь место
  • https://t.me/clickhouse_ru
    @kronosx2 #185204 05:11 PM, 04 Oct 2020
    есть жгучее желание переписать все на офигенно огромный жсон, чтобы хотя бы было понятно, что и где ты меняешь.
    но хотелось бы узнать, как дядьки это разруливают
  • https://t.me/clickhouse_ru
    @sivashev #185205 05:45 PM, 04 Oct 2020
    Joined.
  • @khanze #185206 05:48 PM, 04 Oct 2020
    Коллеги, добрый вечер! Изучаю и практикую clickhouse, есть вопрос один.

    На данный момент разрабатываю pipline впервые, гружу данные в clickhouse(использую файлы в папке), но clickhouse позволяет загружать дубликаты. Что делать в таком случае?
    Сделать архитектуру с помощью которой файлов там не будет?
    Это ок, так и будет.

    Но вопрос все равно интересный, что насчет дубликатов и уникальности? Кто что делает в таком случае?
  • движок поменять на реплесинг
  • ReplacingMergeTree | Документация ClickHouse

    ReplacingMergeTree Движок отличается от MergeTree тем, что выполняет удаление дублирующихся записей с одинаковым значени

  • https://t.me/clickhouse_ru
    @sivashev #185209 05:55 PM, 04 Oct 2020
    Привет. В Яндекс Облаке есть VM (4GB RAM) и Managed ClickHouse (Гарантированная доля vCPU 5%, 2 ГБ RAM - кластер для тестирования). Хочу в табличку clickhouse загрузить данные из CSV (2.2M строк ~1.5GB размер файла):
    clickhouse-client --host xxx.mdb.yandexcloud.net --secure --user xxx --database xxx --port 9440 --password="xxx" --format_csv_delimiter=";" --format_csv_allow_double_quotes=0 --format_csv_allow_single_quotes=1 --query="INSERT INTO reports FORMAT CSV" < 2018.csv
    Code: 210. DB::NetException: I/O error: Broken pipe, while writing to socket (x.x.x.x:9440)

    У меня не хватает ресурсов на VM/ClickHouse? как диагностировать проблему?

    Копирование такого-же файла в кластер такой же мощности для postgresql - было успешным (но с ноутбука, не с VM)
  • Но тама есть особенность, дубли сразу не уйдут, а может и совсем не уйдут.
  • @khanze ↶ Reply to #185211 #185212 05:57 PM, 04 Oct 2020
    хмм
  • @khanze ↶ Reply to #185211 #185213 05:58 PM, 04 Oct 2020
    решение есть на эту особенность?
  • @khanze #185214 05:59 PM, 04 Oct 2020
    у меня пока в голову приходит в коде дубликаты убирать
  • @khanze #185215 05:59 PM, 04 Oct 2020
    при обработке, если хотим куда то выгрузить
  • Вручную делать OPTIMIZE, но это как я понимаю не рекомендуется часто делать. Если дублей мало я бы забил и на этапе select это решал просто.
  • @133452245 #185217 06:00 PM, 04 Oct 2020
    Но это я. Вам такое может не подойти.
  • @khanze #185218 06:01 PM, 04 Oct 2020
    понял вас, спасибо
  • https://t.me/clickhouse_ru
    Processed 3.27 million rows -- по индексу? Что ?

    ну и сто раз тут уже показывали как сделать подзапрос который вернет PK и потом по PK выберет
  • https://t.me/clickhouse_ru
    храним в выделенных колонках в КХ или в "json" в монге
  • https://t.me/clickhouse_ru
    удаляем дубликаты до КХ кассандрой, сам КХ не может смержить, не хватает скорости дисков
  • @khanze ↶ Reply to #185223 #185224 08:02 PM, 04 Oct 2020
    интересно, спасибо за инфу
  • https://t.me/clickhouse_ru
    т.е. у кх все хорошо, например есть 5 партов в месяц размером по 200ГБ, если пытаться мержить в один парт чтобы удалить дубликаты, диски задыхаются и селекты не выполняются, ну такой мерж параллельно с инсертами идет несколько дней
  • @khanze ↶ Reply to #185225 #185226 08:04 PM, 04 Oct 2020
    хмм, понял
  • https://t.me/clickhouse_ru
    уже перегнал всю эту дрянь в json. стало гораздо менее противно работать с данными.
    новая повестка дня - словари 😄
    где вы их храните? тоже в монге ?
  • https://t.me/clickhouse_ru
    у меня все словари http, без понятия что там за http, вроде mysql
  • https://t.me/clickhouse_ru
    то есть локально даже для тестов не держите ?
  • https://t.me/clickhouse_ru
    для тестов в файлах, tsv, т.е. бекэнд словарей возвращает tsv через http, поэтому для тестов легче всего просто курлом в файл сложить
  • https://t.me/clickhouse_ru
    какая версия кх? похоже OOM killer убивает КХ. Ну и конечно КХ не рассчитан на 2ГБ, надо специально настраивать. КХ из коробки рассчитан на 64ГБ+
  • https://t.me/clickhouse_ru
    в какой-то момент ваша колонка с json станет размером 200ГБ, любые запросы будут работать 200+ сек.
  • https://t.me/clickhouse_ru
    понял, спасибо =)
  • https://t.me/clickhouse_ru
    честно говоря, тестиков пока мало, и много вроде не предвидится.
    но то, что было до этого, было невероятно отвратительно
  • https://t.me/clickhouse_ru
    попробуйте представить, как клево менять данные при таком раскладе :D
  • https://t.me/clickhouse_ru
    просто не надо рассчитывать что КХ будет работать с неструктурированными данными, ну не будет он, будет просто тормозить, потому что просто прочитать с диска такую суперколонку невыносимо долго, потом распаковать, потом отфильтровать.
  • https://t.me/clickhouse_ru
    менять????? возьмите монгу. КХ тут не подходит.
  • https://t.me/clickhouse_ru
    а, нене, вы меня не так поняли)
    я вынес сиды с пика выше в отдельный json файл
    так что в кликхаусе они все складываются как нужно, по колонкам
    а жаловался я на то, что json по размеру получается в разы больше, чем аналогичный csv (или около того, как на пике выше, опять же)
  • https://t.me/clickhouse_ru
    я не знаю что такое "сид", "пик"
  • https://t.me/clickhouse_ru
    seed - это некоторые данные для тестовой базы.
    грубо говоря чтобы проверить select * from tbl нужно сперва эту tbl чем- то заполнить.
    вот сиды - как раз такие вот дерьмовые данные для тестов.
    а пик - пикча, картинка выше крч
  • https://t.me/clickhouse_ru
    @Kankasuiso #185241 08:27 PM, 04 Oct 2020
    Народ вопрос, в одном запросе можно к одной и той же таблице делать подзапросы? И на сколько это будет быстро?
  • https://t.me/clickhouse_ru
    @Kankasuiso #185242 08:28 PM, 04 Oct 2020
    Ну те допустим одновременно мне нужна сумма нескольких колонок как результат и поделить ее на третью и отдать как результат этого же запроса
  • @khanze ↶ Reply to #185241 #185243 08:32 PM, 04 Oct 2020
    Как я знаю, вроде такое можно делать и я работал с этим, но сами запросы не писал.
    группируешь и запрашиваешь
  • @khanze #185244 08:32 PM, 04 Oct 2020
    сейчас пример попробую написать
  • https://t.me/clickhouse_ru
    @Kankasuiso #185245 08:34 PM, 04 Oct 2020
    Не, просто мне предъявляют за 12 подзапросов из одной таблицы, но я вариантов как это сделать менее экстремально не придумал.
  • @khanze #185246 08:34 PM, 04 Oct 2020
    select <field> from (select <fields> from db.table where < тут твоя логика > group by <field>)
  • @khanze ↶ Reply to #185245 #185247 08:34 PM, 04 Oct 2020
    по скорости пока ничего сказать не могу
  • @khanze #185248 08:35 PM, 04 Oct 2020
    сам пока не могу за это пояснить
  • можете 100 делать, не вижу проблемы... если надо то надо
  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #185199 #185250 08:45 PM, 04 Oct 2020
    Спасибо,
  • https://t.me/clickhouse_ru
    Я понимаю, интересно с точки зрения производительности
  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #185221 #185252 08:46 PM, 04 Oct 2020
    ну мы новинькие только в начале пути можете направить о чем речь ?
  • ну таблица будет сканироваться много раз
  • https://t.me/clickhouse_ru
    @Kankasuiso #185254 08:47 PM, 04 Oct 2020
    Никаких оптимизаций не придумали для этого?
  • писать правильные запросы
  • https://t.me/clickhouse_ru
    @Kankasuiso #185256 09:07 PM, 04 Oct 2020
    Да это то понятно
  • дайте пример базы в которой это "придумали". Чтобы было от чего плясать
  • 1. у вас не работает индекс.
    SELECT internal_id
    FROM articles
    WHERE internal_id = '6f58fa93be8424153cc0a4e27a42dc8649d98a1a'

    должет возвращать малое кол-во прочитанных строк
    проверьте ДДЛ таблицы

    2. после того как почините индекс, должно быть быстро.
  • https://t.me/clickhouse_ru
    если по индексу то processed rows будут тысячи а не миллионы
    show create table в студию
  • https://t.me/clickhouse_ru
    из вашего описания звучит как очень тупое решение

    (a+b)/c , понятно что вы хотели чего то типа sum(a+b) / c -- это можно сделать через массивы, все зависит от кол-ва данных с таблице
  • https://t.me/clickhouse_ru
    @den_crane #185261 09:55 PM, 04 Oct 2020
    select tot, tot/(arrayJoin(ca) as c), c from (select sum(a+b) tot, groupArray(c) ca from (select number a, number b, number c from numbers(10)))
    ┌─tot─┬─divide(tot, arrayJoin(ca))─┬─c─┐
    │ 90 │ inf │ 0 │
    │ 90 │ 90 │ 1 │
    │ 90 │ 45 │ 2 │
    │ 90 │ 30 │ 3 │
    │ 90 │ 22.5 │ 4 │
    │ 90 │ 18 │ 5 │
    │ 90 │ 15 │ 6 │
    │ 90 │ 12.857142857142858 │ 7 │
    │ 90 │ 11.25 │ 8 │
    │ 90 │ 10 │ 9 │
    └─────┴────────────────────────────┴───┘
  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #185259 #185262 10:03 PM, 04 Oct 2020
    CREATE TABLE fgi.articles_data
    (
    internal_id String,
    timestamp Nullable(DateTime('UTC')),
    content String,
    url Nullable(String),
    data_provider String,
    document_length UInt32,
    domain_name String,
    is_near_duplicate UInt8,
    publish_date DateTime('UTC'),
    tags.name Array(String),
    tags.score Array(Float64),
    tags.tagger Array(String)
    )
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/replicated/fgi/articles_data', 'srv1.internal')
    PARTITION BY toYYYYMMDD(publish_date)
    ORDER BY internal_id
    SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    @pnm000 #185263 10:03 PM, 04 Oct 2020
    спасибо
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #185258 #185265 10:04 PM, 04 Oct 2020
    если бы индекс не работал то 100 мс не было было для internal_id
  • https://t.me/clickhouse_ru
    ясно

    PARTITION BY toYYYYMMDD(publish_date)
    ORDER BY internal_id
    SETTINGS index_granularity = 8192

    т.е. каждый парт в каждом шарде дает 8129 (или 16384) строк., чтобы получить Processed 3.27 million rows надо иметь 199 партов, т.е. конечно это можно все поправить, и партиционирование шардирование, и т.д.

    наверное вам придется делать два запроса

    select publish_date, internal_id
    FROM articles
    WHERE internal_id = '6f58fa93be8424153cc0a4e27a42dc8649d98a1a'

    SELECT
    internal_id,
    content
    FROM articles
    WHERE internal_id = '6f58fa93be8424153cc0a4e27a42dc8649d98a1a' and publish_date = ....

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

    а да, еще можно попробовать PREWHERE вместо WHERE
  • было бы, колонка сжатая... маленькая. из кеша норм.
  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #185266 #185268 10:42 PM, 04 Oct 2020
    спасибо за направление посмотрим что делать
  • https://t.me/clickhouse_ru
    @pnm000 #185269 10:42 PM, 04 Oct 2020
    кто то может порекомендовать consultant по clickhouse?
  • https://t.me/clickhouse_ru
    @den_crane #185270 10:44 PM, 04 Oct 2020
    вроде консалтинг только altinity.com, больше никого.
  • https://t.me/clickhouse_ru
    @pnm000 #185271 10:51 PM, 04 Oct 2020
    Да эти теже ребята что и Percona вопрос может кто то работал с ними ?
  • 05 October 2020 (238 messages)
  • @varyhin #185272 04:59 AM, 05 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @Ksenia_IT #185273 06:49 AM, 05 Oct 2020
    Joined.
  • @1273481347 #185274 07:07 AM, 05 Oct 2020
    Joined.
  • Спасибо за помощь настройкой clickhouse-server!
  • https://t.me/clickhouse_ru
    @Unfortunatelly #185276 07:23 AM, 05 Oct 2020
    Всем привет!
    Подскажите пожалуйста если мы работаем с массивом кортежей вида [(a,b,c), (d,e,f)] при этом кортежи созданы для каждого id можно ли сделать следующее:
    1. вытащить из множества кортежей на id тот, который нас интересует (например a,b,c)
    2. уникально посчитать uniq(id) на каждый кортеж так, чтобы в случае если на id есть 2 кортежа по которым мы считаем уников, id посчитался только в один из них.
    В общем можно ли задать как-то приоритет кортежу, если нашелся (a,b,c), то остальные чтобы не считались, или это уже в питоне такое лучше обрабатывать?
  • https://t.me/clickhouse_ru
    @x3ter #185277 07:30 AM, 05 Oct 2020
    Здравия!

    У меня есть кликхаус кластер, который настраивается ансиблом. Он в продакшене сейчас
    Хочу сделать так, чтобы ансибл настраивал хосты по одному и проверял состояние кликхауса, ну то есть, чтобы всё не развалилось
    И у меня вопрос - как лучше всего проверять состояние кликхауса? Можно дёргать по http пинг, но там же он проверяет что инстанс кликхауса рабочий. А в идеале проверять ещё что и кластер не развалился. Так возможно?
  • привет. а кто мешает выполнять clickhouse-client с нужным запросом?
  • https://t.me/clickhouse_ru
    @x3ter ↶ Reply to #185278 #185279 07:34 AM, 05 Oct 2020
    Похоже, осознал
    Мы же можем сделать запрос в системную таблицу и из неё вытащить значение?
    Покопаю в эту сторону
  • угу
  • https://t.me/clickhouse_ru
    @x3ter ↶ Reply to #185280 #185281 07:35 AM, 05 Oct 2020
    Благодарю!
  • @477662432 #185282 07:45 AM, 05 Oct 2020
    Скажите, а clickhouse-proxy умеет bulk insert'ы делать со всякими параметрами в стиле --ignore-error?
  • https://t.me/clickhouse_ru
    @sanagrishin #185283 07:54 AM, 05 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @romanbarmin #185284 08:07 AM, 05 Oct 2020
    Всем привет, никто не сталкивался со следующей проблемой:
    Пытаюсь через DBeaver выполнить запрос из доки по объединению массивов:
    SELECT arrayZip(['a', 'b', 'c'], [5, 2, 1])
    DBeaver пишет ошибку - org.jkiss.dbeaver.model.exec.DBCException: Can't extract array data from JDBC array
    Версия драйвера 0.2.4, версия кх - 20.9.2
  • https://t.me/clickhouse_ru
    привет, я сталкивалась, попробуй в строку перевести если надо посмотреть что получилось
  • https://t.me/clickhouse_ru
    спасибо!
  • @anuriq #185287 08:18 AM, 05 Oct 2020
    добрый день. в 20 версии КХ появилась возможность управления пользователями через SQL. есть ли способы для кластера это делать централизованно?
  • https://t.me/clickhouse_ru
    Дык старый добрый ansible в помощь
  • @anuriq #185289 08:31 AM, 05 Oct 2020
    не, вопрос не про внешние интструменты, это запасной вариант. нет ли встроенных?
  • @1096436770 #185290 08:34 AM, 05 Oct 2020
    Joined.
  • так же как с таблицами:
    "[ON CLUSTER cluster_name]"
  • @anuriq #185292 09:09 AM, 05 Oct 2020
    а при увеличении кластера что делать?
  • @hedgedde #185293 09:12 AM, 05 Oct 2020
    Коллеги, а как решается вопрос денормализации данных в рамках КХ? Допустим одного ко многим или многие к многим? Ведь тогда будет идти массовое дублирование данных в КХ? Или я что-то не понимаю?
  • https://t.me/clickhouse_ru
    @BuddyGlass #185294 09:14 AM, 05 Oct 2020
    Всем привет!
    Ребята, подскажите пожалуйста.
    захожу clickhouse-client на ЛОКАЛЬНЫЙ сервер, выполняю запрос:
    alter table table_name delete where...
    получаю ошибку:
    Code: 999. DB::Exception: Received from localhost:9000. DB::Exception: Connection loss
    КХ последней версии - 20.9.2
    Из-за чего? Что посмотреть? Что подкрутить?

    В Списке мутаций этот запрос соответственно не появляется
  • @Shalomchick #185295 09:16 AM, 05 Oct 2020
    Подскажите пожалуйста после установки последней стабильной (v20.9.2.20-stable) на Fedora 32( 5.8.12-200.fc32.x86_64) при попытке запустить клиента пишет что "ClickHouse client version 20.9.2.20 (official build).
    Connecting to localhost:9000 as user default.
    Code: 210. DB::NetException: Connection refused (localhost:9000)"
    Выводы "lsof -i :8123" и "lsof -i :9000" пусты.
    Вывод "systemctl status clickhouse-server" такой с ошибками:
    "● clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
    Loaded: loaded (/etc/systemd/system/clickhouse-server.service; disabled; vendor preset: disabl>
    Active: activating (auto-restart) (Result: exit-code) since Mon 2020-10-05 12:13:41 MSK; 12s a>
    Process: 1004 ExecStart=/usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml ->
    Main PID: 1004 (code=exited, status=217/USER)
    CPU: 2ms

    окт 05 12:13:41 rpk-db-server systemd[1004]: clickhouse-server.service: Failed at step USER spawnin>
    окт 05 12:13:41 rpk-db-server systemd[1]: clickhouse-server.service: Main process exited, code=exit>
    окт 05 12:13:41 rpk-db-server systemd[1]: clickhouse-server.service: Failed with result 'exit-code'.
    "
    Как пофиксить ?
  • https://t.me/clickhouse_ru
    @egorpopov94 #185296 09:20 AM, 05 Oct 2020
    Всем привет! Кто-нибудь сталкивался со странным поведением rangeHashed-справочников ? dictGet в запросе возвращает по ключу пустое значение при 100% наличии ключа. system reload не помог
  • Тоже бы послушал ответ об денормализации. Судя по всему, джойнить по конкретным строкам (в стиле UUID соединяющий записи в разных таблицах) вряд ли получится, возможно если в твоём случае есть вариант уже по групированным данным джойнить то может работать. Простыми словами если оба селекта в джойне возвращают десятки миллионов строк - не получится
  • @477662432 #185298 09:47 AM, 05 Oct 2020
    ну или получится но очень медленно, хотя для дневных репортов сойдёт.
  • @froderik #185299 09:53 AM, 05 Oct 2020
    привет, подскажите пожалуйста такой момент, правильно ли я понимаю что select данных по партиции делается просто указав в where нужный expr (который использовался при создании таблицы …PARTITION BY expr)? поддержки чего-то подобного нет судя по докам? select * from visits_{partition}
    https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key
    Произвольный ключ партиционирования | Документация ClickHouse

    Произвольный ключ партиционирования Партиционирование данных доступно для таблиц семейства MergeTree (включая реплициров

  • https://t.me/clickhouse_ru
    В кх партиции это часть таблицы, а не отдельные таблицы как в некоторых субд
  • ок, принял
  • https://t.me/clickhouse_ru
    @Artur_Sab #185302 10:08 AM, 05 Oct 2020
    Кто нибудь встречал обёртки над clickhouse-client и clickhouse-local для Python/Java/Go ? Не tcp + native, а именно обёртки через pybind11/jni/panama и т.д.
  • https://t.me/clickhouse_ru
    @ievgenpro #185303 10:24 AM, 05 Oct 2020
    clickpanda если Вы об этом для питон
  • https://t.me/clickhouse_ru
    @alex_nemch #185304 10:25 AM, 05 Oct 2020
    Привет,
    select * from
    (select 1 key, now() as created) a
    right join
    (select 1 key, 2 value, today() as created) b
    on a.key = b.key
    and toDate(a.created) = b.created
    Такой запрос вроде должен работать но он не видит колонку (a.created).
    Это можно как-то обойти?
  • https://t.me/clickhouse_ru
    Попробуйте убрать из верхнего SELECT-а символ *
  • https://t.me/clickhouse_ru
    select a.key, b.key, b.value from
    (select 1 key, now() as created) a
    right join
    (select 1 key, 2 value, today() as created) b
    on a.key = b.key
    and toDate(a.created) = b.created
    та же проблема
  • a.*, b.*

    а так?
  • https://t.me/clickhouse_ru
    всё то же:
    Not found column toDate(created) in block. There are only columns: key, created (version 19.9.5.36 (official build))
  • так?
    select * from
    (select 1 key, toDate(now()) as created) a
    right join
    (select 1 key, 2 value, today() as created) b
    on a.key = b.key
    and a.created = b.created
  • https://t.me/clickhouse_ru
    Заработало.
    Спасибо)
  • у меня и ваш оригинальный запрос работает. версию свою посмотрите, может состарилась
  • (version 19.9.5.36 (official build))

    а ну да, это очень давно и неправда
  • @varyhin #185313 10:36 AM, 05 Oct 2020
    Ребят а подскажите есть ли официальный канал новостей про clickhouse без чата?
  • @varyhin #185314 10:36 AM, 05 Oct 2020
    Обидно пропустил встречу 1 октября
  • @477662432 #185315 10:38 AM, 05 Oct 2020
    А сколько места занимает поле String если не указывать FixedString? Столько сколько значение занимает + int64 для указателя на это значение?
  • замютите чат, когда приходят встречи они пиннятся, и вам придет уведомление
  • https://t.me/clickhouse_ru
    должна быть запись на ютубе
  • @varyhin #185318 10:50 AM, 05 Oct 2020
    Спасибо всем. Запись смотрел. 🔥
  • https://t.me/clickhouse_ru
    @Niklisovik #185319 11:08 AM, 05 Oct 2020
    Добрый день!
    Подскажите пжл , удалять элементы лучше через partition by?
  • Никто на Fedora 32 не ставил ?
  • https://t.me/clickhouse_ru
    что подразумевается под элементами?
    Для эпизодической очистки записей есть ALTER TABLE DELETE
  • https://t.me/clickhouse_ru
    @Niklisovik #185322 11:18 AM, 05 Oct 2020
    Мне сказали, что ALTER TABLE DELETE удаляет данные только окгда ему это удобно, а не сразу
  • https://t.me/clickhouse_ru
    Не совсем, он запускает мутацию она выполняется в фоне, но ты можешь поставить настройку, которая будет ждать окончания выполнения запроса
  • https://t.me/clickhouse_ru
    @Niklisovik #185324 11:20 AM, 05 Oct 2020
    Под элементами подразумеваются строки , которые удовлетворяли бы условиям
  • https://t.me/clickhouse_ru
    @unamedrus #185325 11:21 AM, 05 Oct 2020
    mutations_sync │ 0 │ 0 │ Wait for synchronous execution of ALTER TABLE UPDATE/DELETE queries (mutations). 0 - execute asynchronously. 1 - wait current server. 2 - wait all replicas if they exist.

    SET mutations_sync=1;
    если пользуешься clickhouse-client
  • нет указателей. занимает размер строки плюс 1 байт (на \0)

    (на диске, при условии отсутствия сжатия/кодеков)
  • то есть читая эту колонку нужно прочитать весь файл, прыгать внутри он не сможет на определённое место (хотя это может и не надо по задумке кх)
  • нет, нужно прыгать по засечке на нужную гранулу и читать всю гранулу

    это норма для колоночных таблиц
  • https://t.me/clickhouse_ru
    Мутацию?
    А где это можно посмотртеь ?

    alter table default.default delete where date = '2020-08-09 у меня был такой запрос
    немного не понял про. queries wait & 1,2.'
  • @477662432 #185330 11:26 AM, 05 Oct 2020
    Понял, спасибо! Единственное где можно почитать о том как он разбивает на гранулы, наверное добавило бы мне понимания как всё работает
  • https://t.me/clickhouse_ru
    запросы ALTER TABLE table UPDATE/DELETE в терминологии кх называются мутациями

    посмотреть можно в SELECT * FROM system.mutations
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Ого! Спасибо большое!!!!!!!
  • https://t.me/clickhouse_ru
    Ch только 64 бита. Не собрать 32 битный
  • Не, Fedora у меня 32 версии )
  • https://t.me/clickhouse_ru
    скопировать sql /каталог access_rights
  • Если просто запустить исполняемый файл, то работает. А как его настроить чтобы авматом щапускался, служба вроде есть в systemctl глянул, но КХ не слушает порты...
  • https://t.me/clickhouse_ru
    или пользователя clickhouse нет или права кривые
  • https://t.me/clickhouse_ru
    @den_crane #185339 11:46 AM, 05 Oct 2020
    Кх пишет в лог в stderr
  • Ставил все по мануалу, для rpm пакетов.Там нет создание пользователя...
  • https://t.me/clickhouse_ru
    Ну так баги и в пакетировании бывают
  • Ставить лучше с сорцов?
  • есть видео
  • Круто, а есть линк?
  • Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)

    Приглашаем на Saint HighLoad ++ 2021 20 и 21 сентября 2021, Санкт-Петербург, DESIGN DISTRICT DAA in SPB Программа, билеты и подробности - https://clck.ru/VmKaW -------- РИТ++ 2017, Backend Conf Тезисы: http://backendconf.ru/2017/abstracts/2803.html ClickHouse - высокопроизводительная аналитическая база данных с открытыми исходниками, разработанная в Яндексе. Изначально ClickHouse создавался для задач Яндекс.Метрики, но постепенно нашёл множество применений как внутри Яндекса, так и в других компаниях. Я расскажу, как ClickHouse устроен внутри с акцентом на то, какие у выбранной архитектуры следствия с точки зрения прикладного разработчика. Будут затронуты следующие темы: - Как ClickHouse хранит данные на диске и выполняет запрос, почему такой способ хранения позволяет на несколько порядков ускорить аналитические запросы, но плохо подходит для OLTP и key-value нагрузки. - Как устроена репликация и шардирование, как добиться линейного масштабирования и что делать с eventual consistency. - Как диагностировать…

  • Спасибо
  • https://t.me/clickhouse_ru
    Да при чем тут это. Какой-нибудь chown нужно выполнить. Проверяйте ошибки в /var/log/clickhouse
  • https://t.me/clickhouse_ru
    https://habr.com/ru/post/509540/ текстовый вариант
    Что нужно знать об архитектуре ClickHouse, чтобы его эффективно использовать. Алексей Зателепин (2018г)

    ClickHouse — высокопроизводительная аналитическая база данных с открытыми исходниками, разработанная в Яндексе. Изначально ClickHouse создавался для задач Яндекс.Метрики, но постепенно нашёл...

  • Статус демона КХ стоит в activating, значит не может запуститься, что то мешает
  • https://t.me/clickhouse_ru
    /var/log/clickhouse
  • В файле clickhouse-server.err вижу такое:
    2020.10.05 14:26:27.039704 [ 1516 ] {} <Warning> Access(local directory): File /var/lib/clickhouse/access/users.list doesn't exist
    2020.10.05 14:26:27.039762 [ 1516 ] {} <Warning> Access(local directory): Recovering lists in directory /var/lib/clickhouse/access/
  • https://t.me/clickhouse_ru
    Что говорит id clickhouse
  • Такого пользователя нет
  • https://t.me/clickhouse_ru
    переустановите пакет и снова проверьте, может появится
  • https://t.me/clickhouse_ru
    А как вы проверяте? в словарь можно select сделать и увидеть как таблицу
  • https://t.me/clickhouse_ru
    разобрался. обращался к distributed-таблице, а словарь обновился не на всех нодах. system reload on cluster помог.
  • При установке выдается такое:
    Synchronizing state of clickhouse-server.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
    Executing: /usr/lib/systemd/systemd-sysv-install enable clickhouse-server
    Failed to execute /usr/lib/systemd/systemd-sysv-install: Нет такого файла или каталога
    предупреждение: %post(clickhouse-server-20.9.2.20-2.noarch) scriptlet failed, exit status 1

    Error in POSTIN scriptlet in rpm package clickhouse-server
  • https://t.me/clickhouse_ru
    сделайте багрепорт на гитхабе
  • https://t.me/clickhouse_ru
    В /etc/systemd/system/clickhouse-server.service какой пользователь указан? Он создан в системе? Вывод systemd намекает что он не может стартануть от имени указанного юзера
  • [Unit]
    Description=ClickHouse Server (analytic DBMS for big data)
    Requires=network-online.target
    After=network-online.target

    [Service]
    Type=simple
    User=clickhouse
    Group=clickhouse
    Restart=always
    RestartSec=30
    RuntimeDirectory=clickhouse-server
    ExecStart=/usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid
    LimitCORE=infinity
    LimitNOFILE=500000
    CapabilityBoundingSet=CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_NICE

    [Install]
    WantedBy=multi-user.target
  • https://t.me/clickhouse_ru
    а id clickhouse что говорит?
  • Такого пользователя нет
  • https://t.me/clickhouse_ru
    Поэтому и не стартует. Нужно его создать
  • И группу надо? а Какие права и куда надо дать ?
  • https://t.me/clickhouse_ru
    @Niklisovik #185365 12:21 PM, 05 Oct 2020
    Ребят, можете сказать :
    alter delete table - запускает удаление на бэке ?
    если стоит задача мгновенного удаления, стоит использовать partition by?
    или есть какие-то другие эффективные методы удаления
  • https://t.me/clickhouse_ru
    У меня вот так создаётся, создать и попробовать стартануть.
    useradd -d /var/lib/clickhouse -U --shell /sbin/nologin clickhouse
  • @928029209 #185367 12:31 PM, 05 Oct 2020
    добрый день,
    возможно ли в кликхаусе сделать такую схему, когда в кластере 4 ноды, все имеют sdd диски, и только две имеют hdd. Hot data былабы на всех нодах в ssd, а cold data только на двуь, на одной ноде в каждом шарде на hdd? Cold data - это данные старше установленного ТТЛ'а, и то, что они былибы только на одной реплике, в принципе, не проблема для нашего кейса.
  • https://t.me/clickhouse_ru
    Alter table drop partition удаляет все строки партиции. Если вы об этом
  • https://t.me/clickhouse_ru
    Обобщённее скажу
    Мне нужно будет удалять все строчки за определённую дату у определённых приложений
    т.е мне нужно будет уметь быстро удалять запси по приложениям и дате
    Через что это можно сделать ?
  • https://t.me/clickhouse_ru
    нет такого нет.
    Можно переатачивать партиции в другую таблицу, а из первой удалять.
  • https://t.me/clickhouse_ru
    ни через что. Нету такого в КХ.
  • https://t.me/clickhouse_ru
    @Niklisovik #185372 12:46 PM, 05 Oct 2020
    Как можно решить данную проблему ?
    Создавать для каждого приложения отдельную таблицу?
  • https://t.me/clickhouse_ru
    сколько приложений у вас? Сколько таблиц будет?
  • https://t.me/clickhouse_ru
    @Niklisovik #185374 12:47 PM, 05 Oct 2020
    5-20
  • понял. Спасибо
  • https://t.me/clickhouse_ru
    @Niklisovik #185376 12:48 PM, 05 Oct 2020
    по каждому приложению 2 таблицы
  • https://t.me/clickhouse_ru
    @Niklisovik #185377 12:48 PM, 05 Oct 2020
    2-3
  • https://t.me/clickhouse_ru
    можно тогда partition by (application, toYYYYMMDD() ) -- это будет тоже самое что отдельные таблицы
    и потом alter table drop partition ('my_app', 20201010)
  • https://t.me/clickhouse_ru
    @Niklisovik #185379 12:51 PM, 05 Oct 2020
    А по времени оно будет быстро отрабатывать ?
  • https://t.me/clickhouse_ru
    @Niklisovik #185380 12:51 PM, 05 Oct 2020
    +- так же , как если бы я создал отдельные тблицы для каждого приложения?
  • https://t.me/clickhouse_ru
    почти всегда да.

    и в итоге конечно вы потрахаетесь прилично пару недель и возьмете postgresql.
  • https://t.me/clickhouse_ru
    @Niklisovik #185382 12:53 PM, 05 Oct 2020
    почему его ?
  • https://t.me/clickhouse_ru
    а почему нет?
  • https://t.me/clickhouse_ru
    @Niklisovik #185384 12:54 PM, 05 Oct 2020
    будут другие проблемы , помимо задержки в удалении?
  • https://t.me/clickhouse_ru
    Ну, у меня есть сейчас и постгри и кликхаус
    хранить большие данные лучше в кликхаусе , не помниаю , почему перейду в постгри
  • https://t.me/clickhouse_ru
    нафига вы взяли КХ, в нем данные иммьютабл.
  • @ViacheslavNefedov #185387 12:56 PM, 05 Oct 2020
    хранить лучше в кликхаузе. Удалять в клике постоянно - боль
  • https://t.me/clickhouse_ru
    хранить? КХ аналитическая субд, она для group by запросов
  • https://t.me/clickhouse_ru
    @den_crane #185389 12:57 PM, 05 Oct 2020
    хранить надо в текстовых файлах
  • https://t.me/clickhouse_ru
    не понял

    данные неизменимы ?
    Если я правильно понял, я не использую никаких update, я именно удаляю и загружаю те же обновлённые данные в БД.
  • https://t.me/clickhouse_ru
    >я именно удаляю и загружаю те же обновлённые данные в БД.

    дак вот не поддерживает КХ такой паттерн. Не предназначен. Нету такого в клик-стриме
  • https://t.me/clickhouse_ru
    @Niklisovik #185392 01:09 PM, 05 Oct 2020
    окей
    а почему ?
    есть метод insert,есть alter/drop partition почему этим нельзя пользоваться на постоянке ?
  • https://t.me/clickhouse_ru
    потому drop partition не гарантирует удаление записей на выключенных в этот момент репликах и потому что drop partition может бесконечно долго работать ожидая конца мержа. И потому что слишком мелкое партиционирование (partition by application) прямой путь к пиздецу (прошу прощения за фр., других слов подходящих в лексиконе нету)
  • https://t.me/clickhouse_ru
    @den_crane #185394 01:16 PM, 05 Oct 2020
    все команды alter table в общем-то для выполнения "вручную" под наблюдением человека, их нельзя использовать в ежедневных бизнес-процессах.
  • Centos/8: sysV vs systemd mess. Service status is 'stopped' although it is running · Issue #14298 · ClickHouse/ClickHouse

    Description Whenever I run sudo service clickhouse-server status I get clickhouse-server service is stopped, although the server is actually running. I can verify that it is running with the follow...

  • https://t.me/clickhouse_ru
    А о каких репликах речь ?
    Про бесконечный мерж, вроде, понял
    на счёт партицирования (по дате ,приложению) , так не будет лучше ?
  • https://t.me/clickhouse_ru
    ну конечно нет. facepalm.jpg
  • https://t.me/clickhouse_ru
    хорошо, буду знать, спасибо
  • https://t.me/clickhouse_ru
    >на счёт партицирования (по дате ,приложению)

    (по дате ,приложению)
    (приложению, по дате)
    это одно и тоже.
  • https://t.me/clickhouse_ru
    @den_crane #185400 01:19 PM, 05 Oct 2020
    >А о каких репликах речь ?
    o таблицах Replicated
  • https://t.me/clickhouse_ru
    @Shipa988 #185401 01:20 PM, 05 Oct 2020
    Подскажите как вставить в AggregatingMergeTree таблицу данные которые уже агрегированы. Ошибка вида
    Conversion from UInt64 to AggregateFunction(count, UInt64) is not supported:
    Пробовал arrayReduce('countState',value)-но в столбце value уже посчитанное число-соответственно arrayReduce('countState',value) выдает 1 для 1 значения в столбце а нужно содержащееся там UInt64
  • https://t.me/clickhouse_ru
    initializeAggregation

    https://github.com/PerformanceVision/ClickHouse/blob/569a89280cdc5818aae9a6bb5fd9fe753769814d/tests/queries/0_stateless/01356_initialize_aggregation.sql

    Во вторых вы зря вообще используете AggregateFunction(count -- это неправильно. Вам нужна SimpleAggregate(sum, UInt64) -- это намного быстрее, проще в использовании и занимает меньше места на диске и особенно в памяти.
  • https://t.me/clickhouse_ru
    спасибо, пробую
  • https://t.me/clickhouse_ru
    @den_crane #185404 01:33 PM, 05 Oct 2020
    упс initializeAggregation для count тоже как arrayReduce 1-ку выдает. Печаль.
  • https://t.me/clickhouse_ru
    @Shipa988 #185405 01:34 PM, 05 Oct 2020
    да
  • https://t.me/clickhouse_ru
    @Shipa988 #185406 01:34 PM, 05 Oct 2020
    ((
  • https://t.me/clickhouse_ru
    @den_crane #185407 01:35 PM, 05 Oct 2020
    в общем-то countState в любом случае ненужная хрень, обычно используют sumState или просто sum (sumState тоже не нужен, там нет State).
  • https://t.me/clickhouse_ru
    @Shipa988 #185408 01:35 PM, 05 Oct 2020
    суть проблемы в том что нужно перегнать данные которые уже агрегированы в AggregatingMergeTree
  • https://t.me/clickhouse_ru
    AggregatingMergeTree -- уже существует или он новый?
  • https://t.me/clickhouse_ru
    @Shipa988 #185410 01:36 PM, 05 Oct 2020
    будет новый
  • https://t.me/clickhouse_ru
    @Shipa988 #185411 01:37 PM, 05 Oct 2020
    но потом на него будет смотреть мат вью и агрегировать count
  • https://t.me/clickhouse_ru
    ну так не надо это все вообще.

    просто AggregatingMergeTree c SimpleAggregateFunction
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @den_crane #185414 01:39 PM, 05 Oct 2020
    SimpleAggregateFunction -- обычные simple значения , без state, и не нужно Merge делать, просто sum( ) (похоже на SummingMT)
  • https://t.me/clickhouse_ru
    т.е. отличается только в том что хранится не в бинарном виде а в типе столбца?
  • https://t.me/clickhouse_ru
    @svbgv #185416 01:41 PM, 05 Oct 2020
    Привет. CH из yandex/clickhouse-server:20.1.11.73, кластер из четырех нод:

    node layer shard replica
    -----------------------------
    A 01 01 01
    B 01 01 02
    C 01 02 01
    D 01 02 02

    Создаю на всех нодах таблицу
    CREATE TABLE DBName.TableName (`Foo` String, `Bar` UInt64 DEFAULT CAST(now(), 'UInt64')) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/DBName.TableName', '{replica}') PARTITION BY (toYYYYMM(toDateTime(Bar / 1000, 'UTC')), Event) ORDER BY (Foo, Bar) SETTINGS index_granularity = 8192
    и наполняю ее данными.

    Хочу проверить холодный старт, штатно останавливаю CH и при попытке запустить его снова, ноды A, B и C встают, а D жалуется
    <Error> Application: DB::Exception: The local set of parts of table DBName.TableName doesn't look like the set of parts in ZooKeeper: 3.47 million rows of 3.47 million total rows in filesystem are suspicious

    Окей, дропаю DBName.TableName и пытаюсь force_restore_data, на что получаю
    <Error> Application: DB::Exception: Duplicate interserver IO endpoint: DataPartsExchange:/clickhouse/tables/01-02/DBName.TableName/replicas/02
    При этом в зукипере никакого дублирования там нет, вся информация корректна.

    Дропаю полностью DBName.TableName, пересоздаю-наполняю по новой - результат тот же самый.
    Складывается подозрение, что где-то криво сконфигурирован раздел <macros>, но нет - везде правильно.
    Раньше не пользовались layer'ами и такой проблемы не возникало. Нет ли каких известных подобных проблем с ними?
    Так же стоит отметить, что TCP-порт на всех нодах не 9000 (на уровне docker проброс) и в он <remote_servers> он указывается правильный, однако в ZK в /clickhouse/tables/01-02/DBName.TableName/replicas/02/host все равно tcp_port: 9000, хотя а А-B это не мешает, возможно правильный порт стоит указать в конфиге где-то еще?
  • https://t.me/clickhouse_ru
    и данные получаеся после внесения не доаггрегируется?
  • https://t.me/clickhouse_ru
    *State -- это какое-то значение + state, типа для avgState там (sum,cnt)
    для sumState там хранится (sum, 0)
    для countState хранится (count,0)
    для minState(min,0)
    т.е. State бессмысленны для многих функций и замедляют КХ, поэтому были дописаны SimpleAggregate
  • https://t.me/clickhouse_ru
    что? конечно все просуммируется в мержах
  • @ruslan_chadin #185420 01:46 PM, 05 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    Спасибо, получилось то что нужно👍🏻
  • https://t.me/clickhouse_ru
    скорее всего проблема в макрос select * from system.macros на всех 4, layer ни при чем, он кстати нужен если у вас огромный кластер с сотнями нод, чтобы делать sub-кластеры.

    еще надо проверить что все зукиперы в одном ансамбле, а не standalone

    >Duplicate interserver IO endpoint
    это про hostname -f (interserver_http_host)

    кстати репликация работает через порт 9009
  • https://t.me/clickhouse_ru
    @EvgenyVinogradov #185423 02:35 PM, 05 Oct 2020
    Коллеги, подскажите куда копать в случае ошибки?
    Code: 234, e.displayText() = DB::Exception: No active replica has part 20201004_92_92_0 or covering part (version 19.15.2.2 (official build))
    Помогло, но временно, удаление znode is_active для этой (сбойной) реплики и создание znode для ругой реплики (из таблицы/поля replication_queue/source_replica ). Но после загрузки данных в таблицу опять эта же ошибка.
  • https://t.me/clickhouse_ru
    Some merges may stuck · Issue #10368 · ClickHouse/ClickHouse

    This bug is discovered on Yandex.Metrica servers. If there is assigned merge but some parts in between of the range of parts to merge get lost on all replicas, the merge cannot proceed and the foll...

  • https://t.me/clickhouse_ru
    @den_crane #185425 02:38 PM, 05 Oct 2020
    >No active replica has part 20201004_92_92_0
    это не ошибка, это просто следствие перезагрузки железа
  • https://t.me/clickhouse_ru
    @svbgv ↶ Reply to #185422 #185426 02:39 PM, 05 Oct 2020
    Нашел проблему, существовала таблица Test.TableName, которая в метадате определялась как ENGINE = ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/DBName.TableName', '{replica}') , отсюда Duplicate interserver IO endpoint и возникала.

    Про 9009 порт знал, просто смутило что в ЗК указывается 9000, когда в remote_servers написано другое, но работе это не мешало.

    Спасибо что уделили время
  • https://t.me/clickhouse_ru
    очень важно понять что remote_servers не имеет отношения к репликации.
    Движок Replicated не использует remote_servers.
    remote_servers нужен только движку Distributed
  • https://t.me/clickhouse_ru
    это понятно, но почему-то чинится только на неизменяемое состояние. Очевидно, replication queue очищается после пересоздания znode is_active, но проблема остается.
  • https://t.me/clickhouse_ru
    я не понимаю что вы сделали, особенно меня смущает "создание znode для ругой реплики"
  • https://t.me/clickhouse_ru
    @svbgv ↶ Reply to #185427 #185430 02:43 PM, 05 Oct 2020
    Принял, почитаю/поковыряю внимательнее, еще раз спасибо
  • @1382671541 #185431 02:44 PM, 05 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @ilyagryaznev #185432 02:52 PM, 05 Oct 2020
    Joined.
  • @1382671541 #185433 02:53 PM, 05 Oct 2020
    привет! а есть ли какой-нибудь нибудь способ реализации табличной функции (интересует в частности outer apply) в clickhouse? нужно для каждой строки с ключом [mac , timestamp] вернуть набор значений метрики для этого mac внутри окна [timestamp - заданный интервал, timestamp]
  • https://t.me/clickhouse_ru
    с помощью массивов и groupArray
  • https://t.me/clickhouse_ru
    прошу прощения за слоупока, но как должно быть?
  • https://t.me/clickhouse_ru
    @ilyagryaznev #185436 03:04 PM, 05 Oct 2020
    тега <password> не должно быть вообще?
  • https://t.me/clickhouse_ru
    ???? там речь про сетевые ограничения была, про "фаервол" в КХ
  • так вопрос в том, как сформировать этот массив, т.к.
    1. timestamp не уникален, т.е границы окна start date - end date у строк разные
    2. mac не обязательно имеет все заполненные timestamp, т.е. взять просто последние 24 значения тоже нельзя, потому что не факт, что это будут данные за 24 часа
  • https://t.me/clickhouse_ru
    Я вижу ваш вопрос так

    Есть у нас куча массивов.
    Один массив -- один mac
    Внутри массива туплы (timestamp, value)
    Отсортировано по убыванию timestamp
    Ну разбивайте этот массив на подмассивы как хотите, например по 100 значений, или по значениям timestamp, или по value
    И считайте внутри подмассивов.
  • спасибо!
  • https://t.me/clickhouse_ru
    @bralbral #185441 03:58 PM, 05 Oct 2020
    Добрый вечер. Строка статистики весит ~ 1мб. Верно ли я понимаю, что стоит использовать адаптивную гранулярность и уже не по количеству строк, а по размеру. И второй вопрос - как лучше хранить base64 ? Загонять в string?
  • https://t.me/clickhouse_ru
    @pnm000 #185442 04:12 PM, 05 Oct 2020
    Скажите а кто то знает может ли быть индекс построен на основе определенного поля из который храниться как Array?
  • адаптивная гранулярность включена по умолчанию
    base64 - это уже стринг. еси это base64 от 8byte, можно в uint64
  • можно по любому выражению строить индекс, но польза может быть сомнительна
  • https://t.me/clickhouse_ru
    Понял, в таком случае настройку index_granularity_bytes нужно увеличивать или как? я не совсем понимаю. Она в дефолте 10 мб.
  • enable_mixed_granularity_parts надо включить
  • можно увеличить/уменьшить, смотря чего вы добиваетесь
  • https://t.me/clickhouse_ru
    конечно же уменьшение выполнения времени запроса =)
  • ок, добавьте процессоров и увеличьте скорость дисков =)
  • https://t.me/clickhouse_ru
    само собой, мне было интересно до какого момента можно выкручивать index_granularity_bytes. Дефолтное значение , думаю, явно не подойдет.
  • не подойдет потому что гладиолус. да =)
  • https://t.me/clickhouse_ru
    понял, тогда для начала включу enable_mixed_granularity_parts , а там видно будет.
  • enable_mixed_granularity_parts - это чтобы старые неадаптивные с новыми работали.
    у вас скорее всего все адаптивные, можно не трогать.

    если не устраивает количество строк в гранулах (чаще лукап по индексу) - уменьшайте index_granularity_bytes.
    если переусердствуете - будут просто тормоза на range сканах индекса ну и индекс будет много весить в памяти
  • https://t.me/clickhouse_ru
    Я что-то не понимаю - если размер уменьшить, то и количество строк в них будет помещаться меньше
  • https://t.me/clickhouse_ru
    @bralbral #185455 04:33 PM, 05 Oct 2020
    How understand the granularity and block in ClickHouse?

    I am not clear about these two words. Whether does one block have a fixed number of rows? Whether is one block the minimum unit to read from disk? Whether are different blocks stored in different ...

  • https://t.me/clickhouse_ru
    @bralbral #185456 04:33 PM, 05 Oct 2020
    Разобрался , спасибо.
  • @231864534 #185457 05:26 PM, 05 Oct 2020
    Всем привет! Подскажите, пожалуйста, какую настройку покрутить, чтобы увеличить блоки вставки через INSERT SELECT (для MergeTree)? А то плодится куча маленьких партов. Увеличение max_block_size не помогло
  • https://t.me/clickhouse_ru
    Может неправильно партиционирование сделали? Стандартно КХ делает помесячные партиции
  • max_insert_block_size - чем выше тем меньше партов
    min_insert_block_size_rows - чем выше тем меньше партов
    min_insert_block_size_bytes - чем выше тем меньше партов
    max_insert_threads - чем выше тем больше партов
  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #185444 #185460 05:47 PM, 05 Oct 2020
    Ясно спасибо
  • https://t.me/clickhouse_ru
    вот пример https://gist.github.com/den-crane/21a84a9a8a9e5203195a7f023a0ec363
    100млн. один парт
  • Хм, в доке было, что эти настройки бессмысленные при insert select..
  • Спасибище!
  • где о_О?
  • https://t.me/clickhouse_ru
    где ? давайте поправим
  • Тут https://clickhouse.tech/docs/ru/operations/settings/settings/

    Про max_insert_block_size
    "При использовании INSERT SELECT, настройка так же не имеет смысла, так как данные будут вставляться теми блоками, которые вышли после SELECT-а."
    Настройки | Документация ClickHouse

    Настройки distributed_product_mode Изменяет поведение распределенных подзапросов. ClickHouse применяет настройку в тех с

  • https://t.me/clickhouse_ru
    @den_crane #185467 06:15 PM, 05 Oct 2020
    да, надо поточнее наверное описать, но опять же всю правду написать не получится, все еще зависит от движка из которого читаем. Полное описание займет 8 страниц.
  • https://t.me/clickhouse_ru
    @adsrun #185468 06:35 PM, 05 Oct 2020
    Если есть трафик на одну таблицу с разными гео , сайтами форматами, действиями
    Куда и как это лучше оформить ..

    sid - сайтов
    tid - форматами
    country - 10 стран например
    do - see , click, close

    Чтобы дальше это как то мержить с таблицы типа MergeeTree
    сейчас country типа = RU BY
    sid - числа
    tid - числа
    do - text

    Как то нужно агрегацию сделать .. но оно вроде только по числам работать будет ..
    Чего делать? ))
  • @125427421 #185469 06:37 PM, 05 Oct 2020
    Ребят, select с groupArrayArray и Group by прекрасно работает в тестовом окружении 8 ядер и валится на нехватке озу на тех же данных , но в проде на 48 ядрах.

    опытным путем установили, что aggregation_memory_efficient_merge_threads=8 норм, а выше уже плохо.

    Вопрос - можно ли сделать так, чтобы не думать об этом параметре?
  • @125427421 #185470 06:38 PM, 05 Oct 2020
    e.displayText() = DB::Exception: Memory limit (for query) exc
    eeded: would use 110.00 GiB (attempt to allocate chunk of 4234432 bytes), maximum: 110.00 GiB: While executing SourceFromNativeStream (version 20.8.3.18
  • установить его в конфиг?
  • https://t.me/clickhouse_ru
    в каком смысле агрегация? Что агрегировать будем?

    RU
    +
    US

    что должно получиться?
  • https://t.me/clickhouse_ru
    @adsrun #185473 06:43 PM, 05 Oct 2020
    Ни чего где то на выходе типа RU 2 // US 4
  • https://t.me/clickhouse_ru
    ну так SummingMT order by (do , country sid, tid)
  • ну вариант может быть и не плохой. но я так понимаю , что проблема с памятью зависит от данных и если данных у меня станет больше (записи тяжелее), то настройку придется опять тюнить опять.. Причем речь идет об одной таблице, с другими таких проблем нет
  • @125427421 #185477 06:47 PM, 05 Oct 2020
    я к тому, что нет ли какого-то режимва "авто", который бы сам определял хватит ли озу для merge при группировке или нет? или это мне надо самостоятельно сначала посчитать число байт.. а потом уже делать запрос с group by , предварительно установив aggregation_memory_efficient_merge_threads в какое-то расчетное значение
  • на этот момент нет вроде. можно только эвристикой через приложение добавлением в SETTINGS
  • @125427421 #185479 06:50 PM, 05 Oct 2020
    Joined.
  • спасибо. будем думать
  • https://t.me/clickhouse_ru
    @adsrun ↶ Reply to #185475 #185481 07:03 PM, 05 Oct 2020
    Ну так агрегации по этим полям не будет - do , country ..
    и при выборке их все печитывать придется ,а не какие то уники брать
    так как они текстовые ... есть ли смысл какой то где склеивать JSON ( или не JSON ) для этого
    чтобы потом выборку делать типа

    sid = 1 , tid = 123 , RU>1 , desktop > 1 , click>1

    При вычитке же если имя поля в таблице не упомянать оно и не будет дергаться?
    Не дешевле тут добавть в таблицу 200 полей с именами стран ? и ставить = 1 на страну нужную ?
  • https://t.me/clickhouse_ru
    summingMT последний абзац доки, поля заканчиваются на ....Map, nested....
    sumMap( ['RU', 'US'] , [ 2, 4 ] )
  • @maslov_km #185483 07:45 PM, 05 Oct 2020
    Всех приветствую. Осторожно, возможно дилетантский вопрос! В оф. документации сказано, что "Данные рекомендуется вставлять пачками не менее 1000 строк или не более одного запроса в секунду.". Кто-нибудь контролирует это, если да, то как?
  • https://t.me/clickhouse_ru
    @orantius #185484 07:46 PM, 05 Oct 2020
    никак не контролирует, просто всё начинает портиться пока не сломается.
  • там есть сложный контроль в фоне, который сначала начнет тормозить, потом вообще перестанет принимать вставки
  • а руками самому как-то можно отслеживать (про 1000 строк понятно), что вставка выполняется примерно раз в секунду?
  • https://t.me/clickhouse_ru
    @orantius #185487 07:52 PM, 05 Oct 2020
    да, кладете руки спать на секунду после каждой вставки
  • https://t.me/clickhouse_ru
    @adsrun ↶ Reply to #185482 #185488 07:53 PM, 05 Oct 2020
    Спасибо. 👌
  • Ну есть метрики которые можно поллить
    Или можнл поллить число партов в таблице
  • https://t.me/clickhouse_ru
    это типа рекомендуемые параметры, можно просто раз в сек. просыпаться и делать инсерт.

    я делаю по другому,
    после каждого инсерта проверяю
    select value from system.asynchronous_metrics where metric = 'MaxPartCountForPartition'
    если там больше условно 100, останавливаюсь

    я в курсе что КХ умеет тоже самое :)
    но все несколько сложнее, мне можно вставить в другой шард
    но при этом контроллируется чтобы в шардах в скользящих 24 часах примерно одинаковое кол-во.
  • Спасибо, буду экспериментировать)
  • https://t.me/clickhouse_ru
    @dburianov #185492 09:22 PM, 05 Oct 2020
    Подскажите, что не так
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @nyoroon #185495 09:24 PM, 05 Oct 2020
    покажи show create table
  • https://t.me/clickhouse_ru
    @dburianov #185496 09:24 PM, 05 Oct 2020
    Делаю виборку по remote_addr, находит несколько строк, копирую токен пусто
  • https://t.me/clickhouse_ru
    @nyoroon #185497 09:24 PM, 05 Oct 2020
    там какой движок?
  • https://t.me/clickhouse_ru
    @orantius #185498 09:25 PM, 05 Oct 2020
    и какая версия
  • https://t.me/clickhouse_ru
    @dburianov #185499 09:25 PM, 05 Oct 2020
    SHOW CREATE TABLE ngx_logs.logs_v1_buffer

    ┌─statement──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │ CREATE TABLE ngx_logs.logs_v1_buffer
    (
    remote_addr String,
    remote_addr_int UInt32 MATERIALIZED IPv4StringToNum(remote_addr),
    remote_user String,
    http_x_forwarded_for String,
    time_local String,
    logtime DateTime,
    Date Date DEFAULT toDate(logtime),
    logtimeUnixTimestamp UInt32 MATERIALIZED toUnixTimestamp(logtime),
    request String,
    status UInt16,
    body_bytes_sent UInt32,
    http_referer String,
    http_user_agent String,
    request_time Float64,
    http_Host String,
    server_addr String,
    server_addr_int UInt32 MATERIALIZED IPv4StringToNum(server_addr),
    server_name String,
    upstream_connect_time Float64,
    upstream_header_time Float64,
    upstream_response_time Float64,
    upstream_cache_status String,
    upstream_addr String,
    upstream_addr_int UInt32 MATERIALIZED IPv4StringToNum(upstream_addr),
    upstream_status String,
    gzip_ratio Float64,
    scheme Enum8('unknown' = 0, 'http' = 1, 'https' = 2),
    cookie_x-referer String,
    request_id String,
    request_length UInt32,
    bytes_sent UInt32,
    header_bytes UInt32 MATERIALIZED bytes_sent - body_bytes_sent,
    type String,
    host String,
    host_int UInt32 MATERIALIZED IPv4StringToNum(host),
    logsource String,
    req_method String,
    req_user_hash String,
    req_server_tt String,
    req_stream_name String,
    req_stream_type String,
    req_user_token String,
    req_user_id String,
    req_user_vip String,
    req_user_dip String,
    req_user_pip String,
    req_user_hip String,
    req_server_http String,
    req_stream_part UInt32,
    req_path String,
    xusertoken String,
    req_false String,
    user_agent.minor String,
    user_agent.build String,
    user_agent.os String,
    user_agent.device String,
    user_agent.major String,
    user_agent.os_name String,
    user_agent.name String,
    user_agent_os_major String,
    user_agent_patch String,
    user_agent_os_minor String,
    user_agent_minor String,
    user_agent_build String,
    user_agent_os String,
    user_agent_device String,
    user_agent_major String,
    user_agent_os_name String,
    user_agent_name String,
    geocode String
    )
    ENGINE = Buffer('ngx_logs', 'logs_v1_2', 16, 10, 100, 10000, 1000000, 10000000, 100000000) │
    └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

    1 rows in set. Elapsed: 0.047 sec.
  • https://t.me/clickhouse_ru
    @dburianov #185500 09:25 PM, 05 Oct 2020
    ClickHouse client version 20.8.2.3 (official build).
    Connecting to localhost:9000 as user default.
    Connected to ClickHouse server version 20.8.2 revision 54438.
  • https://t.me/clickhouse_ru
    @nyoroon #185501 09:26 PM, 05 Oct 2020
    ну ты запрашиваешь данные из буффер таблицы, которая хранит данные только до вставки
  • https://t.me/clickhouse_ru
    @dburianov #185502 09:26 PM, 05 Oct 2020
    Если запрашивать из таблици, а не буфера результат тотже
  • https://t.me/clickhouse_ru
    @nyoroon #185503 09:26 PM, 05 Oct 2020
    делай селекты из ngx_logs.logs_v1_2
  • https://t.me/clickhouse_ru
    @dburianov #185504 09:28 PM, 05 Oct 2020
    Делал, не помогает
  • https://t.me/clickhouse_ru
    @nyoroon #185505 09:29 PM, 05 Oct 2020
    покажи show create table ngx_logs.logs_v1_2
  • https://t.me/clickhouse_ru
    @dburianov #185506 09:29 PM, 05 Oct 2020
    CREATE TABLE ngx_logs.logs_v1_2
    (
    remote_addr String,
    remote_addr_int UInt32 MATERIALIZED IPv4StringToNum(remote_addr),
    remote_user String,
    http_x_forwarded_for String,
    time_local String,
    logtime DateTime,
    Date Date DEFAULT toDate(logtime),
    logtimeUnixTimestamp UInt32 MATERIALIZED toUnixTimestamp(logtime),
    request String,
    status UInt16,
    body_bytes_sent UInt32,
    http_referer String,
    http_user_agent String,
    request_time Float64,
    http_Host String,
    server_addr String,
    server_addr_int UInt32 MATERIALIZED IPv4StringToNum(server_addr),
    server_name String,
    upstream_connect_time Float64,
    upstream_header_time Float64,
    upstream_response_time Float64,
    upstream_cache_status String,
    upstream_addr String,
    upstream_addr_int UInt32 MATERIALIZED IPv4StringToNum(upstream_addr),
    upstream_status String,
    gzip_ratio Float64,
    scheme Enum8('unknown' = 0, 'http' = 1, 'https' = 2),
    cookie_x-referer String,
    request_id String,
    request_length UInt32,
    bytes_sent UInt32,
    header_bytes UInt32 MATERIALIZED bytes_sent - body_bytes_sent,
    type String,
    host String,
    host_int UInt32 MATERIALIZED IPv4StringToNum(host),
    logsource String,
    req_method String,
    req_user_hash String,
    req_server_tt String,
    req_stream_name String,
    req_stream_type String,
    req_user_token String,
    req_user_id String,
    req_user_vip String,
    req_user_dip String,
    req_user_pip String,
    req_user_hip String,
    req_server_http String,
    req_stream_part UInt32,
    req_path String,
    xusertoken String,
    req_false String,
    user_agent.minor String,
    user_agent.build String,
    user_agent.os String,
    user_agent.device String,
    user_agent.major String,
    user_agent.os_name String,
    user_agent.name String,
    user_agent_os_major String,
    user_agent_patch String,
    user_agent_os_minor String,
    user_agent_minor String,
    user_agent_build String,
    user_agent_os String,
    user_agent_device String,
    user_agent_major String,
    user_agent_os_name String,
    user_agent_name String,
    geocode String
    )
    ENGINE = MergeTree()
    PARTITION BY Date
    ORDER BY (Date, logtime, remote_addr_int)
    TTL Date + toIntervalWeek(10)
    SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    Как я читал доку, правильно через буферную таблицу запрашивать, тогда поподают и данньіе из нее, но блокируется вставка
  • https://t.me/clickhouse_ru
    @nyoroon #185508 09:34 PM, 05 Oct 2020
    а, действительно, не пользовался никогда
  • https://t.me/clickhouse_ru
    так Date разный
  • https://t.me/clickhouse_ru
    и где это написано?
  • 06 October 2020 (215 messages)
  • @its_amalikov #185511 03:23 AM, 06 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    Блин, вот я стормозил
  • https://t.me/clickhouse_ru
    @dburianov #185513 03:52 AM, 06 Oct 2020
    Спасибо
  • @Shalomchick #185514 05:44 AM, 06 Oct 2020
    Всем привет. После вчерашних мытарств оставил issue - https://github.com/ClickHouse/ClickHouse/issues/15644
    Можете пинать или закидывать facepalm.jpg )))
    Clickhouse 20.9.2.20 install on Fedora 32 SysV failed · Issue #15644 · ClickHouse/ClickHouse

    When installing ClickHouse 20.9.2.20-stable on fresh installed Fedora 32 (5.8.12-200.fc32.x86_64) I get following: dnf install clickhouse-server clickhouse-client Последняя проверка окончания срока...

  • https://t.me/clickhouse_ru
    @GanSRX #185515 06:48 AM, 06 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    Пользователя то так и не не создали?
  • Создавал. Не помогла переустановка и с пользователем
  • https://t.me/clickhouse_ru
    А с пользователем какая ошибка у systemd? Если ругалось на пользователя, думаю что-то другое теперь должно появиться.
    useradd -d /var/lib/clickhouse -U --shell /sbin/nologin clickhouse
  • systemctl status clickhouse-server
    ● clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
    Loaded: loaded (/etc/systemd/system/clickhouse-server.service; disabled; vendor preset: disabl>
    Active: activating (auto-restart) (Result: exit-code) since Tue 2020-10-06 10:03:05 MSK; 1s ago
    Process: 3132 ExecStart=/usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml ->
    Main PID: 3132 (code=exited, status=232/ADDRESS_FAMILIES)
    CPU: 71ms

    окт 06 10:03:05 rpk-db-server systemd[1]: clickhouse-server.service: Main process exited, code=exit>
    окт 06 10:03:05 rpk-db-server systemd[1]: clickhouse-server.service: Failed with result 'exit-code'.
  • Изначально ошибка при установке - он не может окончательно установить КХ как демон systemd
  • https://t.me/clickhouse_ru
    Ошибка с пользователем ушла.
    status=232/ADDRESS_FAMILIES я не знаю такого статуса ( Возможно selinux включен на машине. В логах кликах ничего не появляется?
  • Если КХ запускать просто вручную, то в логах ничего такого...
  • https://t.me/clickhouse_ru
    Думаю потому что вручную он запускается от юзера root, а systemd пытается запустить от пользователя clickhouse
  • https://t.me/clickhouse_ru
    sestatus что пишет?
  • sestatus
    SELinux status: enabled
    SELinuxfs mount: /sys/fs/selinux
    SELinux root directory: /etc/selinux
    Loaded policy name: targeted
    Current mode: enforcing
    Mode from config file: enforcing
    Policy MLS status: enabled
    Policy deny_unknown status: allowed
    Memory protection checking: actual (secure)
    Max kernel policy version: 33
  • https://t.me/clickhouse_ru
    @nyoroon #185526 07:19 AM, 06 Oct 2020
    Ну тогда либо добавляйте в него правила для кх, либо отключайте
  • Скорее всего. Но я пробовал создать этого юзера, но все так же..
  • Просвятите пожалуйста как?
  • https://t.me/clickhouse_ru
    @nyoroon #185529 07:21 AM, 06 Oct 2020
    Если отключить - первая ссылка из поиска https://www.tecmint.com/disable-selinux-in-centos-rhel-fedora/
    How to Disable SELinux Temporarily or Permanently

    In this how-to guide, we shall walk through steps you can follow to check the status of SELinux and also disable it in CentOS 7/6, in case it is enabled.

  • https://t.me/clickhouse_ru
    @nyoroon #185530 07:22 AM, 06 Oct 2020
    Если добавлять правила - надо думать, но мануалы тоже поискабельны
  • @Shalomchick #185531 07:23 AM, 06 Oct 2020
    Или мне лучше вместо Fedora лучше использовать CentOS или что то другое? Мне в принципе не критично
  • https://t.me/clickhouse_ru
    @nyoroon #185532 07:23 AM, 06 Oct 2020
    Шо там selinux, шо тут selinux
  • https://t.me/clickhouse_ru
    setenforce 0 отключить до перезагрузки (вроде в последних ядрах хотели это запретить, но не точно)

    На постоянку
    В /etc/selinux/config меняем строку, пишем SELINUX=disabled
  • Изначально КХ у меня как демон не ставиться из-за ошибка скрипта при установке:
    Synchronizing state of clickhouse-server.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
    Executing: /usr/lib/systemd/systemd-sysv-install enable clickhouse-server
    Failed to execute /usr/lib/systemd/systemd-sysv-install: Нет такого файла или каталога
    предупреждение: %post(clickhouse-server-20.9.2.20-2.noarch) scriptlet failed, exit status 1

    Error in POSTIN scriptlet in rpm package clickhouse-server
  • https://t.me/clickhouse_ru
    Теперь понятно почему пользователь не создался, до этого этапа просто не дошло. Подозреваю что в федоре выпили sysv окончательно, а установщик требует его.
    Но selinux все равно нужно руками либо отключить, либо настроить правила для клика, этого никто не отменял
  • С selinux понял, отключу. Но проблему с SysV при установке надо решить.
  • https://t.me/clickhouse_ru
    Попробуйте
    sudo dnf install chkconfig -y и запустить установку клика заново
  • @az17me #185538 07:44 AM, 06 Oct 2020
    Joined.
  • Отключил selinux, установил chkconfig, перезагрузил, переустановил КХ, но все равно:
    systemctl status clickhouse-server
    ● clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
    Loaded: loaded (/etc/systemd/system/clickhouse-server.service; enabled; vendor preset: disable>
    Active: activating (auto-restart) (Result: exit-code) since Tue 2020-10-06 11:02:45 MSK; 7s ago
    Process: 1100 ExecStart=/usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml ->
    Main PID: 1100 (code=exited, status=232/ADDRESS_FAMILIES)
    CPU: 70ms

    [root@rpk-db-server ~]# clickhouse-client
    ClickHouse client version 20.9.2.20 (official build).
    Connecting to localhost:9000 as user default.
    Code: 210. DB::NetException: Connection refused (localhost:9000)

    [root@rpk-db-server ~]# systemctl status clickhouse-server.service
    ● clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
    Loaded: loaded (/etc/systemd/system/clickhouse-server.service; enabled; vendor preset: disable>
    Active: activating (auto-restart) (Result: exit-code) since Tue 2020-10-06 11:02:45 MSK; 26s a>
    Process: 1100 ExecStart=/usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml ->
    Main PID: 1100 (code=exited, status=232/ADDRESS_FAMILIES)
    CPU: 70ms
  • https://t.me/clickhouse_ru
    Может права на каталоги где-то неправильно установились, тоже ошибка пишут такая в этом случае 232/ADDRESS_FAMILIES
    https://github.com/ClickHouse/ClickHouse/issues/1981
    Can't start clickhouse --help · Issue #1981 · ClickHouse/ClickHouse

    os: Ubuntu 16.04.3 LTS \n \l clickhouse version: 1.1.54342 I use " sudo service clickhouse-server start" . but not start. so I use "systemctl status clickhouse-server.ser...

  • А какие права и куда? Я же просто ставлю так:
    dnf install clickhouse-server clickhouse-client -y
    Пользователь clickhouse имеется
  • https://t.me/clickhouse_ru
    Основные каталоги по дефолту в config.xml прописаны
    /var/lib/clickhouse
    /var/log/clickhouse
    /etc/clickhouse-server
    Проверить, что владелец у них clickhouse:clickhouse и есть права на чтение/запись

    Если установка пофиксилась, можно снести
    Юзера clickhouse, которого руками создали```userdel -r clickhouse``` и повторить установку, может где скрипт не отработал, раз пользователь уже существует.
  • https://t.me/clickhouse_ru
    @ITMobile #185543 08:18 AM, 06 Oct 2020
    Не знаю, в centos таких проблем ни разу не было. Правда ставил ещё на 7й, с апгрейдом на 8й
  • Я до переустановки его ручками снес пользователя clickhouse. И после повторной установки он появился сам
  • @spirid_sv #185545 08:23 AM, 06 Oct 2020
    Всем привет! Задача такая - есть несколько локальных таблиц с категориями и надо разложить по глобальным таблицам (отдельная категория), хочу сделать через MATERIALIZED VIEW. Да вот UNION is not supported for MATERIALIZED VIEW. Куда читать?
  • https://t.me/clickhouse_ru
    @yarlanzey #185546 08:35 AM, 06 Oct 2020
    Привет. Забираю данные с кафки и пишу в таблицу

    CREATE TABLE device_os_queue (
    device_os String,
    os Int8,
    stop timestamp,
    min_time timestamp,
    max_time timestamp,
    count UInt32,
    cnt UInt32,
    time UInt64
    ) ENGINE = Kafka('10.0.3.10:9092', 'device_os', 'group1', 'JSONEachRow');
    CREATE TABLE device_os_1d (
    device_os String,
    os Int8,
    stop timestamp,
    min_time AggregateFunction (min, DateTime('Europe/Moscow')),
    max_time AggregateFunction (max, DateTime('Europe/Moscow')),
    count SimpleAggregateFunction (sum, UInt64),
    cnt SimpleAggregateFunction (sum, UInt64),
    time SimpleAggregateFunction (sum, UInt64)
    ) ENGINE = AggregatingMergeTree()
    PARTITION BY toDate(toDateTime(stop))
    ORDER BY (device_os, os, stop);
    CREATE MATERIALIZED VIEW device_os TO device_os_1d
    AS SELECT device_os, os, toDate(toDateTime(stop)) AS stop, minState(toDateTime(min_time)) AS min_time, maxState(toDateTime(max_time)) AS max_time, toUInt32(sum(count)) AS count, toUInt32(sum(cnt)) AS cnt, sum(time) AS time
    FROM device_os_queue GROUP BY device_os, os, stop;

    Все ок, кроме агрегации min_time и max_time

    ┌─device_os─────┬─os─┬────────────────stop─┬─min_time─┬─max_time─┬─count─┬─cnt─┬─time─┐
    │ Mac OS 10.9.5 │ 0 │ 2020-01-01 00:00:00 │ S�
    ^ │ ��
    ^ │ 5 │ 0 │ 0 │
    └───────────────┴────┴─────────────────────┴──────────┴──────────┴───────┴─────┴──────┘
    Как правильно преобразовывать?
  • https://t.me/clickhouse_ru
    @Dam13n #185547 08:35 AM, 06 Oct 2020
    Всем привет!
    Столкнулся с проблемой: после перезагрузки Clickhouse при первом обращении к модели catboost через SELECT modelEvaluate - запрос зависает. После отмены запроса и повторного запуска запрос отрабатывает корректно. Очень похоже на issue трёхлетней давности https://github.com/ClickHouse/ClickHouse/issues/13832
    Можете помочь, может кто-то сталкивался и фиксил?
    First modelEvaluate() call on a newly created CatBoost model deadlocks forever · Issue #13832 · ClickHouse/ClickHouse

    Hello, so I'm working to integrate CatBoost model with our ClickHouse cluster. It appears that, whenever we create a new XML model file in the configured path, the first call to the new mod...

  • @dmitry_detkov #185549 08:47 AM, 06 Oct 2020
    Всем привет. может кто сталкивался с такой ошибкой?:

    Code: 86. DB::Exception: Received from localhost:9000. DB::Exception: Received error from remote server /identifier_quote?connection_string=DNS%3Dmain. HTTP status code: 500 Internal Server Error, body: Error getting identifier quote style from ODBC 'Code: 404, e.displayText() = DB::Exception: DSN parameter is mandatory for ODBC connection string (version 19.7.3.9 (official build))'

    содержимое odbc.ini
    [main]
    Description = PostgreSQL connection to my_db
    Driver = /usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so
    Database = main
    Servername = x.x.x.x
    UserName = user
    Password = pass
    Port = 5432
    Protocol = 9.6
    ReadOnly = Yes
    RowVersioning = No
    ShowSystemTables = No
    ConnSettings =
  • Все равно так же:
    systemctl status clickhouse-server.service
    ● clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
    Loaded: loaded (/etc/systemd/system/clickhouse-server.service; enabled; vendor preset: disable>
    Active: activating (auto-restart) (Result: exit-code) since Tue 2020-10-06 11:41:04 MSK; 17s a>
    Process: 990 ExecStart=/usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml -->
    Main PID: 990 (code=exited, status=232/ADDRESS_FAMILIES)
    CPU: 65ms

    [root@rpk-db-server ~]# systemctl status clickhouse-server
    ● clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
    Loaded: loaded (/etc/systemd/system/clickhouse-server.service; enabled; vendor preset: disable>
    Active: activating (auto-restart) (Result: exit-code) since Tue 2020-10-06 11:41:35 MSK; 1s ago
    Process: 996 ExecStart=/usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml -->
    Main PID: 996 (code=exited, status=232/ADDRESS_FAMILIES)
    CPU: 66ms

    окт 06 11:41:35 rpk-db-server systemd[1]: clickhouse-server.service: Failed with result 'exit-code'.
  • https://t.me/clickhouse_ru
    @DONXAKer #185551 09:07 AM, 06 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    Если от рута запускается, однозначно проблема где-то в правах. Больше не знаю что предположить.

    А если из консоли, через sudo сменить пользователя на clickhouse, интересно, запустится или нет
    sudo -u clickhouse /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml
  • Processing configuration file '/etc/clickhouse-server/config.xml'.
    Include not found: clickhouse_remote_servers
    Include not found: clickhouse_compression
    Couldn't save preprocessed config to /var/lib/clickhouse//preprocessed_configs/config.xml: Access to file denied: /var/lib/clickhouse//preprocessed_configs/config.xml
    Logging trace to /var/log/clickhouse-server/clickhouse-server.log
    Poco::Exception. Code: 1000, e.code() = 13, e.displayText() = Access to file denied: /var/log/clickhouse-server/clickhouse-server.log, Stack trace (when copying this message, always include the lines below):

    0. Poco::FileAccessDeniedException::FileAccessDeniedException(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x18e0cd20 in /usr/bin/clickhouse
    1. Poco::FileImpl::handleLastErrorImpl(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x18e17b50 in /usr/bin/clickhouse
    2. ? @ 0x18e181f6 in /usr/bin/clickhouse
    3. Poco::FileOutputStream::FileOutputStream(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int) @ 0x18e27c0a in /usr/bin/clickhouse
    4. Poco::LogFileImpl::LogFileImpl(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x18e39aa1 in /usr/bin/clickhouse
    5. Poco::FileChannel::open() @ 0x18e194d4 in /usr/bin/clickhouse
    6. Loggers::buildLoggers(Poco::Util::AbstractConfiguration&, Poco::Logger&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x153dbef5 in /usr/bin/clickhouse
    7. BaseDaemon::initialize(Poco::Util::Application&) @ 0x153ce208 in /usr/bin/clickhouse
    8. DB::Server::initialize(Poco::Util::Application&) @ 0xe790d78 in /usr/bin/clickhouse
    9. Poco::Util::Application::run() @ 0x18d31819 in /usr/bin/clickhouse
    10. DB::Server::run() @ 0xe7904c9 in /usr/bin/clickhouse
    11. mainEntryClickHouseServer(int, char**) @ 0xe787513 in /usr/bin/clickhouse
    12. main @ 0xe71a891 in /usr/bin/clickhouse
    13. __libc_start_main @ 0x27042 in /usr/lib64/libc-2.31.so
    14. _start @ 0xe71a02e in /usr/bin/clickhouse
    (version 20.9.2.20 (official build))
  • https://t.me/clickhouse_ru
    chown -R clickhouse:clickhouse /var/lib/clickhouse/

    chown -R clickhouse:clickhouse /var/log/clickhouse-server/
    и еще раз
  • https://t.me/clickhouse_ru
    @gtkuler #185555 09:22 AM, 06 Oct 2020
    Коллеги, добрый день!

    Вопрос. Каким профилем fio тестить диски под КХ?
  • https://t.me/clickhouse_ru
    Я вот такой себе делал профиль, запись тоже тестировал на рейде. Не знаю, правильно или нет, я проверял запись в обход всех дисковых кешей, и с iodepth игрался ещё
    fio -ioengine=libaio -size=10G -sync=0 -direct=1 -name=test -bs=4k -iodepth=1 -rw=randwrite -runtime=60 -filename=/data/clickhouse/testfile
  • https://t.me/clickhouse_ru
    @gtkuler #185557 09:30 AM, 06 Oct 2020
    4k не мало? КХ же по умолчанию читает блоками по 1 МБ
  • @dj_mixer #185558 09:32 AM, 06 Oct 2020
    да, большие блоки надо + sequential
  • @dj_mixer #185559 09:32 AM, 06 Oct 2020
    если особо много мелких партов/колонок не будет, sequential bandwidth - самый критичный
    ещё iodepth=16~32 (тюнить по лейтенси)
  • https://t.me/clickhouse_ru
    Ну это из истории выдернул, один из вариантов. А вообще проверял фишку с полным отключением кеша из 4.18 ядра find /sys/block/sd?/queue/write_cache -exec sh -c "echo write through > {}" \;
    С write back (дефолтным) у меня получился хуже результат.
  • Processing configuration file '/etc/clickhouse-server/config.xml'.
    Include not found: clickhouse_remote_servers
    Include not found: clickhouse_compression
    Logging trace to /var/log/clickhouse-server/clickhouse-server.log
    Logging errors to /var/log/clickhouse-server/clickhouse-server.err.log
    Logging trace to console
    2020.10.06 12:33:19.348006 [ 1192 ] {} <Information> SentryWriter: Sending crash reports is disabled
    2020.10.06 12:33:19.350070 [ 1192 ] {} <Trace> Pipe: Pipe capacity is 1.00 MiB
    2020.10.06 12:33:19.400898 [ 1192 ] {} <Information> : Starting ClickHouse 20.9.2.20 with revision 54439, build id: DA243C6C30A79812, PID 1192
    2020.10.06 12:33:19.401067 [ 1192 ] {} <Information> Application: starting up
    2020.10.06 12:33:19.404939 [ 1192 ] {} <Trace> Application: Will mlockall to prevent executable memory from being paged out. It may take a few seconds.
    2020.10.06 12:33:19.448512 [ 1192 ] {} <Trace> Application: The memory map of clickhouse executable has been mlock'ed
    2020.10.06 12:33:19.448657 [ 1192 ] {} <Information> StatusFile: Status file /var/lib/clickhouse/status already exists - unclean restart. Contents:
    PID: 1129
    Started at: 2020-10-06 12:33:18
    Revision: 54439

    2020.10.06 12:33:19.449059 [ 1192 ] {} <Error> Application: DB::Exception: Cannot lock file /var/lib/clickhouse/status. Another server instance in same directory is already running.
    2020.10.06 12:33:19.449821 [ 1192 ] {} <Information> Application: shutting down
    2020.10.06 12:33:19.449855 [ 1192 ] {} <Debug> Application: Uninitializing subsystem: Logging Subsystem
    2020.10.06 12:33:19.449947 [ 1195 ] {} <Trace> BaseDaemon: Received signal -2
    2020.10.06 12:33:19.449988 [ 1195 ] {} <Information> BaseDaemon: Stop SignalListener thread
  • https://t.me/clickhouse_ru
    Похоже systemd смог запустить сервер, проверьте клиентом
  • https://t.me/clickhouse_ru
    1мб попробовать?
  • Получилось! Спасибо Вам огромное!
  • https://t.me/clickhouse_ru
    👍
  • Сейчас в своем issue опишу шаги, чтобы пофиксить это
  • Обычно 512 ок
  • https://t.me/clickhouse_ru
    @BloodJazMan #185568 09:51 AM, 06 Oct 2020
    Народ. всем привет
    а как в ClickHouse задавать флаги для регулярных выражений в match() ?
    или никак и он только Case Sensitive?
  • https://t.me/clickhouse_ru
    @nyoroon #185569 10:13 AM, 06 Oct 2020
    вроде можно прям в регулярном выражении флаги задавать
  • https://t.me/clickhouse_ru
    @nyoroon #185570 10:14 AM, 06 Oct 2020
    (?flags) set flags within current group; non-capturing
    (?flags:re) set flags during re; non-capturing
  • https://t.me/clickhouse_ru
    @nyoroon #185571 10:14 AM, 06 Oct 2020
    Syntax

    RE2 is a fast, safe, thread-friendly alternative to backtracking regular expression engines like those used in PCRE, Perl, and Python. It is a C++ library. - google/re2

  • https://t.me/clickhouse_ru
    @nyoroon #185572 10:16 AM, 06 Oct 2020
    SELECT match('ADSFG', '(?i)s') AS match

    ┌─match─┐
    │ 1 │
    └───────┘
  • @a_sima10 #185574 10:58 AM, 06 Oct 2020
    всем привет, подскажите, может быть есть инструмент, в котором просто написано — вот ваши тяжёлые запросы, сгруппированные по классам запросов. Нажал на какой-нибудь, и мне бы сказали, что он тяжёлый поэтому?

    пс. или кто как ищет медленные/тяжелые запросы?
  • @1123906956 #185575 11:02 AM, 06 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @evgeny_relap #185576 11:03 AM, 06 Oct 2020
    привет! а кто помнит, с какой версии КХ стали поддерживаться https словари?
  • @7699150 #185577 11:04 AM, 06 Oct 2020
    Ребят, а кто работает с Tableau и КХ (ODBC драйвер)?
    У нас есть проблема, что табло может очень долго подтягивать метадату для тяжелого запроса. А если вдруг в запросе была ошибка, то табло не отдает эту ошибку, а уходит в бесконечную загрузку.
    Кто-то сталкивался с таким?
  • https://t.me/clickhouse_ru
    @msg_kurt #185578 11:05 AM, 06 Oct 2020
    Всем привет. Есть история продаж, которую надо разбить на слоты по определенной сумме. например, первая сотня набрана сегодня в полночь, вторая сотня - завтра утром:
    ┌─Quantity─┬─toDateTime(Timestamp)─┐
    │ 10 │ 2020-05-01 00:00:03 │
    │ 86 │ 2020-05-01 00:01:05 │
    │ 4 │ 2020-05-01 01:00:01 │
    │ 1 │ 2020-05-01 01:11:33 │
    │ 24 │ 2020-05-01 02:32:44 │
    │ 2 │ 2020-05-01 04:15:25 │
    │ 80 │ 2020-05-01 05:00:02 │
    │ 1 │ 2020-05-01 08:20:28 │
    │ 76 │ 2020-05-01 09:33:17 │
    │ 55 │ 2020-05-01 10:00:03 │
    └──────────┴───────────────────────┘
    =>
    ┌─Quantity─┬─toDateTime(Timestamp)─┐
    │ 100 │ 2020-05-01 01:00:01 │
    │ 107 │ 2020-05-01 05:00:02 │
    │ 132 │ 2020-05-01 10:00:03 │
    └──────────┴───────────────────────┘

    Подсунуть sumState(Quantity)<100 в качестве параметра grouping как описано в документации не получается. Есть идеи, кроме как грузить каждую продажу на клиент, и там уже разруливать?) https://clickhouse.tech/docs/ru/sql-reference/functions/other-functions/#runningaccumulate
    Прочие функции | Документация ClickHouse

    Прочие функции hostName() Возвращает строку - имя хоста, на котором эта функция была выполнена. При распределённой обраб

  • https://t.me/clickhouse_ru
    спасибо большое!
  • @p_roman #185580 11:07 AM, 06 Oct 2020
    Всем добрый день!

    КХ у нас используется:
    - для API (отчеты пользователям по их данным)
    - для аналитики (общий срез по данным всех пользователей)
    Необходимо:
    К определенным аккаунтам оставить доступ для API, но закрыть доступ для ручных запросов (запросов от аналитиков).
    Можно ли в КХ ограничить доступ, запретив получать данные, не подходящие по условию. Например, запретить строить аналитику по accountId=100?

    Если нет, подскажите, пожалуйста, в какую сторону смотреть.
  • https://t.me/clickhouse_ru
    можно
    https://clickhouse.tech/docs/en/sql-reference/statements/create/row-policy/
    ROW POLICY | ClickHouse Documentation

    CREATE ROW POLICY Creates a row policy, i.e. a filter used to determine which rows a user can read from a table. Warning

  • https://t.me/clickhouse_ru
    но нужна свежая версия clickhouse
  • @p_roman #185583 11:10 AM, 06 Oct 2020
    Спасибо. Не уследил за последними изменениями!
  • https://t.me/clickhouse_ru
    ROW Based security уже наверное больше года через XML настраивается в profiles
    но оно недавно только в SQL синтаксис перебралось
  • за 2.5 года съел raid10 из 4×SSD 512GB
  • https://t.me/clickhouse_ru
    @ilyagryaznev #185586 11:38 AM, 06 Oct 2020
    Добрый день!
    нужно заставить рабоать мигратор alembic, использую диалект clickhouse-sqlalchemy
    может кто сталкивался, как прописивается движок таблицы в метадате, чтобы корректно сгенерился скрипт
  • https://t.me/clickhouse_ru
    @ilyagryaznev #185587 11:38 AM, 06 Oct 2020
    кто-то работал с таким?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @ilyagryaznev #185589 11:44 AM, 06 Oct 2020
    понял
    пардон
  • Какой движок для таблиц лучше использовать для сбора сырых данных? В приоритете быстрая вставка, быстрая выборка, и возможно последующие преобразования из мгновенных данных в 3-минутные, 1-часовые, суточные посредством арифметического усреднения.
  • MergeTree
    но КХ не любит частых вставок.
  • классный способ — класть данные в кафку, а оттуда через kafka table engine сохранять в КХ
  • https://t.me/clickhouse_ru
    @CherkashinSergey #185593 12:16 PM, 06 Oct 2020
    Всем привет.
    Подскажите, пожалуйста, есть ли в КХ возможность посмотреть текущие операции перемещения и мерджа партов?
  • Есть примеры или юзкейс ?
  • ClickHouse Kafka Engine Tutorial

    Our colleague Mikhail Filimonov just published an excellent ClickHouse Kafka Engine FAQ. It provides users with answers to common questions about using stable versions, configuration parameters, standard SQL definitions, and many other topics. Even experienced users are likely to learn something new. But what if you are getting started and need help setting up Kafka and ClickHouse for the first time? Good news! This article is for you.

  • https://t.me/clickhouse_ru
    @vladimirsav #185597 12:32 PM, 06 Oct 2020
    Joined.
  • Действительно ни у кого не было проблем с табло?)
  • Насколько частых? Если 500-1000 строк в секунду это плохо ?
  • https://t.me/clickhouse_ru
    Были конечно)
  • https://t.me/clickhouse_ru
    CH+Tableau нужно аккуратно готовить с учетом структуры данных и версий.
    1) Постараться использовать побольше экстрактов
    2) Писать запросы на уровне Level of Details
    3) Были некоторые хитрости с работой с NULL данными из-за них всё висло, возможно у вас подобные проблемы. К сожалению, не помню как решил, Юрий Фаль помнится помог. Потом может найду старый дашборд какой, скину, как решал эту проблему.
  • Частый это количество вставок на момент времени, а не про объем, 1000 строк в одном запросе в секунду - ок, 1000 строк в 1000 запросах не ок
  • В целом по гайдам 1 вставка в секунду на таблицу
  • @Ynomeow #185604 01:24 PM, 06 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @iam21h #185605 01:49 PM, 06 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @iam21h #185606 01:52 PM, 06 Oct 2020
    здравствуйте мои дорогие!
  • https://t.me/clickhouse_ru
    @iam21h #185607 01:52 PM, 06 Oct 2020
  • https://t.me/clickhouse_ru
    GraphiteMT умеет то что вы хотите, но он считает среднее от среднего , а не sum/cnt , поэтому для avg у него херня получается, хотя может вы этого и хотите
    еще можно делать TTL / group by поверх SummingMT
  • https://t.me/clickhouse_ru
    system.merges
  • @rusanarkh #185610 01:58 PM, 06 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    каждый инсерт создает парт (или несколько, если сделать все неправильно),
    много партов плохо,
    сколько строк внутри парта, значения не имеет
  • КХ парты не объединяет ?
  • https://t.me/clickhouse_ru
    объединяет конечно. Проблема в том что мелкие парты объединяются за то же время что и немелкие, потому что много накладных расходов, каждый парт -- это множество файлов, каждый файл надо открыть, сделать seek, а жесткий диск не умеет много seek
  • https://t.me/clickhouse_ru
    Прошу прощения, я неверно задал вопрос. В первую очередь меня интересуют именно текущие перемещения.
  • https://t.me/clickhouse_ru
    system.merges -- виртуальная таблица, отображает мержи идущие прямо сейчас
  • https://t.me/clickhouse_ru
    Но в ней нет информации о текущих перемещениях партов с диска на диск.
  • https://t.me/clickhouse_ru
    ????

    парты перемещаются только мержем, как там может не быть информации???
  • https://t.me/clickhouse_ru
    просто делайте несколько MV которые читают из тех таблиц, а пишут в одну TO таблицу
  • https://t.me/clickhouse_ru
    ну minMerge

    НО !!!!! ВАМ ЭТО НЕ НУЖНО ВАМ НУЖНО, используйте SimpleAggregateFunction

    min_time SimpleAggregateFunction (min, DateTime('Europe/Moscow')),
    max_time SimpleAggregateFunction (max, DateTime('Europe/Moscow')),
  • https://t.me/clickhouse_ru
    про minMerge дошел да, за Simple спасибо. такая большая разница в производительности?
  • https://t.me/clickhouse_ru
    заводите баг, в этом разбираются только несколько человек девелоперов КХ и они не читают чат.
  • https://t.me/clickhouse_ru
    @CherkashinSergey #185622 02:12 PM, 06 Oct 2020
    Ситуация такая: КХ должен по TTL перемещать данные на другой диск. Проблема в том, что целевой диск оказался настолько медленным, что перемещение идёт с опозданием в несколько дней. В частности, я вижу недозаписанный парт в целевом диске в папке detached, но не вижу информации об этом в system.merges. Однако, если я попытаюсь переместить парт вручную через ALTER TABLE MOVE PART TO DISK, я получаю ошибку
    Code: 384. DB::Exception: Received from localhost:9000. DB::Exception: Cannot move part '20201004_51015_52721_5' because it's participating in background process.
    Я делаю из этого вывод, что в system.merges подобная информация не отображается.
  • https://t.me/clickhouse_ru
    до двух раз, в два раза меньше байт в памяти надо перекладывать
  • https://t.me/clickhouse_ru
    @Dam13n ↶ Reply to #185621 #185624 02:14 PM, 06 Oct 2020
    Issue в github уже есть от 2017 года. Думаете нужно новый открывать?
  • https://t.me/clickhouse_ru
    это починено давно, но 19.7 конечно никто не исправлял
  • https://t.me/clickhouse_ru
    хм, https://github.com/ClickHouse/ClickHouse/issues/13832 -- это свежий это 17 августа
    не надо тогда открывать
  • https://t.me/clickhouse_ru
    @Dam13n ↶ Reply to #185626 #185627 02:16 PM, 06 Oct 2020
    Ок, тогда будем ждать, спасибо
  • Спасибо!) Хочется как-то более элегантно... А если сделать view и на нее натравить MV? ))
  • ок. спс.
  • https://t.me/clickhouse_ru
    MV это триггер на инсерт. View не получает инсертов.

    https://youtu.be/1LVJ_WcLgF8?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7583
  • 👍
  • https://t.me/clickhouse_ru
    @dennisfyodorov #185633 02:24 PM, 06 Oct 2020
    Joined.
  • @thelocky #185634 02:25 PM, 06 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @Vladimirelizarov #185635 02:35 PM, 06 Oct 2020
    Joined.
  • @makstyc #185636 02:52 PM, 06 Oct 2020
    Joined.
  • MergeTree
    можете ин мемори куски использовать с последней версии и можно вставлять часто
  • https://t.me/clickhouse_ru
    @51964971 #185638 03:03 PM, 06 Oct 2020
    Joined.
  • Это с какой версии КХ? И как это настраивается?
  • https://t.me/clickhouse_ru
    @wXhexo #185641 03:11 PM, 06 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    system.part_log | ClickHouse Documentation

    system.part_log The system.part_log table is created only if the part_log server setting is specified. This table contai

  • https://t.me/clickhouse_ru
    Большое спасибо.
  • https://t.me/clickhouse_ru
    @CherkashinSergey #185650 03:54 PM, 06 Oct 2020
    Я почему-то не зацепился глазом за эту статью в доках.
  • https://t.me/clickhouse_ru
    @BloodJazMan #185651 03:55 PM, 06 Oct 2020
    Слушайте,
    SELECT multiSearchAllPositions('test1 test2 test3', [' '])

    ┌─multiSearchAllPositions('test1 test2 test3', [' '])─┐
    │ [6] │
    └─────────────────────────────────────────────────────┘

    это же Баг ? или я как то не правильно понимаю документацию? почему второй пробел не ищет?
  • https://t.me/clickhouse_ru
    @BloodJazMan #185652 03:56 PM, 06 Oct 2020
    ааа блин пока читал ... это просто position Только для множества substring ;(
  • https://t.me/clickhouse_ru
    @BloodJazMan #185653 03:56 PM, 06 Oct 2020
    название функции вообще не ментальное ;(((
  • https://t.me/clickhouse_ru
    @BloodJazMan #185654 03:57 PM, 06 Oct 2020
    Народ помогите реализовать аналог mysql SUBSTING_INDEX ? https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substring-index ?
  • https://t.me/clickhouse_ru
    SELECT arrayFilter((i, j) -> (j = ' '), arrayEnumerate(x), extractAll('test1 test2 test3', '.') AS x)
    [6,12]
  • https://t.me/clickhouse_ru
    @den_crane #185656 04:00 PM, 06 Oct 2020
    а кстати extractAllGroups(text, regexp)
  • https://t.me/clickhouse_ru
    @den_crane #185657 04:01 PM, 06 Oct 2020
    или надо только позиции?
  • https://t.me/clickhouse_ru
    надо как в SUBSTRING_INDEX

    то есть
    mysql> SELECT SUBSTRING_INDEX('test1 test2 test3',' ',1);
    | SUBSTRING_INDEX('test1 test2 test3',' ',1) |
    +--------------------------------------------+
    | test1 |

    mysql> SELECT SUBSTRING_INDEX('test1 test2 test3',' ',2);
    | SUBSTRING_INDEX('test1 test2 test3',' ',2) |
    +--------------------------------------------+
    | test1 test2 |

    mysql> SELECT SUBSTRING_INDEX('test1 test2 test3',' ',3);
    | SUBSTRING_INDEX('test1 test2 test3',' ',3) |
    +--------------------------------------------+
    | test1 test2 test3 |
  • https://t.me/clickhouse_ru
    @BloodJazMan #185660 04:09 PM, 06 Oct 2020
    ну то есть нужны позиции пробелов да
    но что-то мне кажется фильтровать посимвольно, блин. оно ж медленно будет ;(
  • https://t.me/clickhouse_ru
    select arraySlice(extractAll('test1 test2 test3', '\\w+'),1,1)
    select arraySlice(extractAll('test1 test2 test3', '\\w+'),1,2)
    select arraySlice(extractAll('test1 test2 test3', '\\w+'),1,3)
  • https://t.me/clickhouse_ru
    @BloodJazMan #185662 04:10 PM, 06 Oct 2020
    ага =) arraySlice наверное в этом случае будет лучше. спасибо
  • https://t.me/clickhouse_ru
    нет все таки не так ;(

    блин ну почему нету тупо функции выдать все позиции конкретной подстроки =(
  • https://t.me/clickhouse_ru
    @den_crane #185664 04:13 PM, 06 Oct 2020
    ну не надо было до этого, с массивами все сложнее, индексов нужно избегать, чтобы не передавать массив в лябду
  • https://t.me/clickhouse_ru
    проблема в том что test2 test2 не обязательно попадают под \w+ ;(
    там может быть test1/test2 test3
  • https://t.me/clickhouse_ru
    ????

    select extractAll('test1 test2 test3', 'test?')
  • https://t.me/clickhouse_ru
    @den_crane #185667 04:15 PM, 06 Oct 2020
    select extractAll('test1 test2 test3', 'test.+')
  • https://t.me/clickhouse_ru
    @den_crane #185668 04:15 PM, 06 Oct 2020
    select extractAll('test1 test2 test3', 'test(.)')
  • https://t.me/clickhouse_ru
    @BloodJazMan #185669 04:15 PM, 06 Oct 2020
    нет
    еще раз. мне НЕ НАДО ВЫТАЩИТЬ ТОКЕНЫ

    мне надо отобразить кусок строки, в соответсвии с энной позицией разделителя

    mysql> SELECT SUBSTRING_INDEX('test1 test2 test3',' ',1);
    | SUBSTRING_INDEX('test1 test2 test3',' ',1) |
    +--------------------------------------------+
    | test1 |

    mysql> SELECT SUBSTRING_INDEX('test1 test2 test3',' ',2);
    | SUBSTRING_INDEX('test1 test2 test3',' ',2) |
    +--------------------------------------------+
    | test1 test2 |

    mysql> SELECT SUBSTRING_INDEX('test1 test2 test3',' ',3);
    | SUBSTRING_INDEX('test1 test2 test3',' ',3) |
    +--------------------------------------------+
    | test1 test2 test3 |
  • https://t.me/clickhouse_ru
    еще раз вместо test1 test2 test3 могут быть произвольные строки то
    а не по паттерну
  • @AntonVershinin #185671 04:17 PM, 06 Oct 2020
    А разделители фиксированы?
  • @AntonVershinin #185672 04:17 PM, 06 Oct 2020
    внутри строки
  • https://t.me/clickhouse_ru
    да, разделитель фиксированный
    если бы была возможность тупо в массив вытащить все позиции разделителя в строке
    то я бы к этому массиву просто применил
    substr

    я думал сработает
    SELECT substring('test1 test2 ', 1, arrayElement(multiSearchAllPositions('test1 test2 ', [' ']), 2))

    но выяснилось что AllPostions это нифига не AllPositions ;(
  • https://t.me/clickhouse_ru
    @den_crane #185674 04:19 PM, 06 Oct 2020
    SELECT extractAll('test1 test2 test3', '([^ ]*)( |$)')

    ┌─extractAll('test1 test2 test3', '([^ ]*)( |$)')─┐
    │ ['test1','test2','test3'] │
    └─────────────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    да наверное так подойдет
    с этого дальше arraySlice навреное можно применить
  • А версия, предложенная Denny, но слегка доработанная не подойдет? arraySlice + splitByString?
  • https://t.me/clickhouse_ru
    о! то что надо =) никаких regexp ;)
  • https://t.me/clickhouse_ru
    @BloodJazMan #185678 04:20 PM, 06 Oct 2020
    Спасибо чатег!
  • @AntonVershinin #185679 04:20 PM, 06 Oct 2020
    или splitByChar
  • https://t.me/clickhouse_ru
    @BloodJazMan #185680 04:20 PM, 06 Oct 2020
    @den_crane вам отдельный респект
  • https://t.me/clickhouse_ru
    @wXhexo #185681 05:07 PM, 06 Oct 2020
    Чатик привет

    Ситуация:
    1)есть таблица - partition toYYYYMM(time)
    2) Для любого инсерта гарантировано, что он будет для одной партиции
    3) Гарантировано, что для каждой партиции будет записано не более 300кк строк

    Правильно ли я понимаю,
    что поставив
    min_insert_block_size_row= max_insert_block_size_row=300кк и соответственно подобрать min_insert_block_size_bytes, то можно утверждать, что любой insert будет атомарным?
  • @khanze #185682 05:10 PM, 06 Oct 2020
    Коллеги, добрый вечер!
    Такой вопрос, мне нужно отфильтровать данные по дате.
    Но у меня только есть строка с годом и месяцем, можно ли как нибудь отфильтровать на вхождение года и месяца по дате и получить выборку?
  • https://t.me/clickhouse_ru
    да все правильно.

    min_insert_block_size_row= max_insert_block_size_row=300кк <--- это херня какая-то, я примерно понимаю о чем вы, но это не надо настраивать, такие параметры вообще есть?

    достаточно:
    max_insert_block_size=1mil (по дефолту)
    +min_insert_block_size_bytes просто задрать до 100ГБ

    (на уровне Таблица+MV инсерт не будет атомарным)
  • https://t.me/clickhouse_ru
    @den_crane #185684 05:17 PM, 06 Oct 2020
    --min_insert_block_size_rows arg Squash blocks passed to INSERT query to specified size in rows, if blocks are not big enough.
    это если селект выдает маленькие блоки -- клеить в больший
  • https://t.me/clickhouse_ru
    @wXhexo ↶ Reply to #185684 #185685 05:18 PM, 06 Oct 2020
    В таком случае (инсертим в одну партицию), любой инсерт меньший min_insert_block_size_rows - атомарен?
  • https://t.me/clickhouse_ru
    min_insert_block_size_rows ну поставьте =1 mil -- он наверное и так 1 mil. , но кмк этот параметр не будет работать для обычного инсерт, только для insert select
  • @khanze ↶ Reply to #185682 #185687 05:22 PM, 06 Oct 2020
    то есть отфильтровать 2017-08, где нужно найти такие даты 2017-08-* к примеру.

    Как можно такое осуществить?
  • https://t.me/clickhouse_ru
    toYYYYMM(timecol)=201708

    toStartOfMonth(timecol) = '2017-08-01'
  • https://t.me/clickhouse_ru
    @den_crane #185689 05:24 PM, 06 Oct 2020
    timecol >= '2017-08-01 00:00:00' and timecol < '2017-09-01 00:00:00'
  • @khanze ↶ Reply to #185688 #185690 05:43 PM, 06 Oct 2020
    Спасибо!
  • https://t.me/clickhouse_ru
    @YuriiEg #185691 05:54 PM, 06 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @KulaginSlava #185693 08:51 PM, 06 Oct 2020
    Может кто-то подскажет есть ли ограничения какие-то на длину запроса?
  • https://t.me/clickhouse_ru
    Да, но они достаточно большие, а в чем вопрос?
  • https://t.me/clickhouse_ru
    нету, по дефолту есть лимитер 256кб, я менял на 100мб
  • https://t.me/clickhouse_ru
    @KulaginSlava #185696 08:52 PM, 06 Oct 2020
    берутся ключи из постгри и вставляются в поиск в кликхаусе
    надо понять какие могут быть ограничения на это
  • https://t.me/clickhouse_ru
    @den_crane #185697 08:53 PM, 06 Oct 2020
    если через get посылать то 16кб, а через post сколько угодно

    max_query_size arg Which part of the query can be read into RAM for parsing (the remaining data for INSERT, if any, is read later)
  • https://t.me/clickhouse_ru
    @nyoroon #185698 08:54 PM, 06 Oct 2020
    к запросу можно ещё external data прикреплять https://clickhouse.tech/docs/en/engines/table-engines/special/external-data/
    External Data | ClickHouse Documentation

    External Data for Query Processing ClickHouse allows sending a server the data that is needed for processing a query, to

  • https://t.me/clickhouse_ru
    @den_crane #185699 08:55 PM, 06 Oct 2020
    а да external-data еще лучше, там парсер по другому, быстрее in список разбирает
  • https://t.me/clickhouse_ru
    @KulaginSlava #185700 08:56 PM, 06 Oct 2020
    да, там будет IN
  • https://t.me/clickhouse_ru
    @KulaginSlava #185701 08:59 PM, 06 Oct 2020
    external-data от RAM уже не зависит?
    это конечно теоретически уже
  • https://t.me/clickhouse_ru
    max_query_size arg?
  • https://t.me/clickhouse_ru
    external-data создает временную таблицу, в памяти, должно поместится
  • https://t.me/clickhouse_ru
    да, это на размер запроса лимит, чтобы случайно 100ГБ sql не уронил КХ
  • https://t.me/clickhouse_ru
    @den_crane #185705 09:08 PM, 06 Oct 2020
    я менял на большие значения, чтобы через jdbc посылать SQL с огромным спиcком in
    (jdbc не умеет external-data)
  • https://t.me/clickhouse_ru
    @KulaginSlava #185706 09:12 PM, 06 Oct 2020
    благодарю, буду ронять!
  • https://t.me/clickhouse_ru
    @Niklisovik #185707 09:29 PM, 06 Oct 2020
    всем привет, кто может объяснить пжл, почему у меня выдаёт такую ошибку?
  • https://t.me/clickhouse_ru
    @Niklisovik #185708 09:30 PM, 06 Oct 2020
    формат таблиы
  • https://t.me/clickhouse_ru
    какой PARTITION KEY
  • https://t.me/clickhouse_ru
    @Niklisovik #185710 09:32 PM, 06 Oct 2020
    Ой, да, я случайно по units делал partition
  • https://t.me/clickhouse_ru
    @241186216 #185711 09:53 PM, 06 Oct 2020
    обьясните плиз такую ситуацию. Есть таблица без
    партиций. Размер порядка 40GB. над ней выполняется
    такого вида запрос select distinct id, version from
    table where column1 in ('v1','v2','v3') and column2 in ('d1','d2','d3')
    И вот такой запрос выполняется медленно ( идет по все записям таблицы).
    Но после партиционирования partition by id % 64 такие же запросы
    вдруг ускоряются, хотя они обрабатываю тоже самое количестов строк,
    а размер таблицы (хотя в числе строк остается таким же ) в гигабайтах вырастает до 60G. ну т.е понятно почему размер таблицы вырос. почему запросы ускорились непонятно
  • https://t.me/clickhouse_ru
    Скорее всего дело в том, что каждому треду назначается какой то кусочек одной партиции, тк в каждой партиции теперь содержится гораздо меньше различных id, то выходит что для каждого треда хеш таблица будет меньше.
  • https://t.me/clickhouse_ru
    для проверки стал делать одним тредом. он даже вот одним тредом быстрее
  • https://t.me/clickhouse_ru
    Ну локальность все равно сохраняется же, ты же смотришь один тред в первом и один тред во втором случае
  • https://t.me/clickhouse_ru
    не совсем понял. я беру и запускаю в один тред тот же запрос на первой таблице. он работает долго, но на второй таблице запрос в один тред работает быстрее.
  • https://t.me/clickhouse_ru
    Ну в таком случае он все равно пробегает партиции по очереди, а не вперемешку и те даже в таком случае некая локальность значений помогает
  • https://t.me/clickhouse_ru
    @241186216 #185717 10:03 PM, 06 Oct 2020
    в первом случае все данные лежат в одном файле, который начинается с all_ , а во втором получается много файлов. скажем 64, но ведь это все теже самые данные. в чем выигрыш? вот там заметно, что в первом случае он что-то долго считает до того, как начать сканирование файлов
  • https://t.me/clickhouse_ru
    Анализ индекса скорее всего
  • https://t.me/clickhouse_ru
    @unamedrus #185719 10:04 PM, 06 Oct 2020
    set send_logs_level='trace';
  • https://t.me/clickhouse_ru
    @unamedrus #185720 10:04 PM, 06 Oct 2020
    и выполни запрос
  • https://t.me/clickhouse_ru
    @241186216 #185721 10:05 PM, 06 Oct 2020
    а что там такое может быть тяжелого в анализе индекса. как то мало верится в локальность. слишком большая разница на выходе. кстати на выходе запроса строк не много - это всего тысячи.
  • https://t.me/clickhouse_ru
    @241186216 #185722 10:06 PM, 06 Oct 2020
    делал это. он что-то делает еще до того, как логи какие-то начинает выкидывать.
  • https://t.me/clickhouse_ru
    непонятно,

    Насколько большая разница между временем выполнения запроса?

    Reading 1 ranges from part all_1_1_0, approx. 1007616 rows starting from 0
    тебя интересует щас, насколько быстро появляется подобная запись
  • https://t.me/clickhouse_ru
    @241186216 #185724 10:08 PM, 06 Oct 2020
    это примерно 120 секунд по сравнению с 25.
  • https://t.me/clickhouse_ru
    @241186216 #185725 10:09 PM, 06 Oct 2020
    вот время проходит очень много в первом случае до подобной записи очень много
  • https://t.me/clickhouse_ru
    Серьезное различие.
    покажи ORDER BY таблицы, есть ли доп индексы.

    Сколько записей в таблице
  • https://t.me/clickhouse_ru
    @241186216 #185727 10:09 PM, 06 Oct 2020
    а во втором случае он почти сразу начинает писать подобные записи.
  • https://t.me/clickhouse_ru
    порядка 800 миллионов строк. вес - 40GB. индексов нет.
  • https://t.me/clickhouse_ru
    order by id, version. причем если поменять его на Group by id,version то резульатат по времени сопоставимый.
  • https://t.me/clickhouse_ru
    @241186216 #185730 10:17 PM, 06 Oct 2020
    может если очень большие mrk файлы, то ему его долго анализировать. но ведь это странно. он же весь в памяти.
  • https://t.me/clickhouse_ru
    версия кх?

    >а во втором случае он почти сразу начинает писать подобные записи.
    Можешь показать записи с анализом индекса?

    Перепиши оба запроса на

    SELECT key FROM test_distinct GROUP BY key FORMAT Null;

    И сравни такие строки в логе
    AggregatingTransform: Aggregated. 1000000 to 10000 rows (from 3.81 MiB) in 0.003344693 sec. (298981102.3014668 rows/sec., 1.11 GiB/sec.)
  • https://t.me/clickhouse_ru
    mrk файлы не обязательно в памяти находятся, это не индекс
  • https://t.me/clickhouse_ru
    завтра только смогу. а что значит asynchronous в пайплайне в случае аггрегации? в sort by Он есть а в Group by его нет
  • https://t.me/clickhouse_ru
    не видел такого если честно, или ты смотришь EXPLAIN ?
  • https://t.me/clickhouse_ru
    в нешей версии его еще нет. у нас что-то 19.14.... смотрел в логе.
  • https://t.me/clickhouse_ru
    Ох, это старая версия.
    Там наверное что угодно может быть
  • 07 October 2020 (197 messages)
  • https://t.me/clickhouse_ru
    @suxxorz #185738 05:51 AM, 07 Oct 2020
    Привет, CH читает с ошибкой записи в формате JSON из Кафки: version 19.4.0 revision 54416.

    <Error> void DB::StorageKafka::streamThread(): Code: 27, e.displayText() = DB::Exception: Cannot parse input: expected { before: \0: (at row 2)

    Хотя у меня на локальном все норм и данные те же...
    Локальная версия: version 19.4.0 revision 54416.
  • https://t.me/clickhouse_ru
    @suxxorz #185739 05:55 AM, 07 Oct 2020
    Хмм, проблема решилась добавлением kafka_row_delimiter = '\n'
  • @fruittut #185740 07:14 AM, 07 Oct 2020
    Добрый день, товарищи.

    Выполняю такой запрос(Хочу посчитать количество унакальных значений в столбце за сутки):
    SELECT count(distinct stream_id) FROM БАЗА.data WHERE timestamp between '2020-10-06 00:00:00' and '2020-10-06 23:59:59'

    Выполняется он так долго:
    1 rows in set. Elapsed: 998.163 sec. Processed 2.67 billion rows, 12.94 GB (2.68 million rows/s., 12.96 MB/s.)

    Версия Кликхаус: 20.5.2 revision 54435

    Размер базы: 68 ГБ (Прирост в месяц сейчас +7 ГБ)

    Нагрузка CPU во время выполнения: 50% - 60%

    Сервер: 8 CPU / 16 RAM

    Возможно ли как-то посчитать количество записей быстрее и с меньшими ресурсами?
    Странно что для суток перебирается в базе аж 12.94 GB ведь в сутки нет столько данных
  • Проблема решилась изменением timestamp на date. Видимо timestamp тяжело обрабатывается
  • https://t.me/clickhouse_ru
    Зависит от сортировки и партиционирования. Попробуйте ещё uniqCombined вместо count distinct
  • https://t.me/clickhouse_ru
    у тебя PARTITION BY toYYYYMM(date) какой нибудь стоит в структуре таблицы
    и ORDER BY date
    поэтому так быстро и посчиталось потому что легче определить какие куски данных вытащить
    а с timestamp у тебя приходится фильтровать все 2.67 миллиарда строк
  • https://t.me/clickhouse_ru
    @DimaVS #185745 07:32 AM, 07 Oct 2020
    Всем привет! Подскажите пожалуйста, где надо прописать настройку insert_deduplicate = 0? proflies?
  • https://t.me/clickhouse_ru
    да все что в system.settings прописывается в profiles и лучше прописать через users.d
    можно прямо в INSERT ... SETTINGS insert_deduplicate=0 попробовать
    или если http протокол
    то через параметр в query string передать
    а SQL запрос в POST BODY
  • https://t.me/clickhouse_ru
    а зачем вам это вообще отключать?
    вы понимаете какую именно дедупликацию тут осуществляет clickhouse?
  • @viphunter_real #185748 07:48 AM, 07 Oct 2020
    дурацкую дедупликацию осуществляет КХ. Не контролирует удаление и как следствие дедупликация превращается в баг, а не фичу...
  • https://t.me/clickhouse_ru
    @BloodJazMan #185749 07:56 AM, 07 Oct 2020
    Народ
    а нет ли какой то функции а-ля
    coalesce
    но для обычных не Nullable значений?

    у меня есть большой здоровый
    multiIf
    который может вернуть пустую не NULL строку

    мне бы хотелось что нибудь типа

    coalesce( multiIf(...), 'Unknown')
    чтобы через обычный if
    if( multiIf(...)='', 'Unknown', multiIf( .. чтобы это второй раз не вычислялось))
  • https://t.me/clickhouse_ru
    @a1s_333444 #185750 08:21 AM, 07 Oct 2020
    Всем привет, подскажите пж. Если изначально стоит internal_replication: False и уже много данных накопилось, то ничего страшного и ужасного не произойдет, если я переделаю на internal_replication: True ?
  • Спасибо
  • https://t.me/clickhouse_ru
    @DimaVS ↶ Reply to #185746 #185752 08:34 AM, 07 Oct 2020
    работает даг, по которому собирается таблица при помощи инсертов
    инсерты проходят пачками (одинаковое кол-во городов)
    в логах пишется, что инстерт делается, а по факту нет
  • А, ясно, спасибо
  • https://t.me/clickhouse_ru
    в какую таблицу вставляете ReplicatedMergeTree? или Distributed поверх ReplicatedMergeTree?

    он у вас этот INSERT полностью одинаковый два раза или нет?
  • https://t.me/clickhouse_ru
    @DimaVS ↶ Reply to #185754 #185755 08:42 AM, 07 Oct 2020
    AggregatingMergeTree
    в инсерте кол-во строк может быть разным
    одинаково кол-во городов в пачке
  • https://t.me/clickhouse_ru
    "кол-во городов в пачке" мне это ни о чем не говорит

    но вы явно теребите не ту настройку

    указанная настройка применяется только для *ReplicatedMergeTree
    у вас ReplicatedAggregatedMergeTree? если нет. не трогайте настройку

    https://clickhouse.tech/docs/en/operations/settings/settings/#settings-insert-deduplicate
    Эта настройка отключает дефолтное поведение при вставке в Replicated таблицу

    Дефолтное поведение
    ClickHouse хранит контрольные сумммы последних N блоков в ZK
    и при вставке смотрит на контрольную сумму блока который вы вставляете (ДО АГГРЕГАЦИИ в движке и До РЕПЛИКАЦИИ).
    и если есть блоки с точно такой же контрольной суммой, тогда блок игнорируется, потому что это значит что связь порвалась во время предыдущего INSERT и клиент досылает данные повторно...
    Settings | ClickHouse Documentation

    Settings distributed_product_mode Changes the behaviour of distributed subqueries. ClickHouse applies this setting when

  • https://t.me/clickhouse_ru
    как вы проверяете что у вас "данные не вставились"?
    откуда такая уверенность?
  • https://t.me/clickhouse_ru
    @DimaVS ↶ Reply to #185758 #185759 09:02 AM, 07 Oct 2020
    Через логи дага
  • https://t.me/clickhouse_ru
    @DimaVS #185760 09:03 AM, 07 Oct 2020
    А потом перепроверял запросом к таблице
  • https://t.me/clickhouse_ru
    в логи DAG (apache airflow? или что?)
    пишется что именно?

    Запрос проверочный делаете через SELECT ... FINAL ?

    потому что AggregatingMergeTree
    аггрегацию делает
    через применение аггрегирующих функций во время background merge
    а не во время вставки
  • https://t.me/clickhouse_ru
    https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/aggregatingmergetree/
    думаю что стоит внимательно перечитать вот эту часть
    AggregatingMergeTree | ClickHouse Documentation

    AggregatingMergeTree The engine inherits from MergeTree, altering the logic for data parts merging. ClickHouse replaces

  • https://t.me/clickhouse_ru
    @suxxorz #185763 09:06 AM, 07 Oct 2020
    Помнится тут писали, что нет разницы сортированные данные летят в КХ или нет, это правда? мне нет необходимости перед отправкой (пакета данных), скажем в кафку отсортировать данные?
  • https://t.me/clickhouse_ru
    не нужно, КХ сам при необходимости отсортирует
  • https://t.me/clickhouse_ru
    окей, спасибо
  • https://t.me/clickhouse_ru
    сортировать имеет смысл только на ОЧЕНЬ ОЧЕНЬ больших объемах данных
    чтобы CPU clickhouse экономить
    но гораздо больше CPU можно экномить если грамотно кодеки применять и коэффициентами сжатия для ZSTD играться
  • https://t.me/clickhouse_ru
    Но да, с целом не надо ничего специально сортировать, смысла не имеет
  • https://t.me/clickhouse_ru
    спасибо принял, полезно)
  • @v_D_v #185769 09:15 AM, 07 Oct 2020
    Joined.
  • @Shalomchick #185770 09:43 AM, 07 Oct 2020
    А есть клиент clickhouse-client скомпилированный под Windows ?
  • https://t.me/clickhouse_ru
    @DimaVS ↶ Reply to #185761 #185771 09:45 AM, 07 Oct 2020
    airflow да
    через select да
    в рамках этого запроса не использую merge
    потому что просто нет целого города
  • @iureva #185772 09:54 AM, 07 Oct 2020
    Joined.
  • @iureva #185773 09:56 AM, 07 Oct 2020
    Здравствуйте.
    Процессы КХ сожрали почти всю память. Но при этом ни каких запросов не выполняется вобще. Как можно понять что происходит и кто потребляет такое большое вол-во ресурсов?
  • https://t.me/clickhouse_ru
    нет
    используте HTTP интерфейс и curl
    или DataGrip
  • https://t.me/clickhouse_ru
    SELECT * FROM system.merges
    SELECT * FROM system.dictionaries
    SELECT * FROM system.processes
  • https://t.me/clickhouse_ru
    @burov4j #185780 11:01 AM, 07 Oct 2020
    Joined.
  • @odainic #185781 11:21 AM, 07 Oct 2020
    всем привет. А можете подсказать, как таблицы timestamp, value - найти максимально приближенное значение value к задаваемой константе? Например, у меня есть лог накопления кредитов пользователем, и я хочу понять, в какой момент времени он достиг какого-то порога (хотя его value может быть ближайшем, но не точно соответствовать константе)
    Либо вверх, либо вниз
  • https://t.me/clickhouse_ru
    @odainic я вот спрашивал подобное, пока никто не ответил, и сам тоже не решил средствами КХ
  • 😭
  • https://t.me/clickhouse_ru
    решил пока путем забора всей инфы и агрегацией путем прогона каждой записи пока переменная не превысит указанный треш
  • https://t.me/clickhouse_ru
    если вниз то вроде MAX(value) less than or equals CONSTANT должно работать, если вверх, то MIN(value) more than CONSTANT. Ну и логично, что если верхнее есть то нинее искать не нужно, никакой специфики КХ тут вроде нет или я что -то не понял
  • https://t.me/clickhouse_ru
    если я правильно уловил мысль, то история примерно такая: (то бишь кумулятивная сумма с обнулением при достижении лимита) https://t.me/clickhouse_ru/185578
    Lars Ulrich in ClickHouse не тормозит

    Всем привет. Есть история продаж, которую надо разбить на слоты по определенной сумме. например, первая сотня набрана сегодня в полночь, вторая сотня - завтра утром: ┌─Quantity ─┬─toDateTime(Timestamp) ─┐ │ 10 │ 2020-05-01 00:00:03 │ │ 86 │ 2020-05-01 00:01:05 │ │ 4 │ 2020-05-01 01:00:01 │ │ 1 │ 2020-05-01 01:11:33 │ │ 24 │ 2020-05-01 02:32:44 │ │ 2 │ 2020-05-01 04:15:25 │ │ 80 │ 2020-05-01 05:00:02 │ │ 1 │ 2020-05-01 08:20:28 │ │ 76 │ 2020-05-01 09:33:17 │ │ 55 │ 2020-05-01 10:00:03 │ └──────────┴───────────────────────┘ => ┌─Quantity ─┬─toDateTime(Timestamp) ─┐ │ 100 │ 2020-05-01 01:00:01 │ │ 107 │ 2020-05-01 05:00:02 │ │ 132 │ 2020-05-01 10:00:03 │ └──────────┴───────────────────────┘ Подсунуть sumState(Quantity)<100 в качестве параметра grouping как описано в документации не получается. Есть идеи, кроме как грузить каждую продажу на клиент, и там уже разруливать?) https://clickhouse.tech/docs/ru/sql-ref…

  • да, очень похоже. но мне на группы не надо бить. только по константе определенной.
  • https://t.me/clickhouse_ru
    ну тут чуть сложнее, потому как диапазоны вроде какие -то, сорри вчитываться пока времени нет. но в теории можно на персентили разделить и использовать что -то вроде quantilesExact
  • @eperesadka #185789 11:32 AM, 07 Oct 2020
    KILL QUERY вообще работает? выполняю, он "успешно" проходить, но запрос как работал так и работает
  • https://t.me/clickhouse_ru
    ну мне надо знать время, когда сумма продаж достигла трешхолда и смотреть дальше. типа фиксировать время выполнения плана по пятилетке
  • @odainic #185791 11:34 AM, 07 Oct 2020
    Ну тогда да, точно то, что мне тоже нужно
    А ты не пробовал то, что выше советуют? Less than or equals
  • https://t.me/clickhouse_ru
    скажем так, надо зафиксировать время выполнения плана. план в $100 выполняется, например, двумя продажами по $50, и план может быть выполнен неограниченное количество раз, по сути сто продаж по $100 в одну микросекунду - это 100 выполнений плана
  • https://t.me/clickhouse_ru
    он ничего не убивает. он проставляет флаг, а запрос периодически смотрит на этот флаг и завершается когда он проставлен
  • https://t.me/clickhouse_ru
    ну сходу приходит что -то вроде

    select id, sum(sale) as summary, timestamp ... ON summary equals 100
    AND id > last_founded_id GROUP BY timestamp.

    но я не на столько часто пишу sql, тут просто поиграть с запросами нужно, точнее вряд ли подскажу.
  • https://t.me/clickhouse_ru
    та не, тут же и смысла нет пробовать, если история набора идет сегодня 100, завтра 200, и в завтрашней записи будет 200, а не 300 (то есть второе событие не в курсе о первом), надо ведь знать сумму
  • https://t.me/clickhouse_ru
    @Fullherdi #185796 11:40 AM, 07 Oct 2020
    Привет, как можно дробнуть партиции с каким-то условием
    ну вроде ALTER TABLE таблица DROP PARTITION partition WHERE toDateTime(partition) < toDateTime(addMonths(today(),-6))
  • ну дык сделай кумулятивную сумму по каждому user_id
  • https://t.me/clickhouse_ru
    ну там нет юзеров, просто сам факт, объем и время продажи. и кумулятивную сумму эту надо обнулять при достижении определенного объема. И вот в этом-то и вопрос
  • https://t.me/clickhouse_ru
    чую, что пахнет чем-то из оконных функций, которых в КХ толком нет же
  • @odainic #185800 11:44 AM, 07 Oct 2020
    как нет?) там есть лямбда со всеми вытекающими)
  • @odainic #185801 11:45 AM, 07 Oct 2020
    работа с массивами
  • https://t.me/clickhouse_ru
    ну я так себе сварщик. может, это и можно в лямбду обернуть. мог бы - обернул, а не в чатик бы ходил
  • https://t.me/clickhouse_ru
    там примерно подразумевалось что -то вроде

    ```
    SELECT
    T.Id,
    T.sale,
    T.timestamp
    (SELECT
    sum(sale) FROM Table
    WHERE Id <= T.Id) 'total'
    FROM Table T
    HAVING total = 100
    ```
    тут только нужно как -то ограничить выборку чтобы не считать уже посчитаные записи ну и да по таймштампу сортировать чтобы по порядку было
  • https://t.me/clickhouse_ru
    Не вариант, надо иметь результат за всю историю
  • https://t.me/clickhouse_ru
    @metikovvadim #185805 12:29 PM, 07 Oct 2020
    Привет. Вопрос к знатокам, чем может ограничиваться, сколько партов мерджится? Есть около 500 несмердденных партов, а мерджи объединяют по 5-6 кусков, хотя иногда вижу и по 10, как укрупнить мерджи?
  • думаю это логика в коде... есть только на максимальный размер парта трешолды и пул

    попробуйте пул увеличить
  • https://t.me/clickhouse_ru
    @metikovvadim #185807 02:01 PM, 07 Oct 2020
    Background_pool_size, который? 40 стоит при 10 мерджах
  • https://t.me/clickhouse_ru
    @finio #185808 02:36 PM, 07 Oct 2020
    привет
    столкнулся с тем, что мутации не выполняются
    просто висят

    select parts_to_do, latest_failed_part from system.mutations where is_done=0;

    SELECT
    parts_to_do,
    latest_failed_part
    FROM system.mutations
    WHERE is_done = 0

    ┌─parts_to_do─┬─latest_failed_part─┐
    │ 10 │ │
    │ 10 │ │
    │ 10 │ │
    │ 10 │ │
    └─────────────┴────────────────────┘
  • https://t.me/clickhouse_ru
    @finio #185809 02:36 PM, 07 Oct 2020
    мержей, связанных с мутациями не видно

    select table, elapsed, progress, memory_usage, is_mutation from system.merges ;

    SELECT
    table,
    elapsed,
    progress,
    memory_usage,
    is_mutation
    FROM system.merges

    Ok.

    0 rows in set. Elapsed: 0.003 sec.
  • https://t.me/clickhouse_ru
    какая версия КХ ?

    Я бы сделал detach table / attach table и читал в логе что КХ напишет про мутации после attach
  • https://t.me/clickhouse_ru
    @finio ↶ Reply to #185810 #185811 02:43 PM, 07 Oct 2020
    версия 19.4.1
  • https://t.me/clickhouse_ru
    тогда возможно просто глюк, и detach/attach просто починит
  • https://t.me/clickhouse_ru
    @finio #185813 02:45 PM, 07 Oct 2020
    спасибо сейчас попробуем
  • https://t.me/clickhouse_ru
    @finio ↶ Reply to #185812 #185814 02:52 PM, 07 Oct 2020
    помогло, спасибо
  • @vvvjhaq #185815 03:47 PM, 07 Oct 2020
    Привет. 3 КХ+3 ЗК. Если все правильно настроено, то при выключении лидера ЗК, репликация должна работать как я понимаю?
  • https://t.me/clickhouse_ru
    если они лидера нового выберут, то должно ;)
  • они сами там должны определиться?
    а то в readonly уходит(
  • @vvvjhaq #185818 03:52 PM, 07 Oct 2020
    Надо проверять как они все видят друг друга ж?
  • https://t.me/clickhouse_ru
    ну вообще я бы еще один ZK погасил чтобы был один лидер
  • ок, спс. все в докерах еще, мб просто они не видят еще друг друга
  • https://t.me/clickhouse_ru
    может быть. но стоит логи контейнеров с ZK посмотреть чтобы понять что происходит
  • https://t.me/clickhouse_ru
    ЗК должны быть в одном ансабмле, а не standalone

    т.е. один лидер и 2 фоловера

    проверяется echo stat | nc <zookeeper ip> 2181

    все КХ должны видеть всех ЗК (в конфиге КХ надо прописать либо все ЗК либо dns-запись за которой все ЗК)
  • https://t.me/clickhouse_ru
    @a1s_333444 #185823 04:49 PM, 07 Oct 2020
    @den_crane , привет, я чего то совсем не допираю. Мне по наследству достался кластер кликхауса из 3 шардов и в каждом по 3 реплики, internal_replication стоит в False. Создана табличка с помощью движка MergeTree и на нее повешана Distributed таблица. Правильно я понимаю, что в такой конфигурации у нас каждая нода( а их 9 ) для этой таблицы как отдельный шард? Если да, то каким образом кликхаус шардирует это.
    И еще один вопрос, мне нужно переставить internal_replication в True. То, тогда, как поведет себя кликхаус с этой табличкой?
  • https://t.me/clickhouse_ru
    у вас используется "детская" репликация, основанная на Distributed + internal_replication = False

    у вас 3 шарда и в каждом 3 реплики

    при internal_replication = True все сломается к херам ("репликация" остановится)
  • https://t.me/clickhouse_ru
    @a1s_333444 #185825 04:52 PM, 07 Oct 2020
    Данные похерит?
  • https://t.me/clickhouse_ru
    "репликация" остановится

    и данные разъедутся, все результаты запросов станут неверными
  • https://t.me/clickhouse_ru
    @a1s_333444 #185827 04:54 PM, 07 Oct 2020
    А там каждая нода как отдельный шард?
  • https://t.me/clickhouse_ru
    вы издеваетесь?
  • https://t.me/clickhouse_ru
    @den_crane #185829 04:55 PM, 07 Oct 2020
    у вас 3 шарда и в каждом 3 реплики
    у вас 3 шарда и в каждом 3 реплики
    у вас 3 шарда и в каждом 3 реплики
    у вас 3 шарда и в каждом 3 реплики
  • https://t.me/clickhouse_ru
    @a1s_333444 #185830 04:55 PM, 07 Oct 2020
    Да, я знаю что 3 шарда и в каждом по 3 реплики, ни в коем случае не издеваюсь)
  • https://t.me/clickhouse_ru
    @a1s_333444 #185831 04:55 PM, 07 Oct 2020
    Я просто решил потестить и создал тестовый кластер, запихал туда данных и увидел, что они расползлись на каждую ноду
  • https://t.me/clickhouse_ru
    и что теперь? нам не видно как вы там создали .xml и таблицы.
  • https://t.me/clickhouse_ru
    @den_crane #185833 04:57 PM, 07 Oct 2020
    https://clickhouse.tech/docs/ru/engines/table-engines/special/distributed/

    У каждого шарда в конфигурационном файле может быть указан параметр internal_replication.
    Если он выставлен в false (по умолчанию), то данные будут записываться на все реплики. По сути, это означает, что Distributed таблица занимается репликацией данных самостоятельно. Это хуже, чем использование реплицируемых таблиц, так как не контролируется консистентность реплик, и они со временем будут содержать немного разные данные.
    Distributed | Документация ClickHouse

    Distributed Движок Distributed не хранит данные самостоятельно, а позволяет обрабатывать запросы распределённо, на неско

  • https://t.me/clickhouse_ru
    @a1s_333444 #185834 05:00 PM, 07 Oct 2020
    А, точно, прошу прощения, я немного запутался в дата грипе. Сейчас перепроверил)
  • https://t.me/clickhouse_ru
    @a1s_333444 #185835 05:02 PM, 07 Oct 2020
    То есть единственный нормальный вариант - переделывать с MergeTree на ReplicatedMergeTree и только после этого можно смело менять на internal_replication в True
  • https://t.me/clickhouse_ru
    Такое ощущение из ваших слов что internal_replication = true это ваша цель. Что как-то странно.
    Какая вам разница что там? Скоро сделают auto. Там будет auto.
  • https://t.me/clickhouse_ru
    @a1s_333444 #185837 05:07 PM, 07 Oct 2020
    Разработчики хотят действий по кластеру, не хотят по каждой ноде проходить, вот и встала такая задача
  • https://t.me/clickhouse_ru
    тогда вы совсем все неправильно поняли.

    on cluster запросы никак не соотносятся с Replicated и тем более c internal_replication
    они просто случайно тоже работают через зукипер
  • https://t.me/clickhouse_ru
    @den_crane #185839 05:09 PM, 07 Oct 2020
    on cluster прекрасно работает для MergeTree таблиц, при internal_replication = false
  • https://t.me/clickhouse_ru
    @smartyru #185841 05:31 PM, 07 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @donaldwipper #185842 05:40 PM, 07 Oct 2020
    Добрый вечер, знатоки clickhouse. Подскажите, пжл, как можно разложить строковое поле, имеющее вид списка из словарей (json Array) в строки новой таблицы. Детализирую ниже.

    Я хочу из такой строки в старой таблице

    test_column | id
    --------------------------
    [{"x":"5"}, {"x":"7"}] | 5

    Получить вот такую форму в новой

    x | id
    ------
    5 | 5
    7 | 5
  • https://t.me/clickhouse_ru
    @nikitosiusis #185843 05:43 PM, 07 Oct 2020
    JSONExtractString видимо
  • https://t.me/clickhouse_ru
    а почему id стал 6 у второй строки?
  • https://t.me/clickhouse_ru
    @donaldwipper #185845 05:44 PM, 07 Oct 2020
    опечатка
  • https://t.me/clickhouse_ru
    {"x,7"}

    тоже ?
  • https://t.me/clickhouse_ru
    @den_crane #185847 05:46 PM, 07 Oct 2020
    {"x","7"}
  • https://t.me/clickhouse_ru
    @donaldwipper #185848 05:46 PM, 07 Oct 2020
    да, все поправил
  • https://t.me/clickhouse_ru
    @donaldwipper #185849 05:49 PM, 07 Oct 2020
    Я так понимаю, что для начала мне нужно преобразовать test_column в тип Array. Где элементы - это словари. А потом с помощю arrayJoin развернуть ячейку в строки
  • https://t.me/clickhouse_ru
    @den_crane #185850 05:56 PM, 07 Oct 2020
    SELECT
    arrayJoin(arrayMap(i -> JSONExtractString(i, 1), JSONExtractArrayRaw(j))) AS r,
    id
    FROM
    (
    SELECT
    '[{"x":"5"}, {"x":"7"}]' AS j,
    5 AS id
    )

    ┌─r─┬─id─┐
    │ 5 │ 5 │
    │ 7 │ 5 │
    └───┴────┘
  • https://t.me/clickhouse_ru
    Ох, спасибо большое!
  • https://t.me/clickhouse_ru
    @den_crane #185852 05:57 PM, 07 Oct 2020
    лучше не делать таких JSON [{"x":"5"}, {"x":"7"}] , тут 5 и 7 не числа, а типа строки
  • https://t.me/clickhouse_ru
    @den_crane #185853 05:59 PM, 07 Oct 2020
    SELECT
    arrayJoin(JSONExtract(j, 'Array(Tuple(String))').1) AS r,
    id
    FROM
    (
    SELECT
    '[{"x":"5"}, {"x":"7"}]' AS j,
    5 AS id
    )

    ┌─r─┬─id─┐
    │ 5 │ 5 │
    │ 7 │ 5 │
    └───┴────┘

    а ну да, из-за этого и Array(Tuple(Int64)) не работал
  • https://t.me/clickhouse_ru
    @Paddler #185854 06:16 PM, 07 Oct 2020
    Всем привет! Подскажите, пожалуйста, возможно ли как-то в клике сделать row_number() over (partition...), так что бы он не обнулялся на границе блоков?
  • @andrey45263 #185855 06:17 PM, 07 Oct 2020
    Добрый день, создал таблицу

    CREATE TABLE dwh.user_level_data_agg_total (
    account_id UInt64,
    match_count SimpleAggregateFunction(sum, UInt64),
    match_start_sum SimpleAggregateFunction(sum, UInt64),
    match_finish_sum SimpleAggregateFunction(sum, UInt64)
    ) ENGINE AggregatingMergeTree() ORDER BY (account_id);

    Наполнил ее 7ю млн записями, выполняю след запрос:
    select account_id, match_count from dwh.user_level_data_agg_total;

    <Information> executeQuery: Read 7419562 rows, 113.21 MiB in 18.760838791 sec., 395481 rows/sec., 6.03 MiB/sec.

    Что то я сильно расстроился. 7 млн и такое время .... Или это нормально для AggregatedMergeTree ?
  • https://t.me/clickhouse_ru
    select g, x, n from (select g, groupArray(x) gx from ( select number%3 g, number x from numbers(10) ) group by g) array Join gx as x, arrayEnumerate(gx) as n
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    select account_id, match_count from dwh.user_level_data_agg_total;

    этот запрос вообще ничего не делает, он тупо читает с диска. AggregatedMergeTree тут ни при чем.
  • https://t.me/clickhouse_ru
    @Niklisovik #185859 06:26 PM, 07 Oct 2020
    Добрый вечер, подскажите пжл , как можно сделать drop partition по месяцам?
  • https://t.me/clickhouse_ru
    КО: вопрос странный. Берете и делаете. alter table x drop partition
  • https://t.me/clickhouse_ru
    @hlnkzntsv #185861 06:31 PM, 07 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @Niklisovik #185862 06:36 PM, 07 Oct 2020
    обычно я писал:
    alter table default.report_ drop partition '2019-10-09';

    а по месяцам нельзя сделать просто
    alter table default.report_ drop partition '2019-10;
  • https://t.me/clickhouse_ru
    @Fullherdi #185863 06:37 PM, 07 Oct 2020
    Кх не обладает таким функционалом, скрипты наше все
  • https://t.me/clickhouse_ru
    Сегодня спрашивал, поискал в истории, нашел подходящие запросы, не смог под себя сделать, но очень помогли
  • https://t.me/clickhouse_ru
    @Niklisovik #185865 06:38 PM, 07 Oct 2020
    знаю, что можно сделать через delete
  • https://t.me/clickhouse_ru
    @Fullherdi #185866 06:39 PM, 07 Oct 2020
    Через делит ты будешь удалять записи
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #185865 #185867 06:39 PM, 07 Oct 2020
    не знаю, сделалил ли оптимизации сейчас, но раньше это было достаточно больно)
  • https://t.me/clickhouse_ru
    ничего не делали
  • https://t.me/clickhouse_ru
    @Fullherdi #185869 06:39 PM, 07 Oct 2020
    У меня вот 16 таблиц и там партиций штук по 100, очень накладно в плане количества запросов делит
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #185869 #185870 06:40 PM, 07 Oct 2020
    delete не для этого. Для массовой очистки старых данных drop partition.
    partition в КХ вообще больше как раз для этого, нежели для оптимизации селектов как в других базах.
  • https://t.me/clickhouse_ru
    Так я про это и говорю что партицию целиком надо дропать
  • https://t.me/clickhouse_ru
    @Fullherdi #185872 06:43 PM, 07 Oct 2020
    Но это такая не тривиальная достаточно задача
  • https://t.me/clickhouse_ru
    @Fullherdi #185873 06:44 PM, 07 Oct 2020
    Кстати, парни, в доке написано что партиция удалится примерно через 10 минут, с чем это связано?
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #185873 #185874 06:45 PM, 07 Oct 2020
    вроде 8 было. )
  • https://t.me/clickhouse_ru
    где написано?
  • https://t.me/clickhouse_ru
    Такой себе механизм безопасности, тк за 8 минут новая партиция уже точно должна оказаться на диске.
  • https://t.me/clickhouse_ru
    @Fullherdi #185877 06:45 PM, 07 Oct 2020
    Секунду
  • https://t.me/clickhouse_ru
    @Fullherdi #185878 06:46 PM, 07 Oct 2020
    PARTITION | Документация ClickHouse

    Манипуляции с партициями и кусками Для работы с партициями доступны следующие операции: DETACH PARTITION — перенести пар

  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #185872 #185879 06:47 PM, 07 Oct 2020
    почему?

    отправная точка для скриптования где-то тут:

    select partition, table, database from system.parts group by partition, table, database order by database, table,partition;
  • https://t.me/clickhouse_ru
    @Fullherdi #185880 06:47 PM, 07 Oct 2020
    clickhouse-client -q "select concat('alter table xr.',table,' drop partition ',partition, ' ;')
    from system.parts
    where toDateTime(partition) < toDateTime(addMonths(today(),-6)) and table = 'table' "
  • https://t.me/clickhouse_ru
    @Fullherdi #185881 06:47 PM, 07 Oct 2020
    Отправная тут
  • https://t.me/clickhouse_ru
    @Fullherdi #185882 06:48 PM, 07 Oct 2020
    А если таким Макаром выполнять команды которые гинерирует плейбук, то кх ругается на отсутствие кавычек вокруг имени партиции
  • https://t.me/clickhouse_ru
    @Fullherdi #185883 06:48 PM, 07 Oct 2020
    4 часа сегодня на это потратил, так и не решил
  • https://t.me/clickhouse_ru
    @Fullherdi #185884 06:49 PM, 07 Oct 2020
    Думаю завтра на питоне писать, сроки очень горят
  • https://t.me/clickhouse_ru
    @Fullherdi #185885 06:49 PM, 07 Oct 2020
    Если решу завтра скину решение
  • https://t.me/clickhouse_ru
    фигня какая-то.

    наверное это про базы Atomic. drop partition пока что удаляет сразу, ничего никто не ждет
  • https://t.me/clickhouse_ru
    @Fullherdi #185887 06:55 PM, 07 Oct 2020
    Может быть, я пока верю документации
  • https://t.me/clickhouse_ru
    @Fullherdi #185888 06:55 PM, 07 Oct 2020
    Проверял, партиция исчезает, а про физическое удаление с диска...., пока не заморачивался
  • https://t.me/clickhouse_ru
    @den_crane #185889 06:56 PM, 07 Oct 2020
    а я понял про что.

    это короче если были inactive парты, то они удалятся через 8 мин.
    а настоящие парты с данными активные, удаляются сразу
  • https://t.me/clickhouse_ru
    @Fullherdi #185890 06:56 PM, 07 Oct 2020
    Ну ток проверил что файлы с диска удивляются связанные с партицией
  • https://t.me/clickhouse_ru
    Круть
  • https://t.me/clickhouse_ru
    @Fullherdi #185892 06:57 PM, 07 Oct 2020
    Завтра хочу домучать задачу
  • https://t.me/clickhouse_ru
    @Fullherdi #185893 06:58 PM, 07 Oct 2020
    Помогите с запросом
  • https://t.me/clickhouse_ru
    @Fullherdi #185894 06:58 PM, 07 Oct 2020
    clickhouse-client -q "select concat('alter table xr.',table,' drop partition ',partition, ' ;')
    from system.parts
    where toDateTime(partition) < toDateTime(addMonths(today(),-6)) and table = 'table' "
  • https://t.me/clickhouse_ru
    @Fullherdi #185895 06:58 PM, 07 Oct 2020
    Он генерит правильные альтеры
  • https://t.me/clickhouse_ru
    @Fullherdi #185896 06:58 PM, 07 Oct 2020
    Но, без апострофов вокруг имени партиции
  • https://t.me/clickhouse_ru
    @Fullherdi #185897 06:59 PM, 07 Oct 2020
    А без них кх не кушает такой запрос
  • https://t.me/clickhouse_ru
    @Fullherdi #185898 06:59 PM, 07 Oct 2020
    4 часа бился не смог решить
  • https://t.me/clickhouse_ru
    partition_id <--------------------

    drop partition id

    sql="select distinct partition_id from system.parts
    where database = '$db' and table='$table' and min_date=max_date and active
    and min_date < today()-$days format TabSeparatedRaw
    "

    for partition in `$ch_client "$sql"`
    do
    sql="alter table \`$table\` drop partition id '$partition'"
    $ch_client "$sql"
    done
  • https://t.me/clickhouse_ru
    @Fullherdi #185900 07:00 PM, 07 Oct 2020
    Спасибо, завтра посмотрю, хочу уже питонячий скрипт писать
  • https://t.me/clickhouse_ru
    @Fullherdi #185901 07:02 PM, 07 Oct 2020
    К слову, можно как-то обновлять единственное поле в записи?
  • https://t.me/clickhouse_ru
    @Fullherdi #185902 07:02 PM, 07 Oct 2020
    Кх же не обновляет запись а создаёт новую, на сколько мне известно
  • https://t.me/clickhouse_ru
    @nyoroon #185903 07:03 PM, 07 Oct 2020
    он не создаёт новую, а пересобирает изменённые колонки всего парта
  • https://t.me/clickhouse_ru
    @nyoroon #185904 07:03 PM, 07 Oct 2020
    даже если изменил всего одну запись
  • https://t.me/clickhouse_ru
    @Fullherdi #185905 07:04 PM, 07 Oct 2020
    Ну вот есть запись, мне нужна такая же , только измениться одно поле
  • https://t.me/clickhouse_ru
    @nyoroon #185906 07:05 PM, 07 Oct 2020
    если речь про alter update, есть ещё схлопывающиеся движки типа collapsingMT и replacingMT
  • https://t.me/clickhouse_ru
    @args_kwargs #185907 07:06 PM, 07 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    КХ буквально создает новую таблицу, и переливает туда все записи в новом проапдейченном состоянии, но из-за оптимизаций переливается не все
  • https://t.me/clickhouse_ru
    @Fullherdi #185909 07:08 PM, 07 Oct 2020
    Ну вот есть запись с полями допустим { 1, 2,3}
  • https://t.me/clickhouse_ru
    @Fullherdi #185910 07:08 PM, 07 Oct 2020
    А тут хоп и 3 поменялось на 0
  • https://t.me/clickhouse_ru
    @Fullherdi #185911 07:08 PM, 07 Oct 2020
    Как это обновить ?
  • https://t.me/clickhouse_ru
    @Fullherdi #185912 07:09 PM, 07 Oct 2020
    Вытащить прошлую запись, обновить ее и вставить?
  • https://t.me/clickhouse_ru
    @nyoroon #185913 07:09 PM, 07 Oct 2020
    если это одноразовая вещь - можно через alter update, если постоянно - replacing MT или collapsing MT
  • https://t.me/clickhouse_ru
    в смысле { 1, 2,3} -- это массив или 3 поля?
  • https://t.me/clickhouse_ru
    @Fullherdi #185915 07:11 PM, 07 Oct 2020
    Это 3 поля
  • https://t.me/clickhouse_ru
    @Fullherdi #185916 07:12 PM, 07 Oct 2020
    Образно так их описал
  • https://t.me/clickhouse_ru
    Ну вообще лучше никак не обновлять , тут не mysql.
    Хранить в словарях часто обновляемые данные.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Fullherdi #185919 07:13 PM, 07 Oct 2020
    Пообщаюсь с коллегами для уточнения, возможно не совсем правильно обрисовал задачу
  • https://t.me/clickhouse_ru
    @Fullherdi #185920 07:22 PM, 07 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @iDzeti #185921 08:58 PM, 07 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @iusik #185922 10:15 PM, 07 Oct 2020
    Добрый вечер.
    Подскажите у кого есть опыт хранения в CH – Mongo ObjectID?

    Поиск по ObjectId буду делать, выбирать также буду.
  • https://t.me/clickhouse_ru
    КХ не про точечные запросы.
  • https://t.me/clickhouse_ru
    @iusik ↶ Reply to #185923 #185924 10:19 PM, 07 Oct 2020
    знаем )
    Но у меня будет много записей с один ObjectID
  • https://t.me/clickhouse_ru
    Ну так тогда надо конкретизировать юзкейс
  • https://t.me/clickhouse_ru
    @iusik #185926 10:20 PM, 07 Oct 2020
    Хочу понять на сколько сильно будет отличвться выборка по ObjectID и по int32
  • https://t.me/clickhouse_ru
    @RapidCodeLab #185927 10:23 PM, 07 Oct 2020
    может тупой вопрос, а в кликхаузе есть тип objectID ?
  • https://t.me/clickhouse_ru
    @iusik ↶ Reply to #185927 #185928 10:24 PM, 07 Oct 2020
    нету
  • https://t.me/clickhouse_ru
    Ну я без понятия, что там внутри objectid. Но то, что сканирование колонки int32 будет ощутимо быстрей чем int64 только в силу меньшего размера - это факт
  • https://t.me/clickhouse_ru
    @RapidCodeLab #185931 10:25 PM, 07 Oct 2020
    objectID.toString ? то есть выборка по строке vs по интам
  • https://t.me/clickhouse_ru
    @msg_kurt #185932 10:26 PM, 07 Oct 2020
    Неспроста же в документации советуют юзать целочисленные значения везде, где только можно, дабы получать максимальную эффективность
  • https://t.me/clickhouse_ru
    @iusik #185933 10:26 PM, 07 Oct 2020
    Так и думал сделать. Я думал у кого-то есть тесты )
  • https://t.me/clickhouse_ru
    Так что там в objectid?
  • https://t.me/clickhouse_ru
    @iusik #185935 10:27 PM, 07 Oct 2020
    Ну нет его в ch по дефолту.
  • https://t.me/clickhouse_ru
    @iusik #185936 10:28 PM, 07 Oct 2020
    Проблема в том что первоисточник ключа у меня Mongodb.
    А в КХ, я собираюсь выгружать стату по этому ObjectID.
  • https://t.me/clickhouse_ru
    В кх есть почти все стандартные типы и некоторые свои специфические.
  • https://t.me/clickhouse_ru
    @nyoroon #185938 10:28 PM, 07 Oct 2020
    objectid - 12 байт в бинарном виде, int32 - 4 байта
  • https://t.me/clickhouse_ru
    Я же спросил, что там, а не есть ли оно в КХ
  • https://t.me/clickhouse_ru
    Ну для 12 байт можно попробовать fixedstring или lowcardinality, если этих айди немного. Но я бы попробовал этот внутряковый айди приводить к инту
  • https://t.me/clickhouse_ru
    @iusik ↶ Reply to #185940 #185941 10:31 PM, 07 Oct 2020
    Тут другая проблема, когда база распределенная.
  • https://t.me/clickhouse_ru
    @iusik #185942 10:32 PM, 07 Oct 2020
    будут колизии при записи, если я даже захочу сделать в обьекте документа инкрементируемое поле
  • 08 October 2020 (209 messages)
  • https://t.me/clickhouse_ru
    @kozyrevMikhail #185943 04:54 AM, 08 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @149051052 #185944 04:57 AM, 08 Oct 2020
    Доброе утро!

    https://clickhouse.tech/docs/ru/sql-reference/table-functions/file/
    Есть ли возможность вставлять данные через функцию FILE()?

    Создавать таблицу на каждый файл нельзя, файлов много
    file | Документация ClickHouse

    file Создаёт таблицу из файла. Данная табличная функция похожа на табличные функции url и hdfs. Функция file может испол

  • https://t.me/clickhouse_ru
    @149051052 #185945 05:24 AM, 08 Oct 2020
    Может быть есть аналог SELECT ... INTO OUTFILE https://dev.mysql.com/doc/refman/8.0/en/select-into.html
  • Спасибо, вложил 20 тенге и вывел 30 миллиардов $, завтра пойду яндекс выкуплю.
  • @dmitry_romanov #185948 07:00 AM, 08 Oct 2020
    Повисло больше сотни запросов вида
    Row 177:
    ────────
    is_initial_query: 1
    user: actions
    query_id: 4feae4da-0393-4504-88be-5d064b6b0c7d
    address: 172.19.0.1
    port: 54860
    initial_user: actions
    initial_query_id: 4feae4da-0393-4504-88be-5d064b6b0c7d
    initial_address: 172.19.0.1
    initial_port: 54860
    interface: 2
    os_user:
    client_hostname:
    client_name:
    client_version_major: 0
    client_version_minor: 0
    client_version_patch: 0
    client_revision: 0
    http_method: 2
    http_user_agent: GuzzleHttp/6.4.1 curl/7.66.0 PHP/7.3.18
    quota_key:
    elapsed: 427.587120113
    is_cancelled: 1
    read_rows: 0
    read_bytes: 0
    total_rows_approx: 0
    written_rows: 0
    written_bytes: 0
    memory_usage: 2113566
    peak_memory_usage: 2113566
    query: INSERT INTO actions FORMAT JSONEachRow

    thread_numbers: [320]
    ProfileEvents.Names: ['Query','InsertQuery','IOBufferAllocs','IOBufferAllocBytes','ContextLock','RWLockAcquiredReadLocks']
    ProfileEvents.Values: [1,1,2,2097182,12,6]
    Settings.Names: ['use_uncompressed_cache','load_balancing','max_memory_usage']
    Settings.Values: ['0','random','10000000000']

    kill в статусе waiting. Как убить эти запросы?
    KILL QUERY WHERE query_id='4feae4da-0393-4504-88be-5d064b6b0c7d'

    KILL QUERY WHERE query_id = '4feae4da-0393-4504-88be-5d064b6b0c7d' ASYNC

    ┌─kill_status─┬─query_id─────────────────────────────┬─user────────────┬─query───────────────────────────────────────────────────────┐
    │ waiting │ 4feae4da-0393-4504-88be-5d064b6b0c7d │ actions │ INSERT INTO actions FORMAT JSONEachRow

    └─────────────┴──────────────────────────────────────┴─────────────────┴─────────────────────────────────────────────────────────────┘
  • @chashnikov #185949 07:01 AM, 08 Oct 2020
    SYSTEM SHUTDOWN; 😀
  • @chashnikov #185950 07:02 AM, 08 Oct 2020
    or SYSTEM KILL;
  • @chashnikov #185951 07:02 AM, 08 Oct 2020
    что равносильно kill -9 {$ pid_clickhouse-server}
  • рестарт только спасает, по-крайней мере специалисты из Яндекса других вариантов не предлагают в облаке
  • @dmitry_romanov #185953 07:10 AM, 08 Oct 2020
    Спасибо
  • @bannedusername #185954 07:15 AM, 08 Oct 2020
    Привет,
    А где я неправ:
    select position('aaaa-ccc-fff-ggg','-',1)
    Number of arguments for function position doesn't match: passed 3, should be 2 (version 20.3.8.53)
    Вроде в документации три параметра может быть 🙂
  • https://t.me/clickhouse_ru
    судя по документации в 20.3 еще не было опционального параметра [start_positiob]
  • неожиданно и неприятно.. спасибо
  • @katherine_etc #185957 07:30 AM, 08 Oct 2020
    Доброе утро!
    Помогите, пожалуйста, с проблемой:

    при подключении jdbc:clickhouse://host:port?socket_timeout=1800000 хочу выполнить set некоторых параметров, но получаю ошибку
    DB::Exception: There is no session (version 20.8.2.3 (official build)).

    Есть ли варианты установить параметры на уровне подключения, а не прописывать их в конфиге?
  • https://t.me/clickhouse_ru
    Ну так можно и из 40 занять, смотря сколько пишете
  • @s_panfilova #185960 08:52 AM, 08 Oct 2020
    Запускаю 5 одинаковых запросов одновременно - 2,5с каждый, запускаю 20 - 8с каждый. Смотрю график использования ЦПУ - там даже при 20 запросах нет и 75% использования ЦПУ. Подскажите какие Настройки смотреть - операционки, клика?
  • @a_sima10 #185961 08:57 AM, 08 Oct 2020
    всем привет, подскажите, может быть есть инструмент, в котором просто написано — вот ваши тяжёлые запросы, сгруппированные по классам запросов. Нажал на какой-нибудь, и мне бы сказали, что он тяжёлый поэтому?

    пс. или кто как ищет медленные/тяжелые запросы?
  • https://t.me/clickhouse_ru
    @dexig #185962 09:13 AM, 08 Oct 2020
    /stat@combot
  • @Dalmaneo #185964 09:20 AM, 08 Oct 2020
    Всем привет!
    Можно ли как-то при указании source clickhouse к localhost скрыть реквизиты логина/пароля от пользователя в DDL?
  • @telegpos #185965 09:25 AM, 08 Oct 2020
    Joined.
  • @telegpos #185966 09:26 AM, 08 Oct 2020
    Всем привет, можно как-то обойти проблему отсутствия оконных функций?
  • https://t.me/clickhouse_ru
    Складывать все, что хотели передать в окно, в массивы, и колдовать с массивами
  • https://t.me/clickhouse_ru
    @windoozatnick #185968 09:30 AM, 08 Oct 2020
    Но есть ещё аналог LAG/LEAD, без оконок
  • @telegpos #185969 09:31 AM, 08 Oct 2020
    Спасибо
  • @vvvjhaq #185970 09:40 AM, 08 Oct 2020
    Добрый день. Как сменить через zkCli с лидеров/фолловеров на standalone mode? Или не только через zkCli
  • https://t.me/clickhouse_ru
    Уже 4е года складываю как String - полет нормальный. Да, int - быстрее, но нам хватает
  • https://t.me/clickhouse_ru
    ЦПУ не единственное узкое место. Посмотрите на оперативу, нагрузку дисков, количество ядер(максимально возможная параллельность)
  • https://t.me/clickhouse_ru
    @iusik ↶ Reply to #185971 #185973 10:08 AM, 08 Oct 2020
    Спасибо, за отзыв.
  • https://t.me/clickhouse_ru
    @abdulgalimov #185974 11:08 AM, 08 Oct 2020
    Есть таблица в которую записываются действия, с текущей датой.
    Хочу построить график который покажет в какое время суток в среднем было больше всего действий.

    Подскажите какой запрос сделать, чтобы получить данные примерно в таком формате за указанный период времени (например неделю, месяц...):
    Час1=Количество за 1 час
    Час2=Количество за 2 час
    ...
    Час24=Количество за 24 час
    ?
  • https://t.me/clickhouse_ru
    @ifeech #185975 11:09 AM, 08 Oct 2020
    Добрый день. ClickHouse не поддерживает связанные подзапросы?
    Делать where с Select по определенному значению
  • @372234777 #185976 11:14 AM, 08 Oct 2020
    Joined.
  • коррелированные подзапросы нет.
    а вот select * from a where (col1, col2) in (select col1, col2 from b) - да
  • https://t.me/clickhouse_ru
    @ifeech #185978 11:17 AM, 08 Oct 2020
    понял, спасибо!
  • https://t.me/clickhouse_ru
    toStartOfHour
  • @1344164906 #185980 12:00 PM, 08 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    insert into function file

    и clickhouse-client умеет into https://clickhouse.tech/docs/en/faq/integration/file-export/#using-into-outfile-clause
  • @1344164906 #185982 12:04 PM, 08 Oct 2020
    Подскажите пожалуйста, существуют ли организации, оказывающие услуги технической поддержки ПО СУБД ClickHouse? Есть контакты?
  • https://t.me/clickhouse_ru
    Спасибо
    Прекрасно, что все это работает
  • https://t.me/clickhouse_ru
    altinity же
  • На русском?
  • Аренадата, в том числе.
    https://arenadata.tech/products/arenadata-quickmarts/
    Arenadata QuickMarts

    Arenadata QuickMarts - кластерная колоночная СУБД, созданная на базе ClickHouse, ориентированная на Enterprise-сегмент, с корпоративной поддержкой, функционалом и контролем качества релизов.

  • https://t.me/clickhouse_ru
    ну вроде создатель там русский, может и русская поддержка есть
  • https://t.me/clickhouse_ru
    какой КХ?
  • https://t.me/clickhouse_ru
    там все русские кроме CEO, вся техподдержка, они же тут в чате сидят
  • https://t.me/clickhouse_ru
    надо задать session_id в параметрах , socket_timeout тоже там надо задавать
  • https://t.me/clickhouse_ru
  • 19.9.4
  • https://t.me/clickhouse_ru
    в этой версии возможен изредка deadlock , это починено сейчас.

    (Я ни в коем случае не советую бежать апгрейдится, тот deadlock редкий, можно и с ним жить)
  • https://t.me/clickhouse_ru
    на последнем митапе Алексей показывал инструмент, который очищает запросы от параметров и таким образом по quer_log можно группировать похожие запросы

    я пользуюсь просто show processlist
    смотрю несколько подряд, какие запросы я вижу чаще и elapsed у них большой
  • https://t.me/clickhouse_ru
    нельзя, какую проблему решаете?
  • Таблица входила в сложную мат вьюху да ещё и с join на внешний источник
  • https://t.me/clickhouse_ru
    @nyoroon #185997 12:25 PM, 08 Oct 2020
    join в MV не нужно использовать, вместо этого словари + dictGet
  • https://t.me/clickhouse_ru
    это в конфиге ZK прописывается
  • спс, разобрался)
  • Выношу мелкие предагрегаты в словарь, в качестве кэша, но не хочется в ddl указывать реквизиты, если обращение к localhost происходит. А через odbs совсем не интересно такое делать.
  • подскажите где можно посмотреть/почитать?

    я сейчас тоже смотрю через команду
    watch -n1 'clickhouse-client --query="SHOW PROCESSlIST"'
    но не всегда удобно, думал есть какое-то более лучшее решение
  • @latina_danzig #186002 12:59 PM, 08 Oct 2020
    Хотел скинуть оффсеты в кафке, и чтобы ничего не консьюмило я сделал DETACH таблицы с движком кафки, но при резете кафка выдает что состояние consumer group is Stable. Как такое может быть?
    Даже если я делаю дроп этой таблицы, консьюмер все равно остается.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    оффсеты в кафке хранятся
  • https://t.me/clickhouse_ru
    @nyoroon #186005 01:01 PM, 08 Oct 2020
    похоже я вопрос не так понял: кафка не даёт ресетнуть потому что считает что подключение ещё активно?
  • https://t.me/clickhouse_ru
    а проблема-то в чем?
    в том что другие могут посмотреть или в том что не хочется указывать? Или что?
  • Да, именно так
  • https://t.me/clickhouse_ru
    consumer group is Stable
    а сколько у вас кликхаузов консьюмит?
    надо на всех detach сделать
  • Это вы отлично подметили, заметил что два пода у кликхауса было в кубике 👍
    Спасибо
  • https://t.me/clickhouse_ru
    @ingvarrwvw #186010 01:36 PM, 08 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    Привет! Можно вопрос про словари опять :) у нас в пг есть таблица с 100млн записей, весом около 60гб, кх переживёт такой словарь? Или это глупая затея?
  • https://t.me/clickhouse_ru
    @evgeny_relap #186012 01:37 PM, 08 Oct 2020
    Он каждый раз будет гонять по сети весь объем данных при обновлении? или там как-то иначе организовано?
  • https://t.me/clickhouse_ru
    @evgeny_relap #186013 01:38 PM, 08 Oct 2020
    invalidate query кажется неприменим для этих данных
  • https://t.me/clickhouse_ru
    в обычный словарь конечно нет, КХ захочет 6TB озу.
    только cached или direct или ssd словари такое смогут

    >Он каждый раз будет гонять по сети весь объем данных при обновлении?
    >или там как-то иначе организовано?
    так это вы настраиваете, сконфигурите в словаре partial update
  • В том, что другие могут посмотреть реквизиты в DDL словаря
  • https://t.me/clickhouse_ru
    100млн записей, весом около 60гб -- вообще не похоже на словарь, похоже на основную таблицу
  • https://t.me/clickhouse_ru
    для пг она из основных таблиц
  • https://t.me/clickhouse_ru
    наши математики хотят видеть это в словарях пг )
  • https://t.me/clickhouse_ru
    @evgeny_relap #186019 01:42 PM, 08 Oct 2020
    матемвтики они такие
  • https://t.me/clickhouse_ru
    Мы сейчас решаем подобные проблемы, только источник данных MySQL, выбрали debezium+ самописный вариант записи в CH из kafka в CollapsingMergeTree.

    Если есть другие более интересные варианты, очень хотелось бы услышать)
  • https://t.me/clickhouse_ru
    наверное revoke show dictionaries on *.* from all;
  • https://t.me/clickhouse_ru
    ну берете 6TB озу и вперед или втыкаете nvme и создаете ssd-dictionary
  • А это исключит показ ddl для Show create table словарь?
  • https://t.me/clickhouse_ru
    я не проверял, но мне кажется что да
  • @Dalmaneo #186025 01:47 PM, 08 Oct 2020
    А то, show dictionaries не показывает сам ddl словарей
  • https://t.me/clickhouse_ru
    GRANT | Документация ClickHouse

    GRANT Присваивает привилегии пользователям или ролям ClickHouse. Назначает роли пользователям или другим ролям. Отозвать

  • https://t.me/clickhouse_ru
    @den_crane #186027 01:47 PM, 08 Oct 2020
    SHOW DICTIONARIES. Уровень: DICTIONARY. Разрешает выполнять запросы SHOW DICTIONARIES, SHOW CREATE DICTIONARY, EXISTS <dictionary>.
  • Надо проверить, спасибо. Пока что, в моем предоставлении, таблица, основанная на словаре и сам словарь - разеые сущности.
  • @dice2slice #186029 01:50 PM, 08 Oct 2020
    Добрый день. Есть какая-нибудь функция, которая удаляет кривые символы из строки "FTTB-а-7-30_ring#22472" удаляет вида а и ему подобные?
  • @125427421 #186030 01:50 PM, 08 Oct 2020
    это же наверное утф
  • https://t.me/clickhouse_ru
    так он и не кривой, наоборот наверное можно регуляркой отрезать все что не входит в белый список [a-z]
  • https://t.me/clickhouse_ru
    звучит дорого :)
  • https://t.me/clickhouse_ru
    @msg_kurt #186033 01:52 PM, 08 Oct 2020
    Салют. А кто как борется с проблемой https://0.30000000000000004.com/ в КХ?
  • https://t.me/clickhouse_ru
    вообще так как это просто факт таблица, то нужно делать репликацию в кх в mergetree
  • https://t.me/clickhouse_ru
    использовать decimal например?
  • https://t.me/clickhouse_ru
    уже есть 128 бит и 256 бит типы в КХ
  • https://t.me/clickhouse_ru
    а существует репликация pg->ch??
  • https://t.me/clickhouse_ru
    логично. но он существенно дороже в плане хранения
  • https://t.me/clickhouse_ru
    эээ, нет
  • https://t.me/clickhouse_ru
    не, мне так много не надо, я про точность Float32
  • https://t.me/clickhouse_ru
    есть в я.облаке как сервис
  • https://t.me/clickhouse_ru
    есть внешние решения, гуглите, я бы делал ручное select from PG | tsv | insert into CH
  • https://t.me/clickhouse_ru
    это я как раз и собрался делать.
  • https://t.me/clickhouse_ru
    @evgeny_relap #186044 01:55 PM, 08 Oct 2020
    спасибо
  • https://t.me/clickhouse_ru
    а, оно пока не умеет в кх
  • https://t.me/clickhouse_ru
    ну вот мой бенч на одинаковых массивах цифр с разными кодеками и сжатием

    ┌─column──────────┬─any(type)──────┬─compressed─┬─uncompressed─┬─sum(rows)─┐
    │ Delta │ Decimal(18, 8) │ 203.51 MiB │ 2.57 GiB │ 345330913 │
    │ DeltaZSTD │ Decimal(18, 8) │ 96.80 MiB │ 2.57 GiB │ 345330913 │
    │ DoubleDelta │ Decimal(18, 8) │ 178.41 MiB │ 2.57 GiB │ 345330913 │
    │ DoubleDeltaZSTD │ Decimal(18, 8) │ 113.42 MiB │ 2.57 GiB │ 345330913 │
    │ Gorilla │ Decimal(18, 8) │ 129.57 MiB │ 2.57 GiB │ 345330913 │
    │ GorillaZSTD │ Decimal(18, 8) │ 144.83 MiB │ 2.57 GiB │ 345330913 │
    │ T64 │ Decimal(18, 8) │ 517.37 MiB │ 2.57 GiB │ 345330913 │
    │ T64ZSDT │ Decimal(18, 8) │ 335.49 MiB │ 2.57 GiB │ 345330913 │
    └─────────────────┴────────────────┴────────────┴──────────────┴───────────┘
    ┌─column──────────┬─any(type)─┬─compressed─┬─uncompressed─┬─sum(rows)─┐
    │ Delta │ Float32 │ 155.25 MiB │ 1.29 GiB │ 345330913 │
    │ DeltaZSTD │ Float32 │ 75.60 MiB │ 1.29 GiB │ 345330913 │
    │ DoubleDelta │ Float32 │ 120.57 MiB │ 1.29 GiB │ 345330913 │
    │ DoubleDeltaZSTD │ Float32 │ 75.51 MiB │ 1.29 GiB │ 345330913 │
    │ Gorilla │ Float32 │ 81.09 MiB │ 1.29 GiB │ 345330913 │
    │ GorillaZSTD │ Float32 │ 59.62 MiB │ 1.29 GiB │ 345330913 │
    └─────────────────┴───────────┴────────────┴──────────────┴───────────┘
  • https://t.me/clickhouse_ru
    @nyoroon #186047 01:56 PM, 08 Oct 2020
    вам точность или поменьше места?
  • https://t.me/clickhouse_ru
    @nyoroon #186048 01:57 PM, 08 Oct 2020
    сравниваете 32х битный тип с 64х битным
  • https://t.me/clickhouse_ru
    все, пойду посплю. спасибо)
  • https://t.me/clickhouse_ru
    отличное решение.
  • https://t.me/clickhouse_ru
    @den_crane #186051 01:59 PM, 08 Oct 2020
    да, в 32 бита только Decimal( 9, 8 ) влезет
  • https://t.me/clickhouse_ru
    @den_crane #186052 02:00 PM, 08 Oct 2020
    можно создавать как Decimal32( 8)
  • https://t.me/clickhouse_ru
    да-да, но тогда не все числа из ряда поместятся
  • https://t.me/clickhouse_ru
    ну понятно что чуда не случится,

    вы кстати T64 , Delta как проверяете?

    надо компрессор тоже добавлять в кодек CODEC(Delta, ZSTD(1))
  • https://t.me/clickhouse_ru
    @den_crane #186055 02:04 PM, 08 Oct 2020
    а вижу
  • https://t.me/clickhouse_ru
    где без ZSTD - там LZ4, правда, по дефолту, не игрался уровнями
  • https://t.me/clickhouse_ru
    а если это поле добавить последним в orderby таблицы?
  • https://t.me/clickhouse_ru
    без понятия пока. просто посмотрел варианты для наиболее эффективного хранения, чтоб в одну ссдшку влазить, маленький гаражик у меня с большими амбициями. а что может быть интересного в таком случае? для моих задач сортировка нужна только по двум ключам, времени и низкокардинальной строке
  • https://t.me/clickhouse_ru
    @msg_kurt #186059 02:08 PM, 08 Oct 2020
    а поле с числами будет агрегироваться уже по всякому
  • https://t.me/clickhouse_ru
    ну так профит от сортировки по этому флоату может быть просто потрясающим
  • https://t.me/clickhouse_ru
    поясните подробней плиз, какой может быть профит. мне ничего не придумывается. у меня в таблице хранятся продажи. время, цена, объем и продукт. сейчас на тестах их 345М, когда оперативу подвезут на железяку, будет порядка 3-5 млрд. профита от сортировки по объему я тут не вижу. у меня задачи все в основном с привязкой ко времени и продукту
  • https://t.me/clickhouse_ru
    ну так комрессия работает лучше из-за того что данные похожие рядом лежат.

    у вас таблица сейчас MergeTree order by (продукт, время)
    если сделать MergeTree order by (продукт, время, объем)

    то похожие объемы окажутся рядом в сжимаемых блоках, и коэф. сжатия колонки объем увеличится, возможно в десятки раз
  • https://t.me/clickhouse_ru
    ну очевидно же, но команды думать не было)
  • https://t.me/clickhouse_ru
    @msg_kurt #186064 02:18 PM, 08 Oct 2020
    спасибо, Дэн как всегда на высоте
  • https://t.me/clickhouse_ru
    и сразу же вопрос, а если туда еще и цену сунуть? получается я точно выиграю по эффективности хранения инфы, но вот на счет скорости агрегации типа sum(Size),count(),avg(Price), toStartOfInterval(Time, INTERVAL 1 minute) t ... group by t. Ею можно пренебречь? Или лучше просто побенчить?
  • https://t.me/clickhouse_ru
    @msg_kurt #186066 02:23 PM, 08 Oct 2020
    Да, посплю и побенчу потом. Но все равно было бы интересно услышать ваше мнение
  • https://t.me/clickhouse_ru
    проверять надо, не знаю
  • https://t.me/clickhouse_ru
    ну та логично. ок, еще раз спасибо, я спать
  • https://t.me/clickhouse_ru
    можно еще делать

    MergeTree primary key (продукт, время) order by (продукт, время, объем)
    тогда первичный индекс (который в памяти) будет создржать только 2 первых поля и память не будет тратися на колонку объем, но при этом на диске все будет отсортировано и пожато как (продукт, время, объем)
  • https://t.me/clickhouse_ru
    вы мой герой)
  • @Mukhin_AV #186071 02:48 PM, 08 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @CYevhenii #186072 02:51 PM, 08 Oct 2020
    Подскажите, я могу получить имя колонки и стринги. Тоесть
    у меня есть запрос
    select ‘data’ from table
    мне нужно
    select data from table
  • https://t.me/clickhouse_ru
    @CYevhenii #186074 02:53 PM, 08 Oct 2020
    data это название колонки. Так сложилось что она вставляется в запрос как стринга(‘data’). Могу я на стороне Clickhouse это решить?
  • select `data` from table
  • https://t.me/clickhouse_ru
    Странный вопрос. Вы хотите колонку data, а запрашиваете 'data' ? можно еще что-нибудь веселое запросить например 'sfgerggrtyt'

    select columns('data') from table
  • https://t.me/clickhouse_ru
    @ilyagryaznev #186077 03:06 PM, 08 Oct 2020
    кто-нибудь работал с миграторами для кликхауса?
    типа alembic
  • https://t.me/clickhouse_ru
    @CYevhenii #186078 03:21 PM, 08 Oct 2020
    Спасибо columns('data') то что нужно было
  • https://t.me/clickhouse_ru
    @CYevhenii #186079 03:21 PM, 08 Oct 2020
    Странный вопрос. Вы хотите колонку data, а запрашиваете 'data' ? можно еще что-нибудь веселое запросить например 'sfgerggrtyt'

    select columns('data') from table
  • https://t.me/clickhouse_ru
    типа alembic нет. пилю поддержку для clickhouse-sqlalchemy, но идёт очень вяло. есть такое https://github.com/delium/clickhouse-migrator
    GitHub - delium/clickhouse-migrator: Easy data migrator to robust clickhouse

    Easy data migrator to robust clickhouse. Contribute to delium/clickhouse-migrator development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    спасибо
  • @madmanidze #186082 03:29 PM, 08 Oct 2020
    Joined.
  • @madmanidze #186083 03:31 PM, 08 Oct 2020
    Здравствуйте!
    При использовании несколькими clickhouse кластерами одного zookeeper кластера, у каждого clickhouse кластера должен быть свой путь в distributed_ddl ?
  • https://t.me/clickhouse_ru
    @MyKadyrov #186084 03:36 PM, 08 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @MyKadyrov #186085 03:36 PM, 08 Oct 2020
    /stat@combot
  • https://t.me/clickhouse_ru
    @combot #186086 b o t 03:36 PM, 08 Oct 2020
    Total messages: 186085
  • https://t.me/clickhouse_ru
    да
    можно использовать root тогда у каждого КХ будет свой root/ путь в ZK
  • спасибо! а еще какие-то уникальные настройки в кластерах clickhouse должны быть при использовании одного зукипер кластера?
  • https://t.me/clickhouse_ru
    @den_crane #186089 03:42 PM, 08 Oct 2020
    но в этом случае надо создавать ветку root в ZK вручную
  • https://t.me/clickhouse_ru
    ну у всех таблиц свой путь должен быть
  • https://t.me/clickhouse_ru
    @den_crane #186091 03:43 PM, 08 Oct 2020
    я создаю макрос cluster
  • https://t.me/clickhouse_ru
    @den_crane #186092 03:43 PM, 08 Oct 2020
    и добавляю в zk путь
  • https://t.me/clickhouse_ru
    @den_crane #186093 03:44 PM, 08 Oct 2020
    получается путь
    /ch // /// stage/ tablx
    /ch // /// prod/ tablx
  • @madmanidze #186094 03:44 PM, 08 Oct 2020
    просто есть один рабочий кх кластер и хотим добавить еще один, но на общем зукипере.
  • https://t.me/clickhouse_ru
    ну проще всего в zk создать ноду в руте /xxxx
    и добавить в конфиге zk у нового кх <root>/xxxx
  • @madmanidze #186096 04:00 PM, 08 Oct 2020
    @den_crane
    в зукипере
    create -s /new_ch_cluster new-ch-cluster
    а в новом кх кластере:
    <root>/new_ch_cluster</root>

    верно?
  • https://t.me/clickhouse_ru
    А есть возможность определить существование файла?
    file_exists
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    не знаю
  • именно -s или без флагов?
  • https://t.me/clickhouse_ru
    я не помню, наверное просто create /new_ch_cluster ""
  • @madmanidze #186102 04:14 PM, 08 Oct 2020
    спасибо.
  • https://t.me/clickhouse_ru
    спасибо за подсказку, toHour помогло) это то что было нужно
  • https://t.me/clickhouse_ru
    такой запрос показывает то что надо.
    SELECT toHour(createdDate) as t, count() as cnt GROUP BY t

    Подскажите как аналогично получить количество уникальных записей по полю userId ?
  • https://t.me/clickhouse_ru
    SELECT toHour(createdDate) as t, uniqExact(userId) as cnt GROUP BY t
  • https://t.me/clickhouse_ru
    @den_crane #186106 04:26 PM, 08 Oct 2020
    uniqExact(userId) -- медленно точно
    uniq(userId) -- приблизительно, быстро
  • https://t.me/clickhouse_ru
    @abdulgalimov #186107 04:29 PM, 08 Oct 2020
    не совсем то, показывает количество уникальных записей за какой день похоже что. А надо показать сумму всех уникальных за весь период. Т.е. если я в where указал период последние 30 дней - хочу узнать сколько за этот период было уникальных юзеров в 1 ночи, в 2 ночи, .... в 23 ночи.
  • https://t.me/clickhouse_ru
    @abdulgalimov #186108 04:31 PM, 08 Oct 2020
    сейчас у меня такой запрос:
    SELECT toHour(createdDate) as t, count() as cnt
    FROM Metrics
    WHERE botId = 1
    AND createdDate > toDateTime(1599523200)
    AND createdDate < toDateTime(1602115200)
    GROUP BY t
    ORDER BY t;
    и я получаю такой ответ:
    [
    { t: 4, cnt: 46 }, { t: 5, cnt: 166 },
    { t: 6, cnt: 58 }, { t: 7, cnt: 98 },
    { t: 8, cnt: 153 }, { t: 9, cnt: 204 },
    { t: 10, cnt: 153 }, { t: 11, cnt: 82 },
    { t: 12, cnt: 147 }, { t: 13, cnt: 83 },
    { t: 14, cnt: 163 }, { t: 15, cnt: 337 },
    { t: 16, cnt: 293 }, { t: 17, cnt: 290 },
    { t: 18, cnt: 75 }, { t: 19, cnt: 242 },
    { t: 20, cnt: 385 }, { t: 21, cnt: 341 },
    { t: 22, cnt: 148 }
    ]
    Т.е. это ОБЩЕЕ количество событий за 30 дней, сгруппированные по часам.
  • https://t.me/clickhouse_ru
    @abdulgalimov #186109 04:31 PM, 08 Oct 2020
    я хочу получить тоже самое, только не общее количество событий, а сколько уникальных юзеров генерировали эти события.
  • https://t.me/clickhouse_ru
    @abdulgalimov #186110 04:36 PM, 08 Oct 2020
    Вот такой график показываю сейчас по количеству всех событий. Хочу такое же отобразить и по количеству уникальных юзеров.
  • https://t.me/clickhouse_ru
    @nyoroon #186111 04:41 PM, 08 Oct 2020
    uniqCombined(user_id) выдаст количество уникальных user_id
  • @subotic0 #186112 04:41 PM, 08 Oct 2020
    Добрый день, на 1 на машине на разных портах развернуто 5 баз КХ, запрос через remote к другой тачке с КХ проходит с одного порта, и не проходит с другого, в чем может быть причина? версия 20.3.16.165
  • https://t.me/clickhouse_ru
    показывает количество уникальных за 1 день, не суммирует за 30 дней
  • https://t.me/clickhouse_ru
    ну посчитай отдельным запросом без group by
  • https://t.me/clickhouse_ru
    У КХ два порта: 9000 для TCP, 8123 - http. Вы оба настраивали для каждого из инстансов? И зачем 5ть инстансов на одной машине?
  • https://t.me/clickhouse_ru
    С чего вы взяли? Судя по всему группировка у вас та же - по часу. Только к метрике - count, в запрос добавляется uniq
  • https://t.me/clickhouse_ru
    @dp4qb #186117 04:47 PM, 08 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #186118 04:48 PM, 08 Oct 2020
    Или вы хотите за этот же WHERE общее кол-во уников юзеров? Тогда только отдельным запросом
  • https://t.me/clickhouse_ru
    да, за тот же период, количество уникальных юзеров сгруппированные по часам 1, 2, 3, ... 24
  • https://t.me/clickhouse_ru
    Ну так, у вас просто теже самые пользователи видимо каждый день в 4 часа ночи сидят
    но можно сделать так: uniq((toDate(createdDate),user_id))
  • https://t.me/clickhouse_ru
    я сейчас тестирую в локальном приложении, каждый день приложение юзает 1 чел, это я. Значит за месяц я должен получить значение 30(по 1 юзеру в день). А я получаю 1 :)
  • https://t.me/clickhouse_ru
    О чем и речь,
    пишите uniq((toDate(createdDate),user_id))
  • https://t.me/clickhouse_ru
    @ondanna #186123 04:58 PM, 08 Oct 2020
    уважаемые коллеги, есть вопрос по чтению трейса, ощущение что вызывает ошибку графана(вертамедиа) но вот куда смотреть непонятно, ошибка повторяется время от времени

    2020.10.08 16:52:06.641959 [ 161 ] {} <Error> DynamicQueryHandler: Cannot send exception to client: Code: 24, e.displayText() = DB::Exception: Cannot write to ostream at offset 288, Stack trace (when copying this message, always include the lines below):

    0. Poco::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x18e02790 in /usr/bin/clickhouse
    1. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0xe72fdad in /usr/bin/clickhouse
    2. ? @ 0x1049116a in /usr/bin/clickhouse
    3. DB::WriteBufferFromHTTPServerResponse::nextImpl() @ 0x164723f2 in /usr/bin/clickhouse
    4. DB::HTTPHandler::trySendExceptionToClient(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, Poco::Net::HTTPServerRequest&, Poco::Net::HTTPServerResponse&, DB::HTTPHandler::Output&) @ 0x1646a085 in /usr/bin/clickhouse
    5. ? @ 0x1646d71a in /usr/bin/clickhouse
    6. Poco::Net::HTTPServerConnection::run() @ 0x18ce23e3 in /usr/bin/clickhouse
    7. Poco::Net::TCPServerConnection::start() @ 0x18d205fb in /usr/bin/clickhouse
    8. Poco::Net::TCPServerDispatcher::run() @ 0x18d20a8b in /usr/bin/clickhouse
    9. Poco::PooledThread::run() @ 0x18e9f566 in /usr/bin/clickhouse
    10. Poco::ThreadImpl::runnableEntry(void*) @ 0x18e9a960 in /usr/bin/clickhouse
    11. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    12. __clone @ 0x122103 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
    (version 20.9.2.20 (official build))
  • https://t.me/clickhouse_ru
    клиент ушел, не дождался ответа КХ. КХ пишет что не может результат записать Cannot write to ostream, нет читателя
  • https://t.me/clickhouse_ru
    @ondanna #186125 05:04 PM, 08 Oct 2020
    спасибо большое, то есть таймаут на клиенте похоже
  • https://t.me/clickhouse_ru
    ну может сеть развалилась, может клиент просто помер.
  • https://t.me/clickhouse_ru
    хм, похоже на правду.
  • https://t.me/clickhouse_ru
    🙂 спасибо, клиент и сеть вроде живы, видимо где-то между графаной и ее драйвером живет управление соединением
  • https://t.me/clickhouse_ru
    у вас клиент однопоточный что-ли?
  • https://t.me/clickhouse_ru
    @ondanna #186130 05:08 PM, 08 Oct 2020
    честно говоря понятия не имею как в графане это реализовано, есть сервис графаны где живет плагин от вертамедиа, есть дашборд с десятком запросов, а вот пуляет он их в параллель или последовательно я хз, и не проверял никогда
  • https://t.me/clickhouse_ru
    @ondanna #186131 05:10 PM, 08 Oct 2020
    на первый взгляд нет никаких настроек ни на параллельность ни на таймауты, покопаюсь конечно, может что еще нарыщу
  • @githubreleases_bot #186132 b o t 05:40 PM, 08 Oct 2020
    ClickHouse/ClickHouse tagged: v20.9.3.45-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v20.9.3.45-stable
    Release notes:
    v20.9.3.45-stable
    Release v20.9.3.45-stable · ClickHouse/ClickHouse

    ClickHouse stable release v20.9.3.45-stable

  • https://t.me/clickhouse_ru
    @308618636 #186133 06:09 PM, 08 Oct 2020
    Добрый день. Помогите, пожалуйста, не могу понять, как массив отфильтровать.. Делаю цепочки. Мне нужны пары событий 1 и 2 для userid . windowsfunnel не помогает, потому что мне еще и некоторые параметры нужно из этих событий доставать, а не просто количество посчитать. Начинаю так -
    groupArray(event) as evs, — собрала массив идентификаторов событий
    arrayEnumerate(evs) as indexes, — пронумеровала
    arrayFilter( i -> evs[i] = 1 and evs[i+1]=2 ,indexes) as pairs — нашла индексы для пар событий, чтобы сначала 1 событие а потом 2. И мне бы теперь оставить только элементы массива, у которых индексы в pairs и pairs +1. Не получается..
  • @mmmhh93 #186134 06:15 PM, 08 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    1 -- старайтесь не нумеровать массивы, это приводит к проблеме дикого перерасхода памяти, в 99% случаев это не нужная процедура.
    i -> evs[i] -- когда вы передаете в лямбду массив evs, в памяти создается его копия, что дичайше тормозит и жрет просто немыслимо жрет оперативку

    2 -- в arrayFilter можно передать два массива, arr1, arr2 , и фильтровать по одному массиву а на выход arrayFilter выдавать элементы другого.
    arrayFilter( (i,j) -> j>0 , arr1, arr2)
  • https://t.me/clickhouse_ru
    @den_crane #186136 06:33 PM, 08 Oct 2020
    наверное надо решать так, есть массив [1,2,3,4,5,1,2] arr
    берем и arraySlice делаем два массива сдвигом
    [1,2,3,4,5,1]
    [2,3,4,5,1,2]

    потом передаем это arrayFilter и выдаем то что надо
  • https://t.me/clickhouse_ru
    @den_crane #186137 06:34 PM, 08 Oct 2020
    SELECT
    [1, 2, 3, 4, 5, 1, 2] AS arr,
    arraySlice(arr, 1, -1),
    arraySlice(arr, 2)

    SELECT
    [1, 2, 3, 4, 5, 1, 2] AS arr,
    arrayFilter(i -> (((i.1) = 1) AND ((i.2) = 2)), arrayZip(arraySlice(arr, 1, -1), arraySlice(arr, 2))) AS res

    ┌─arr─────────────┬─res───────────┐
    │ [1,2,3,4,5,1,2] │ [(1,2),(1,2)] │
    └─────────────────┴───────────────┘
  • https://t.me/clickhouse_ru
    @308618636 #186138 06:50 PM, 08 Oct 2020
    Спасибо, попробую... я бы и не нумеровала, но у меня цепочки 1,1,1,2,2,1,1,2,2,2,2 и мне нужны только те элементы, где сначала 1 а потом 2 ( то есть 3+4 и 7+8 элементы ), и при этом из каждого отобранного события нужно достать его параметры ( есть еще массивы с этими параметрами, которые тоже отфильтровать). Задача кажется обычной, но что-то я ничего не нашла для примера.
  • https://t.me/clickhouse_ru
    @stovm #186139 06:59 PM, 08 Oct 2020
    Я для таких случаев использовал neighbour
  • https://t.me/clickhouse_ru
    я предлагаю просто из массива, сделать два массива, сдвинув массив на один элемент, тогда получатся пары соседних элементов в одной позиции
  • https://t.me/clickhouse_ru
    @den_crane #186141 07:09 PM, 08 Oct 2020
    в современных кх тяжело пользоваться neighbour, потому что границы блоков возникают спонтанно, теперь оптимированный сортировщик выдает блоки не сливая в один.
  • https://t.me/clickhouse_ru
    пары по номеру событий - понятно, получились. А доп параметры каждого из событий? собирать все доп параметры в tuple чтобы они были привязаны?
  • https://t.me/clickhouse_ru
    ну например в тупл, что такое доп. параметры? они где? тоже в массиве?
  • https://t.me/clickhouse_ru
    @308618636 #186144 07:14 PM, 08 Oct 2020
    в событии 1, допустим, есть значения колонок x и y , которые нужны в результате. а в событии 2 это z. Так я собирала groupArray(x), groupArray(y), groupArray(z) и думала что по индексам достану те, что соответствуют отобранным событиям
  • https://t.me/clickhouse_ru
    @den_crane #186145 07:18 PM, 08 Oct 2020
    да я бы сделал groupArray((x,y,z))
  • https://t.me/clickhouse_ru
    @args_kwargs #186146 07:28 PM, 08 Oct 2020
    Что такое "события" в ClickHouse? Может кто-то в двух словах обьяснить?
  • https://t.me/clickhouse_ru
    Спасибо! подход попробовала, работает, сейчас tuple попробую прикрутить.
  • https://t.me/clickhouse_ru
    Если это к моему вопросу, то у меня в базе живут события клиентской аналитики. Я поэтому их так и называю - событие 1, событие 2.. На самом деле это просто строки где поле event = 1 или 2
  • https://t.me/clickhouse_ru
    кстати есть еще вариант сдвига, push + pop https://t.me/clickhouse_ru/181198

    может он больше походит
  • https://t.me/clickhouse_ru
    большинство хранит в КХ в одной большой широкой таблице кликстрим и хранят события,
    клики, показы, покупки, скролы каруселей, показы видеороликов -- все это события
  • https://t.me/clickhouse_ru
    я видела такое в презентации, но не поняла, что там считают :) https://www.percona.com/sites/default/files/ple19-slides/day1-pm/clickhouse-for-timeseries.pdf
  • https://t.me/clickhouse_ru
    @AlexanderWM #186152 07:38 PM, 08 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @args_kwargs #186153 07:46 PM, 08 Oct 2020
    Благодарю за разьяснение
  • @1217307388 #186154 09:55 PM, 08 Oct 2020
    Joined.
  • @AniMeIIIkA #186155 11:09 PM, 08 Oct 2020
    Joined.
  • 09 October 2020 (193 messages)
  • https://t.me/clickhouse_ru
    @GeorgeNas #186156 05:20 AM, 09 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru/185986
    https://arenadata.tech/products/arenadata-quickmarts/
    Anton Kovalenko in ClickHouse не тормозит

    Аренадата, в том числе. https://arenadata.tech/products/arenadata-quickmarts/

  • Ответил в личку
  • @928029209 #186160 06:47 AM, 09 Oct 2020
    доброе утро,
    что-то поменялось с синтаксисом ТТЛ'а? Беру пример отсюда: https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/mergetree/#mergetree-table-ttl

    CREATE TABLE example_table
    (
    d DateTime,
    a Int
    )
    ENGINE = MergeTree
    PARTITION BY toYYYYMM(d)
    ORDER BY d
    TTL d + INTERVAL 1 MONTH DELETE,
    d + INTERVAL 1 WEEK TO VOLUME 'hdds';

    только VOLUME поменял. Получаю:

    Syntax error: failed at position 138:

    CREATE TABLE example_table ( d DateTime, a Int ) ENGINE = MergeTree PARTITION BY toYYYYMM(d) ORDER BY d TTL d + INTERVAL 1 MONTH DELETE, d + INTERVAL 1 WEEK TO VOLUME 'hdds';

    Expected one of: NOT, SETTINGS, FORMAT, LIKE, AND, OR, IN, BETWEEN, token, IS, NOT LIKE, NOT IN, GLOBAL IN, GLOBAL NOT IN, QuestionMark, PRIMARY KEY, SAMPLE BY, INTO OUTFILE

    Может кто подскажет в чем дело?

    версия:
    SELECT version()
    ┌─version()─┐
    │ 20.9.2.20 │
    └──────┘
    MergeTree | ClickHouse Documentation

    MergeTree The MergeTree engine and other engines of this family (*MergeTree) are the most robust ClickHouse table engine

  • https://t.me/clickhouse_ru
    @JulyaBordunova #186161 07:15 AM, 09 Oct 2020
    Joined.
  • выяснил. прошу прощения, версия клиента была старая. Обновил, все работает.
  • Да, забыла упомянуть, что памяти запрос сьедает 150М, дисковое чтение с запасом, нетворк тоже с запасом. Все с запасом короче, но почему оно так в параллели проседает..
  • @Shazo_Rus #186164 07:58 AM, 09 Oct 2020
    а ядер то сколько?
  • https://t.me/clickhouse_ru
    @aramisforever #186165 08:01 AM, 09 Oct 2020
    Joined.
  • @297858079 #186166 08:50 AM, 09 Oct 2020
    Доброе утро!
    В документации про Nullable сказано:
    Using Nullable almost always negatively affects performance.
    А насколько негативно? Стоит ли придумывать какие-то обходные методы, типа -1 для отсутствующих значений, если у нас Int8 поле?
  • https://t.me/clickhouse_ru
    Здравствуйте ещё раз 😊
    На этот раз вопрос про TTL в контексте таблицы.
    У нас в КХ есть табличка, маленькая такая, на 129 008 452 251 записей 😊
    Если я сделаю на ней alter и добавлю TTL, что случится, что нибудь упадёт?
  • нет, не упадет
  • @dj_mixer #186169 09:01 AM, 09 Oct 2020
    если сделаете кривой ТТЛ можете все поставить
  • @dj_mixer #186170 09:01 AM, 09 Oct 2020
    например у вас одна партиция, в ней все эти строки, у вас перезапишется весь контент при применении ТТЛ
  • https://t.me/clickhouse_ru
    ну его довольно сложно сделать кривым. вроде бы
  • @dj_mixer #186172 09:01 AM, 09 Oct 2020
    ТТЛ это по сути ДЕЛЕТЕ миграция
  • https://t.me/clickhouse_ru
    она партиционирована, щас не помню как
  • @dj_mixer #186174 09:01 AM, 09 Oct 2020
    если таблица партиционирована, делайте ttl_only_drop_parts=1
  • @dj_mixer #186175 09:02 AM, 09 Oct 2020
    тогда мутаций не будет и когда все записи в партиции будут готовы к удалению, она дропнется
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @evgeny_relap #186177 09:03 AM, 09 Oct 2020
    понятно :)
  • @laziestCoder #186178 09:16 AM, 09 Oct 2020
    Joined.
  • @laziestCoder #186179 09:16 AM, 09 Oct 2020
    Всем привет
  • @laziestCoder #186180 09:16 AM, 09 Oct 2020
    хотел создать новый базу с енгином mysql чтобы подключиться к ремоут mysql базу, говорить нет такого енгина хотя в доках видел
  • https://t.me/clickhouse_ru
    @nyoroon #186182 09:33 AM, 09 Oct 2020
    в версии 18.16 наверно ещё не было такого движка
  • https://t.me/clickhouse_ru
    @nyoroon #186183 09:33 AM, 09 Oct 2020
    вообще это очень старая версия
  • @laziestCoder #186184 09:35 AM, 09 Oct 2020
    А как можно делать upgrade?
  • https://t.me/clickhouse_ru
    @vitakor #186185 09:36 AM, 09 Oct 2020
    кто-нибудь стыкался с таким, что ClickHouse записывает дубликаты в таблицу без Primary Key и 100% уникальных записях в батче?
    версия: 20.7.2.30, тип таблицы MergeTree
  • https://t.me/clickhouse_ru
    да, в CH нет проверки на уникальность по PrimaryKey
  • https://t.me/clickhouse_ru
    так а откуда он берет дубликаты? в батче их 100% нет, а в следующих батчах по отношению к предыдущим и подавно
  • Я установил через apt, по идее оно должно было установить последнюю версию но почему то установилось 18 версия.
  • https://t.me/clickhouse_ru
    проверь что репозитории правильные https://clickhouse.tech/docs/en/getting-started/install/#install-from-deb-packages
    Installation | ClickHouse Documentation

    Installation System Requirements ClickHouse can run on any Linux, FreeBSD, or Mac OS X with x86_64, AArch64, or PowerPC6

  • https://t.me/clickhouse_ru
    Пробрасываю этот файлик в контейнер в /etc/clickhouse-server/config.d/users.xml, но меняю тег default на admin и пользователь на создается. Аналогично пытаюсь присвоить пароль пользователю default, но ничего не происходит. Что я делаю не так?
  • https://t.me/clickhouse_ru
    @aweselow #186192 09:59 AM, 09 Oct 2020
    всем привет, а вот задумался, можно ли в клиенте командной строки содержимое многострочного файла вставлять параметром?

    ну вот есть инсерт format csv - но это построчно.
    а вот если делать инсерт, чтобы в конкретное поле отправлять содержимое файла...
  • https://t.me/clickhouse_ru
    в общем надо файлик пробрасывать в users.d, users.xml из config.d не обрабатывается...
  • https://t.me/clickhouse_ru
    @Otvertka352 #186194 10:07 AM, 09 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @Otvertka352 #186195 10:08 AM, 09 Oct 2020
    Добрый день, подскажите. Возможно поменять в конфиге сервера user_files_path ? Меняю на /home/test/my_files/. Сервер запускается, но при подключении clickhouse-client выдает Code: 210. DB::NetException: Connection refused (localhost:9000). Ставлю дефолтное занчение все начинает работать
  • https://t.me/clickhouse_ru
    @vitakor #186196 10:09 AM, 09 Oct 2020
    Еще раз повторю вопрос...
    В одном потоке инсертится батч со 100% уникальными данными втаблицу типа MergeTree
    Почему в базе после инсерта появляются дубликаты? это баг или фича ClickHous'a ?
  • @928029209 #186198 10:21 AM, 09 Oct 2020
    возможно ли в кликхоусе в том же шарде на разных репликах иметь разный ТТЛ для таблицы?
    если меняю только на одной реплике, устанавливаю что бы КХ сохранял на slow диск вместо того чтоб стирал, получаю такой еррор на другой реплике:
    2020.10.09 10:30:01.338157 [ 93 ] {} <Information> raw.test_repl: Metadata changed in ZooKeeper. Applying changes locally.
    2020.10.09 10:30:01.340482 [ 93 ] {} <Error> raw.test_repl: DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 450, e.displayT
    ext() = DB::Exception: No such volume `slow` for given storage policy., Stack trace
  • DDL тоже реплицируется
  • то есть так делать нельзя? диски, волумы и ТТЛ'ы должны быть одинаковыми на репликах?
  • @dj_mixer #186202 10:46 AM, 09 Oct 2020
    делать нельзя
    ну можно делать не реплицированные таблицы.
    т.е. делаете доп. таблицу в одной из реплик и МВ на неё. А в ней уже храните дольше, на других волумах итд итп
  • ясно. А жаль :(
    спасибо
  • https://t.me/clickhouse_ru
    config.d для config.xml
    users.d для users.xml

    conf.d - я его использовал , универсален
  • https://t.me/clickhouse_ru
    Вы повторяете инсерты. Ищите где. Возможно ретраи при ошибках делаете
  • https://t.me/clickhouse_ru
    Нет... Делаю один батч инсерт с 1000 уникальными записями... За этот 1 инсерт появляются дубликаты 2-3%
  • https://t.me/clickhouse_ru
    Так не запускается как раз. Лог читайте. Прав на кталог нет?
  • https://t.me/clickhouse_ru
    какой апи? какой протокол? ошибка у вас 100%
  • https://t.me/clickhouse_ru
    Медленее до 2 раз
    https://t.me/clickhouse_ru/147149
  • https://t.me/clickhouse_ru
    Вот эту библиотеку использую
    https://github.com/shlima/click_house
    GitHub - shlima/click_house: Modern Ruby database driver for ClickHouse

    Modern Ruby database driver for ClickHouse. Contribute to shlima/click_house development by creating an account on GitHub.

  • @reflechant #186214 11:48 AM, 09 Oct 2020
    Как удобнее всего посмотреть сколько памяти съел запрос?
  • @reflechant #186215 11:48 AM, 09 Oct 2020
    Видел выступление Миловидова, у него там clickhouse-cli прямо в консоли во время выполнения показывал, но не смог найти такой опции
  • @spirid_sv #186216 11:50 AM, 09 Oct 2020
    Всем привет! ) Подскажите по репликации - сделал ReplicatedMergeTree и остановил одну ноду (из 2х). На второй шла тестовая запись в этот момент в ту же таблицу. Запись оборвалась с "Exception: Session expired". Это связанно с чем? Это ж типа кластер...
  • Спасибо!
  • https://t.me/clickhouse_ru
    SET send_logs_level = 'debug'
  • https://t.me/clickhouse_ru
    Так это про зукипер ошибка. И вообще никто не говорил что одиночные запросы не будут ломаться в переходный момент
  • Вот я тоже так думаю... По хорошему нужен некий буфер значит..
  • https://t.me/clickhouse_ru
    В точку. В начале спросил, потом решил в лог сходить:(
  • https://t.me/clickhouse_ru
    @egorpopov94 #186222 12:00 PM, 09 Oct 2020
    Всем привет! Вопрос по работе оператора GLOBAL IN. Есть запрос вида select .. from distributed_table PREWHERE dt IN (select max(dt) from distributed_table) WHERE ... При замене IN на GLOBAL IN запрос перестает возвращать данные. Если убрать секцию where, либо переместить условия из prewhere в where, то все работает. В чем может быть причина? настройка distributed_product_mode = 'allow'. попытался воспроизвести ситуацию: create table default.l_table on cluster {cluster} (id UInt64, val String, dt Date)
    engine = MergeTree()
    partition by toYYYYMM(dt)
    order by id
    settings index_granularity = 8192;

    create table default.d_table on cluster {cluster} (id UInt64, val String, dt Date)
    engine = Distributed('cluster3', 'default', 'l_table', id);

    insert into default.d_table
    select
    intDiv(rand32(), 10000) as id
    ,any(randomPrintableASCII(10))
    ,any(toDate('2020' || substring(toString(toDate(rand32())), 5)))
    from numbers(1000000)
    group by
    id;

    select count() from d_table
    prewhere toYYYYMM(dt) global in (select min(toYYYYMM(dt)) from d_table)
    where position(val,':') > 0
    settings distributed_product_mode = 'allow';
  • Хотя, с другой стороны... Я же на второй ноде писал, а на первую реплицировалалось. Репликация отвалилась, а клик-то что? Сама ножа жива себе вполне.
  • @spirid_sv #186224 12:04 PM, 09 Oct 2020
    И теперь вообще писать не могу (
  • @spirid_sv #186225 12:07 PM, 09 Oct 2020
    Все таблицы кластера стали readonly. Похоже надо zoo тыкать.
  • @darenat #186226 12:29 PM, 09 Oct 2020
    привет : ) кто-нибудь практиковал управление аккаунтами через SQL-driven?
    https://clickhouse.tech/docs/en/operations/access-rights/#access-control-usage

    делаю по мануалу. при попытке назначить GRANT ALL для будущего админа выдает ошибку:
    ClickHouse client version 20.9.2.20 (official build).
    Password for user (default):
    Connecting to localhost:9000 as user default.
    Connected to ClickHouse server version 20.9.2 revision 54439.

    GRANT ALL ON *.* TO a_admin WITH GRANT OPTION

    Received exception from server (version 20.9.2):
    Code: 446. DB::Exception: Received from localhost:9000. DB::Exception: default: Introspection functions are disabled, because setting 'allow_introspection_functions' is set to 0.

    0 rows in set. Elapsed: 0.004 sec.

    включение упомянутой настройки allow_introspection_functions в users.xml для default-юзера ничего не меняет.
    у кого-нибудь получилось?
    Access Control and Account Management | ClickHouse Documentation

    Access Control and Account Management ClickHouse supports access control management based on RBAC approach. ClickHouse a

  • https://t.me/clickhouse_ru
    @Otvertka352 #186227 12:33 PM, 09 Oct 2020
    подскажите пожалуйста, как сменить format_csv_delimetr в запросе SELECT * FROM file('file.CSV', 'CSVWithNames',
  • https://t.me/clickhouse_ru
    set format_csv_delimeter= ';'; перед своим запросом пробывал
  • https://t.me/clickhouse_ru
    @Kapustin_Anton #186229 12:46 PM, 09 Oct 2020
    Форматы входных и выходных данных | Документация ClickHouse

    Форматы входных и выходных данных ClickHouse может принимать (INSERT) и отдавать (SELECT) данные в различных форматах. П

  • https://t.me/clickhouse_ru
    я же сказал что дело в зукипере, это не имеет отношения ко второй ноде КХ. Кластер зукипера должен всегда оставаться живым.
  • https://t.me/clickhouse_ru
    у вас вообще есть пользователь у которого включен access_management?
  • ага.. т.к. путь-то на зукипере, а до меня не сразу это дошло... сейчас его ковыряю)
  • https://t.me/clickhouse_ru
    Code: 115, e.displayText() = DB::Exception: Unknown setting format_csv_delimeter (version 20.8.3.18)
  • https://t.me/clickhouse_ru
    replicated таблицы на запись работают только с живым зукипером
  • https://t.me/clickhouse_ru
    format_csv_delimiter потому что delim i ter
  • https://t.me/clickhouse_ru
    клиент КХ старый?

    set format_csv_delimiter=';';
    Ok.
  • https://t.me/clickhouse_ru
    @Otvertka352 #186237 12:56 PM, 09 Oct 2020
    😞
  • https://t.me/clickhouse_ru
    @Otvertka352 #186238 12:56 PM, 09 Oct 2020
    Да, работает!
  • https://t.me/clickhouse_ru
    @Otvertka352 #186239 12:56 PM, 09 Oct 2020
    опечатка была
  • https://t.me/clickhouse_ru
    @299337748 #186240 12:57 PM, 09 Oct 2020
    gmake[2]: *** [driver/CMakeFiles/clickhouse-odbc-impl.dir/build.make:199: driver/CMakeFiles/clickhouse-odbc-impl.dir/api/impl/impl.cpp.o] Error 1
    gmake[1]: *** [CMakeFiles/Makefile2:2311: driver/CMakeFiles/clickhouse-odbc-impl.dir/all] Error 2
    gmake: *** [Makefile:182: all] Error 2
    на macos 10.15.7
    может кто-то сталкивался?
  • https://t.me/clickhouse_ru
    @tron_wai #186241 12:59 PM, 09 Oct 2020
    Тут нет сообщения о том, какая ошибка.
  • https://t.me/clickhouse_ru
    @tron_wai #186242 12:59 PM, 09 Oct 2020
    Попробуйте бренч отсюда
  • https://t.me/clickhouse_ru
  • да, собственно для default и прописал настройку.
    аккаунт он может создать:
    CREATE USER a_admin IDENTIFIED WITH plaintext_password BY 'qwerty'

    Ok.

    0 rows in set. Elapsed: 0.002 sec.
  • https://t.me/clickhouse_ru
    даже сложно сказать баг ли это. Возможно это просто особенность, какая версия КХ?

    >prewhere toYYYYMM(dt) global in (select min(toYYYYMM(dt)) from d_table)
    если все это ради partition pruning , то это все немного не то.
  • https://t.me/clickhouse_ru
    SET allow_introspection_functions=1
  • https://t.me/clickhouse_ru
    @Vladimirelizarov #186247 01:04 PM, 09 Oct 2020
    мне помогло
  • о, спасибо! получилось 👍
    почему-то думал, что это настройка для users.xml
  • https://t.me/clickhouse_ru
    access_management включается у пользователя!!

    allow_introspection_functions ---- в профиле пользователя

    <profiles>
    <default>
    <allow_introspection_functions>1</allow_introspection_functions>
  • подтверждаю, работает. теперь понятно, спасибо! : )
  • https://t.me/clickhouse_ru
    Версия 20.8.2.3. Да, prewhere для partition pruning, а global для сокращения числа запросов, т.к в подзапросе distributed-таблица
  • https://t.me/clickhouse_ru
    @shybetska_mariia #186256 02:33 PM, 09 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    Огромное спасибо, заработало
  • https://t.me/clickhouse_ru
    @args_kwargs #186258 02:54 PM, 09 Oct 2020
    Создаю таблицу:
    'CREATE TABLE balance (id Int32, value Int32, date DateTime DEFAULT now()) ENGINE = Memory'
    Но при попытке вставить занчение без "date", пишет что только 2 поля из 3. То бишь, значение по дефолту не присваивается. С чем это может быть связано?
  • версия?как пытаетесь вставлять+ошибку скиньте
  • https://t.me/clickhouse_ru
    @abezruchenkov #186260 03:13 PM, 09 Oct 2020
    Всем привет!
    Вопрос по таймзонам: есть ли возможность в драйверах передавать заданную таймзону клиента, чтобы CH автоматически преобразовывал все строки со временем в UTC используя именно переданную таймзону во всех запросах? Сервер в таймзоне Москвы (+3), а клиент, например, из Казахстана (+6). Хотелось бы при вставке для этого клиента получить -6 не используя модификации существующих запросов и явного приведения к таймзоне toDateTime('2020-10-10 13:00:00', ‘TZ’);
  • https://t.me/clickhouse_ru
    @shybetska_mariia #186261 03:31 PM, 09 Oct 2020
    Добрый вечер! Столкнулась с проблемой, не работает селект из таблицы. Схема следующая: таблица1 ReplacingMergeTree c полем Nullable(Decimal64(4)), из нее запись в таблицу2 с движком MySQL так же в поле Nullable(Decimal64(4)). Последняя связана с таблицей3 мускл, где поле Decimal(18,4). Вставка в таблицу2 происходит, но при попытке селекта выдает ошибку: "Unsupported type Decimal(18, 4)". Самое интересное, что ранее такая схема работала без проблем.
  • https://t.me/clickhouse_ru
    @smartyru #186262 03:45 PM, 09 Oct 2020
    иду по туториалу Clickhous https://clickhouse.tech/docs/en/getting-started/tutorial/, попытка скачать датасет на Сentos оказалась неуспешна - есть идеи why ?
    Tutorial | ClickHouse Documentation

    ClickHouse Tutorial What to Expect from This Tutorial? By going through this tutorial, you’ll learn how to set up a simp

  • https://t.me/clickhouse_ru
    @smartyru #186263 03:45 PM, 09 Oct 2020
    [devops@lnxcru0242db203 tmp]$ curl https://clickhouse-datasets.s3.yandex.net/hits/tsv/hits_v1.tsv.xz | unxz --threads=nproc > hits_v1.tsv
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    0 0 0 0 0 0 0 0 --:--:-- 0:05:00 --:--:-- 0
    curl: (28) Operation timed out after 300185 milliseconds with 0 out of 0 bytes received
  • https://t.me/clickhouse_ru
    @smartyru #186264 03:45 PM, 09 Oct 2020
    может proxy не пускает ?
  • Да. Настройте переменную окружения, export http_proxy=....
  • https://t.me/clickhouse_ru
    ну да, скорее баг, открыл https://github.com/ClickHouse/ClickHouse/issues/15792
  • https://t.me/clickhouse_ru
    @mrbakl #186267 04:09 PM, 09 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    Спасибо!!
  • https://t.me/clickhouse_ru
    причем похоже раньше работало, наверное исходя из этого можно считать это багом
  • https://t.me/clickhouse_ru
    буду отслеживать
  • @web_logistic #186271 04:39 PM, 09 Oct 2020
    Всем привет. Подскажите при обновление с версии 19.11.2.7 до последней много может выплыть проблем?
    Используются только MergeTree. Без реплик и шардов.
  • https://t.me/clickhouse_ru
    нет, такой возможности нет.
  • https://t.me/clickhouse_ru
    Спасибо за ответ!
  • https://t.me/clickhouse_ru
    yndex.net забокирован?

    curl https://clickhouse-datasets.s3.yandex.net/hits/tsv/hits_v1.tsv.xz -o x
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    100 802M 100 802M 0 0 67.3M 0 0:00:11 0:00:11 --:--:-- 66.4M
  • @mmmhh93 #186276 05:09 PM, 09 Oct 2020
    Joined.
  • @mmmhh93 #186277 05:18 PM, 09 Oct 2020
    Всем привет. Недавно пользователи пожалывались на дубли в данных, я в документации увидел что появилось ключевое слове deduplicate для optimize. Запустил команду на replicatedMergeTree таблице и репликация сломалась с ошибкой вроде "результат не отсортирован". Я скопировал данные в другую таблицу и переименовал. Очищал очеред distributed ddl в ZK. Но дистрибьютед запросы (on cluster) так и не заработали. Если запустить из консоли, то отображает только текущую ноду и виснет. Так же в логах вижу сообщение
    Local replica of shard 2 is stale (delay: 1602263477s.)
  • @mmmhh93 #186278 05:18 PM, 09 Oct 2020
    Подскажите, куда копать как поступать
  • https://t.me/clickhouse_ru
    1. никогда не пересказывайте ошибки своими словами. Никогда и нигде. Фотографируйте телефоном, делайте что хотите, главное не пересказывайте.
  • https://t.me/clickhouse_ru
    @den_crane #186280 05:33 PM, 09 Oct 2020
    2. Версия КХ?

    3. select * from system.replication_queue

    4. "Очищал очеред distributed ddl в ZK" ?????? Чего,чего делал?
  • @mmmhh93 #186281 05:40 PM, 09 Oct 2020
    1. Я думал на слуху проблема, так ка кнаходил тикет. Вот тикет https://github.com/ClickHouse/ClickHouse/issues/11572. Сейчас ошибки этой уже нет, я для истории рассказал с чего все началось.
    2. Версия 20.4.3.16
    3. Сейчас пусто, после optimize deduplicate была очередь с ошибками из тикета
    4. Когда-то таким образом удавалось фиксить проблему с нерабочими on cluster запросами. Просто znode удалил и создал /clickhouse/server/task_queue/ddl
    Output of TreeExecutor is not sorted after OPTIMIZE FINAL DEDUPLICATE · Issue #11572 · ClickHouse/ClickHouse

    Describe the bug I got the exception after trying to DEDUPLICATE mv. It worked on 20.3 OPTIMIZE TABLE targeting_service_mv.ts_last_active_wallet FINAL DEDUPLICATE; ru.yandex.clickhouse.except.Click...

  • @mmmhh93 #186282 05:42 PM, 09 Oct 2020
    Еще только что обнаружил что одна таблица переключилась в read only mode. Как полечить можно?
  • @mmmhh93 #186283 05:45 PM, 09 Oct 2020
    PS. КХ в k8s развернут с помощью КХ оператора.
  • https://t.me/clickhouse_ru
    @den_crane #186284 05:46 PM, 09 Oct 2020
    обновится до 20.4.9.110

    проблема в 11572 из-за ReplacingMergeTree
    для ReplacingMergeTree deduplicate не имеет смысла и ничего не делает
  • https://t.me/clickhouse_ru
    @den_crane #186285 05:47 PM, 09 Oct 2020
    у вас replicatedMergeTree, не Replacing
  • https://t.me/clickhouse_ru
    @den_crane #186286 05:51 PM, 09 Oct 2020
    5. select * from system.replication_queue пусто на обеих репликах?
    на обоих сделайте curl localhost:8123/replicas_status

    >Local replica of shard 2 is stale (delay: 1602263477s.)
    говорит от том что репликация не работает
  • Если релиз более стабилен, то обновится дело не сложное. Но у меня вопрос зачем ввели ключевое слово deduplicate, если и так дубли по ключам удалятся при optimize final если движок replacing или collapsing?
    У меня сейчас таблица в readonly так как в ZK для нее нет пути. Похоже глюк макроса, при переименовании таблицы ноды в zk не переименовались, а путь к znode задан через макросы и КХ ищет другую ноду в ZK.
  • https://t.me/clickhouse_ru
    https://clickhouse.tech/docs/ru/sql-reference/statements/optimize/

    Если указать DEDUPLICATE, то произойдет схлопывание полностью одинаковых строк (сравниваются значения во всех колонках), имеет смысл только для движка MergeTree.
    OPTIMIZE | Документация ClickHouse

    OPTIMIZE Запрос пытается запустить внеплановое слияние кусков данных для таблиц. Внимание OPTIMIZE не устраняет причину

  • https://t.me/clickhouse_ru
    путь ZK нельзя изменить
  • https://t.me/clickhouse_ru
    @den_crane #186290 06:08 PM, 09 Oct 2020
    путь ZK не связан с именем таблицы
  • https://t.me/clickhouse_ru
    @den_crane #186291 06:08 PM, 09 Oct 2020
    можно иметь реплику таблицы прямо на том же сервере
  • https://t.me/clickhouse_ru
    @den_crane #186292 06:10 PM, 09 Oct 2020
    >Если релиз более стабилен,
    это минорный релиз 20.4.9.110 для 20.4.3.16
    там только исправления багов, в том числе того
  • @mmmhh93 #186293 06:10 PM, 09 Oct 2020
    ReplicatedCollapsingMergeTree('/clickhouse/tables/{shard}/{cluster}/{database}/{table}', '{replica}', sign)
    У меня так задан путь который состоит из макросов, думаю в этом и причина проблемы, видимо путь считается динамически а не 1 раз при создании
  • https://t.me/clickhouse_ru
    конечно, макросы раскрываются в момент старта КХ (при attach table)
  • https://t.me/clickhouse_ru
    т.е. у вас все таки ReplicatedCollapsingMergeTree а не ReplicatedMergeTree и deduplicate не имеет смысла
  • @mmmhh93 #186296 06:12 PM, 09 Oct 2020
    Тогда не понятно почему таблица ищет путь неправильно. Может кончено от старой таблицы остались какие-то методанные и все спуталось
  • https://t.me/clickhouse_ru
    репликация работает по ZK пути , имя таблицы не используется для репликации
  • @mmmhh93 #186298 06:14 PM, 09 Oct 2020
    Тогда была ReplicatedMergeTree
    Я переключил на colapsing что бы дубли удалялись хоть немного. Под переключил подразумеваю, скопировал данные в новую таблицу и переименвоал именем старой таблицы. Предварительно удалив старую.
  • @450349348 #186299 06:15 PM, 09 Oct 2020
    Ребята, всем привет!
    Кому-нибудь удавалось поднять ClickHouse на arm Raspberry Pi в Docker контейнере?
  • https://t.me/clickhouse_ru
    А оно точно нужно? Ибо КХ изначально рассчитывает на довольно нескромные ресурсы :)
  • https://t.me/clickhouse_ru
    в смысле взяв docker CH c dockerhub ? Там только для amd/intel x64 сборка, там нет arm
  • @mmmhh93 #186302 06:20 PM, 09 Oct 2020
    А можно как-то восстановить метаданные в ЗК по данным или поправить путь в метаданных таблицы?
  • https://t.me/clickhouse_ru
    @CYevhenii #186303 06:20 PM, 09 Oct 2020
    Подскажите, возможно ли ускорить удаление данных с таблицы MergeTree?
    Начал замечять что данные(после удаления) доступны для селекта еще несколько секунд
  • @mmmhh93 #186304 06:20 PM, 09 Oct 2020
    так как правильный путь в ЗК есть
  • https://t.me/clickhouse_ru
    нет конечно.
    Alter delete просто переписывает всю таблицу без удаленных строк. У меня бывает 4 дня удаляется одна строка.
  • https://t.me/clickhouse_ru
    @CYevhenii #186306 06:22 PM, 09 Oct 2020
    Как Вы решаете эту проблему?
  • https://t.me/clickhouse_ru
    Это не проблема, это нюансы архитектуры кликхауса
  • https://t.me/clickhouse_ru
    да никак. Это же ожидаемое поведение. Я раз в году это делаю, gdpr и все такое.
  • @mmmhh93 #186309 06:30 PM, 09 Oct 2020
    @den_crane Только что попробовал переименовать таблицу обратно и она начала смотреть на другой путь ЗК (согласно новому имени таблицы) Возможно макрос {table} специфически, если я ничего не путаю то его КХ оператор добавляет каким-то образом
  • https://t.me/clickhouse_ru
    я не знаю что там в операторе, никогда не пользовался.

    каким образом можно использовать макрос {table}? Вот у меня 70 Replicated таблиц, какой смысл в макросе {table} ?
  • @mmmhh93 #186311 06:32 PM, 09 Oct 2020
    В нем имя таблицы текущей
  • @mmmhh93 #186312 06:33 PM, 09 Oct 2020
    Это скорее всего только в операторе доступно
  • https://t.me/clickhouse_ru
    это невозможно. Макрос читается только один раз в момент старта. В операторе обычный КХ
  • Для домашней бухгалтерии). У меня Raspberry Pi 4 на 8Gb, должен потянуть
  • Да, интересует docker image именно под arm
  • https://t.me/clickhouse_ru
    готовых нет
  • https://t.me/clickhouse_ru
    Тут уже интересовались неоднократно этим - кажись всё самому нужно собирать....
  • Значит востребованная штука - ClickHouse на ARM
  • Могу поделится образом одной версии, которая вроде даже как будто бы работает
  • У нас тоже несколько таблиц и для каждый максро {{table}} возвращает ее имя. Как реализовано, не знаю, но это работает, хотя и бажно.
    https://github.com/Altinity/clickhouse-operator/blob/master/docs/replication_setup.md#replicated-table-setup
    clickhouse-operator/replication_setup.md at master · Altinity/clickhouse-operator

    The ClickHouse Operator creates, configures and manages ClickHouse clusters running on Kubernetes - clickhouse-operator/replication_setup.md at master · Altinity/clickhouse-operator

  • Было бы здорово). Она есть где-то расшаренная?
  • Да, выкладываем в паблик.

    docker pull lunalabsltd/clickhouse-server:20.6.7.4-arm
  • Спасибо большое!
  • @zhora9001 #186324 06:44 PM, 09 Oct 2020
    В плане конфигов и прочего идентичен оф образам; собран слегка грязновато, вероятно, можно меньше размер сделать, но нам не критично - в остальном работает (включая кафку, mysql, jdbc)
  • https://t.me/clickhouse_ru
    ааа ясно

    If {database} and {table} macros aren`t defined explicitly, expand them as database_name and table_name respectively.
    не знал такого
    допишу-ка в доку
  • https://t.me/clickhouse_ru
    >(включая кафку, mysql, jdbc)
    вы на arm прямо собирали?
  • Так точно
  • https://t.me/clickhouse_ru
    ясно, и сколько дней собиралось 🙂 ?
  • @mmmhh93 #186329 06:50 PM, 09 Oct 2020
    @den_crane можно где-то руками поменять путь к для таблицы? Так как снова переливать данные это 10 часов
  • https://t.me/clickhouse_ru
    прямо в .sql файле впишите нужный
  • Сама сборка в районе 40 минут на чистую на 16 ядрах :) Костыли и заплатки в сумме пару часов писали, а 20.6 ветка вообще считай сама справилась
  • Подскажите где более точно лежат эти файлы?
  • https://t.me/clickhouse_ru
    /var/lib/clickhouse/metadata/база

    detach table xxx
    правим xxx.sql
    attach table xxx

    не понимаю до конца что вы делаете и зачем
  • https://t.me/clickhouse_ru
    @1054533597 #186335 06:58 PM, 09 Oct 2020
    Привет всем! Сейчас пишу скрипт внесения в таблицу файлов из каталога. Не пойму как правильно отследить успех/неуспех внесения файла через clickhouse-client. Пока приходит на ум анализировать stdout у clickhouse-client, если не пустой, то есть ошибка, если пустой, то файл можно удалять... Кто как делает?
  • @732222294 #186336 07:01 PM, 09 Oct 2020
    exit code не равен 0
  • Я переименовал таблицу, но так как в пути к ноде ZK был макрос от оператора, то КХ начал искать ЗК ноду по неверному пути. Я хочу явно прописать правильный путь к ЗК ноде. Так как сейчас таблица в readonly може
  • https://t.me/clickhouse_ru
    В доке не нашёл про exit code... Спасибо, гляну.
  • @732222294 #186339 07:07 PM, 09 Oct 2020
    Это не кх, а операционная система. При ошибке запроса клиент вывалится с кодом выхода, отличным от 0. По этому признаку вы можете понять что у вас грабель случился. Проверять в скрипле
  • https://t.me/clickhouse_ru
    Это всё-таки запрогано в clickhouse-client, с каким кодом выходить... Ну не суть, буду пробовать.
  • @732222294 #186341 07:12 PM, 09 Oct 2020
    🤞
  • @mmmhh93 #186342 07:30 PM, 09 Oct 2020
    @den_crane Спасибо таблица подхватила нужную ноду в ЗК и вышла, вышла и readonly мода и зарегистрировала приличное ко-во партиций к репликации.
  • @mmmhh93 #186343 07:30 PM, 09 Oct 2020
    С виду все хорошо
  • https://t.me/clickhouse_ru
    Делал без перезапуска сервера detach table + attach table, не помогло.

    PARTITION BY toDate(timestamp)
    ORDER BY (timestamp, host)
    Здесь host String, timestamp DateTime
  • https://t.me/clickhouse_ru
    @liokoda #186345 07:45 PM, 09 Oct 2020
    Хотя тут возможно в order by вытащить host будет правильнее
  • https://t.me/clickhouse_ru
    @t_balto #186346 07:50 PM, 09 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    похоже проблема в том что вы сделали alter mergetree но не сделали аналогичный alter distributed
  • @mmmhh93 #186348 08:03 PM, 09 Oct 2020
    Из моего клубка проблем осталась одна. Зависают запросы on cluster. В консольном клиенте отрисовует, только локальную ноду и запрос зависает. В логах особо ничего не вижу кроме исключения с сообщением о том, что закончился таймаут distributed запроса. Куда копать?
    PS. И еще эстетический момент, можно ли из логов сервера исключить ошибки связанные с некоректными запросами пользователей?
  • >PS. И еще эстетический момент, можно ли из логов сервера исключить ошибки связанные с некоректными запросами пользователей?

    о это меня тоже волновало, неистово плюсую, запилите FR на github )
  • После истечения таймаута пишет
    There are 3 unfinished hosts (0 of them are currently active), they are going to execute the query in background
    Как КХ понимает что хост активен или не активен?
  • https://t.me/clickhouse_ru
    distributed таблица не создавалась
  • https://t.me/clickhouse_ru
    ну значит, баг, сделайте issue на гитхаб
  • https://t.me/clickhouse_ru
    Запрос сявным указанием колонок (даже всех) отрабатывает успешно, именно со звёздочкой даёт ошибку.
  • https://t.me/clickhouse_ru
    короче берет cluster из remote_servers
    и для серверов которые там описаны, создает задание в ЗК , сервера видят задания для них и начинают выполнять, если имя/ойпи не совпадает то сервера не понимают что для них есть задание.
  • https://t.me/clickhouse_ru
    ну баг , воспроизвел

    https://github.com/ClickHouse/ClickHouse/issues/15800

    optimize table final чинит
  • https://t.me/clickhouse_ru
    Помогло, спасибо! И за issue тоже
  • В общем перезагрузил поды и заработало. Я уже около 2-х лет работаю с КХ и on cluster слабое место. Как будь-то там каких-то рестраев нету или с DNS взаимодействиес что-то не так. Но on cluster часто переставал работать.
  • https://t.me/clickhouse_ru
    починить-то не сложно, если бы проблема была воспроизводимой. А то вот у вас все время ломается, а меня все время не ломается. И что делать?
  • @mmmhh93 #186359 08:54 PM, 09 Oct 2020
    Если бы передомной такая задача стояла я бы в первую очередь добавил более детальные логи в местах свазанных в выполнением on cluster, что бы можно было по логам понять что произошло.
  • https://t.me/clickhouse_ru
    а вы смотрели те логи? Логи надо смотреть на серверах которые НЕ выполняют задание
  • @mmmhh93 #186361 09:01 PM, 09 Oct 2020
    Как правило начинаю изучение проблемы с просмотра логов. Но в реалиях такое часто бывает, что у клиента что-то поломалось репродьюса нет, но есть 50-100гб логов. И от С/C++ я далек
  • 10 October 2020 (22 messages)
  • https://t.me/clickhouse_ru
    @AdSafe #186362 03:51 AM, 10 Oct 2020
    Joined.
  • @1062828380 #186363 06:59 AM, 10 Oct 2020
    Joined.
  • @215457412 #186364 07:28 AM, 10 Oct 2020
    Joined.
  • @nahsi_at_tg #186365 12:22 PM, 10 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @onefoursix641 #186366 02:39 PM, 10 Oct 2020
    Joined.
  • @laziestCoder #186367 04:59 PM, 10 Oct 2020
    Всем привет! Изменил дефолтную порт 9000 на 3214 и указал на конфиг файле клиента, но почему то всё равно не зоходить. Порта менял потому что раньше 9000 был занятом, но 3214 порт не занят ничем (
  • @laziestCoder #186368 05:00 PM, 10 Oct 2020
    что можно сделать?
  • https://t.me/clickhouse_ru
    9000 - это для TCP протокола (для http - 8123). У вас драйвер какой протокол использует?
  • @laziestCoder #186370 05:22 PM, 10 Oct 2020
    я в прямой с консоли подключаюсь
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #186371 05:26 PM, 10 Oct 2020
    Попробуйте при запуске clickhouse-client указать новый порт
  • @dj_mixer #186373 05:28 PM, 10 Oct 2020
    Проверьте порт открыт или нет, ну и стартап лог кх посмотрите, там пишет
  • https://t.me/clickhouse_ru
    Так, всмысле " конфиг файле клиента"? Менять нужно тут .../clickhouse-server/config.xml
  • Сначала менял <tcp_port> внутри /clickhouse-server/config.xml
    А потом добавил новый конфиг <port> внутри /clickhouse-client/config.xml
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #186376 05:38 PM, 10 Oct 2020
    А КХ то рестаровали? Если да, в логе должна быть строка со смыслом - готов слушать на порту 3214
  • @1382307521 #186377 05:40 PM, 10 Oct 2020
    Joined.
  • да, рестартанул
    в формах увидел что нужно менять пользователья в кх демон файле, так и сделал и сейчас уже не могу даже стартануть КХ )

    извиняюсь если что, только только изучаю этого технологию
  • вот такая ошибка
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #186381 06:29 PM, 10 Oct 2020
    Уберите то что делали в конфиге юзера. И смотрите что пишет в логе (/var/log/clickhouse-server/clickhouse-server.log) при старте, если ошибка в xml - напишет в каком файле
    И в /var/log/clickhouse-server/clickhouse-server.err.log тоже смотрите
  • сработало, спасибо!
  • @valerii_kuzivanov #186383 10:24 PM, 10 Oct 2020
    Joined.
  • @1215897221 #186384 10:36 PM, 10 Oct 2020
    Joined.
  • 11 October 2020 (19 messages)
  • @yorhafun #186385 09:36 AM, 11 Oct 2020
    Joined.
  • @769732715 #186386 01:05 PM, 11 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @donaldwipper #186387 01:11 PM, 11 Oct 2020
    Ребята, а кто-нибудь случайно с помощью Regexp не реализовывал функцию JSONExtractArrayRaw? А то мы кликхаус не скоро обновим. А извлечь список из json что-то не получается
  • https://t.me/clickhouse_ru
    Покажите конкретный пример таблицы и данные. И что хотите получить
  • https://t.me/clickhouse_ru
    @donaldwipper #186389 01:30 PM, 11 Oct 2020
    @dmitry_berezhnov Ниже пример
    Но вот функцию JSONExtractArrayRaw я, к сожалению, не могу использовать, потому что старая версия ch
  • https://t.me/clickhouse_ru
    @donaldwipper #186390 01:30 PM, 11 Oct 2020
    SELECT
    arrayJoin(arrayMap(i -> JSONExtractString(i, 1), JSONExtractArrayRaw(j))) AS r,
    id
    FROM
    (
    SELECT
    '[{"x":"5"}, {"x":"7"}]' AS j,
    5 AS id
    )

    ┌─r─┬─id─┐
    │ 5 │ 5 │
    │ 7 │ 5 │
    └───┴────┘
  • https://t.me/clickhouse_ru
    Из j отрежьте символы "[]", затем сплитаните по "," - получите массив объектов в виде строки json-а. А потом уже visitParamExtractUInt https://clickhouse.tech/docs/en/sql-reference/functions/json-functions/#visitparamextractuintparams-name
    JSON | ClickHouse Documentation

    Functions for Working with JSON In Yandex.Metrica, JSON is transmitted by users as session parameters. There are some sp

  • https://t.me/clickhouse_ru
    @donaldwipper #186392 03:03 PM, 11 Oct 2020
    Этот способ уже не работает, если исходный json вида [{"x":"5","y":"c"},{"x":"7","y":"d"}] Я просто упростил пример. Можно, конечно сплитить по другой комбинации символов. Но тут тоже нет гарантии, что она не будет присутствовать во вложенных словарях
  • https://t.me/clickhouse_ru
    @liokoda #186393 03:10 PM, 11 Oct 2020
    Вопрос вдогонку по регулярным выражениям. Можно ли в одной таблице держать регекспы, а потом их использовать для подсчёта совпадений по каждому из них из другой таблицы?
    Речь об URL'ах, которые нужно считать по регулярному выражению.
  • https://t.me/clickhouse_ru
    Почему не будет? Вы приводите ваш json, который не можете парсить, к виду json-а, который можете.
    Я показал как
  • https://t.me/clickhouse_ru
    Можете, ф-ция match может использовать нелитералы (когда-то раньше не могла)
  • https://t.me/clickhouse_ru
    пробовал аргументом указывать столбец для матчинга - давал ошибку
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #186397 04:22 PM, 11 Oct 2020
    Только такое скорее всего в JOIN не получиться использоваться, а иначе - CROSS JOIN
  • https://t.me/clickhouse_ru
    Сделайте MVP для воспроизведения
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #186399 04:24 PM, 11 Oct 2020
    У меня работает, версия 20.5.2.7
  • https://t.me/clickhouse_ru
    @Sharptop #186401 04:47 PM, 11 Oct 2020
    На ссылке по скачиванию rpm https://clickhouse.tech/docs/ru/getting-started/install/ кривая ссылка до самих rpm
    Установка | Документация ClickHouse

    Установка Системные требования ClickHouse может работать на любой операционной системе Linux, FreeBSD или Mac OS X с арх

  • https://t.me/clickhouse_ru
    @Sharptop #186402 04:48 PM, 11 Oct 2020
    Забыли _64 включить в адрес ссылки
  • @1281708028 #186403 05:25 PM, 11 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @OlegSchwann #186404 07:08 PM, 11 Oct 2020
    Joined.
  • 12 October 2020 (124 messages)
  • @1184821156 #186405 01:56 AM, 12 Oct 2020
    Joined.
  • @1133211157 #186406 02:41 AM, 12 Oct 2020
    Joined.
  • @laziestCoder #186407 06:26 AM, 12 Oct 2020
    Всем привет! Какие тип данные в таблицах можно использывать для polygon и multipolygon?

    В документациях я увидел функции чтобы работать с географичекскимы данными но не знаю насчет тип данных для самих полей.
  • @ogavrilov #186408 06:41 AM, 12 Oct 2020
    я координаты во Float32 храню, точности достаточно
  • @kreuzerkrieg #186409 06:58 AM, 12 Oct 2020
    Коллеги, а есть какая то системная таблица в которой я могу подсмотреть сколько фаилов было отркыто как результат какого то запроса? а то вдруг мне почему то не хватает 500к файл дескрипторов
  • https://t.me/clickhouse_ru
    Ну тут эмпирическим путём можно прикинуть, по ключу партиционирования. И, кстати, советуют не использовать слишком мелкий как раз из-за дескриптора. https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key/
    Произвольный ключ партиционирования | Документация ClickHouse

    Произвольный ключ партиционирования Партиционирование данных доступно для таблиц семейства MergeTree (включая реплициров

  • https://t.me/clickhouse_ru
    @nmdimas #186412 07:28 AM, 12 Oct 2020
    Всем привет. Вопрос про железку, в хецнере есть AMD 32 ядер процы. Кто то пробовал на amd серверных запускать clickhouse ? Или лучше по слабее взять но xeon или два xeon ?
  • @125427421 #186413 07:32 AM, 12 Oct 2020
    Я запускал
  • @nahsi_at_tg #186414 07:32 AM, 12 Oct 2020
    Не вижу никаких проблем на эпиках запускать. Если инструкции есть нужные (а они есть)
  • @125427421 #186415 07:32 AM, 12 Oct 2020
    в хетзнере говно
  • @125427421 #186416 07:33 AM, 12 Oct 2020
    поставили 3 машины - память меняли два раза
  • @125427421 #186417 07:33 AM, 12 Oct 2020
    под нагрузкой вылетел бпшник
  • да не особо он мелкий, месяц, все было ок, пока каким то скриптом не начали бомбить сервер
  • Performance comparison of ClickHouse on various hardware

    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
    Спасибо!
  • https://t.me/clickhouse_ru
    У нас в хецнере около 30 серверов разных от мелких до больших. В год меняем примерно 1-2 тачки, меняют как правило за день. Вся архитектура приложение рассчитана что какой то из серваков может в любое время выпасть. Реальность с которой мы научились жить. А так серваки это расходники.
  • @125427421 #186422 07:41 AM, 12 Oct 2020
    💩
  • @125427421 #186423 07:42 AM, 12 Oct 2020
    для препрода и теста сойдет
  • @125427421 #186424 07:43 AM, 12 Oct 2020
    с бпшником было сложнее всего поменять
  • https://t.me/clickhouse_ru
    @Krashuevina #186425 08:05 AM, 12 Oct 2020
    Коллеги, привет!
    Вопрос про tiered-storage. Если каждый блочный девайс будет примонтирован как отдельная директория (а-ля Hadoop), и одно из устройств выходит из строя - что происходит? Переналивание партов с реплики, на другие директории?
  • Привет, там самый топовый бэнчмарк в на сайте мы сабмитили 🙂 это AMD Epyc 32 - Hetzner кажется самый лучший выбор сейчас по цене/качеству
  • https://t.me/clickhouse_ru
    @zorrozoroff #186427 08:36 AM, 12 Oct 2020
    А скажите, есть ли в кликхаузе какой-то таймстамп на всю базу, если не менялась, чтобы он оставался неизменным, а любой инсерт или даже фоновый merge внутри - чтобы знать что он произошел. ?
  • https://t.me/clickhouse_ru
    Посмотрите в сторону таблицы system.parts, там описаны все парты, из которых состоят партиции, из которых состоит таблица. Там есть поле modification_time
  • https://t.me/clickhouse_ru
    Спасибо!
  • @a_naumov #186431 10:54 AM, 12 Oct 2020
    Joined.
  • Используем несколько AX61-NVMe для clickhouse пока проблем не было
  • @alextakuntcev #186433 11:14 AM, 12 Oct 2020
    Добрый день! У меня настроен кластер с зукипером мастер-реплика-реплика, internal_replication = false. Я сделал detach partition без указания on cluster. На всех трех серверах появились парты в system.detached_parts и в system.parts для данной таблицы было пусто. После этого я выполнил ATTACH PARTITION и у меня на всех серверах в system.parts появились записи. На мастере (где я выполнял сам запрос) восстановились парты из system.detached_parts, а на остальных парты так и остались в этих таблицах. Т.е. ATTACH PARTITION в данном случае отработала как insert?
  • https://t.me/clickhouse_ru
    Нет. Тот сервер на котором выполнили команду, сделал attach, остальные скачали с него. Это вроде описано было доке.
  • Почему-то не нашел. А attach можно настроить для всех серверов (если ссылка на доку под рукой был бы признателен, если поделитесь)?
  • https://t.me/clickhouse_ru
    Нельзя, нету ссылки.
  • https://t.me/clickhouse_ru
    @den_crane #186437 11:25 AM, 12 Oct 2020
    Кстати в кх мультимастер, там нет мастеров/реплик, они все мастеры.
  • Ну да, я поэтому и написал в скобках (мастер условно тот, где выполнялась команда). Спасибо за пояснения
  • Если JSONLength в вашей версии уже есть то массив можно разобрать вот так:
    SELECT
    arrayJoin(arrayMap(i->JSONExtractRaw(j,i+1),range(JSONLength(j)))),
    j,
    asd
    FROM
    (
    SELECT
    '[{"x":"5","y":"c"},{"x":"7","y":"d"}]' as j,
    5 as asd
    )
  • https://t.me/clickhouse_ru
    @zondinho #186440 11:35 AM, 12 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @399999446 #186441 11:37 AM, 12 Oct 2020
    всем привет
    Рассмотрим пример
    Данные льются в онлайне ,я через mat view их аггрегирую в разрезе id и считаю кол-во просмотров
    date id views
    2020-10-01 1 10
    2020-10-05 1 15
    2020-10-08 1 20
    2020-10-10 1 10

    На выходе получается id -> 55 просмотров

    Мне нужно будет получать актуальные просмотры по id за 30 дней
    Если больше не будет просмотров по этому ид скажем дней 20, то по нему "сгорят" первые просмотры и останется 45 просмотров

    Чтоб такое посчитать,нужно хранить срезу по дням или можно как то с помощью движком решить,чтоб он сам откидывал просмотры,которые ранее просумировал?
  • https://t.me/clickhouse_ru
    Блин, круто! JSONLength есть. Спасибо!
  • @e11it #186443 11:54 AM, 12 Oct 2020
    Подскажите, можно ли в kafka_topic_list указать маску топиков или вариант делать только через полное перечисление?
  • https://t.me/clickhouse_ru
    Добавлять день как размерность.
  • @vialorn #186445 11:59 AM, 12 Oct 2020
    подскажите, я правильно понимаю, что у команд system drop mark cache и system drop uncompressed cache нет синтаксиса on cluster?
  • https://t.me/clickhouse_ru
    а можете более подробно объяснить,то не понял(
  • https://t.me/clickhouse_ru
    SELECT abs(dateDiff('second',dateTimeField, toDateTime('your_contant'))) AS date_distance, field1, field2
    FROM table WHERE dateTimeField BETWEEN toDateTime('your_constant') - INTERVAL 1 WEEK AND toDateTime('your_constant') + INTERVAL 1 WEEK ORDER BY date_distance LIMIT 1
  • https://t.me/clickhouse_ru
    у system command вообще нет синтаксиса ON CLUSTER
    и надеюсь не будет

    ON CLUSTER SQL запросы кладутся в ZK и оттуда потом вычитываются
  • https://t.me/clickhouse_ru
    @241186216 #186449 12:19 PM, 12 Oct 2020
    Скажи ,а в движке просто MergeTree наличие primary key приводит к удалению дубликатов при слиянии ?
  • https://t.me/clickhouse_ru
    нужно хранить срезу по дням
  • https://t.me/clickhouse_ru
    нет

    primary key -- это маркер какие поля в включить в индекс
    order by -- это маркер как схлопывать записи для схлапывающих движков
  • https://t.me/clickhouse_ru
    @Unfortunatelly #186452 12:21 PM, 12 Oct 2020
    всем привет, как проверить является ли строка из одного столбца, подстрокой значения другого столбца? речь о строковом типе данных
  • https://t.me/clickhouse_ru
    position(a, b) > 0
  • https://t.me/clickhouse_ru
    спасибо)
  • @e11it ↶ Reply to #186443 #186455 12:34 PM, 12 Oct 2020
    Ответ. Можно, надо использовать regex
    Из доки к бибилиотеке(https://github.com/edenhill/librdkafka/blob/8f8c4020b6d9c743cc0029fcb509f46f1bd3ec9e/src-cpp/rdkafkacpp.h):
    * Regex pattern matching automatically performed for topics prefixed
    * with \c \"^\" (e.g. \c \"^myPfx[0-9]_.*\"
    edenhill/librdkafka

    The Apache Kafka C/C++ library. Contribute to edenhill/librdkafka development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @socketpair #186456 01:26 PM, 12 Oct 2020
    [ 31.921985] process '/usr/bin/clickhouse' started with executable stack
  • https://t.me/clickhouse_ru
    @socketpair #186457 01:27 PM, 12 Oct 2020
    Вот такое у меня пишет в 32 федоре
  • https://t.me/clickhouse_ru
    @socketpair #186458 01:27 PM, 12 Oct 2020
    чот мне кажется это немного не секурно
  • https://t.me/clickhouse_ru
    @socketpair #186459 01:27 PM, 12 Oct 2020
    дискасс
  • https://t.me/clickhouse_ru
    @CYevhenii #186460 01:42 PM, 12 Oct 2020
    Добрый день! Зашел в логи ошибок clickhouse, нашел вот такую ошибку,
    <Error> void DB::BackgroundProcessingPool::workLoopFunc(): Code: 49, e.displayText() = DB::Exception: Sort order of blocks violated for column ``, left: UInt64_1596204021, right: UInt64_1593937158., Stack trace (when copying this message, always include the lines below)
    Не подскажите что это значит и как ее пофиксить?
  • https://t.me/clickhouse_ru
    тут пользователи, разработчики в др. чате
  • https://t.me/clickhouse_ru
    О! а где ?
  • https://t.me/clickhouse_ru
    и лучше issue на гитхаб, а то китайские и индийские разрабы не говорят по русски
  • https://t.me/clickhouse_ru
    @socketpair #186464 01:55 PM, 12 Oct 2020
    (помимо @cloud_flood)
  • https://t.me/clickhouse_ru
    @den_crane #186465 01:59 PM, 12 Oct 2020
    гм, не могу найти ссылку, "Clickhouse developers"
  • https://t.me/clickhouse_ru
    какая версия КХ ?
  • https://t.me/clickhouse_ru
    @CYevhenii #186467 02:01 PM, 12 Oct 2020
    v20.5.4.40-stable
  • https://t.me/clickhouse_ru
    ну непонятно что это. Заводите тикет на гитхабе и нужно больше логов.
  • https://t.me/clickhouse_ru
    @CYevhenii #186469 02:05 PM, 12 Oct 2020
    Ок, Спасибо
  • Это ж вообще не то)
    Константа у меня Value а не dateTime
  • https://t.me/clickhouse_ru
    SELECT argMin(timestamp, abs(value - $CONSTANT)) AS best_time, userid FROM users GROUP BY userid
  • https://t.me/clickhouse_ru
    @lisknyazeva #186472 02:44 PM, 12 Oct 2020
    Joined.
  • @kantarovich #186473 02:45 PM, 12 Oct 2020
    Joined.
  • @kantarovich #186474 02:48 PM, 12 Oct 2020
    Ребята, всем привет!
    Возник вопрос, буду рад если поможете разобраться
  • @kantarovich #186475 02:48 PM, 12 Oct 2020
    В click house (~50млн записей) order by очень негативно влияет на скорость сортировки, ситуация усугубялется тем, что происходит взаимодействие со словарями, схематический пример - select dictGetString('dict', 'title', id) as string, id from table order by string asc - сейчас отрабатывает за 20-30 сек

    сами словари в качестве источника используют mysql, тип хранения - hashed и размер самого словаря порядка 10млн строк

    Нужна помощь в решении, которое позволит выполнять запрос за 1-2 секунды
  • https://t.me/clickhouse_ru
    ALTER TABLE mytable ADD COLUMN title String MATERIALIZED dictGetString('dict','title',id) MODIFY ORDER BY (all_old_order_by_fields_in_same_order, title);

    правда если у вас словарь часто меняется, то это косяки в данных будут
  • https://t.me/clickhouse_ru
    @orantius #186477 02:51 PM, 12 Oct 2020
    ну так вам надо выкачать всю таблицу mysql-ную чтобы этот запрос отработал.
  • https://t.me/clickhouse_ru
    таблица итак выкачивается, главное там время жизни задать
  • https://t.me/clickhouse_ru
    возможно SYSTEM RELOAD DICTIONARY dict;
    надо сделать перед первым прогоном запроса

    https://clickhouse.tech/docs/en/sql-reference/statements/system/#query_language-system-reload-dictionary
    SYSTEM | ClickHouse Documentation

    SYSTEM Statements The list of available SYSTEM statements: RELOAD EMBEDDED DICTIONARIES RELOAD DICTIONARIES RELOAD DICTI

  • @mochalovn #186480 02:58 PM, 12 Oct 2020
    Всем добрый вечер! Правильно ли я понимаю, что имя таблицы не может начинаться с цифры?
  • https://t.me/clickhouse_ru
    нет
    0e9854b03fe7 :) CREATE TABLE 1password (s String) ENGINE=Memory();

    CREATE TABLE 1password
    (
    s String
    )
    ENGINE = Memory()

    Ok.
  • Спасибо большое , будем пробовать, если не получится вернусь)
  • Спасибо, значит, у меня где-то в другом месте неправильно
  • https://t.me/clickhouse_ru
    вы вообще посмотрите на свой system.dictionaries
  • https://t.me/clickhouse_ru
    имя таблицы фигурирует в database engine ordinary как папка в файлах данных и метаданных
  • https://t.me/clickhouse_ru
    @ilior #186486 03:02 PM, 12 Oct 2020
    Joined.
  • Спасибо ещё раз, все передал разработчикам, смотрим)
  • https://t.me/clickhouse_ru
    сделал без даунтайма, в итоге.

    1. Добавляем -Dzookeeper.DigestAuthenticationProvider.superDigest в ZK и перезапускаем кластер ЗК
    2. Добавляем в конфиги CH параметр identity в секцию ZK. Логин и пароль в этом месте желателен иной, не как в п.1.
    3. По одной рестартим ноды.
    4. Когда все ноды переподключили, делаем в zk addAcl

    такой вот простенький гайд, как добавить аутентификацию в zookeeper без простоя clickhouse
  • https://t.me/clickhouse_ru
    @chAlx314 #186489 03:36 PM, 12 Oct 2020
    /* Пример для Issue пока не подобрал, поэтому просто вброшу сюда */

    groupArrayMovingSum() как-то странно работает с сортированным набором данных. В моём запросе после добавления группировки он стал создавать (и потом суммировать) массив в рандомном порядке. При этом если добавить рядом в селект другую похожую функцию, то всё начинает работать правильно:

    SELECT month, groupArrayMovingSum(chains) -- suxx
    SELECT month, groupArray(chains), groupArrayMovingSum(chains) -- rulezz

    С arrayCumSum() такой фигни нет.
  • @githubreleases_bot #186490 b o t 04:40 PM, 12 Oct 2020
    ClickHouse/ClickHouse tagged: v20.6.8.5-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v20.6.8.5-stable
    Release notes:
    v20.6.8.5-stable
    Release v20.6.8.5-stable · ClickHouse/ClickHouse

    ClickHouse stable release v20.6.8.5-stable

  • https://t.me/clickhouse_ru
    @kas_kir #186491 05:21 PM, 12 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @kas_kir #186492 05:24 PM, 12 Oct 2020
    Добрый день, подскажите как преобразовать datetime в integer?
  • https://t.me/clickhouse_ru
    toUInt64(datetime_field)
  • https://t.me/clickhouse_ru
    @kas_kir #186494 05:27 PM, 12 Oct 2020
    Делаю операцию datediff, получаю время в секундах,
    Но когда пытаюсь по условию отфильтровать (x > 100) получаю ошибку
    Received exception from server (version 20.6.7):
    Code: 41. DB::Exception: Received from localhost:9000. DB::Exception: Cannot parse datetime: Cannot parse DateTime from String.
  • https://t.me/clickhouse_ru
    Не помогло
  • https://t.me/clickhouse_ru
    @kas_kir #186496 05:27 PM, 12 Oct 2020
    уже пытался сделать toString а потом toInt64
  • https://t.me/clickhouse_ru
    @kas_kir #186497 05:28 PM, 12 Oct 2020
    Запрос
    https://yql.yandex-team.ru/Operations/X4SOTBpqv9NON6hDe17MreMfxkn6h7kY0MR31UMR_rE=
  • https://t.me/clickhouse_ru
    @orantius #186498 05:28 PM, 12 Oct 2020
    это неправильный чат для этого вопроса.
  • https://t.me/clickhouse_ru
    у тебя там похоже фильтрация по дате в виде toDateTime('YYYY-MM-DD') замени на toDateTime('YYYY-MM-DD 00:00:00') или toDateTime('YYYY-MM-DD 23:59:59')
  • @alx_srv #186500 07:34 PM, 12 Oct 2020
    Joined.
  • @664738256 #186501 07:36 PM, 12 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @voldaycev #186502 07:56 PM, 12 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @voldaycev #186503 07:57 PM, 12 Oct 2020
    Коллеги подскажите. помнится был ищью в кликхаусе, что для того чтобы прочитать последние n строк, кликхаус перечитывал всю таблицу. пофиксили это?
  • https://t.me/clickhouse_ru
    Звучит как что то пофикшенное давно, у вас какая версия?
  • https://t.me/clickhouse_ru
    19.17.4.11
  • https://t.me/clickhouse_ru
    ClickHouse Release 19.14.3.3, 2019-09-10

    Optimize queries with ORDER BY expressions clause, where expressions have coinciding prefix with sorting key in MergeTree tables. This optimization is controlled by optimize_read_in_order setting.
  • https://t.me/clickhouse_ru
    ок. спасибо
  • https://t.me/clickhouse_ru
    ничего не понятно, кто на ком стоял.

    https://gist.github.com/den-crane/135663f3c01a439fef96016cec0a8bfa
  • https://t.me/clickhouse_ru
    @Mikhastos #186509 08:39 PM, 12 Oct 2020
    Памагити. Не могу на дебиан 10 поставить. На Интел. Ругается на зависимость (clickhouse-client зависит от clickhouse-common-static (= 20.9.3.45)). А такой пакет в репе только для АМД. Откуда брать, или что править? Заранее спасибо
  • https://t.me/clickhouse_ru
    @nikitosiusis #186510 08:41 PM, 12 Oct 2020
    покажите uname -a
  • https://t.me/clickhouse_ru
    какоооой бред

    apt-get install clickhouse-server=20.8.3.18 clickhouse-client=20.8.3.18 clickhouse-common-static=20.8.3.18
  • https://t.me/clickhouse_ru
    @nikitosiusis #186512 08:41 PM, 12 Oct 2020
    можт там 32битный дебиан?)
  • https://t.me/clickhouse_ru
    да просто 3 пакета надо ставить разом , там с зависимостями все сложно
  • https://t.me/clickhouse_ru
    @Mikhastos #186514 08:49 PM, 12 Oct 2020
    Извините за бред. Только сегодня Линукс в глаза увидел. Огромное спасибо за советы
  • https://t.me/clickhouse_ru
    исторически AMD сделал 64 бит платформу раньше Intel, да! интел опоздал уже 20 лет назад.
    Поэтому в линуксе платформа называется amd64 (x86_64)

    ну а пакеты amd64 и для amd и для intel

    https://ru.wikipedia.org/wiki/X86-64
  • https://t.me/clickhouse_ru
    @Mikhastos #186516 09:22 PM, 12 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    А какой репозитарий используете? В "http://repo.yandex.ru/clickhouse/deb/stable/ main/" не находит "clickhouse-common-static=20.8.3.18"
  • https://t.me/clickhouse_ru
    это был просто пример используйте любой

    http://repo.yandex.ru/clickhouse/deb/stable/main/

    20.9.3.45 например
  • https://t.me/clickhouse_ru
    🙇‍♂️
  • https://t.me/clickhouse_ru
    @wXhexo #186521 10:32 PM, 12 Oct 2020
    Как у КХ с обновлениями? Если с 19.14 на 20.8 прыгнуть, какие подводные могут быть?
  • https://t.me/clickhouse_ru
    @nyoroon #186522 10:36 PM, 12 Oct 2020
    запросы могут сломаться или выдавать не тот результат
  • https://t.me/clickhouse_ru
    @nyoroon #186523 10:37 PM, 12 Oct 2020
    скорее всего не получится откатить версию назад на месте
  • https://t.me/clickhouse_ru
    @unamedrus #186524 10:38 PM, 12 Oct 2020
    Там из того что мешает откату, это нужно будет подчистить DDL для пересозданных system log tables.
  • https://t.me/clickhouse_ru
    @nyoroon #186525 10:39 PM, 12 Oct 2020
    там ещё вроде менялся формат данных в ЗК
  • https://t.me/clickhouse_ru
    @unamedrus #186526 10:41 PM, 12 Oct 2020
    Для ALTER ов емнип
  • https://t.me/clickhouse_ru
    @nyoroon #186527 10:44 PM, 12 Oct 2020
    в общем, можно пройтись по changelog и прочитать backward incompatible changes (если очень хочется)
  • https://t.me/clickhouse_ru
    @wXhexo ↶ Reply to #186527 #186528 10:55 PM, 12 Oct 2020
    Спасибо, глянул, в моем случае все не так страшно
  • https://t.me/clickhouse_ru
    гхыыыхаха, у меня первый-же запрос обычный самый простой select упал после апгреда стейджа на 20.8 (баг) , и 4й упал (мой баг) и при том что я соломки подстелил

    <?xml version="1.0"?>
    <yandex>
    <profiles>
    <default>
    <joined_subquery_requires_alias>0</joined_subquery_requires_alias>
    <any_join_distinct_right_table_keys>1</any_join_distinct_right_table_keys>
    </default>
    </profiles>
    </yandex>
  • https://t.me/clickhouse_ru
    32-х разрядный камень преткновения. Спасибо.
  • 13 October 2020 (284 messages)
  • https://t.me/clickhouse_ru
    @ImIvanco #186531 02:46 AM, 13 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @ImIvanco #186532 02:49 AM, 13 Oct 2020
    Всем привет. Извиняюсь за возможно не очень умный вопрос. Возможно ли через tabix загрузить в click house данные из csv? Если ДА можно пример?
  • https://t.me/clickhouse_ru
    в 20.8 database engine Atomic для system по дефолту еще
  • https://t.me/clickhouse_ru
    зачем именно через TABIX?

    ответ НЕТ

    максимум что можно в формате VALUES Данные вставить через
    https://clickhouse.tech/docs/en/sql-reference/statements/insert-into/

    или через INSERT INTO ... SELECT ... FROM file(...)
    https://clickhouse.tech/docs/en/sql-reference/table-functions/file/
    но там надо сначала файл на ClickHouse сервер загрузить

    и ну или через INSERT INTO ... SELECT ... FROM url(...)
    https://clickhouse.tech/docs/en/sql-reference/table-functions/url/

    тогда надо ваш CSV куда то в web положить

    если так хочется вставить CSV
    возьмите curl обычный
    https://clickhouse.tech/docs/en/interfaces/http/
    cat your_csv_file.csv | curl "http://clickhouse_host:8123/?query=INSERT INTO table FORMAT CSV" --data-binary @-
    INSERT INTO | ClickHouse Documentation

    INSERT INTO Statement Adding data. Basic query format: INSERT INTO [db.]table [(c1, c2, c3)] VALUES (v11, v12, v13), (v2

  • https://t.me/clickhouse_ru
    @BloodJazMan #186535 04:16 AM, 13 Oct 2020
    curl под windows тоже есть
  • https://t.me/clickhouse_ru
    Зачем - незнаю. 10 всяких штук для взаимодействия с БД не хочется. Спасибо понятно. через curl разобрался. Оказалось что "curl" Как псевдоним по умолчанию в PowerShell прописан. А это не curl.
  • А в чем разница между 20.9.3.45 от 09.10.2020 ? Или это разные ветки ?
  • https://t.me/clickhouse_ru
    Which ClickHouse version to use in production?

    Which ClickHouse Version to Use in Production? First of all, let’s discuss why people ask this question in the first pla

  • https://t.me/clickhouse_ru
    20.6 и 20.9 это две разные ветки, да

    почитайте ссылку вверху, там объяснено немного про релизную политику
  • Спасибо! Почитаю
  • https://t.me/clickhouse_ru
    если кратко, то clickhouse бежит с очень хорошей скоростью и за этот год уже есть 20.11 функционал
    также есть LTS релизы, куда по идее должны бекпортиться багфиксы (и не бекпортиться фичи)
    но поскольку релизы пекуться как пирожки, то как то цикл LTS последнее время может сократиться с 1 года, до чуть ли не 3 месяцев, что как бы не соответсвует общепринятым LTS нормам

    можно еще ориентироваться на рекомендации Altinity
    https://altinity.com/blog/tag/releases/
  • Прикольно. Поставил КХ, а через 3 месяца, после обновлений, у меня и простые SELECT могут сломаться 😂
  • https://t.me/clickhouse_ru
    какие именно простые SELECT у вас сломались? то есть вероятность такая есть. но вот чтобы прямо "простые селекты сломались", это очень маловероятно

    обычно ломаются какие то corner cases, которые неочевидные

    или при обновлении на 20.8+ обратно на 20.1, 20.3 и 19.x уже точно без боли не откатишься, потому что хотя формат бинарный данных в MergeTree совместим
    но например system database перешел в atomic а у него другой directory layout чтобы можно было полностью неблокирующие DDL реализовать
  • Простите, это я утрировал так неудачно. Но в целом теперь более менее понятно. Спасибо Вам
  • https://t.me/clickhouse_ru
    @BloodJazMan #186545 06:49 AM, 13 Oct 2020
    Народ, предлагаю сделать ДОБРОЕ ДЕЛО
    открываем
    https://youtrack.jetbrains.com/
    регаемся, если не зарегались

    потом открываем
    https://youtrack.jetbrains.com/issues/DBE?u=1&q=%23ClickHouse%20

    видим 18 нерешенных issue
    и в крайней правой колонке Like

    ставим этим issues Like
  • https://t.me/clickhouse_ru
    @romul87 #186546 07:39 AM, 13 Oct 2020
    Joined.
  • @AniMeIIIkA #186547 07:41 AM, 13 Oct 2020
    Подскажите пжл, как я могу задать алиас при написании:
    ALTER TABLE SomeTable st UPDATE бла бла бла
  • @dj_mixer #186548 07:54 AM, 13 Oct 2020
    а в Merge-движок случаем кастомный маппинг колонок не завозили? если нет - какие есть варианты алиасинга таблиц чтобы объединить несколько разных таблиц под общей мета-таблицей? (типа view но с пушем условий)
  • https://t.me/clickhouse_ru
    Никак. И нельзя проапдетить сджойнив с др. таблицей.
    Можно использовать joinget/dictget.
    И нельзя использовать alter update для бизнес-задач.
  • Спасибо за ответ, надеюсь в новых версиях появится... раз уж есть возможность менять и удалять, то добавить туда джойны и алиасы было бы не лишним.
  • https://t.me/clickhouse_ru
    Вы не понимаете. Ну Нет этого ничего. И не будет еще очень долго.
  • Пока то что имеется меня устраивает, не такая критичная на данный момент проблема для меня
  • https://t.me/clickhouse_ru
    я и говорю, вы не понимаете
  • https://t.me/clickhouse_ru
    @1221964594 #186554 08:12 AM, 13 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @jeka_n #186555 08:18 AM, 13 Oct 2020
    Joined.
  • @dinam0n #186556 08:27 AM, 13 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @tephro #186557 08:31 AM, 13 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @tephro #186558 08:33 AM, 13 Oct 2020
    Приветствую! Подскажите, как в CH принято собирать инфу об общем размере данных в кластере? Сейчас собираю из system.parts каждой ноды. Есть ли более удобный метод?
  • @Shazo_Rus #186559 08:38 AM, 13 Oct 2020
    а чем именно этот метод не удобен вам?
  • https://t.me/clickhouse_ru
    плюсую в чем для вас неудобство этого метода?
    если не хочется бегать по нодам самому и коннектиться коннектитесь к одной ноде или к chproxy
    и делайте что нибудь типа
    SELECT hostName() h, formatReadableSize(sum(bytes_on_disk)) FROM clusterAllReplicas('your_cluster', system.parts) GROUP BY h;
  • https://t.me/clickhouse_ru
    @tephro ↶ Reply to #186560 #186561 08:51 AM, 13 Oct 2020
    Что есть clusterAllReplicas?
  • https://t.me/clickhouse_ru
    cluster | ClickHouse Documentation

    cluster, clusterAllReplicas Allows to access all shards in an existing cluster which configured in remote_servers sectio

  • https://t.me/clickhouse_ru
    вы какой то самодельный дашборд делаете ? или сбор статистики?
    какой стек ? какой язык?
  • https://t.me/clickhouse_ru
    @tephro ↶ Reply to #186562 #186564 08:54 AM, 13 Oct 2020
    Спасибо, это то, что нужно
  • https://t.me/clickhouse_ru
    @tephro ↶ Reply to #186563 #186565 08:55 AM, 13 Oct 2020
    Да, нужно отображать пользователю общий размер каждой ежедневной партиции
  • https://t.me/clickhouse_ru
    в grafana? через grafana clickhouse datasource?
  • https://t.me/clickhouse_ru
    @tephro #186567 08:59 AM, 13 Oct 2020
    Нет, не в opensource системе. Как вытащить нужные данные я знаю. Вопрос был как раз о методе вроде clusterAllReplicas, чтобы не ходить по нодам самому на уровне приложения
  • Если версия КХ старая и нет этих функций, то можно создать отдельную distributed таблицу и делать тоже самое над ней)
  • https://t.me/clickhouse_ru
    @tephro #186570 09:04 AM, 13 Oct 2020
    "Using the cluster and clusterAllReplicas table functions are less efficient than creating a Distributed table because in this case, the server connection is re-established for every request." 🙂 А можно ли создать distributed таблицу над system.parts?
  • @Shazo_Rus #186571 09:04 AM, 13 Oct 2020
    дап, конечно
  • https://t.me/clickhouse_ru
    @tephro #186572 09:05 AM, 13 Oct 2020
    Красота, спасибо
  • https://t.me/clickhouse_ru
    @tsvmks #186573 09:48 AM, 13 Oct 2020
    Всем привет!
    Был запрос, который содинял вычислния из подзапросов в одну строку через join ... on (1 = 1) ALL
    Но вот сегодня выполнил (старый, ранее работающий) запрос и словил ошибку Cannot detect left and right JOIN keys. JOIN ON section is ambiguous. (version 20.3.3.6 (official build))
    Что-то поменялось и так теперь делать нельзя?
  • @kreuzerkrieg #186574 09:50 AM, 13 Oct 2020
    Всем привет
    Если я меняю в файле конфигурации logger/level, КХ должен подхватить эти изменения и поменять level или это что то что можно выставить только при поднятии сервера?
  • https://t.me/clickhouse_ru
    скорее всего алиасы какие то разрулить не получилось
  • https://t.me/clickhouse_ru
    @BloodJazMan #186576 09:55 AM, 13 Oct 2020
    https://github.com/Slach/clickhouse-flamegraph
    releases 2020.5.0
    switch from TCP to HTTP/HTTPS protocol
    add support for normalizeQuery for stacktrace grouping
    GitHub - Slach/clickhouse-flamegraph: CLI utility for build flamegraph based on system.trace_log

    CLI utility for build flamegraph based on system.trace_log - GitHub - Slach/clickhouse-flamegraph: CLI utility for build flamegraph based on system.trace_log

  • https://t.me/clickhouse_ru
    @tsvmks ↶ Reply to #186575 #186577 09:58 AM, 13 Oct 2020
    Запросы у нас большие, мы их генерим под разные СУБД универсально с небольшими адаптациями под диалекты. вот примерSELECT T61.A122, T61A123, T62.A141
    FROM
    (
    SELECT
    COUNT(DISTINCT T28.A120) AS A122, COUNT(DISTINCT T28.A121) AS A123
    FROM
    (
    SELECT
    T27.BO AS A116, T27.REGNMBR AS A117, T27.KBK AS A118, T27.COUNTERPART AS A119, T27.BO AS A120, T27.DO AS A121
    FROM
    T_PIAO_BODOTEST_DO T27
    WHERE
    (toYear(T27.PARAMYEAR) IN (2020))
    AND (substr(T27.KBK, 1, 3) IN ('054'))) T28) T61 ALL
    INNER JOIN (
    SELECT
    SUM(T32.A140) AS A141
    FROM
    (
    SELECT
    T31.A130 AS A136, T31.A133 AS A137, T31.A131 AS A138, T31.A134 AS A139, T31.A135 AS A140
    FROM
    (
    SELECT
    T30.A124 AS A130, T30.A125 AS A131, T30.A126 AS A132, T30.A127 AS A133, T30.A128 AS A134, SUM(T30.A129) AS A135
    FROM
    (
    SELECT
    T29.BO AS A124, T29.KBK AS A125, T29.CODEFAIP_MPI AS A126, T29.REGNMBR AS A127, T29.COUNTERPART AS A128, MAX(T29.SUMBO) AS A129
    FROM
    T_PIAO_BODOTEST_DO T29
    WHERE
    (toYear(T29.PARAMYEAR) IN (2020))
    AND (substr(T29.KBK, 1, 3) IN ('054'))
    GROUP BY
    T29.BO, T29.KBK, T29.CODEFAIP_MPI, T29.REGNMBR, T29.COUNTERPART) T30
    GROUP BY
    T30.A124, T30.A125, T30.A126, T30.A127, T30.A128) T31) T32) T62 ON
    (1 = 1)
  • https://t.me/clickhouse_ru
    @tsvmks #186578 09:58 AM, 13 Oct 2020
    Вроде как с алиасами тут все хорошо
  • https://t.me/clickhouse_ru
    @BloodJazMan #186579 10:00 AM, 13 Oct 2020
    хмм... INNER JOIN ... 1=1
    может проще на CROSS JOIN поменять?
  • https://t.me/clickhouse_ru
    @tsvmks #186580 10:01 AM, 13 Oct 2020
    в случае кодда нет общего поля попробовать заменить на CROSS
  • https://t.me/clickhouse_ru
    @tsvmks #186581 10:01 AM, 13 Oct 2020
    ?
  • https://t.me/clickhouse_ru
    @tsvmks #186582 10:01 AM, 13 Oct 2020
    потому что общее поле может быть и тогда будет не 1 = 1, а полноценное выражение
  • https://t.me/clickhouse_ru
    если есть условия объединения, то INNER JOIN
    если нет то CROSS JOIN
    и без ON

    https://clickhouse.tech/docs/en/sql-reference/statements/select/join/#select-join-types
    JOIN | ClickHouse Documentation

    JOIN Clause Join produces a new table by combining columns from one or multiple tables by using values common to each. I

  • https://t.me/clickhouse_ru
    ну как бы тут в ошибке все сказано
    clickhouse не может определиться с колонками которые нужны для JOIN
    видимо раньше был более тупой алогритм который просто бегал и хешировал
    сейчас там появился partial join через диск... и видимо докрутили оптимизацию
  • https://t.me/clickhouse_ru
    @tsvmks ↶ Reply to #186584 #186585 10:04 AM, 13 Oct 2020
    Спасибо, пошел пробовать.
  • https://t.me/clickhouse_ru
    @dirtyhack #186586 10:13 AM, 13 Oct 2020
    ГТЬ
  • https://t.me/clickhouse_ru
    @vbura #186587 10:40 AM, 13 Oct 2020
    Joined.
  • @sKirills #186588 10:40 AM, 13 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @vbura #186589 10:47 AM, 13 Oct 2020
    Всем привет.
    Столкнулся с такой проблемой, в базе хранится широта и долгота. Хочу выбрать все записи, для которых расстояние до указанной точки меньше 1000.
    В базу попала невеладиная запись, я добавил условие, где проверяю, что широта и долгота валидная, но каждый раз на этой записи запрос выдает 0 и ошибку, хотя данные есть.
    Есть ли возможность сделать так, чтобы отдал ответ и не падал в ошибку?
    Пример запроса
    select
    count()
    from
    geocords
    where
    Longitude <= 180
    AND Longitude >=-180
    AND Latitude <= 90
    AND Latitude >=-90
    AND greatCircleDistance(toFloat64(60.616865), toFloat64(56.826027), Longitude, Latitude) < 1000

    Ошибка
    DB::Exception: Arguments values out of bounds for function greatCircleDistance.
  • https://t.me/clickhouse_ru
    Проблема в том, что значения вычисляются одновременно
    можно сделать что то вроде (least(greatest(lat,-90),90)
  • https://t.me/clickhouse_ru
    AND это функция и для нее вычисляются все аргументы пока clickhouse так работает

    можно попробовать вот так
    select
    count()
    from
    geocords
    where
    greatCircleDistance(toFloat64(60.616865), toFloat64(56.826027), if (Longitude <= 180 AND Longitude >=-180, Longitude, NULL), if(Latitude <= 90 AND Latitude >=-90, Latitude, NULL) ) < 1000
  • https://t.me/clickhouse_ru
    @vbura #186592 10:54 AM, 13 Oct 2020
    Хорошо, спасибо большое
  • https://t.me/clickhouse_ru
    @a1s_333444 #186593 11:01 AM, 13 Oct 2020
    Таблица создана с помощью движка SummingMergeTree, пишется очень много данных.
    Партиции по toYYYYMM(2020-05-16), как пример.
    Но в кликхаусе ооочень много партиций на этой таблице.
    ./201912_259810753_259861552_852
    ./201911_260009475_260009475_0
    ./201911_260385544_260385544_0
    ./201912_259765325_259765325_0
    ./201912_260269621_260269621_0
    ./201912_259849850_259849850_0
    ./201911_260197940_260197940_0
    ./201912_238539956_259778320_1652281
    ./201912_259881189_259881189_0
    not_active_parts─┬─table───────────────
    695699 │ strange_table_1
    смотрю не активные парты таким образом
    SELECT count() as not_active_parts, table from system.parts WHERE NOT active GROUP BY table order by not_active_parts desc;
  • https://t.me/clickhouse_ru
    @a1s_333444 #186594 11:01 AM, 13 Oct 2020
    по идее кликхаус должен удалять неактивные парты, но чет не удаляет
    И место заканчивается крайне быстро
  • @Shazo_Rus #186595 11:02 AM, 13 Oct 2020
    через 8-10 мин вроде при стандартной настройке
  • https://t.me/clickhouse_ru
    @a1s_333444 #186596 11:03 AM, 13 Oct 2020
    сутки уже
  • https://t.me/clickhouse_ru
    что значит вставляется очень много данных?
    какими пачками?
  • https://t.me/clickhouse_ru
    @a1s_333444 #186598 11:04 AM, 13 Oct 2020
    Мы вставляем батчами по 10к, примерно раз в секунду
  • https://t.me/clickhouse_ru
    разве это много? у нас 1М в минуту только по одной таблице.
  • https://t.me/clickhouse_ru
    @a1s_333444 #186600 11:18 AM, 13 Oct 2020
    У нас hdd и clickhouse в standalone
  • https://t.me/clickhouse_ru
    Тогда да, много
  • https://t.me/clickhouse_ru
    @DmitriyTelepnev #186602 11:24 AM, 13 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @sinefabula #186603 11:25 AM, 13 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    Нужен перезапуск кх
  • https://t.me/clickhouse_ru
    Есть видимо баг. Иногда тред удаляющий или падает или зависает до рестрта кх. Какая версия кх ? Ошибки в логе?
  • https://t.me/clickhouse_ru
    @a1s_333444 #186606 11:40 AM, 13 Oct 2020
    19.9.2 revision 54421.
  • https://t.me/clickhouse_ru
    @a1s_333444 #186607 11:40 AM, 13 Oct 2020
    ошибок в логе не нашел
  • https://t.me/clickhouse_ru
    Посмотрите уменьшается кол-во или нет. Если остановить инсерты.
  • https://t.me/clickhouse_ru
    @a1s_333444 #186609 11:42 AM, 13 Oct 2020
    Нет, не уменьшаются. У нас есть предположение. может нам увеличить кол-во строк в батче или интервал больше делать
  • https://t.me/clickhouse_ru
    @a1s_333444 #186610 11:42 AM, 13 Oct 2020
    чтобы кликхаус смог это все прожевать
  • Пасиб
  • https://t.me/clickhouse_ru
    SELECT * FROM system.merge_tree_settings WHERE changed
    что нибудь показывает
    я правда не знаю было ли там что нибудь для 19.x
  • https://t.me/clickhouse_ru
    @a1s_333444 #186613 11:50 AM, 13 Oct 2020
    пусто
  • https://t.me/clickhouse_ru
    @ingvarrwvw #186614 12:29 PM, 13 Oct 2020
    Коллеги, помогите дилетанту в КН сделать правильную табличку для большого количества данных следующей структуры, с целью последующего анализа:

    2016-06-19,21:44:34 proto=6 osrc=192.168.100.105:51496 tsrc=192.168.25.4:2474 odst=192.168.25.7:22 tdst=192.168.25.7:22 duration=117

    Заранее благодарен за помощь!
  • @1234241483 #186615 12:34 PM, 13 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    Зависит от ваших запрос. Нужно выяснить по степерни важности (скорость работы запроса, кол-во запросов) какие есть запросы и для самый важных оптимизовать таблицу
  • https://t.me/clickhouse_ru
    @ingvarrwvw #186617 12:38 PM, 13 Oct 2020
    запросы будут простецкие,вида "select osrc from table where date="" and tdst=""
  • https://t.me/clickhouse_ru
    Не похожи на аналитические. Возможно вам не нужен КХ? КХ заточен для оптимального чтение подмножества строк таблицы и построения по ним агрегатов - OLAP-нагрузка. А у вас выглядит как OLTP - чтение строки по ключу
  • https://t.me/clickhouse_ru
    @isuvorov #186619 12:42 PM, 13 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @Leg10nna1re #186620 12:55 PM, 13 Oct 2020
    Коллеги, подскажите пжл, пытаюсь пересоздать system.query_log c partition expression toYYYYMMDD, а он автоматом создаётся с toYYYYMM (
  • https://t.me/clickhouse_ru
    Системные таблицы создаются на лету при старте КХ. Но поскольку она таки хранит данные, поищите в каталоге с КХ файл metadata/system/query_log.sql, возможно можно там поменять и рестартануть КХ
  • https://t.me/clickhouse_ru
    Я знаю что на ходу, поменял в config.xml секцию
  • https://t.me/clickhouse_ru
    @Leg10nna1re #186623 01:00 PM, 13 Oct 2020
    <query_log>
    <database>system</database>
    <table>query_log</table>
    <partition_by>toYYYYMMDD(event_date)</partition_by>
    <!-- Interval of flushing data. -->
    <flush_interval_milliseconds>7500</flush_interval_milliseconds>
    </query_log>
  • @aleksandrmte #186624 01:05 PM, 13 Oct 2020
    Joined.
  • @thelocky #186625 01:08 PM, 13 Oct 2020
    Кто-то может поделится дашбордом графаны для последних версий кх?
  • @thelocky #186626 01:09 PM, 13 Oct 2020
    Или где почитать подробное описание метрик (асинхронные не имеют описания вообще)?
  • @aleksandrmte #186627 01:09 PM, 13 Oct 2020
    Здравствуйте,подскажите пожалуйста. Одновременно на сервере выполняются запросы insert и select, причём в разные таблицы. Возникает ошибка: DB::Exception: Assertion violation: !hostAndPort.empty() in file "../contrib/poco/Net/src/SocketAddress.cpp"
    Если запросы запускаются не одновременно, то каждый отрабатывает ок. Кто сталкивался с таким? куда копать?
  • https://t.me/clickhouse_ru
    переименуйте существующую query_log и КХ создаст новую с вашим partition_by
  • https://t.me/clickhouse_ru
    это на гитхаб, с примерами, с версией КХ, со структурой таблицы, с логами, с трейсами
  • @aleksandrmte #186630 01:21 PM, 13 Oct 2020
    понял, спасибо
  • https://t.me/clickhouse_ru
    @AntonKosyanenko #186631 01:36 PM, 13 Oct 2020
    Joined.
  • @k_e_i_s #186632 01:41 PM, 13 Oct 2020
    Joined.
  • @goosecat #186633 01:44 PM, 13 Oct 2020
    Nice surename
  • @goosecat #186634 01:44 PM, 13 Oct 2020
    😂
  • https://t.me/clickhouse_ru
    Я дропал старую, новая создалась со старым ключом, хотя в конфиге был новый
  • https://t.me/clickhouse_ru
    а вы этот кусок в конфиге раскоментировали?

    а может и рестарт КХ нужен, а потом drop (я не уверен), но это 100% работает
  • query_log в config.xml вроде бы при рестарте подтягивается
  • @thelocky #186638 02:04 PM, 13 Oct 2020
    Имеет ли смысл создавать таблицу с Engine=Kafka и MV в Distributed таблицу на каждом хосте кластера (на каждой реплике каждого шарда)?
  • https://t.me/clickhouse_ru
    сам config.xml подтягивается при изменении, но параметры в большинстве своем применяются только при старте.
    (часть параметров можно менять без рестарта)
  • https://t.me/clickhouse_ru
    Рестартовал и только потом дропал
  • https://t.me/clickhouse_ru
    лучше не надо писать в Distributed (если у вас используется Replicated и не нужен шардинг по ключу)
    Engine=Kafka и MV конечно надо создавать на всех репликах
  • https://t.me/clickhouse_ru
    а вы этот кусок в конфиге раскоментировали?
  • https://t.me/clickhouse_ru
    Я его поменял с YYYYMM на YYYYMMDD
  • как тогда размазывать данные по шардам? в MV прописывать условие выборки (аналог ключа шардирования)?
  • https://t.me/clickhouse_ru
    он закоментирован <!-- -->

    <table>query_log</table>
    <!--
    PARTITION BY expr https://clickhouse.yandex/docs/en/table_engines/custom_partitioning_key/
    Example:
    event_date
    toMonday(event_date)
    toYYYYMM(event_date)
    toStartOfHour(event_time)
    -->
    <partition_by>toYYYYMM(event_date)</partition_by>
    <!-- Instead of partition_by, you can provide full engine expression (starting with ENGINE = ) with parameters,
    Example: <engine>ENGINE = MergeTree PARTITION BY toYYYYMM(event_date) ORDER BY (event_date, event_time) SETTINGS index_granularity = 1024</engine>
    -->
  • https://t.me/clickhouse_ru
    если нужен шардинг по ключу тогда конечно Distributed
  • Вот, отсюда вопрос. Distributed таблица по логике одна на весь кластер, если на каждой реплике каждого шарда будет Engine=Kafka и MV TO Distributed, не будет ли дубликатов данных или еще каких проблем? Как я понимаю, каждая реплика с таблицой Engine=Kafka читает кафку под своим консьюмером, то есть каждая реплика достает из кафки свою копию данных, или это не так?
  • https://t.me/clickhouse_ru
    В этом примере как раз нет
  • https://t.me/clickhouse_ru
    Distributed конечно не одна на весь кластер. Каждая нода КХ независима, и таблицы Distributed на них независимы.

    >не будет ли дубликатов данных или еще каких проблем
    не будет.

    Просто создавайте все одинаково, на каждом ноде все 3 Kafka + MV + Distributed

    >каждая реплика с таблицой Engine=Kafka читает кафку под своим консьюмером,
    >то есть каждая реплика достает из кафки свою копию данных, или это не так

    это так, поэтому все ОК
  • https://t.me/clickhouse_ru
    покажите свой кусок конфига начиная и заканчивая <table>query_log</table>
  • @amberon #186651 02:17 PM, 13 Oct 2020
    Joined.
  • спасибо большое :)) а internal_replication оставлять по умолчанию (false)?
  • @thelocky #186653 02:18 PM, 13 Oct 2020
    таблицы используем ReplicatedMergeTree
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Leg10nna1re #186655 02:19 PM, 13 Oct 2020
    Этот параметр между двумя комментамии
  • https://t.me/clickhouse_ru
    конечно он должен быть true при ReplicatedMergeTree иначе будут дубликаты

    internal_replication=true значит что внизу Replicated и она сама internally будет делать репликацию
    при internal_replication=false — репликацию делает Distributed (она пишет копию во все реплики)
  • понял, спасибо
  • https://t.me/clickhouse_ru
    т.е. после этого КХ рестартован и таблица дропнута и снова создалась с YYYYMM ?

    проверьте что получилось при компиляции конфига тут /var/lib/clickhouse/preprocessed_configs/config.xml
  • https://t.me/clickhouse_ru
    Да, всё верно
  • https://t.me/clickhouse_ru
    cat /var/lib/clickhouse/preprocessed_configs/config.xml | grep part
    <partition_by>toYYYYMMDD(event_date)
  • нужно больше строк вокруг )
  • https://t.me/clickhouse_ru
  • eto processed?
  • https://t.me/clickhouse_ru
    Yep
  • a "show create system.query_log" ?
  • https://t.me/clickhouse_ru
  • @dj_mixer #186667 02:35 PM, 13 Oct 2020
    переименуйте ещё раз и рестартуйте, потом посмотрите в лог. так не бывает
  • @amberon #186668 02:40 PM, 13 Oct 2020
    Привет,
    мучаюсь с проблемой Memory limit (total) exceeded, гитхаб изучил.
    Простейший запрос, выполняемый в один поток последовательно
    for i in `seq 1 500`; do curl "http://ch:8123/?query=SELECT%20a%20FROM%20%60db%60.b%20WHERE%20c%3D1%20format%20JSON"; done;
    (select a from b where c=1)
    приводит к этой фаталочке спустя секунд 15
    Данных - смешные сотни метров в сжатом виде.
    Судя по логу отъедает 4мб за запрос и копится до лимита в 3,6гб, в MemoryTracker наблюдаю непрерывный рост, который, если не прекратить запросы, не сбросится.
    Но реального роста в top нет
    Версия 20.9.2.20 stable, в 20.6 и 20.8 то же самое было
    Править конфиг про mem_to_ram_ratio это как-то грязно.
    Подскажите плиз, есть какое-то решение или запланированный фикс?
  • https://t.me/clickhouse_ru
    Попробую, спасибо
  • https://t.me/clickhouse_ru
    @nikolai_zubchevskii #186674 02:54 PM, 13 Oct 2020
    Пользуясь случаем, ну раз уж пошла такая пьянка, как пропатчить кде под фрибсд
  • https://t.me/clickhouse_ru
    @nikolai_zubchevskii #186675 02:54 PM, 13 Oct 2020
    ?
  • https://t.me/clickhouse_ru
    Ну баг. Тикет сделайте.
  • https://t.me/clickhouse_ru
    ага.
  • https://t.me/clickhouse_ru
    @socketpair #186678 03:07 PM, 13 Oct 2020
    отношение к реальным багам у них такое
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @socketpair #186680 03:07 PM, 13 Oct 2020
    типа УМВР ЧЯДНТ
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    я все читал, вы чудак человек . Кто написал что у вас официальный релиз? Оф. релиз собран gcc
  • https://t.me/clickhouse_ru
    у меня ТОЖЕ
  • https://t.me/clickhouse_ru
    что тоже?
  • https://t.me/clickhouse_ru
    @socketpair #186685 03:08 PM, 13 Oct 2020
    тоже GCC
  • https://t.me/clickhouse_ru
    @den_crane #186686 03:08 PM, 13 Oct 2020
    где это в тикете написано?
  • https://t.me/clickhouse_ru
    @socketpair #186687 03:08 PM, 13 Oct 2020
    а где написано что шлангом ?
  • https://t.me/clickhouse_ru
    у вас официальный билд? rpm с яндекса?
  • https://t.me/clickhouse_ru
    нет. Я вынужден собирать сам потому что сертификация ФСТЭК того требует.
  • https://t.me/clickhouse_ru
    до свидания, целую
  • я так думаю все таки официальный билд - это уже бинарник с сайта... мало ли с какими флагами вы игрались... даже коммерческие вендоры не дают поддержку на самостоятельно собранные билды
  • https://t.me/clickhouse_ru
    @socketpair #186692 03:11 PM, 13 Oct 2020
    Ничего я не игрался
  • https://t.me/clickhouse_ru
    @socketpair #186693 03:11 PM, 13 Oct 2020
    посмотрите комментарии
  • https://t.me/clickhouse_ru
    @socketpair #186694 03:11 PM, 13 Oct 2020
    Я собрал по инструкции из документации КХ
  • https://t.me/clickhouse_ru
    @socketpair #186695 03:11 PM, 13 Oct 2020
    в чистой ОС
  • а это не важно )
  • https://t.me/clickhouse_ru
    скачайте бинарник официальный и проверьте на нем
  • @dj_mixer #186698 03:11 PM, 13 Oct 2020
    работает ли в официальной РПМ? если да - проблема у вас. если нет - открывайте тикет
  • https://t.me/clickhouse_ru
    ну это и есть не признание бага в системе сборки. То что он по какой-то причине не проявляется у вас, не означает что его нет.
  • https://t.me/clickhouse_ru
    @socketpair #186700 03:12 PM, 13 Oct 2020
    Окей, где посмотреть официальный .spec-файл ? давайте соберу его
  • https://t.me/clickhouse_ru
    я не работаю в яндексе, я дба в канаде, что такое стек знаю из слова stackoverflow.com

    там собирается deb и конвертируется в rpm
  • https://t.me/clickhouse_ru
    ну это же рукалицо, неправда ли ?
  • https://t.me/clickhouse_ru
    и да, не стек, а спек
  • https://t.me/clickhouse_ru
    rpm не нужен яндексу, в пути кормить не обещали.
  • https://t.me/clickhouse_ru
    я про started with executable stack
  • https://t.me/clickhouse_ru
    @socketpair #186706 03:16 PM, 13 Oct 2020
    Так или иначе, баг воспроизводится из инструкции в документации.
  • https://t.me/clickhouse_ru
    @socketpair #186707 03:16 PM, 13 Oct 2020
    @milovidov_an Можно комментариев ?
  • https://t.me/clickhouse_ru
    и чинить будете его вы и инструкцию тоже.
  • https://t.me/clickhouse_ru
    @den_crane #186709 03:17 PM, 13 Oct 2020
    Вот Алексею делать больше нечего
  • https://t.me/clickhouse_ru
    но на гитхабе он что-то делает
  • https://t.me/clickhouse_ru
    вот именно
  • @stopost0 #186712 03:18 PM, 13 Oct 2020
    а шо кликхаус уже энтерпрайз версию выпустил, яя чтото пропустил?
  • https://t.me/clickhouse_ru
    @den_crane #186713 03:18 PM, 13 Oct 2020
    он делом занят
  • https://t.me/clickhouse_ru
    у них другое измерение, там президентом служит БЧР и технокоммунизм
  • https://t.me/clickhouse_ru
    конвертацией из deb в rpm, видимо
  • @fs_fs_fs_fs #186716 03:23 PM, 13 Oct 2020
    С одной стороны согласен что к багам относятся медленно. С другой стороны это мне кажется важным ибо не фиксят почему то именно МОЙ баг 😊 а он самый важный. Но мы же понятия не имеем какой у ребят план работ, может тот баг о котором например я зарепортил замечен у 2 с половиной человек. Я бы тоже все силы на такую задачу явно не бросал.
    Ну и потом, все же просто, можно взять и юзать аналоги 😊 БД то бесплатная и опенсорсная, никто ничего и никому не должен
  • https://t.me/clickhouse_ru
    вы в курсе что rpm не было раньше? И он не нужен самому Я?
    Потом кто-то страждущий пришел и сделал как сделал. Опенсоурс.
  • https://t.me/clickhouse_ru
    а я и не говорил что всё бросить и сейчас же исправить. Но закрывать как not a bug - вот что не правильно
  • https://t.me/clickhouse_ru
    господи, баг это когда КХ падает раз в 10минут и кораптит данные.
    У вас не баг, минорная иша.
  • https://t.me/clickhouse_ru
    допустим. даже допустим что можно класть болт на секурити ( исполнимый стек это просто жесть какая дырень). Но закрывать как Not a bug всеравно неправильно
  • https://t.me/clickhouse_ru
    откройте назад, какие вопросы-то. Хотите я тег добавлю prio-major ? И назначу вас исполнителем?
  • https://t.me/clickhouse_ru
    Я не могу открыть. Если удастся поправить у себя — законтрибучу, обещаю.
  • https://t.me/clickhouse_ru
    @socketpair #186723 03:29 PM, 13 Oct 2020
    Баг переоткрыт, спасибо.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @socketpair #186725 03:35 PM, 13 Oct 2020
    возможно вот это
  • https://t.me/clickhouse_ru
    @socketpair #186726 03:35 PM, 13 Oct 2020
    ну ладно. я пока поразбираюсь
  • @1367391776 #186727 03:40 PM, 13 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/15932#issuecomment-707828071

    в общем КХ не приспособлен для 3.6ГБ, это не жизнь это боль.
    MemoryTracker wrong total: Memory limit (total) exceeded, but no real usage · Issue #15932 · ClickHouse/ClickHouse

    Simple SELECT query leads to Memory limit (total) exceeded due to wrong reporting by MemoryTracker (no real usage detected in top) I execute a simple query (select a from b where c = 1) in one thre...

  • @amberon #186729 03:41 PM, 13 Oct 2020
    Это я и завел ща этот баг :)
  • @amberon #186730 03:42 PM, 13 Oct 2020
    Да это не проблема увеличить, это тест окружение, но сам факт что один и тот же простой запрос в один тред может привести к фаталочке не радует
  • https://t.me/clickhouse_ru
    ну я в курсе, я делаю триаж, воспроизвожу

    я просто коммент дописал туда, это не совсем баг.
  • @amberon #186732 03:43 PM, 13 Oct 2020
    А, вижу
  • https://t.me/clickhouse_ru
    @den_crane #186733 03:44 PM, 13 Oct 2020
    аллокатор не отдает память сразу, и тредов много, след. запрос выполняет другой тред и хапает память, потом снова другой, тоже хапает
  • @amberon #186734 03:45 PM, 13 Oct 2020
    Я не настоящий сишник, но в top же нет юсаджа? Тогда причем тут аллокатор
  • https://t.me/clickhouse_ru
    @den_crane #186735 03:45 PM, 13 Oct 2020
    и например в КХ по умолчанию ожидается что mark_cache раздуется до 5 ГБ, а у вас памяти 4.
  • https://t.me/clickhouse_ru
    я тоже программист на баше, но насколько я понимаю можно память запросить но не комитить и она не будет отражаться.

    Но возможно это баг в трекинге, я не знаю
  • https://t.me/clickhouse_ru
    @den_crane #186737 03:49 PM, 13 Oct 2020
    format TSV все тоже самое
  • @amberon #186738 03:49 PM, 13 Oct 2020
    Понятно, спасибо. На проде-то не проблема большой рам сделать, но там и на каждый запросик будет отжираться кратно больше
  • https://t.me/clickhouse_ru
    по опыту вижу что КХ сожрет 20ГБ и остановится, в смысле будет прыгать хоть до если дать 10000 и возвращаться на 20
  • @amberon #186740 03:53 PM, 13 Oct 2020
    Ок, ну хоть так :)
  • https://t.me/clickhouse_ru
    похоже с клиентом такого нет, это значит баг в трекинге.
  • https://t.me/clickhouse_ru
    @paulineoskolkoff #186742 04:08 PM, 13 Oct 2020
    Добрый вечер!

    Подскажите, пожалуйста, есть ли какой-то стандартный подход к транспонированию таблицы в КХ? Мне нужно, чтобы строки стали столбцами, а столбцы строками. Пытаюсь сделать это через массивы, получается как-то громоздко.. может быть есть какой-то простой и известный способ?)

    Спасибо!
  • https://t.me/clickhouse_ru
    нет ничего такого простого

    либо groupArray
    либо sumIf(col = ‘A) sumA, sumIf(col = ‘B’) sumB, sumIf(col = ‘C) sumC, sumIf(col = ‘D) sumD,
  • https://t.me/clickhouse_ru
    @paulineoskolkoff #186744 04:10 PM, 13 Oct 2020
    Поняла, спасибо большое!!
  • groupArrayInsertAt
    если нули есть
  • https://t.me/clickhouse_ru
    @den_crane #186746 04:11 PM, 13 Oct 2020
    SQL не предназначен для этого и ожидает что число и типы колонок известны до исполнения запроса
  • Это нормализация markdown, которую добавили по глупости. Я уже много раз писал тому человеку, который её добавлял, что он всё неправильно сделал. Там просто скрипт, который берёт и "всё портит" (ссылки, списки и т. п.). Через некоторое время отключим в любом случае, а пока ждём, чтобы он не слишком обиделся из-за того, что он сделал ошибку.
  • arrayElement(groupArrayInsertAt(Null, 2)(tuple(toNullable(eavValue)), toUInt32(indexOf(["col1, col2"], eavCol) - 1)).1 as values, 1) as "col1",
    values[2] as "col2"
    тип такого, но это если колонок не под 50 штук, иначе поиск в массиве плохо
  • https://t.me/clickhouse_ru
    Спасибо, посмотрю!
  • https://t.me/clickhouse_ru
    Ого, спасибо!
  • https://t.me/clickhouse_ru
    Угу, поняла, спасибо!
  • https://t.me/clickhouse_ru
    @tephro #186752 04:43 PM, 13 Oct 2020
    Кажется, что-то пошло не так 🙂 Engine: ReplicatedMergeTree. Обе реплики одного шарда нон-стопом репортят следующее:

    2020.10.13 16:40:58.958368 [ 5041 ] {} <Warning> events_local (ReplicatedMergeTreePartCheckThread): Checking part 725546f36497be3ad2d9ebf0ac5234ec_37946_37980_7
    2020.10.13 16:40:58.959034 [ 5041 ] {} <Warning> events_local (ReplicatedMergeTreePartCheckThread): Checking if anyone has a part covering 725546f36497be3ad2d9ebf0ac5234ec_37946_37980_7.
    2020.10.13 16:40:58.962015 [ 5041 ] {} <Warning> events_local (ReplicatedMergeTreePartCheckThread): Found parts with the same min block and with the same max block as the missing part 725546f36497be3ad2d9ebf0ac5234ec_37946_37980_7. Hoping that it will eventually appear as a result of a merge.

    Кто-нибудь знает, что могло привести к этой ситуации и как фиксить?
  • https://t.me/clickhouse_ru
    @tephro #186753 04:44 PM, 13 Oct 2020
    ClickHouse server version 20.9.2.20 (official build).
  • https://t.me/clickhouse_ru
    @tephro #186754 05:08 PM, 13 Oct 2020
    В system.replication_queue вижу 2 "застрявшие" таски:

    Одна отложена по следующей причине:

    Not executing log entry for part 725546f36497be3ad2d9ebf0ac5234ec_37979_37979_0 because it is covered by part 725546f36497be3ad2d9ebf0ac5234ec_37946_37980_7 that is currently executing

    Другая встряла:

    Not merging into part 725546f36497be3ad2d9ebf0ac5234ec_37946_37980_7 because part 725546f36497be3ad2d9ebf0ac5234ec_37979_37979_0 is not ready yet (log entry for that part is being processed)

    Выглядит как дэдлок
  • https://t.me/clickhouse_ru
    грепайте на репликах куда делся 725546f36497be3ad2d9ebf0ac5234ec_37979_37979_0
    но да придется удалять в ЗК вручную, есть на гитхабе примеры как делать
  • https://t.me/clickhouse_ru
    @tephro #186756 05:15 PM, 13 Oct 2020
    2020.10.13 11:31:03.114038 [ 30036 ] {} <Warning> kuma.events_local: Source replica does not have part 725546f36497be3ad2d9ebf0ac5234ec_37979_37979_0. Removing it from ZooKeeper.

    2020.10.13 11:37:16.549791 [ 30016 ] {} <Warning> kuma.events_local: Part 725546f36497be3ad2d9ebf0ac5234ec_37979_37979_0 from own log doesn't exist.

    Все что есть. Не очень информативно
  • https://t.me/clickhouse_ru
    @tephro #186757 05:35 PM, 13 Oct 2020
    Удалил таски из ZK, теперь все спокойно. Спасибо.
    А как заставить реплику обновить очередь репликации после модификации ZK? Мне пришлось реплику рестартануть
  • https://t.me/clickhouse_ru
    @tephro #186758 05:36 PM, 13 Oct 2020
    Либо я не дождался
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/10368

    SYSTEM RESTART REPLICAS

    ааану кстати , сделали detach part / drop part же
    Some merges may stuck · Issue #10368 · ClickHouse/ClickHouse

    This bug is discovered on Yandex.Metrica servers. If there is assigned merge but some parts in between of the range of parts to merge get lost on all replicas, the merge cannot proceed and the foll...

  • @l_dar #186760 05:37 PM, 13 Oct 2020
    SELECT
    guid,
    user_id,
    site_domain,
    FROM table
    WHERE guid IN ('9bc46c85-25f8-988c-8f62-f25032ab2dbf',...)

    Почему то такие запросы долго отрабатывают, в таблице больше миллиарда записей. Как можно ускорить?
  • @l_dar #186761 05:37 PM, 13 Oct 2020
    Спасибо!
  • https://t.me/clickhouse_ru
    выкинуть КХ, поставить редис
  • @l_dar #186763 05:39 PM, 13 Oct 2020
    Это говорит админ группы ClickHouse не тормозит)
  • https://t.me/clickhouse_ru
    и что? Я и говорю это потому что лучше вас понимаю для чего КХ подходит, для чего нет.
  • https://t.me/clickhouse_ru
    @Asword #186765 05:40 PM, 13 Oct 2020
    Всем привет! Подскажите пожалуйста. Удалил материализованное представление, но SHOW TABLES показывает, что есть еще .inner таблица. Она удалится сама, или я могу руками удалить файл?
  • https://t.me/clickhouse_ru
    как вы удалили MV?
  • https://t.me/clickhouse_ru
    @Asword ↶ Reply to #186766 #186767 05:40 PM, 13 Oct 2020
    DROP
  • https://t.me/clickhouse_ru
    DROP TABLE materialized_view_name?
  • https://t.me/clickhouse_ru
    надо читать ошибки, inner тоже должна была удалится
  • https://t.me/clickhouse_ru
    @Asword ↶ Reply to #186769 #186771 05:41 PM, 13 Oct 2020
    Да
  • https://t.me/clickhouse_ru
    можно сказать drop table “.inner….”
  • https://t.me/clickhouse_ru
    @den_crane #186773 05:42 PM, 13 Oct 2020
    телеграм стал кавычки двойные поганить, пора уходить с телеги
  • https://t.me/clickhouse_ru
    @Asword ↶ Reply to #186772 #186774 05:44 PM, 13 Oct 2020
    Спасибо
  • @Dalmaneo #186775 05:55 PM, 13 Oct 2020
    Всем привет!
    Кто-нибудь знает, почему словарь занимает на порядок больше места в памяти, чем uncompressed size в таблица с такими же данными?
    И почему из таблицы запрос отрабатывает быстрее на порядок, чем из словаря?
  • https://t.me/clickhouse_ru
    " qwe "
  • https://t.me/clickhouse_ru
    Может с айфона ?
  • https://t.me/clickhouse_ru
    1) https://github.com/ClickHouse/ClickHouse/issues/2738 (короткий ответ: в Яндексе любят очень быстро и не экономят память)
    2) потому что таблица словаря для этого не оптимизирована, и очень медленно работает, это куча хеш-таблиц (для каждой колонки) которые обходятся построчно.
    10 times mem overhead on complex_key_hashed dictionary ( 227 MiB table eats 2.50 GiB) · Issue #2738 · ClickHouse/ClickHouse

    create table test(a Int64, b Int64, s String) Engine=MergeTree partition by tuple() order by b; insert into test select rand64(), number, toString(number) from numbers(10000000); optimize table tes...

  • И это относится не только к complex_key_hashed, видимо..
    Спасибо
  • https://t.me/clickhouse_ru
    ко всем, недавно появился какой-то эконмный layot в два раз что-ли меньше кушает
  • https://t.me/clickhouse_ru
    @den_crane #186781 06:04 PM, 13 Oct 2020
    sparse_hashed
  • Ну, в два раза все равно не сравнится с обычной таблицей...видимо, придётся через хранение в оперативке организовывать...
  • https://t.me/clickhouse_ru
    о чем вы? какую проблему решаете?
  • https://t.me/clickhouse_ru
    это будет хуже чем словарь direct
  • Да, просто очень удобный инструментарий со словарями в качестве кэша был бы, без лишних доработок и щапускатоиов выставлять lifetime и т.д...а так, придётся отдельную таблицу создавать и обновлять тоже внешними средствами
  • https://t.me/clickhouse_ru
    Ну, в планах есть сделать что то вроде cron в кх емнип:)
  • Это здорово!
  • @Ueasley #186790 07:57 PM, 13 Oct 2020
    @den_crane

    Г-н документация, не подскажешь, имеет ли смысл писать в nullable поля null, а не 0 или пустую строку, чтобы сэкономить диск?

    По некоторым причинам проверять это довольно геморройно конкретно сейчас.
  • @Ueasley #186791 07:57 PM, 13 Oct 2020
    Таких значений в колонках пара десятков тысяч в секунду.
  • https://t.me/clickhouse_ru
    все ровно наоборот. Nullable поля занимают больше места и дольше работают (до двух раз)
  • Объявлять все обычными с дефолтами?
  • https://t.me/clickhouse_ru
    @den_crane #186794 07:58 PM, 13 Oct 2020
    NullableVsInt

    NullableVsInt. GitHub Gist: instantly share code, notes, and snippets.

  • https://t.me/clickhouse_ru
    да
  • @Ueasley #186796 07:58 PM, 13 Oct 2020
    А зачем они тогда вообще нужны? Не ломать avg и проч.?
  • https://t.me/clickhouse_ru
    ну вот например я температуру храню неизвестную как -1000F
    как вы думаете это удобно?
  • https://t.me/clickhouse_ru
    @den_crane #186798 07:59 PM, 13 Oct 2020
    тогда еще Nullable не было, когда я начал так хранить
  • Ну, тащемта о том же. Окей, благодарю.
  • @Ueasley #186800 08:01 PM, 13 Oct 2020
    Хм, получается, nullable колонки хранятся как значение + какой-нибудь isValid?
  • @Ueasley #186801 08:02 PM, 13 Oct 2020
    Впрочем, уже наглею, надо самому идти смотреть.
  • https://t.me/clickhouse_ru
    NullableVsInt

    NullableVsInt. GitHub Gist: instantly share code, notes, and snippets.

  • https://t.me/clickhouse_ru
    @den_crane #186803 08:02 PM, 13 Oct 2020
    3.5M Mar 10 21:43 A.bin
    286K Mar 10 21:43 A.mrk2
    3.4M Mar 10 21:43 B.bin
    286K Mar 10 21:43 B.mrk2
    434K Mar 10 21:43 B.null.bin
    286K Mar 10 21:43 B.null.mrk2
    303 Mar 10 21:43 checksums.txt
    67 Mar 10 21:43 columns.txt
    8 Mar 10 21:43 count.txt
  • @Ueasley #186804 08:02 PM, 13 Oct 2020
    А, я туда не домотал. Еще раз благодарю
  • @Ueasley #186805 08:09 PM, 13 Oct 2020
    В таком случае, другой вопрос.

    Как лучше вести себя с FixedString(n), когда значения может и не быть. Можно какими-нибудь нулями забить, но не хочется.

    > is efficient when data has the length of precisely N bytes. In all other cases, it is likely to reduce efficiency.

    Есть инфа, как ведет себя FixedString с ''?
  • https://t.me/clickhouse_ru
    @den_crane #186807 08:11 PM, 13 Oct 2020
    FixedString имеет смысл использовать только в тех случаях, когда строки действительно имеют фиксированную длину. В остальных случаях, преимущества по скорости не будет, или даже скорость работы будет хуже.
  • https://t.me/clickhouse_ru
    @den_crane #186808 08:11 PM, 13 Oct 2020
    >Есть инфа, как ведет себя FixedString с ''?
    ну плохо себя ведет
  • @Ueasley #186809 08:12 PM, 13 Oct 2020
    Ну да, то же самое в документации написано. Подумал, может просто пустое значение все-таки предусмотрено в его алгоритмах.
  • @Ueasley #186810 08:12 PM, 13 Oct 2020
    И кто-то об этом откуда-то знает. Я плюсы читать не умею.
  • https://t.me/clickhouse_ru
    @den_crane #186811 08:12 PM, 13 Oct 2020
    как раз все алгоритмы рассчитаны на фиксированный размер, поэтому все строки будут расширены пробелами до этого размера
  • https://t.me/clickhouse_ru
    вы лучше на LowCardinality посмотрите
  • Не, не подходит.
  • @Ueasley #186814 08:15 PM, 13 Oct 2020
    Это уникальные идентификаторы одной штуки, которая может в событии быть, а может и не быть. Она всегда 32 байта, но ее может и не быть.

    Звучит как Nullable(FixedString(32))
  • @Ueasley #186815 08:16 PM, 13 Oct 2020
    Таких несколько, хочу сбалансироваться по скорости работы и месту на диске
  • https://t.me/clickhouse_ru
    Ну может быть преимущество, если ты делаешь GROUP BY FixedString и еще по другим fixed length полям, тогда будет использовать keys* вместо serialized мапа, она быстрее бывает, но с 32 байтами этого не будет
  • https://t.me/clickhouse_ru
    лучше вместо Nullable использовать какое то другое значение за null, nullable в кх лучше избегать
  • Ок, спасибо
  • @thelocky #186819 08:49 PM, 13 Oct 2020
    Подскажите пожалуйста: по графикам в графане количество запросов в сек = 3К, rate от метрики ClickHouseProfileEvents_InsertedRows показывает 1,5К
    По количеству данных вроде все норм
    Это так и должно быть?
  • https://t.me/clickhouse_ru
    вы по одной строке что-ли вставляете? Какая связь вообще между этими метриками?
  • https://t.me/clickhouse_ru
    @croffasia #186821 09:26 PM, 13 Oct 2020
    Joined.
  • вставляет Engine=Kafka через MV
  • @thelocky #186823 09:29 PM, 13 Oct 2020
    связь такая, что каждый запрос порождает одну строку лога, и по идее количество вставленных строк и количество запросов за период должны быть приблизительно равны
  • 14 October 2020 (119 messages)
  • @901188781 #186824 01:46 AM, 14 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @NicolaiPetrov #186826 04:36 AM, 14 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @evgenybespalov #186827 05:34 AM, 14 Oct 2020
    Joined.
  • @971575919 #186828 05:59 AM, 14 Oct 2020
    Joined.
  • @nikolays_sam #186829 06:07 AM, 14 Oct 2020
    Joined.
  • https://t.me/clickhouse_ru
    @skedrov #186830 06:16 AM, 14 Oct 2020
    Joined.
  • Метрика ClickHouseProfileEvents_InsertedRows оч странная: взял разницу за минуту этой метрики и разницу count по всем таблицам за минуту - метрика показывает в полтора раза ниже значение, чем реальное количество вставленных строк
  • @thelocky #186832 07:23 AM, 14 Oct 2020
    Хотя в описании этой метрики написано Number of rows INSERTed to all tables.
  • https://t.me/clickhouse_ru
    @a1s_333444 #186833 07:52 AM, 14 Oct 2020
    всем привет, хочу перетащить data КХ в другую папочку, из /path/to/A в /path/to/B, если я стопну КХ, копирну файлики и поменяю пути в
    /etc/clickhouse-server/conf.d/storage_data.xml на /path/to/B. После старта ничего криминального не должно случится?
  • не должно
  • @dj_mixer #186835 07:56 AM, 14 Oct 2020
    если у вас другие пути не в этой папке (темп, сам КХ)
  • https://t.me/clickhouse_ru
    @a1s_333444 #186836 07:58 AM, 14 Oct 2020
    сам КХ это про бинарь? А что не так с tmp ?
    Я так понимаю нужно путь для tmp_path в конфиге поменять на валидный
  • ну если у вас тмп тоже показывает path/to/A/temp
    а вы её перенесете, будет плохо
  • https://t.me/clickhouse_ru
    ненене
    было /path/to/A/tmp
    станет /path/to/B/tmp
    и в конфиге поменять на новый
    <yandex>
    <path>/path/to/B</path>
    <tmp_path>/path/to/B/tmp/</tmp_path>
    <user_files_path>/path/to/B/user_files/</user_files_path>
    </yandex>Мне кажется мы друг друга немного не допонимаем 😊
  • если измените все пути - ОК.
    я же не Ванга чтобы знать что у вас есть в /etc/clickhouse-server/conf.d/storage_data.xml, а чего нет
  • https://t.me/clickhouse_ru
    @a1s_333444 #186840 08:14 AM, 14 Oct 2020
    Супер, спасибо