• 16 April 2021 (138 messages)
  • Ого) а, если не секрет, Decimal у вас обусловлен необходимостью строго точного подсчета копеек? ...как вы думаете, кроме потенциальной ошибки из-за природы float, есть еще какие-то аргументы против float?)

    Мне нужно много статистики вокруг цен. Decimal нормально работает во всех статистических функциях?)
  • https://t.me/clickhouse_ru
    Мне крайне важна точность. У меня тоже вокруг цен статистика.
  • Спасибо :)
  • IntXX нужного размера копейками...
    можно и float, но потом будут суммы не сходится... для примерных подсчётов ок
  • https://t.me/clickhouse_ru
    Int64 с точностью до 8 знаков в зависимости от валюты
  • @anton_shelin #214314 07:58 PM, 16 Apr 2021
    Привет. Не подскажете. В яндекс клауд расположен сервер кликхаус. После апдейта до 20.8 стали падать балк инсерты. Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = JSONException: JSON: begin >= end. (version 20.8.17.25 (official build)) (from [::ffff:78.36.43.77]:20435) (in query: INSERT INTO
  • @anton_shelin #214315 07:59 PM, 16 Apr 2021
    Установил эту версию в докер и тот же код пашет ок по http интерфейсу. Проблема явно в https. Простые запросы исполняются ок.
  • https://t.me/clickhouse_ru
    @kc042 #214316 08:20 PM, 16 Apr 2021
    Доброго времени суток.
    Застрял в каком-то странном состоянии КХ, когда для system.columns в полях data_compressed_bytes и data_uncompressed_bytes фигурируют нули, несмотря на наличие данных.

    Использую докер образы (docker 20.10.5, build 55c4c88) на ubunut 18.04, но думаю дело не в ней.

    Первый раз заметил на докер образе yandex/clickhouse-server:21.1.9.41

    При откате на yandex/clickhouse-server:20.3.13.127 все ок.

    Подготовка данных и запрос выглядит одинаково:
    https://yadi.sk/i/t2u1gBdNLDdd6g - поведение для 20.3.13.127
    https://yadi.sk/i/TtPMtbCnKiXwYw - поведение для 21.1.9.41

    Воспроизводится вроде стабильно при полной очистке докера(image, volume, контейнеров)

    Нагуглить ничего не смог, по ченйджлогу https://clickhouse.tech/docs/en/whats-new/changelog/ тоже не видать.
    Screenshot 2021-04-16 at 23.17.45.png

    View and download from Yandex.Disk

  • https://t.me/clickhouse_ru
    в system.parts посмотрите какой тип партов, скорее всего compact
  • https://t.me/clickhouse_ru
    @kc042 #214318 08:23 PM, 16 Apr 2021
    Да, compact… Из доки помню, что это при хранении столбцов одним файлом если по порогом не превышает. Видимо тут долежн понять намек, но пока не понял =)
  • https://t.me/clickhouse_ru
    Для компактных партов кх скорее всего не отображает размер колонок
  • https://t.me/clickhouse_ru
    так и есть
  • https://t.me/clickhouse_ru
    @kc042 #214321 08:34 PM, 16 Apr 2021
    Да, дейстивтельно
    "min_bytes_for_wide_part","10485760" стал теперь, а в “старой” версии 0 стоял.
    Спасибо!

    UPD https://github.com/ClickHouse/ClickHouse/pull/11913 откуда ноги ростут оказывается
    Enable compact parts by default for small parts by alexey-milovidov · Pull Request #11913 · ClickHouse/ClickHouse

    Changelog category (leave one): Performance Improvement Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): Enable compact parts by default for small par...

  • @githubreleases_bot #214322 b o t 09:00 PM, 16 Apr 2021
    ClickHouse/ClickHouse tagged: v21.4.4.30-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.4.4.30-stable
    Release notes:
    ClickHouse stable release v21.4.4.30-stable
    Release v21.4.4.30-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.4.4.30-stable

  • 17 April 2021 (19 messages)
  • https://t.me/clickhouse_ru
    в Decimal храните деньги
    SELECT toDecimal32(0.1,4) + toDecimal32(0.2,4), 0.1 + 0.2;

    float не для денег в нем ошибки накапливаются есть локальные значения которые дают большую погрешность
  • https://t.me/clickhouse_ru
    @Ed_90 #214325 09:56 AM, 17 Apr 2021
    Всем привет.
    Подскажите - кто-нибудь запускал ClickHouse в Docker’е на Macbook с процом M1 ?
  • https://t.me/clickhouse_ru
    Тоже интересует вопрос.
  • https://t.me/clickhouse_ru
    @Ed_90 #214327 10:25 AM, 17 Apr 2021
    У меня просто трабла с запуском. Один и тот же docker-compose конфиг на linux (amd64) работает прекрасно, а на m1 валится (причем с очень странной ошибкой)
  • https://t.me/clickhouse_ru
    @Ed_90 #214328 10:26 AM, 17 Apr 2021
    В то же время запускал без проблем другие amd64 образы на m1
  • @l_dar #214329 11:58 AM, 17 Apr 2021
    Привет всем. Подскажите , какую агрегатную функцию использовать?
    В таблицу заполняются данные по разным типам , у каждого типа свои поля, остальные заполняются как нулл. Как шахматная доска. Конфликтов нет. Создаю материалайз вью сгрупированные по общему полю. Мне необходимо из 4 строк получить одну, чтоб она была заполнена вся. Использую any(), но не знаю на сколько корректно.
  • https://t.me/clickhouse_ru
    Support Apple m1 by changvvb · Pull Request #21639 · ClickHouse/ClickHouse

    Support Apple m1 #20245 I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en Changelog category (leave one): New Feature Changelog entry (a user-readable shor...

  • https://t.me/clickhouse_ru
    Я использую anyLast, чтобы была возможность перетирать старые данные новыми
  • @l_dar ↶ Reply to #214331 #214332 12:43 PM, 17 Apr 2021
    Спасибо🙏💕
  • https://t.me/clickhouse_ru
    @innopolis #214335 03:31 PM, 17 Apr 2021
    делаю curl запрос

    curl 'http://user:pwd@host?query=SELECT+COUNT(*)+FROM+db.table&send_progress_in_http_headers=1&wait_end_of_query=1' -v. `

    * Trying <ip>...
    * TCP_NODELAY set
    * Connected to <host> (<ip>) port 8123 (#0)
    * Server auth using Basic with user '<user>'
    > GET /?query=SELECT+COUNT(*)+FROM+dt.table&send_progress_in_http_headers=1&wait_end_of_query=1 HTTP/1.1
    > Host: <host>
    > Authorization: Basic <auth>
    > User-Agent: curl/7.64.1
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < Content-Type: text/tab-separated-values; charset=UTF-8
    < Date: Sat, 17 Apr 2021 15:27:04 GMT
    < X-Clickhouse-Query-Id: 1617CFB7F3C6B410
    < X-Clickhouse-Server-Display-Name: <name>
    < X-Clickhouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0"}
    < Content-Length: 8
    <
    1790220
    * Connection #0 to host <host> left intact
    * Closing connection 0
    почему приходит пустой X-Clickhouse-Summary?
  • https://t.me/clickhouse_ru
    Версия меньше чем 20.8?
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    Обновится надо. Наверное 20.3 у вас?
  • https://t.me/clickhouse_ru
    @innopolis #214339 03:34 PM, 17 Apr 2021
    19.6)
  • https://t.me/clickhouse_ru
    @nvartolomei #214340 03:37 PM, 17 Apr 2021
    Помню что что-то сломали к 20.2 из-за того что включили по умолчанию "процессоры" (https://github.com/ClickHouse/ClickHouse/commit/c683c77633cb7da404f5b23f7fa960d8ca3ff0a5). У вас видимо что-то другое.
  • @AlexeyLemeshevski #214341 04:49 PM, 17 Apr 2021
    Спасибо огромное всем, кто ответил про хранение цен :) ...помогите, пожалуйста, еще в одном - а каков будет правильный clickhouse-way для получения последней цены товара на дату?

    Допустим, у меня простая таблица prices: date, shop_id, product_name, price.

    1000 магазинов, даты получения цен разные.

    Я хочу вывести для каждого товара только последнюю цену. Классические решения в других бд: join (не наш вариант? В память не влезет весь join огромной тсблицы), подзапрос. Подзапрос с сортировкой по дате? Это не медленно будет? ...или есть какой-то хитрый способ через group by?
  • Argmax
  • Пошел читать) интересно)
  • В общем кликхаус источники тоже забагованы... "добрый вечер" блин...

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

    всем на 20.8 назад... и конечно этот баг будет только в рантайме ) на этапе апгрейда оно не упадет.
    Wrong behavior in dictionaries when key columns are not the first in column order · Issue #23236 · ClickHouse/ClickHouse

    (you don't have to strictly follow this form) Describe the bug After upgrade to 21.3 below dictionaries stopped working properly (confirmed on layout hashed, Clickhouse and ODBC source). Al...

  • 18 April 2021 (72 messages)
  • https://t.me/clickhouse_ru
    @pnm000 #214347 10:16 AM, 18 Apr 2021
    Кто может подсказать про интеграцию с MySQL (https://clickhouse.tech/docs/en/sql-reference/table-functions/mysql/) и как я могу послать native MYSQL запрос из ClickHouse когда нет аналога аналога на диалекте ClickHouse.
    Прикладной пример таков: Нужно послать запрос сл вида (см ниже) когда индекс MySQL играет роль Full-Text-Search index:
    select display_name from entity where match(display_name) against('+central +bank*' in boolean mode)
    mysql | ClickHouse Documentation

    mysql Allows SELECT and INSERT queries to be performed on data that is stored on a remote MySQL server. Syntax mysql('ho

  • пока через view на удаленном сервере.
    и голосуем в этот тикет: https://github.com/ClickHouse/ClickHouse/issues/19320
    Add view function support to mysql/postgresql/odbc table functions. · Issue #19320 · ClickHouse/ClickHouse

    Just like in #12567 But for mysql, postgresql and odbc table functions. Use case Run arbitrary queries in external databases with support of their sql syntax and functions. Describe the solution yo...

  • https://t.me/clickhouse_ru
    @abdulgalimov #214349 11:09 AM, 18 Apr 2021
    подскажите пожалуйста самый простой способ перенести базу clickhouse с одного своего сервера на другой?
  • https://t.me/clickhouse_ru
    INSERT INTO.. SELECT FROM Remote...
  • https://t.me/clickhouse_ru
    @Yuri_Velgosha #214351 11:13 AM, 18 Apr 2021
    Ну, или как вариант, добавить новую реплику, подождать, пока оно доедет и удалить старую..
  • @AlexeyLemeshevski #214352 11:21 AM, 18 Apr 2021
    А папку с данными перенести если?)
  • @AlexeyLemeshevski #214353 11:21 AM, 18 Apr 2021
    Остановив сервер предварительно.
  • @AlexeyLemeshevski #214354 11:21 AM, 18 Apr 2021
    Если он всего 1)
  • https://t.me/clickhouse_ru
    @mirkovalenko #214355 11:26 AM, 18 Apr 2021
    Joined.
  • https://t.me/clickhouse_ru
    да, сервер один) как найти эту папку?
  • @poanse #214357 11:33 AM, 18 Apr 2021
    Joined.
  • Zaur, я недавно в экосистеме ClickHouse ...я пробовал переносить папку между разделами диска - и все было успешно. Лучший-правильный вариант тот, что написали выше...

    Папка по умолчанию (если не меняли параметр <path> в /etc/clickhouse-server/config.xml):
    /var/lib/clickhouse

    По идее, можно её целиком )) ...сами данные там лежат в подпапках: data, dictionaries_lib, metadata, metadata_dropped, preprocessed_configs, store. И файл status ) ...и доступы - после перемещения/копирования владелец чтобы был clickhouse:clickhouse ) ...обязательно остановить сервер (systemctl stop clickhouse-server) перед этими манипуляциями )

    У меня работало... )
  • https://t.me/clickhouse_ru
    @abdulgalimov #214359 11:39 AM, 18 Apr 2021
    понял, спасибо
  • @AlexeyLemeshevski #214360 12:15 PM, 18 Apr 2021
    Ого, у smi2'ого php-клиента https://packagist.org/packages/smi2/phpClickHouse почти 1млн инсталлов )) круто ))

    Я начал с mysql-интерфейса, но... стало интересно, как получить значение кол-во строк результата, если есть limit ... . Понял, что можно или format json ... или вот, похоже, в smi2/phpClickHouse есть уже готовые функции для получения этой цифры ... и вполне привычный способ перебора строк результатов )

    блин, как же все прикольно )
    smi2/phpclickhouse - Packagist

    PHP ClickHouse Client

  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #214348 #214361 12:44 PM, 18 Apr 2021
    Спасибо но как я смогу через view подставить парамер который пойдет в "match(display_name) against('+central +bank*' in boolean mode)” ?
  • в лоб сложно, но по извращаться вроде можно https://stackoverflow.com/a/5331792
    но это не точно, я в мускл не силен

    вообще в таких сложных случаях лучше делать это на стороне приложения (брать с мускл - вставлять в КХ)
  • Не могу ссылку найти, но читал на днях, как уже выше тут написали, - полнотекстовый поиск запускают в Apache Spark, получают id записей и отдают их в ClickHouse. Из приложения 2 запроса - первый в спарк, второй в КХ. В итоге за доли секунд получается ценный результат :)

    У вас mysql вместо spark, но логика решения та же)
  • А вообще, КХ поддерживает рег.выражения :) если вам не нужен именно полнотекстовый поиск с оценкой релевантности, то можно переписать запрос с рег.выражениями в where) и уйти от mysql
  • https://t.me/clickhouse_ru
    @timofeevdmitry #214365 01:21 PM, 18 Apr 2021
    Коллеги, приветствую.

    1. Используете поля Nested? Джойните эти nested-поля в выборках?
    Сколько записей у вас в таблице, сколько в nested-поле дочерних записей?

    2. Задача хранить данные о деталях (в кол-ве под 200 млн.) в таблице wide_part и в nested-поле комплектующие детали (десяток полей, из чего состоит деталь). Комплектующих детали может быть до 500 штук. Страшные цифры если перемножить средние значения. И планируются другие Nested-поля по заказам, в агрегированном виде.

    Запрос с агрегацией(sum,min,avg...) на эти 200 млн и джойном на nested-array выдержит? Или надо подход с нестед-ами в КХ пересматривать?
  • https://t.me/clickhouse_ru
    Выдержит. Вы же не будете доставать все детали. В итоге джойн произойдёт только для тех деталей, которые вы будете доставать.
  • https://t.me/clickhouse_ru
    Если данных в мускуле много, а запросы сложнее достать по ключу значение, то наверно лучше посмотреть в сторону движка mysql mat view. Он правда ещё экспериментальный, но в кликхаусе поиск лайком один фиг должен отработать быстрее, чем специализированный индекс в мускуле.
  • https://t.me/clickhouse_ru
    Спасибо, Владимир. 🤝

    Если я агрегирую детали по поступлению за месяц, то и внутри нестедов придется агрегировать.

    Не исключено, что и GROUP BY придется делать по внутреннему полю нестеда.

    Будем думать😐
  • @s4851 ↶ Reply to #214368 #214369 02:39 PM, 18 Apr 2021
    Посмотрите на SummingMergeTree в нем в том числе и вложенные структуры агрегируются

    https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/summingmergetree/#agg_function-sum
    SummingMergeTree | Документация ClickHouse

    SummingMergeTree Движок наследует функциональность MergeTree. Отличие заключается в том, что для таблиц SummingMergeTree

  • https://t.me/clickhouse_ru
    @pavelpantyukhov #214371 03:07 PM, 18 Apr 2021
    Всем привет!

    В таблице лежат координаты, необходимо сделать группировку по странам. Как лучше это сделать через clickhouse (может через подключение словарей)?
  • https://t.me/clickhouse_ru
    Читайте про полигоны, и полигональные словари
  • https://t.me/clickhouse_ru
    @pavelpantyukhov #214373 03:09 PM, 18 Apr 2021
    спасибо!
  • https://t.me/clickhouse_ru
    А может есть в открытом доступе словари с городами? Интересен мир. (не нужна детализация сильная по РФ и тд)
  • https://t.me/clickhouse_ru
    В готовом видео для кх думаю нет, нужно делать из полигонов какого нибудь openstreetmap
  • https://t.me/clickhouse_ru
    Понял, спасибо большое, очень помогли!
  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #214364 #214377 03:21 PM, 18 Apr 2021
    Спасибо у нас плохой опыт создания своего Full Text Search Index on Clickhouse using filters out stopwords, lowers case, ignores possessive endings, and applied Porter’s stemming 🙂
  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #214362 #214378 03:22 PM, 18 Apr 2021
    На наших объемах очень тяжело
  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #214367 #214379 03:38 PM, 18 Apr 2021
    спасибо
  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #214363 #214380 03:39 PM, 18 Apr 2021
    да спасибо это получаеться очень сложно делать Query через Spark и внутри делать JOIN между двумя DATASETS
  • https://t.me/clickhouse_ru
    если у вас раз в месяц придётся что-то аггрегировать за месяц, то всё выдержит. если постоянно, то лучше начинать агрегировать по мере поступления данных благодаря AggregatingMergeTree и MaterializedView.
    >Не исключено, что и GROUP BY придется делать по внутреннему полю нестеда.
    если это поле общее для всех деталей, то его можно вынести на уровень выше (в мат вью) и также начать агрегировать по мере поступления данных.
  • @l_dar #214382 04:17 PM, 18 Apr 2021
    Привет. Подскажите в чем может быть причина. Создал простенькую materialize view для агрегаций по id. При создании создается и таблица пересчитывается нормально, а при добавлении новых полей, агрегация по id не происходит, происходит просто добавление нового поля
  • @l_dar #214383 04:17 PM, 18 Apr 2021
    create materialized view ssp.request_mv
    engine = SummingMergeTree()
    PARTITION BY toYYYYMM(created_ts) ORDER BY (id)
    POPULATE
    as
    select id,
    min(created_ts) as created_ts,
    anyLast(ms) as ms,
    from request
    GROUP BY id;
  • https://t.me/clickhouse_ru
    попробуйте для начала optimize final.
    >а при добавлении новых полей
    добавляете новые поля в таблицу или пересоздаёте мат вью с новыми полями или добавляете новые поля в мат вью без пересоздания?
  • @l_dar ↶ Reply to #214386 #214387 04:33 PM, 18 Apr 2021
    Добавляю новые поля в таблицу, не в мат вью.
  • https://t.me/clickhouse_ru
    но ожидаете изменений в матвью?
  • @l_dar ↶ Reply to #214388 #214389 04:35 PM, 18 Apr 2021
    Да, как я понял он при инсерте должен агрегировать данные и изменять во мат вью
  • @l_dar #214390 04:35 PM, 18 Apr 2021
    Разве не так?
  • https://t.me/clickhouse_ru
    нет не так, магии нету. матвью не может знать что делать с новой колонкой, брать от неё минимум или максимум или использовать как часть составного ключа
  • @l_dar ↶ Reply to #214391 #214392 04:37 PM, 18 Apr 2021
    Хм. А как посоветуйте мне сделать?
  • https://t.me/clickhouse_ru
    @Sablast #214393 04:37 PM, 18 Apr 2021
    Мне кажется у вас терминология нарушилась, вы поля добавляете или таки строки?
  • @l_dar #214394 04:38 PM, 18 Apr 2021
    Строки) сорри что запутал
  • https://t.me/clickhouse_ru
    ну вот, а говорят "здесь нету экстрасенсов, покажите ваш запрос" :)
  • https://t.me/clickhouse_ru
    тогда:
    >попробуйте для начала optimize final.
  • @l_dar ↶ Reply to #214396 #214397 04:41 PM, 18 Apr 2021
    Я отошел от компа, чуть позже попробую. Спасибо за совет
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    строки могут сворачивать не сразу или вообще не свернуться, ищите по чату "сворачивание", уже много раз обсуждали. и читайте чаще документацию, там уже есть инфа на 99% вопросов
  • https://t.me/clickhouse_ru
    @abubacabrus #214400 04:45 PM, 18 Apr 2021
    Здравствуйте. Систематически получаю вот эту ошибку на кластере CH из двух реплик, текущая версия 21.3.4.25 В чем может быть причина? https://github.com/ClickHouse/ClickHouse/issues/20259
    21.2 DB::Exception: Incomplete granules are not allowed while blocks are granules size · Issue #20259 · ClickHouse/ClickHouse

    I ran an optimize on 21.2, and the merge kept failing. 2021.02.09 14:38:06.519295 [ 14569 ] {} <Trace> db.table: Executing log entry to merge parts all_0_91343_4396, all_91344_91581_5...

  • https://t.me/clickhouse_ru
    у вас что стоит в can_use_adaptive_granularity?
    https://github.com/ClickHouse/ClickHouse/commit/121c5c96053ca07cdc9eca1f9458022400df3e22

    у вас данные мержатся с разной гранулярностью видимо из старых версий...
  • https://t.me/clickhouse_ru
    @abubacabrus #214403 05:02 PM, 18 Apr 2021
    enable_mixed_granularity_parts стоит в 1
  • @l_dar ↶ Reply to #214396 #214404 05:03 PM, 18 Apr 2021
    Да, после этого все нормально
  • @l_dar #214405 05:05 PM, 18 Apr 2021
    Думал что сворачивание происходит сразу, а при таком подходе не совсем понятно, зачем это нужно. Если Сворачивание происходит непонятно когда и может вообще не произойти
  • https://t.me/clickhouse_ru
    можно попробовать в 0 поставить
    а много clickhouse со старых версий апгрейдили?
  • @vadim_cj #214408 06:57 PM, 18 Apr 2021
    Добрый день! никто не заметил после обновления глюк со сравнением дат ?
  • Версия и подробнее
  • @vadim_cj #214410 06:58 PM, 18 Apr 2021
    select * from ... where ... and sale_date='2021-04-01' - работает. а вот вариант and not (sale_date='2021-04-01') - не работает
  • @vadim_cj #214411 06:59 PM, 18 Apr 2021
    ни одна запись не попадает в выборку
  • @vadim_cj #214412 06:59 PM, 18 Apr 2021
    приходится делать and not (sale_date < '2021-04-01' or sale_date > '2021-04-01')
  • @vadim_cj #214413 07:00 PM, 18 Apr 2021
    debian 9 - clickhouse-server 21.4.3.21
  • @vadim_cj #214414 07:03 PM, 18 Apr 2021
    само собой х64, в данном случае 32 гига памяти. на другом сервере 256 гиг (версия та же). на нем похоже эта ошибка выходит не каждый раз. может 1 из 20 запросов. но на сервере с 32 гигами - на 100%
  • @vadim_cj #214415 07:16 PM, 18 Apr 2021
    sale_date типа Date. партиции в таблице по (toYYYYMM(sale_date),shop_id) (shop_id = UInt32)
  • @vadim_cj #214416 07:16 PM, 18 Apr 2021
    select sale_date, count() as sales
    FROM
    (
    select * from trend_reports tr where tr.sale_date >='2021-04-01' and tr.sale_date <'2021-05-01'
    )
    group by sale_date
    order by sale_date
    - возвращает все даты
  • @vadim_cj #214417 07:17 PM, 18 Apr 2021
    select sale_date, count() as sales
    FROM
    (
    select * from trend_reports tr where tr.sale_date >='2021-04-01' and tr.sale_date <'2021-05-01' and tr.sale_date ='2021-04-01'
    )
    group by sale_date
    order by sale_date
    - возвращает только 1е (как и должно)
  • @vadim_cj #214418 07:18 PM, 18 Apr 2021
    select sale_date, count() as sales
    FROM
    (
    select * from trend_reports tr where tr.sale_date >='2021-04-01' and tr.sale_date <'2021-05-01' and tr.sale_date <> '2021-04-01'
    )
    group by sale_date
    order by sale_date
    - пусто. то же самое при условиях sale_date !='2021-04-01' или and not(sale_date='2021-04-01')
  • @vadim_cj #214419 07:19 PM, 18 Apr 2021
    притом условие например and not (sale_date<>'2021-04-01') - возвращает 1е число. то есть не работает не условие "не равно" а .. хз
  • @vadim_cj #214420 07:20 PM, 18 Apr 2021
    select sale_date, count() as sales
    FROM
    (
    select * from trend_reports tr where tr.sale_date >='2021-04-01' and tr.sale_date <'2021-05-01' and (tr.sale_date < '2021-04-01' or tr.sale_date > '2021-04-01')
    )
    group by sale_date
    order by sale_date
    - возвращает все кроме 1го числа - как и должно
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #214405 #214421 08:14 PM, 18 Apr 2021
    Для уменьшения объема агрегируемой таблицы и ускорения агрегации. Всяко быстрее, чем считать по исходной таблице же.
  • https://t.me/clickhouse_ru
    в документации (которую никогда не лишне почитать) написано, что стоит использовать "в том случае, когда это уменьшает количество строк на порядки", например, у вас есть все логи nginx и мат вью с группировкой по домену. в итоге вы можете получить дешёвые счётчики и вместо миллионов/миллиардов записей, вы можете достать жалкие десятки уже предагрегированных записей и доагрегировать их используя те же агрегатные функции что и в мат вью или даже гораздо проще - добавив FINAL после названия таблицы. такой подход позволяет быстро рассчитывать ваши типовые агрегации и при этом на диске они не занимают много места. более того, многие даже не хранят сырые данные, а только агрегации, сильно снижает потребляемое место на диске и нагрузку на него
  • 19 April 2021 (227 messages)
  • @l_dar #214423 02:02 AM, 19 Apr 2021
    Спасибо
  • https://t.me/clickhouse_ru
    а можете точный запрос привести в котором у вас no (sale_date = '2021-04-01') перестал работать?
  • https://t.me/clickhouse_ru
    @Omega515 #214425 06:32 AM, 19 Apr 2021
    всем привет. кто знает, есть ли тренажеры по pandas типа sql-ex (тренажер для sql😁)?
  • https://t.me/clickhouse_ru
    @zholmyrza_t #214426 06:51 AM, 19 Apr 2021
    Всем привет, если на кластере стоят опции
    insert_quorum и insert_quorum_parallel
    есть ли смысл синхронного инсерта? (insert_distributed_sync)
  • https://t.me/clickhouse_ru
    @regorov #214427 06:54 AM, 19 Apr 2021
    Всем привет!
    не нашел в документации оконнных функций, предполагаю что нужно делать как то по другому? Подскажите куда копать
    1. Есть поле datetime которое входит в primary key. Записи жестко появляются каждые 15 минут каждого часа. Секунды всегда 00. то есть 00:00:00, 00:15:00, 00:30:00, 00:45:00, 01:00:00 и тд. Иногда все же какой то записи нет (например не пришла 00:30:00), и ее надо реконструировать. Как обнаружить такую дырку/пропуск? Куда копать?
    2. Как корректно вычислить разницу в поле между двумя соседними записями отсортированными по дате? Искал в чате, говорят про функцию neigbour, при этом не рекомендуют ей пользоваться. Для каждой записи, в поле val у меня хранится значение аккумулятора, и надо найти изменение аккумулятора которое произошло за 15 минут (между двумя соседними записями). Куда копать, подскажите пзл.
    Спасибо
  • https://t.me/clickhouse_ru
    ORDER BY | ClickHouse Documentation

    ORDER BY Clause The ORDER BY clause contains a list of expressions, which can each be attributed with DESC (descending)

  • https://t.me/clickhouse_ru
    @regorov #214430 07:17 AM, 19 Apr 2021
    Спасибо! Похоже то что надо! двигаюсь дальше
  • https://t.me/clickhouse_ru
    @BloodJazMan #214431 07:19 AM, 19 Apr 2021
    сначала вычисляешь lag
    потом разницу между lag и текущим значением
  • @anton_shelin #214432 07:29 AM, 19 Apr 2021
    Эта фича уже рекомендована к использованию?
  • @anton_shelin #214433 07:30 AM, 19 Apr 2021
    This is an experimental feature that is currently in development and is not ready
    for general use. It will change in unpredictable backwards-incompatible ways in
    the future releases.
  • https://t.me/clickhouse_ru
    @regorov #214434 07:30 AM, 19 Apr 2021
    а если эта фича еще экспериментальна, то и альтернатив нет?
  • @anton_shelin #214435 07:31 AM, 19 Apr 2021
    мы используем neighbor
  • @anton_shelin #214436 07:31 AM, 19 Apr 2021
    но надо понимать ее ограничения
  • @anton_shelin #214437 07:31 AM, 19 Apr 2021
    по блокам и т.п.
  • https://t.me/clickhouse_ru
    @regorov #214438 07:35 AM, 19 Apr 2021
    вот эта блочность меня смущает у neighbor и runningDifference меня смущает
  • @anton_shelin #214439 07:46 AM, 19 Apr 2021
    отфильтровывайте через where или помечайте такие места
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Да все ок там
  • https://t.me/clickhouse_ru
    @YasnyjSokol #214443 07:54 AM, 19 Apr 2021
    Привет! Помогите с вопросом .
    Есть OLTP БД, в ней есть большая таблица фактов "трансфера", к ним привязана таблица с доп атрибутами (transfer_id, attr_name, attr_value).

    Внимание вопрос - могу ли я эту структуру положить в clickhouse в одну таблицу с полем типа Map ?
    К сожалению функции groupMap (аля groupArray) нет.

    Или как тут быть?
    Под конкретный отчет я могу flattern и вытащить нужные атрибуты, но есть желание, чтобы было более универсальное хранилище.
  • https://t.me/clickhouse_ru
    @AleksandrVassiliev #214444 07:56 AM, 19 Apr 2021
    Добрый день! Нам необходимо чтобы пароли пользователей КХ не лежали в явном виде в конфигах. И не передавались в явном виде по http. Это можно как-то решить?
  • https://t.me/clickhouse_ru
    или несколько groupArray, либо groupArray с туплом
  • https://t.me/clickhouse_ru
    так в конфиге можно хеши хранить. И передавть по http не в урле.
  • https://t.me/clickhouse_ru
    @YasnyjSokol #214447 07:58 AM, 19 Apr 2021
    Александр, там можно еще и Kerberos подключить
  • https://t.me/clickhouse_ru
    храните пароли как sha256
    https://clickhouse.tech/docs/en/operations/settings/settings-users/#user-namepassword

    и передавайте пароли по HTTPS
    https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server_configuration_parameters-openssl
    User Settings | ClickHouse Documentation

    User Settings The users section of the user.xml configuration file contains user settings. Information ClickHouse also s

  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    да, наверное groupArray с туплом, попробую еще функцию навернуть сверху, чтобы по имени атрибута доставать value
  • https://t.me/clickhouse_ru
    Зачем? Просто .номер_элемента_тупла
  • https://t.me/clickhouse_ru
    @YasnyjSokol #214452 08:02 AM, 19 Apr 2021
    я же не знаю в каком элементе array будет нужный атрибут
  • https://t.me/clickhouse_ru
    У дистрибьютид таблицы в очереди надо удалить/переложить bin файлы. Это отложенные инсерты
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #214305 #214454 08:19 AM, 19 Apr 2021
    Нашёл более раннее обсуждение этой проблемы. Это баг версии 20.8.

    Вопрос: а есть какая-нибудь возможность узнать объём Join таблицы в 20.8?
  • Здравствуйте, у меня был кейс что накопилось bin файлов 30 миллионов. Я прописал user password в конфиге кластера. Сейчас инсерты пошли и число bin файлов уменьшается. Но встала репликация на других таблицах, которые не view.
  • https://t.me/clickhouse_ru
    Какие симптомы у "встала" и при чем тут вью?
  • с view проблемы начались, что там инсерты не отправлялись, это решили, появилась новая проблема.
    таблицы ENGINE = ReplicatedMergeTree сейчас отстают на ноде с которой инсерты пошли
  • ClickHouse: Replication lag across all tables
    2021-04-19 11:30:35 6d 22h 26m
  • https://t.me/clickhouse_ru
    Distributed таблица это не вью. Select * from system.replication_queue
  • я плохо объяснил.
    работали год, проблем с репликацией replicated таблиц не было. были ошибки авторизации между нодами и копились bin файлы, рестарт ноды занимал 8 часов.

    Как только я прописал авторизацию для distributed таблиц, появился лаг репликации по заббиксу.
  • @benderit #214461 08:35 AM, 19 Apr 2021
    то есть инсерты view таблиц стали уходить с ноды 1 на ноду 2. Здесь всё хорошо.
    Есть ли блокировки в репликациях при инсертах view таблиц?
  • https://t.me/clickhouse_ru
    SELECT
    database,
    table,
    type,
    any(last_exception),
    any(postpone_reason),
    max(last_attempt_time),
    max(last_postpone_time),
    max(num_postponed) AS max_postponed,
    max(num_tries) AS max_tries,
    min(num_tries) AS min_tries,
    countIf(last_exception != '') AS count_err,
    countIf(num_postponed > 0) AS count_postponed,
    countIf(is_currently_executing) AS count_executing,
    count() AS count_all
    FROM system.replication_queue
    GROUP BY
    database,
    table,
    type
    order by count_all desc
  • https://t.me/clickhouse_ru
    Нет
  • @vadim_cj #214465 08:52 AM, 19 Apr 2021
    не по = а не НЕ равно. не выбирает ни по sale_date<>'2021-04-01' ни по sale_date != '2021-04-01' ни даже по not(sale_date='2021-04-01').
  • @vadim_cj #214466 08:52 AM, 19 Apr 2021
    select sale_date, count() as sales
    FROM
    (
    select * from trend_reports tr where tr.sale_date >='2021-04-01' and tr.sale_date <'2021-05-01'
    )
    group by sale_date
    order by sale_date
    - возвращает все даты
  • @vadim_cj #214467 08:52 AM, 19 Apr 2021
    select sale_date, count() as sales
    FROM
    (
    select * from trend_reports tr where tr.sale_date >='2021-04-01' and tr.sale_date <'2021-05-01' and tr.sale_date ='2021-04-01'
    )
    group by sale_date
    order by sale_date
    - возвращает только 1е (как и должно)
  • @vadim_cj #214468 08:52 AM, 19 Apr 2021
    select sale_date, count() as sales
    FROM
    (
    select * from trend_reports tr where tr.sale_date >='2021-04-01' and tr.sale_date <'2021-05-01' and tr.sale_date <> '2021-04-01'
    )
    group by sale_date
    order by sale_date
    - пусто. то же самое при условиях sale_date !='2021-04-01' или and not(sale_date='2021-04-01')
  • @vadim_cj #214469 08:52 AM, 19 Apr 2021
    притом условие например and not (sale_date<>'2021-04-01') - возвращает 1е число. то есть не работает не условие "не равно" а .. хз
  • @vadim_cj #214470 08:52 AM, 19 Apr 2021
    select sale_date, count() as sales
    FROM
    (
    select * from trend_reports tr where tr.sale_date >='2021-04-01' and tr.sale_date <'2021-05-01' and (tr.sale_date < '2021-04-01' or tr.sale_date > '2021-04-01')
    )
    group by sale_date
    order by sale_date
    - возвращает все кроме 1го числа - как и должно
  • @vadim_cj #214471 08:52 AM, 19 Apr 2021
    а можете точный запрос привести в котором у вас no (sale_date = '2021-04-01') перестал работать?
  • https://t.me/clickhouse_ru
    так проблема неделю назад началась?

    типа уже неделю парты качает │ data │ participants_log │ GET_PART | 2021-04-12 13:51:12 │ 1970-01-01 03:00:00
    попробуйте рестартовать КХ, похоже фетч завис
  • https://t.me/clickhouse_ru
    а тип у поля? что partition by / order by ? skip index есть?
  • @vadim_cj #214475 09:48 AM, 19 Apr 2021
    DATE
  • @vadim_cj #214476 09:48 AM, 19 Apr 2021
    partition by (toYYYYMM(sale_date),shop_id)
  • @vadim_cj #214477 09:48 AM, 19 Apr 2021
    skip index нет
  • @vadim_cj #214478 09:49 AM, 19 Apr 2021
    до обновления версии кликхауса работало нормально
  • @vadim_cj #214479 09:51 AM, 19 Apr 2021
    удивительнее всего что sale_date='2021-04-01' - работает, как и not(sale_date<>'2021-04-01'). а вот sale_date<>'2021-04-01' как и not(sale_date='2021-04-01') - не работает
  • А почему этот запрос должен возвращать не 1ое? Там же написано в скобках "все, кроме 1го", а потом вы делаете отрицание .. НЕ ("все кроме 1го") = как раз 1ое число ) все правильно )
  • @vadim_cj #214481 09:52 AM, 19 Apr 2021
    именно.
  • @vadim_cj #214482 09:52 AM, 19 Apr 2021
    то есть фильтр "только 1е" - работает в обоих случаях. а фильтр "только НЕ первое" - не работает в обеих версиях
  • @vadim_cj #214483 09:53 AM, 19 Apr 2021
    работает только вариант ( sale_date<'2021-04-01' or sale_date>'2021-04-01' )
  • @AlexeyLemeshevski #214484 09:54 AM, 19 Apr 2021
    А на других датах?))
  • @vadim_cj #214485 09:56 AM, 19 Apr 2021
    в общем случае то же самое. но не всегда. иногда срабатывает. системы не обнаружил. сейчас просто переделал на вариант ("меньше или больше").
  • @vadim_cj #214486 09:58 AM, 19 Apr 2021
    сейчас вот прогнал запрос на всех датах диапазона - ни разу не сработало как ожидалось
  • @vadim_cj #214487 10:00 AM, 19 Apr 2021
    предыдущая версия была 21.3.2.5 - там такой проблемы не было
  • ну да примерно неделя. сейчас не хочу рестартить, пусть закончит еще 15млн инсертов. Тогда рестартую. спасибо.
  • Кстати, а КХ даты ведь не строками хранит, верно? И в таких условиях происходит какое-то неявное преобразование, верно? ...попробуйте ради прикола

    where toUnixTimestamp(sale_date)<> toUnixTimestamp('2021-04-01')

    Интересно уже просто :)
  • @AlexeyLemeshevski #214490 10:14 AM, 19 Apr 2021
    toUnixTimestamp уж точно отдает UInt и если там не сработает <> значит дело в чем-то еще, а не датах
  • https://t.me/clickhouse_ru
    @hoha_ftf #214491 10:21 AM, 19 Apr 2021
    Тогда уж toDate, дата же кол-во дней хранит
  • а toDate что возвращает?) Я не нашел в документации сходу) там есть toDate, но не ясен тип данных, который он возвращает) UInt32?
  • @vadim_cj #214493 10:43 AM, 19 Apr 2021
    date
  • @vadim_cj #214494 10:43 AM, 19 Apr 2021
    шас свет в офисе жок. позже попробую
  • https://t.me/clickhouse_ru
    @fitpredictor #214495 10:56 AM, 19 Apr 2021
    господа, как выдать юзеру доступ ко всем схемам и таблицам базы данных?
    не могу нагуглить(
  • https://t.me/clickhouse_ru
    GRANT ALL ON *.* TO <user> WITH GRANT OPTION
  • @643935039 #214498 11:08 AM, 19 Apr 2021
    подскажите пожалуйста, почему может пропадать коннект при подключении http handler? Беру кусок настроек из примера, вставляю в config.xml, перезагружаю сервер кликхауса и получаю Code: 210. DB::NetException: Connection refused (localhost:9000). Настройки такие:
    <http_handlers>
    <rule>
    <url><![CDATA[/query_param_with_url/\w+/(?P<name_1>[^/]+)(/(?P<name_2>[^/]+))?]]></url>
    <method>GET</method>
    <headers>
    <XXX>TEST_HEADER_VALUE</XXX>
    <PARAMS_XXX><![CDATA[(?P<name_1>[^/]+)(/(?P<name_2>[^/]+))?]]></PARAMS_XXX>
    </headers>
    <handler>
    <type>predefined_query_handler</type>
    <query>SELECT value FROM system.settings WHERE name = {name_1:String}</query>
    <query>SELECT name, value FROM system.settings WHERE name = {name_2:String}</query>
    </handler>
    </rule>
    </http_handlers>

    Убираю настройки, перезапускаю сервак и снова могу коннектиться. Думал дело в версии. Обновился до последней и всё равно такая же проблема. Подскажите, что не так делаю?
  • https://t.me/clickhouse_ru
    баг, я завел
  • https://t.me/clickhouse_ru
    Wrong query result with != · Issue #23305 · ClickHouse/ClickHouse

    21.5.1 create table test(d Date, k Int64, s String) Engine=MergeTree partition by (toYYYYMM(d),k) order by (d, k) insert into test values ('2020-01-01', 1, ''); inse...

  • https://t.me/clickhouse_ru
    @den_crane #214501 11:16 AM, 19 Apr 2021
    имхо проблема в partition pruning
  • https://t.me/clickhouse_ru
    спасибо!
  • https://t.me/clickhouse_ru
    точно?
  • ну 21.3.4.25 - проблема есть
  • https://t.me/clickhouse_ru
    @den_crane #214505 11:27 AM, 19 Apr 2021
    у меня и в 20.12.8 есть, может добавили в минорных
  • https://t.me/clickhouse_ru
    скажите, а в описании шардов кластера в config.xml и в конфигах словарей также доступен тег password_sha256_hex, вместо password?
  • https://t.me/clickhouse_ru
    ещё раз спасибо. а как сделать тоже самое, но с помощью оконных функций. запрос через массивы не получилось впихнуть в концепцию метабейза. есть шансы, что с оконными функциями прокатит.
  • а так работает.
    SELECT * FROM default.test WHERE toDate(d) <> '2020-01-01';

    ну логично, засада в toYYYYMM.
    думаю он начинает сравнивать строку "202001" а не даты...
  • @643935039 #214509 11:40 AM, 19 Apr 2021
    В логе такая ошибка: 2021.04.19 12:38:25.519834 [ 37065 ] {251e4250-d4dd-42d5-b14e-5e2d86464089} <Error> DynamicQueryHandler: Code: 491, e.displayText() = DB::Exception: URL "::1:9000" is not allowed in config.
  • https://t.me/clickhouse_ru
    @DavidAvagimyan #214510 11:40 AM, 19 Apr 2021
    😈
  • и при использовании NOT IN pruning не работает... (читает все парты, но он и раньше не работал). минное поле
  • https://t.me/clickhouse_ru
    SELECT * FROM test WHERE d != materialize(toDate('2020-01-01')) ;
    https://github.com/ClickHouse/ClickHouse/pull/21550
    Shard pruning via literals by amosbird · Pull Request #21550 · ClickHouse/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en Changelog category (leave one): Bug Fix Changelog entry (a user-readable short description of the changes...

  • https://t.me/clickhouse_ru
    в конфигах словарей нет
    большинство внешних источников требуют пароля в открытом виде на вход

    в remote_servers есть
    <secret>

    https://github.com/ClickHouse/ClickHouse/pull/13156/files

    https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/
    и тогда при SELECT будет использован тот же пользователь который делает запрос на ноде инициаторе
    Secure inter-cluster query execution (with initial_user as current query user) [v3] by azat · Pull Request #13156 · ClickHouse/ClickHouse

    Changelog category (leave one): New Feature Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): Secure inter-cluster query execution (with initial_user a...

  • https://t.me/clickhouse_ru
    @morozovsk #214514 11:46 AM, 19 Apr 2021
    ещё вопрос. допустим я решу сделать простую фичу https://github.com/ClickHouse/ClickHouse/issues/20865
    кликхаус будет долго компилироваться? у меня i9 и 64gb ram
    ReplacingMergeTree does not support DateTime64 as ver · Issue #20865 · ClickHouse/ClickHouse

    CREATE TABLE testR ( `A` Int64, `D` DateTime64(9), `S` String ) ENGINE = ReplacingMergeTree(D) ORDER BY A Received exception from server (version 21.3.1): DB::Exception: The column D cannot be used...

  • https://t.me/clickhouse_ru
    @konstantinkalinin #214515 11:47 AM, 19 Apr 2021
    Всем привет! Подскажите пожалуйста, что тут делать. Это селект из system.distribution_queue, на один из шардов на одну из таблиц очередь растет и не понятно, как ее рассосать.

    Остальные таблицы на этом же шарде наполняются. И все таблицы другого шарда, который лежит на той же железке, норм работают. Началось после того, как на этй железке закончилось место. Место почистили, а проблема осталась
  • https://t.me/clickhouse_ru
    минут 30, на ноуте у меня 2 часа компиляется
  • а может не надо так:
    >> Read 2 rows,
  • https://t.me/clickhouse_ru
    в смысле?
  • >SELECT * FROM default.test WHERE toDate(d) != toDate('2020-01-01') ;

    так - прунинг работает - read 1 rows
  • > SELECT * FROM test WHERE d != materialize(toDate('2020-01-01')) ;

    а так не работает (читает все партишны)
  • https://t.me/clickhouse_ru
    @artcorp96 #214521 11:50 AM, 19 Apr 2021
    Добрый день, подскажите пож-та.

    Есть след sql.

    ALTER TABLE table_name Add COLUMN column_name DateTime DEFAULT now();

    Сейчас данные в колонке column_name считаются на лету, для каждого селекта.
    Не понятно, как сделать, чтоб значение колонки рассчитывалось только 1 раз? Во время вставки.
    Гугл не дал результатов, по этому решил попробывать тут.
  • https://t.me/clickhouse_ru
    ну естественно. Прунинг работает до выполнения запроса, а materialize создает колонку в рантайме
  • https://t.me/clickhouse_ru
    так и есть для новых строк, во время вставки

    для старых alter table update column_name = column_name where 1
  • а ну ок, я думал мы workaround придумываем... самое обидное - я всем строго настрого запретил использовать toDate(partcol) op values синтаксис ввиду того что он может сломаться... а именно он не сломался...
  • https://t.me/clickhouse_ru
    @den_crane #214525 11:53 AM, 19 Apr 2021
    удивительно что раньше не нашли. Сломано давно.
  • https://t.me/clickhouse_ru
    ответ в логе КХ.
  • https://t.me/clickhouse_ru
    нельзя. В этом случае сервер кликхауза играет роль клиента, ему нужен пароль.
  • https://t.me/clickhouse_ru
    я тоже надеялся, но кроме редких ConnectionPoolWithFailover: Connection failed at try №1 (по чуть-чуть на все хосты) и таких же редких уопминаний синтаксических ошибок в sql запросах, ничего нет
  • можно попробовать flush distributed и тогда либо пойдет, либо лог засрется ошибками и искать будет проще
  • https://t.me/clickhouse_ru
    @den_crane #214530 11:58 AM, 19 Apr 2021
    Я поставил 20.8.17.25 себе на прод (если кому интересно). (не Альтинити конечно, там у меня нету прода)
    Денни одобряе. короче
  • у нас иногда distributed умирал сам по себе из за мелких ошибок и без start/stop distributed sends не восстанавливались... пришлось съехать с него (ну помимо прочего съехали ещё чтобы не было двойной записи на диск)
  • https://t.me/clickhouse_ru
    > для старых alter table update column_name = column_name where 1
    А можно подробнее? Это решение помогло, хотелось бы понять как?
  • https://t.me/clickhouse_ru
    @ARyndin #214533 11:59 AM, 19 Apr 2021
    Привет. Подскажите, если через SQL создаются юзера и накатываются им права, они раскатываются по всему кластеру или нужно ручками на каждой тачке sql-запросы повторять?
  • https://t.me/clickhouse_ru
    спасибо, попробуем!
  • главное не забыть выключить ТТЛ )
  • https://t.me/clickhouse_ru
    КХ не перезаписывает старые данные при alter table column default.
    alter перезаписал
  • https://t.me/clickhouse_ru
    да я и не планировал использовать TTL
  • https://t.me/clickhouse_ru
    Понял, спасибо
  • https://t.me/clickhouse_ru
    да на каждом, либо on cluster
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #214535 #214541 12:34 PM, 19 Apr 2021
    А что с TTL на 20.8?
  • @vadim_cj #214542 12:40 PM, 19 Apr 2021
    хм. интересно. select sale_date, count() as sales
    FROM
    (
    select * from trend_reports tr where tr.sale_date >='2021-04-01' and tr.sale_date <'2021-05-01' and toDate(tr.sale_date) <> '2021-04-01'
    )
    group by sale_date
    order by sale_date
    - работает. хотя sale_date и есть Date по типу
  • @vadim_cj #214543 12:42 PM, 19 Apr 2021
    я до этого пробовал tr.sale_date<>toDate('2021-04-01') - не работало. хотя логично было бы приводить к типу Date строку в запросе а не поле которое само по себе типа Date
  • https://t.me/clickhouse_ru
    TTL работает на основе метаинформации в партах. В каждом парте хранится файлик minmaxTTL в файлике лежит дата когда его надо процессить. Этот файлик создается при создании парта (т.е. при инсерте и мерже).
    Изначальное поведение было что при alter table modify ttl в старых партах этот файлик не создавался и TTL не работал для старых партов. После многочисленный просьб это починили, теперь при alter table modify ttl КХ начинает усиленно читать все парты чтобы создать этот файлик, это не нравится другим просителям, но есть настройка
  • @vadim_cj #214545 12:42 PM, 19 Apr 2021
    Но спасибо - по крайней мере костыль найден. хорошо что баг замечен. (лишнее приведение типов для каждой строки запроса - лишнее время обработки
  • @vadim_cj #214546 12:44 PM, 19 Apr 2021
    в моем случае с жалкими сотнями тысяч - макс миллионами строк в партиции (которая отрезается первой половиной фильтра) - не играет рояли.. но для миллиардов уже может быть важно
  • https://t.me/clickhouse_ru
    SELECT (x / s) * 100
    FROM
    (
    SELECT
    x,
    any(x) OVER (ORDER BY x DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS s
    FROM
    (
    SELECT number AS x
    FROM numbers(10)
    )
    )
    ┌─multiply(divide(x, s), 100)─┐
    │ 100 │
    │ 88.88888888888889 │
    │ 77.77777777777779 │
    │ 66.66666666666666 │
    │ 55.55555555555556 │
    │ 44.44444444444444 │
    │ 33.33333333333333 │
    │ 22.22222222222222 │
    │ 11.11111111111111 │
    │ 0 │
    └─────────────────────────────┘
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #214544 #214548 12:50 PM, 19 Apr 2021
    Спасибо. Это кое-что прояснило. :)
  • @helloworld2024 #214549 12:51 PM, 19 Apr 2021
    Всем привет, наверняка все читали эту статью https://blog.cloudflare.com/http-analytics-for-6m-requests-per-second-using-clickhouse/ такой вопрос,
    в разделе Aggregations schema design #2 они говорят, что sumMap помог им уменьшить кол-во записей, как я понимаю они выделяют изменения в колонки, допустим statusCodeMap Nested (Status Int32, Count UInt64) и используют summing merge tree для агрегаций,

    Вопрос в том, как они потом пересекают изменения, если скажем, нужно посчитать количество статусов 200, и страны RU
    HTTP Analytics for 6M requests per second using ClickHouse

    One of our large scale data infrastructure challenges here at Cloudflare is around providing HTTP traffic analytics to our customers. HTTP Analytics is available to all our customers via two options:

  • https://t.me/clickhouse_ru
    DJ же показал другой WA
    SELECT * FROM test WHERE toDate(d) != '2020-01-01';
  • @helloworld2024 #214551 12:52 PM, 19 Apr 2021
    Потому что в разделе аналитики в cloudflare можно объединять фильтры через AND
  • https://t.me/clickhouse_ru
    ну очевидно что страна как поле (дименшин)
  • да - я просто проверил на моем запросе. (в моем случае задуман как первая половина WHERE отрезает нужную партицию). щас еще один вариант попробую
  • https://t.me/clickhouse_ru
    @mikhailberg #214554 12:56 PM, 19 Apr 2021
    ребят
    есть запрос вида

    select date, sum(amount) from table group by date

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

    select date, sum(amount), runningAccumulate? from table group by date
  • ну хорошо, мы получим,
    countryMap Nested (count FixedString(2), Count UInt64),
    statusCodeMap Nested (status Int32, Count UInt64)
    но это будут два независимых счетчика, которые могут внутри себя пересекаться
  • https://t.me/clickhouse_ru
    нет.

    .
    .
    .
    country Int8,
    statusCodeMap Nested (status Int32, Count UInt64)
    order by ,, ,,,, country,
  • @vadim_cj #214557 12:58 PM, 19 Apr 2021
    select sale_date, count() as sales
    FROM
    (
    select * FROM
    (
    select * from trend_reports tr where tr.sale_date >='2021-04-01' and tr.sale_date <'2021-05-01'
    )
    where toDate(sale_date) <>'2021-04-01'
    )
    group by sale_date
    order by sale_date

    так работает. без toDate - не работает. но при этом первый запрос по идее уже возвращает временную таблицу - по идее без партиций. то есть не похоже что партицирование через toYYYYMM тут влияет. повторю - sale_date сама по себе типа Date
  • А почему имеено страну выделять в дименшн? Ну и как решать что идет в колонку, а что в мап, там же еще десятки дименшнов
  • https://t.me/clickhouse_ru
    да проталкивается предикат внутрь. все вообще не так работает.
  • вообще я всем рекомендую только подобные конструкции... все остальное будет баги давать, и не только в КХ

    (
    (partitionKey>=lowerBound and partitionKey<higherBound)
    OR (partitionKey>=lowerBound and partitionKey<higherBound)
    OR (partitionKey>=lowerBound and partitionKey<higherBound)
    )

    соответственно lowerBound/higherBound должны быть правильного типа...
  • https://t.me/clickhouse_ru
    ну они просто один из дименшинов засунули в map и таким образом сократили кол-во строк в 10 раз
  • то есть колонку с самым большим cardinality? Вы уверены? Что-то как-то слишком просто)
  • @helloworld2024 #214563 01:01 PM, 19 Apr 2021
    Ну и из статьи этого не очень понять
  • Да - проверил на другой таблице. если поле даты не участвует в ключе партиции то sales_period <> '2021-02-28' работает как положено
  • Либо может быть эта статья описывает какую-то другую аналитику, где нельзя фильтровать
  • @vadim_cj #214567 01:06 PM, 19 Apr 2021
    так что сравнение по "дата в ключе не равна чему-то" - требует явного приведения поля к типу даты - если данное поле использовано в ключе (по крайней мере как YYYYMM) - не то чтобы "это не баг это фича" - но в доке стоило бы отразить
  • https://t.me/clickhouse_ru
    слишком жирные строки тоже не стоит делать, ни к чему хорошему это не приведет. Получится что запросы которым нужен кусок мапы будут медленнее
  • Понял, возможно так и есть, там речь идет еще о том, что они хотят хранить сырые данные месяц, и похоже что там где можно фильтровать - месяц данных доступен
  • @helloworld2024 #214570 01:07 PM, 19 Apr 2021
    тогда все сходится
  • @helloworld2024 #214571 01:07 PM, 19 Apr 2021
    Благодарю, но еще посмотрю)
  • это баг вообще
  • ага :) но весело мне было когда тренды в базе начали слетать и никаких ошибок в логах :)
  • https://t.me/clickhouse_ru
    вот тут похожее есть https://youtu.be/efRryvtKlq0
    ClickHouse тормозит / Кирилл Шваков (TrafficStars)

    Приглашаем на Saint HighLoad ++ 2021 20 и 21 сентября 2021, Санкт-Петербург, DESIGN DISTRICT DAA in SPB Программа, билеты и подробности - https://clck.ru/VmKaW -------- HighLoad++ Moscow 2018 Тезисы и презентация: http://www.highload.ru/moscow/2018/abstracts/4288 Практическое руководство по созданию неэффективных решений при помощи СУБД ClickHouse. -------- Нашли ошибку в видео? Пишите нам на support@ontico.ru

  • https://t.me/clickhouse_ru
    надо на стейдже такое ловить.

    у меня автотесты бегают 6 месяцев, потом прод.

    https://github.com/ClickHouse/ClickHouse/issues?q=is%3Aissue+is%3Aopen+%22wrong+result%22
  • @vadim_cj #214576 01:16 PM, 19 Apr 2021
    надо на стейдже такое ловить.

    у меня автотесты бегают 6 месяцев, потом прод.

    дык у меня года два наверное уже на проде работает - баг появился после последнего обновления. на старой версии не было
  • ну 21.3 только вчера вышел...
    https://coub.com/view/qmjs
  • Спасибо, гляну
  • ну обновлятся не надо... есть процедура неформальная... в чатике спрашивать у уважаемых людей а не падало ли у них чего при переходе =)
  • вообще в КХ если чего-то нового не собираетесь пользовать - можете не обновлятся
  • ? у меня штатное обновление через депозиторий поставило 21.4.3.21 12-го апреля
  • ну вы вообще бессмертный =) (про "вчера" - это образно, означает не так давно)
  • @vadim_cj #214583 01:21 PM, 19 Apr 2021
    ну обновлятся не надо... есть процедура неформальная... в чатике спрашивать у уважаемых людей а не падало ли у них чего при переходе =)

    вообще в КХ если чего-то нового не собираетесь пользовать - можете не обновлятся

    - Спасибо, так видимо и сделаю :) просто у меня на продах почти весь софт обновляется регулярно автоматом.. выключу-ка я КХ обновление спокойствия ради :)
  • 21.3.4.хх - пока третья цифра не перешагнет порог в 6-7, прод лучше не трогать... только стейдж
  • https://t.me/clickhouse_ru
    6 месяцев я тестирую новую версию КХ, которую планирую поставить в прод в будущем. Вот только что поставил - 20.8 (в прод).
    все что старше 20.12 у меня или не заводится или нашлись ужасные баги (на стейдже).
    Поэтому я на стейдж тестирую 20.12.
  • https://t.me/clickhouse_ru
    @derlafff #214586 01:31 PM, 19 Apr 2021
    А есть какой-нибудь способ конвертнуть DateTime64 в unix_nano Uint64?
  • https://t.me/clickhouse_ru
    есть даже два способа
  • https://t.me/clickhouse_ru
    @den_crane #214588 01:32 PM, 19 Apr 2021
    toUnixTimestamp64Nano
  • https://t.me/clickhouse_ru
    внезапно. спасибо
  • https://t.me/clickhouse_ru
    @den_crane #214590 01:34 PM, 19 Apr 2021
    SELECT reinterpret(now64(9), 'UInt64')
    ┌─reinterpret(now64(9), 'UInt64')─┐
    │ 1618839190848570050 │
    └─────────────────────────────────┘

    SELECT toUnixTimestamp64Nano(now64(9))
    ┌─toUnixTimestamp64Nano(now64(9))─┐
    │ 1618839224093127646 │
    └─────────────────────────────────┘
  • https://t.me/clickhouse_ru
    @Sablast #214591 01:34 PM, 19 Apr 2021
    подскажите, есть какое то эмпирическое значение количества строк когда стоит делать парты меньше месяца?
  • https://t.me/clickhouse_ru
    нет, никакой связи.

    размер в ГБ скорее и время жизни данных
  • https://t.me/clickhouse_ru
    а по ГБ куда ориентироваться?
  • @7699150 #214594 01:37 PM, 19 Apr 2021
    Ребят, привет! Кто-то пробовал такое делать?

    Есть Kafka-табличка и матвью, которое пишет из нее в MergeTree табличку.
    Если я сделаю инсерт в эту Kafka-табличку — подхватит ли матвью эти данные и запишет ли она их MergeTree таблицу??
  • https://t.me/clickhouse_ru
    @Sablast #214595 01:37 PM, 19 Apr 2021
    у меня не сказать чтобы большая уж таблица, сейчас парты по неделе - 10Гб на диске, TTL пока не определен, есть ощущение что стоит пересобрать от греха на месячные
  • https://t.me/clickhouse_ru
    150 ГБ -- стандратный макс размер парта. Если у партиция размеров 900 ГБ, то в любом случае 6 партов, можно например недельные партиции сделать.
    От запросов зависит. У меня есть таска, там данные надо 2 недели хранить и данные запрашиваются за последние пол-часа, поэтму партиции по часу
  • https://t.me/clickhouse_ru
    @devmansurov #214597 01:39 PM, 19 Apr 2021
    Добрый день! У меня 2 млн записей c логами nginx-а в таблице и при этом размер папки clickhouse весить около 2.5GB

    Подскажите пожалуйста это не большой размер для столько записей?
  • https://t.me/clickhouse_ru
    спасибо)
  • https://t.me/clickhouse_ru
    наверняка у вас логами в базе system все занято

    https://kb.altinity.com/altinity-kb-useful-queries/altinity-kb-database-size-table-column-size
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Спасибо! А я могу удалить всё из таблицы логов?
  • https://t.me/clickhouse_ru
    по второй ссылке идите
  • https://t.me/clickhouse_ru
    спасибо!
  • @lucifron31 #214607 02:24 PM, 19 Apr 2021
    Добрый день коллеги! Есть проблема при выполнении запроса с двумя и более джойнами .Проблема появилась после обновление с 20.4.х.х на 20.8.х.х
    Пример запроса выдуманный , но проблему отражает.Если в запросе участвуют колонки на кириллице то получаю проблему.
    ```select t1.номер 1, t2.номер 2,t3.номер 3
    from (select number as номер 1 from numbers(100)) as t1
    any
    left join (select number as номер 2 from numbers(100)) as t2
    on t1.номер 1 = t2.номер 2
    any
    left join (select number as номер 3 from numbers(100)) as t3
    on t2.номер 2 = t3.`номер 3```
    Очень прошу помощи! Спасибо
  • @lucifron31 #214608 02:25 PM, 19 Apr 2021
    select t1.`номер 1`, t2.`номер 2`,`t3`.`номер 3`
    from (select number as `номер 1` from numbers(100)) as `t1`
    any
    left join (select number as `номер 2` from numbers(100)) as `t2`
    on t1.`номер 1` = t2.`номер 2`
    any
    left join (select number as `номер 3` from numbers(100)) as `t3`
    on t2.`номер 2` = t3.`номер 3
  • https://t.me/clickhouse_ru
    ошибка у вас на скриншоте из 21.1.6 а не из 20.8
    попробуйте
    EXPLAIN AST SELECT ...
    EXPLAIN SYNTAX SELECT ...
  • да я начал проверять с 20.8
  • 20.8, 20.11,21.1,21.2 нигде не работает
  • https://t.me/clickhouse_ru
    @BloodJazMan #214612 02:29 PM, 19 Apr 2021
    в общем при JOIN там запросы переписываются
    и если имена столбцов русские. то действительно могут быть баги
    думаю имеет смысл ISSUE завести
    с результатами EXPLAIN SYNTAX и EXPLAIN AST
  • @lucifron31 #214614 02:30 PM, 19 Apr 2021
    Баг уже есть ,но там молчание
  • @lucifron31 #214615 02:32 PM, 19 Apr 2021
    С одним джойном все хорошо, если больше то падает
  • https://t.me/clickhouse_ru
    @574739827 #214616 02:39 PM, 19 Apr 2021
    Добрый день. Использую clickhouse-driver(0.2.0) для загрузки данных в базу, находящуюся в yandex.cloud. Данные - датафрейм на 16кк строк, преобразованный в dict. Использую метод execute и INSERT INTO ... VALUES .При выполнении с локального компа(Windows) все отлично, но при запуске того же кода из кубера (контейнер с Linux) время выполнения увеличивается в разы. На что можно грешить и как исправить ситуацию?
  • https://t.me/clickhouse_ru
    контейнер то скольким кол-вом CPU запущен?
    там же не железо... там зависит от того сколько вашего железа в CPU вам в контейнере нарезали
  • https://t.me/clickhouse_ru
    CPU 5, Memory 20 Gi
  • можете подсказать правила оформления багов на гитхаб? может есть какие-то рекомендации? язык? структура бага?
  • там шаблон готовый при открытии уже встроен
  • Спасибо!
  • https://t.me/clickhouse_ru
    язык английский =)
    очень помогают SQL запрос
    и результат запроса на версии Clickhouse которые работают и версия Clickhouse где не работает
    и сообщение об ошибке с полным stacktrace =)
  • а на русском нельзя? проблемы с английским есть некоторые...
  • https://t.me/clickhouse_ru
    тогда на русском пишите, поймут

    вы EXPLAIN AST \ EXPLAIN SYNTAX сделайте в 20.4 где работает и 20.5 где не работает
  • @lucifron31 #214625 04:08 PM, 19 Apr 2021
    EXPLAIN на сколько помню в 20.8 ввели вроде
  • https://t.me/clickhouse_ru
    Размер - 100 млн. записей.
    Engine= MergeTree - да

    Explain в datagrip не работает, а доступа к серверу ch по ssh для clickhouse-client нет :(

    И не совсем понимаю это тайм-аут на клиенте (datagrip) или у сервера.
    Увеличивал значения в 10 раз - https://prnt.sc/11phmh1 и ничего.
    Может, это не те тайм-ауты, или, действительно, тайм-ауты на сервере
  • https://t.me/clickhouse_ru
    ну там еще можно
    SET send_logs_level='trace';
    сделать и логи приложить
  • https://t.me/clickhouse_ru
    в ошибке что написано? точное сообщение
  • https://t.me/clickhouse_ru
    вот так https://prnt.sc/11pi66h
    Screenshot

    Captured with Lightshot

  • https://t.me/clickhouse_ru
    @vdimir ↶ Reply to #214629 #214630 04:30 PM, 19 Apr 2021
    А времени действительно много проходит перед возникновением ошибки?
  • https://t.me/clickhouse_ru
    На 30 секундах возникает ошибка
  • https://t.me/clickhouse_ru
    в advanced настройках таймауты настройте
  • https://t.me/clickhouse_ru
    @via_cheslav #214634 04:39 PM, 19 Apr 2021
    ок, буду пробовать все таймауты увеличивать в клиенте
  • https://t.me/clickhouse_ru
    @846371512 #214636 04:56 PM, 19 Apr 2021
    Здравствуйте! У меня MATERIALIZED VIEW есть на табличку и к этой таблице нужно добавить несколько новых полей и соответственно SELECT для MATERIALIZED VIEW будет другой, с учётом этих новых полей. Если всё уже работает на продакшене, как мне изменить мою VIEW на горячую?
    Спасибо
  • @satanch #214638 05:03 PM, 19 Apr 2021
    Доброго вечера!
    Видимо я чего-то не понимаю, но запрос подсчета уникальных значений работает в таком виде:
    SELECT COUNT(DISTINCT uuid) FROM db.table
    Но как только я группирую результат по другому столбцу:
    SELECT toYYYYMMDD(createdAt) AS requestDay, COUNT(*) as hits, COUNT(DISTINCT(uuid)) as uniqs, FROM db.table GROUP BY requestDay
    Я получаю ошибку:
    Expected one of: FORMAT, HAVING, UNION, LIMIT, OFFSET, AND, OR, GROUP BY, WINDOW, ORDER BY, MOD, DIV, LIKE, ILIKE, NOT LIKE, NOT ILIKE, IN, NOT IN, GLOBAL IN, GLOBAL NOT IN, IS, Comma, Dot, Arrow, QuestionMark, token, INTO OUTFILE, SETTINGS, alias, NOT, AS, FROM, PREWHERE, WHERE, WITH, BETWEEN, end of query
  • @satanch #214639 05:04 PM, 19 Apr 2021
    причем без DISTINCT все работает во втором запросе
  • https://t.me/clickhouse_ru
    сначала стопаем INSERT в source таблицу
    ALTER TABLE source_table ADD COLUMN .. ;
    ALTER TABLE destination_table ADD COLUMN ... , ADD COLUMN ... ;
    DROP MATERIALIZED VIEW mv;
    CREATE MATERIALIZED VIEW ... TO destination_table AS SELECT... FROM source_table ...;
  • https://t.me/clickhouse_ru
    Лучше использовать unique
    https://clickhouse.tech/docs/en/sql-reference/aggregate-functions/reference/uniq/
    uniq | ClickHouse Documentation

    uniq Calculates the approximate number of different values of the argument. uniq(x[, ...]) Arguments The function takes

  • спасибо, применю её, однако беда с ошибкой не исчезла
  • @satanch #214643 05:07 PM, 19 Apr 2021
    я уже явно указал имя столбца uuid - db.tbl.uuid, но все равно оно же(
  • @satanch #214644 05:09 PM, 19 Apr 2021
    может он теряет столбец группировки, так как я сообщил о его имени сам, и в таблице такого столбца нет
  • нет

    больше не буду флудить здесь, если кто-то сможет помочь, буду благодарен
  • https://t.me/clickhouse_ru
    запятая лишнияя после as uniqs
  • я идиот, спасибо
  • https://t.me/clickhouse_ru
    @sirnie_sosisochki #214650 06:47 PM, 19 Apr 2021
    Подскажите плз, можно ли при выставлении привелегий роли задавать имена таблиц регуляркой?
  • https://t.me/clickhouse_ru
    это jdbc драйвер. Там в настроках grip надо поставить socket_timeout=300000 ( в мс)
  • https://t.me/clickhouse_ru
    зависит от того с каким синтаксисом сделано view (с to или нет) и какое поле добавлять, метрику или дименшин
  • https://t.me/clickhouse_ru
    кажется не, либо * , либо имя
  • @amberon #214655 08:01 PM, 19 Apr 2021
    Подскажите, можно ли что-то сделать для оптимизации в ситуации, когда партиции по дням, ключ-ордер допустим по A,B который эффективен 90% времени, но иногда нужно сагреггировать при B=.. без ограничений по времени, при этом спектр значений B ограничен сотней, но они равномерно присутствуют по всей таблице
  • https://t.me/clickhouse_ru
    тут нечего оптимизировать. Даже если все поменять, лучше не станет.
  • @amberon #214657 08:14 PM, 19 Apr 2021
    Окей, спасибо..
  • https://t.me/clickhouse_ru
    Может вам поможет MV?
    Группировка за всё время по низко-кординальной колонке - типичный юз-кейс кмк
  • @amberon #214659 09:07 PM, 19 Apr 2021
    materialized view? Я как раз сейчас смотрю на этот счёт. Но хотелось бы чтобы был рефреш интервал какой-то настраиваемый, чтобы не постоянно обновлялся, не создавал нагрузку
  • https://t.me/clickhouse_ru
    @peter_ll #214660 09:09 PM, 19 Apr 2021
    А там с нагрузкой всё ок - он по инсерту на условно дельту работает а не полностью рефрешит как в рдбмс
  • https://t.me/clickhouse_ru
    @peter_ll #214661 09:13 PM, 19 Apr 2021
    Но если хочется больше контроля - SummingMergeTree
  • Для всего сервера "триггер" будет срабатывать 150 раз в минуту - 30 вставок в минуту * 5 баз.. Как-то легкомысленно кажется такое вешать. Да и нет нужды чаще раза в пару минут обновлять. Наверное придется скриптом трогать
  • погляжу тоже, спасибо
  • https://t.me/clickhouse_ru
    как раз мат.вью без SummingMergeTree смысла особого не имеет
  • 20 April 2021 (188 messages)
  • @sergeyomarov #214665 12:12 AM, 20 Apr 2021
    Здравствуйте, подскажите Есть ли возможность развернуть массив неопределенной длинны в колонки ?
  • https://t.me/clickhouse_ru
    нету.

    Вообще SQL предполагает что кол-во колонок в результате и их типы известны до выполнения. Иначе реляционность ломается.
  • https://t.me/clickhouse_ru
    @den_crane #214668 12:42 AM, 20 Apr 2021
    Human verification

    Stack Overflow | The World’s Largest Online Community for Developers

  • https://t.me/clickhouse_ru
    @kuzmas89 #214670 05:36 AM, 20 Apr 2021
    Всем привет! Кто может подсказать про ReplacingMergeTree? В доке написано, что этот движок не гарантирует отсутствие дубликатов. Это так и осталось? Если так, то нет ли другого варианта, возможно, отсекать кликхаусом дубликаты записей (так же по ключу сортировки или как-то по-другому)
  • https://t.me/clickhouse_ru
    @Gulshan5k #214671 05:39 AM, 20 Apr 2021
    Добрый день, подскажите пожалуйста как можно решить такие ошибки
  • https://t.me/clickhouse_ru
    @Gulshan5k #214672 05:39 AM, 20 Apr 2021
    invokehttp.java.exception.message
    IOException thrown from InvokeHTTP[id=3a0966a1-6338-3490-8811-8115f338bc44]: java.net.SocketException: Broken pipe (Write failed)

    строка вставки:

    http://nn.nn.nnn.nn:8123/?format_csv_delimiter=;&max_partitions_per_insert_block=0&format_csv_allow_double_quotes=0&date_time_input_format=best_effort&receive_timeout=36000&send_timeout=360000&query=INSERT
  • Да, так и осталось. Отсекается, например через select * from tab order by fld1, fld2 limit 1 by fld1, fld2
  • https://t.me/clickhouse_ru
    Спасибо! Я тут еще узнал про FINAL, он тоже помогает отсечь?
  • Да, к сожалению
  • @ViacheslavNefedov #214676 06:13 AM, 20 Apr 2021
    А также может вызывать мержи
  • https://t.me/clickhouse_ru
    Не совсем понял, а почему к сожалению? Цель ведь отсечь как раз дубликаты)
  • https://t.me/clickhouse_ru
    @kuzmas89 #214678 06:13 AM, 20 Apr 2021
    если FINAL тоже это делает, то наоборот замечательно
  • @ViacheslavNefedov #214679 06:14 AM, 20 Apr 2021
    Так он не только группирует, но и слияние вызывает
  • https://t.me/clickhouse_ru
    Понял, а для этого запроса нужно предварительно у таблицы задать такой же ORDER BY ведь?
  • https://t.me/clickhouse_ru
    ORDER BY (fld1, fld2)
  • Не обязательно, разве что для скорости
  • https://t.me/clickhouse_ru
    Спасибо!
  • @cyberhuman1 #214684 06:59 AM, 20 Apr 2021
    Здравствуйте!
  • @cyberhuman1 #214685 07:00 AM, 20 Apr 2021
    > https://clickhouse.tech/docs/en/interfaces/cli/#cli-queries-with-parameters
    Похоже, не поддерживает Nullable - это баг?
    Command-Line Client | ClickHouse Documentation

    Command-line Client ClickHouse provides a native command-line client: clickhouse-client. The client supports command-lin

  • @cyberhuman1 #214687 07:01 AM, 20 Apr 2021
    clickhouse-client --param_test null

    SELECT {test:Nullable(Int64)}

    Query id: a6e4ecaa-ecf3-4dfe-8ea6-5ae2c9a83814

    Exception on client:
    Code: 457. DB::Exception: Value null cannot be parsed as Nullable(Int64) for query parameter 'test' because it isn't parsed completely: only 0 of 4 bytes was parsed:
  • @v_vasily #214688 08:05 AM, 20 Apr 2021
    Всем привет! Хочу поставить TTL для system.query_log и system.query_thread_log. Положил в /etc/clickhouse-server/config.d/querylog.xml вида
    <yandex>
    <query_log>
    <database>system</database>
    <table>query_log</table>
    <ttl>event_date + INTERVAL 30 DAY DELETE</ttl>
    </query_log>
    <query_thread_log>
    <database>system</database>
    <table>query_thread_log</table>
    <ttl>event_date + INTERVAL 30 DAY DELETE</ttl>
    </query_thread_log>
    </yandex>

    рестартанул сервер, но что то таблички не проапдетались. В какую сторону начинать копать? Заранее спасибо
  • надо так потому что. ключа ТТЛ нел.
    https://t.me/clickhouse_ru/209974
    Dmitry [Altinity] Titov in ClickHouse не тормозит

    Example for query_log. It drops partitions with data older than 14 days: $ cat /etc/clickhouse-server/config.d/query_log_ttl.xml <?xml version="1.0"?> <yandex> <query_log> <database>system</database> <table>query_log</table> <engine>ENGINE = MergeTree PARTITION BY (event_date) ORDER BY (event_time) TTL event_date + 14 day DELETE SETTINGS ttl_only_drop_parts=1 </engine> <flush_interval_milliseconds>7500</flush_interval_milliseconds> </query_log> </yandex> After that you need to restart ClickHouse and drop or rename the existing table system.query_log, then CH creates a new table with these settings. rename table system.query_log to system.query_log__1; Important part here is a daily partitioning PARTITION BY (event_date) and ttl_only_drop_parts=1. In this case ClickHouse drops whole partitions. Dropping of partitions is very easy operation for CPU / Disk I/O. Usual TTL (without ttl_only_drop_parts=1) is heavy…

  • @archangel37 #214691 08:45 AM, 20 Apr 2021
    Всем привет! Подскажите плиз, как можно передать результат запроса в качестве массива?
    Суть какая:
    SELECT
    arrayIntersect([1,2,3,4,5,6,7], [массив SELECT DISTINCT col FROM table]) AS intersect

    [массив] условно принимает значения 3, 5, 8, 10, 15
    из запроса хотелось бы получить 3, 5

    из документации вообще не нашёл, как результат запроса поместить в массив, может криво смотрел
  • Понял! Спасибо!
  • https://t.me/clickhouse_ru
    @DeSile #214693 09:17 AM, 20 Apr 2021
    Всем доброго дня!
    Подскажите, пожалуйста, можно ли каким-то образом компактнее хранить Array(UInt32), если значения в нем не превышают 1кк (то есть хватило бы точно меньше 4 байт на значение)
    При этом оставляя возможность пользоваться методами типа has()
  • https://t.me/clickhouse_ru
    можно, например, так
    SELECT
    arrayIntersect([1,2,3,4,5,6,7], (SELECT DISTINCT groupArray(col) FROM (select 1 col union all select 3 col))) AS intersect
  • @archangel37 #214696 09:35 AM, 20 Apr 2021
    спасибо большое! попробую
  • https://t.me/clickhouse_ru
    только не SELECT DISTINCT groupArray(col), а SELECT groupUniqArray(col) :)
  • @archangel37 #214698 09:44 AM, 20 Apr 2021
    очень признателен! да, работает как часы!
  • https://t.me/clickhouse_ru
    @ncuqb #214700 09:50 AM, 20 Apr 2021
    Всем, привет! Подскажите пожалуйста, может кто в курсе, где территориально хранятся данные ClickHouse? Через органический поиск не нашел этого ответа.
  • https://t.me/clickhouse_ru
    /var/lib/clickhouse/data
  • https://t.me/clickhouse_ru
    @ncuqb ↶ Reply to #214701 #214702 09:54 AM, 20 Apr 2021
    Спасибо за ответ. Но вопрос был немного в другом. Я сейчас выбираю облачную БД.
    БД нужна с территориальным расположением - Россия. В общем мой вопрос про страну/город . И можно ли указать чтобы данные хранились только в РФ?
  • @s4851 #214703 09:54 AM, 20 Apr 2021
    Через cloud яндекса можно управлять локацией
  • https://t.me/clickhouse_ru
    @ncuqb #214704 09:56 AM, 20 Apr 2021
    РФ там есть?
  • https://t.me/clickhouse_ru
    @ncuqb #214705 09:56 AM, 20 Apr 2021
    у bigquery допустим данные не хранятся в РФ. Отсюда и возник вопрос
  • https://t.me/clickhouse_ru
    @ncuqb #214706 10:06 AM, 20 Apr 2021
    Вопрос снят. Спросил у ТП Яндекса. В общем все данные у них в РФ. Датацентров в других странах у них нет
  • https://t.me/clickhouse_ru
    @Gulshan5k #214707 10:07 AM, 20 Apr 2021
    Добрый день, подскажите пожалуйста как можно решить такие ошибки
    invokehttp.java.exception.message
    IOException thrown from InvokeHTTP[id=3a0966a1-6338-3490-8811-8115f338bc44]: java.net.SocketException: Broken pipe (Write failed)
    строка вставки:
    http://nn.nn.nnn.nn:8123/?format_csv_delimiter=;&max_partitions_per_insert_block=0&format_csv_allow_double_quotes=0&date_time_input_format=best_effort&receive_timeout=36000&send_timeout=360000&query=INSERT
  • https://t.me/clickhouse_ru
    bigquery - это serverless облачный DWH от гугла (именно на google cloud)
    clickhouse - это DBMS, который может быть развернут на разных облаках и локально. На ваш вопрос - зависит не от CH, а от провайдера, предоставляющего доступ к нему (если говорим про облако)

    p.s. не совсем корректное сравнение в целом
  • https://t.me/clickhouse_ru
    @aleksey1302 #214710 10:35 AM, 20 Apr 2021
    Привет! Как посмотреть логи движка rabbitmq. Почему clickhouse не забирает данные из очереди?
  • @Vitamin_CAIG #214712 10:48 AM, 20 Apr 2021
    всем привет! обновился на 21.3.6.55 и начались тормоза. такое ощущение, что отвалилось партиционирование по времени. запрос SELECT now()-MAX(Time) FROM ... может выполняться до 300мс и читать вообще всю таблицу
  • https://t.me/clickhouse_ru
    нет, никаких слияния селект не вызывает. Селект просто финализирует по ключу, причем делает это например без учета партций
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    CODEC T64
  • https://t.me/clickhouse_ru
    тут ошибка java на клиенте.
    у вас проблемы начались после апргрейда на новую версию КХ?
    воспроизводится?
  • https://t.me/clickhouse_ru
    весь запрос покажите. У КХ никогда не было оптимизации для max( )
  • SELECT 'val',now()-MAX(Time) FROM table. а вообще стали тормозить интервальные запросы например
  • @Vitamin_CAIG #214721 11:45 AM, 20 Apr 2021
    WITH subtractMinutes(now(), 5) as nowStart, subtractHours(now(), 1) as hauStart, subtractDays(now(), 1) as dauStart, subtractDays(now(), 7) as wauStart, subtractMonths(now(), 1) as mauStart
    SELECT uniqExactIf(RemoteUser, Time >= nowStart) as M5AU,
    uniqExactIf(RemoteUser, Time >= hauStart) as HAU,
    uniqExactIf(RemoteUser, Time >= dauStart) as DAU,
    uniqExactIf(RemoteUser, Time >= wauStart) as WAU,
    uniqExact(RemoteUser) as MAU
    FROM table
    WHERE Time >= mauStart FORMAT JSON
  • @Vitamin_CAIG #214722 11:45 AM, 20 Apr 2021
    а вот этот запрос стал выполняться 5.6с
  • @Vitamin_CAIG #214723 11:45 AM, 20 Apr 2021
    WITH toDateTime(1618866000 - 1) as left, toDateTime(1618952399) as right
    SELECT
    toUInt32(toDateTime(toStartOfDay(addDays(Time, 1)))) * 1000 as t,
    replaceRegexpOne(Request, '/events/([^?]+).*', '\\1') as Type,
    count()
    FROM table
    WHERE
    Time BETWEEN toDateTime(toStartOfDay(left)) and right
    and Request like '/events/%' and (Status = 200)
    and Status = 200
    GROUP BY
    t,
    Type
    ORDER BY
    t FORMAT JSON
  • @helloworld2024 #214725 12:18 PM, 20 Apr 2021
    Привет всем, у нас бегает кликхаус в кубике, а есть какие-то best practices как бэкапы настраивать в таком случае?
  • https://t.me/clickhouse_ru
    Привет! clickhouse-backup вторым контейнером в поде у нас (если я правильно понял что такое кубик)
  • @helloworld2024 #214727 12:19 PM, 20 Apr 2021
    да, так и сделано сейчас, а как вы его запускаете?
  • https://t.me/clickhouse_ru
    @ilysha_v #214728 12:20 PM, 20 Apr 2021
    кроном из контейнера. Но это н е очень нравится, смотрим сейчас на его http api + k8s cron job
  • @helloworld2024 #214729 12:20 PM, 20 Apr 2021
    а почему не нравится? Ну то есть из другого пода стучаться в pod кликхауса, в контейнер где backup так?
  • https://t.me/clickhouse_ru
    @ilysha_v #214730 12:21 PM, 20 Apr 2021
    с кроном приходится свой докер имадж собирать, и нужен какой то доп инструмент мониторинга того, что бекапы реально собираются
  • https://t.me/clickhouse_ru
    не, бэкапер прям в том же поде что и кх живёт. Мы pvc используем, это единственный (известный мне) способ доступ из разных контейнеров получить
  • @helloworld2024 #214732 12:22 PM, 20 Apr 2021
    ну бэкапер сам, да, а cronjob где живет?
  • @helloworld2024 #214733 12:23 PM, 20 Apr 2021
    если это cronjob кубернетиса
  • https://t.me/clickhouse_ru
    @ilysha_v #214734 12:24 PM, 20 Apr 2021
    а, да, cronjob будет в отдельном контейнере. Будет щупать api бекапера, открытый через service
  • https://t.me/clickhouse_ru
    @ilysha_v #214735 12:24 PM, 20 Apr 2021
    но мы пока это не сделали, только собираемся
  • https://t.me/clickhouse_ru
    @ajIeks #214737 12:30 PM, 20 Apr 2021
    Привет всем, а с какой версии поддреживается Nullable в словарях?

    DB::Exception: Unknown type Nullable(Int8) (version 20.11.4.13 (official build))
  • понял, спасибо, так и сделаем, только единственное пока не понял, надо ли какую--то логику дописывать, я пока вижу что /backup/upload/ требует туда какой конретно бэкап прислать
  • @helloworld2024 #214739 12:35 PM, 20 Apr 2021
    в смысле чтобы дифы выгружать каждый час к примеру
  • https://t.me/clickhouse_ru
    @ExplosiveJam #214740 12:38 PM, 20 Apr 2021
    Привет. Есть какие-то встроенные способы ограничить максимальный размер базы данных на диске?
  • https://t.me/clickhouse_ru
    прямо вот по размеру ... наверное нет
    но есть TTL для таблиц и для столбцов, можно по времени ограничивать

    https://clickhouse.tech/docs/en/sql-reference/statements/create/table/#ttl-expression
    TABLE | ClickHouse Documentation

    CREATE TABLE Creates a new table. This query can have various syntax forms depending on a use case. By default, tables a

  • https://t.me/clickhouse_ru
    На самом деле, мы тут как раз проверили гипотезу о маунте одной pvc в разных подах при выставлении правильной podAffinity, чтобы попадали на одну ноду. Работает.
  • https://t.me/clickhouse_ru
    @ilysha_v #214743 12:49 PM, 20 Apr 2021
    тут я полагаю от реализации зависит. В GCP можно только либо read-write строго к одному поду, либо read only ко многим подам
  • https://t.me/clickhouse_ru
    @abubacabrus #214744 12:50 PM, 20 Apr 2021
    Нет
  • https://t.me/clickhouse_ru
    @abubacabrus #214745 12:50 PM, 20 Apr 2021
    У нас AWS вообще
  • https://t.me/clickhouse_ru
    @abubacabrus #214746 12:52 PM, 20 Apr 2021
    Там multi-attach недавно завезли, а поддерживается он емнип только в CSI провайдере, на который мы не перешли. Попробуйте просто скедулить под с clickhouse-backup на ту же ноду
  • https://t.me/clickhouse_ru
    @ilysha_v #214747 12:52 PM, 20 Apr 2021
    глянул доки - там теперь действительно ReadWriteOnce -- the volume can be mounted as read-write by a single node
  • https://t.me/clickhouse_ru
    @ilysha_v #214748 12:52 PM, 20 Apr 2021
    спасибо!
  • https://t.me/clickhouse_ru
    Странно. Я сомневаюсь что это из за апгрейда
  • ошибку я нашел, но стало непонятно почему оно раньше тогда работало с приемлемой скоростью)
  • https://t.me/clickhouse_ru
    Вас невозможно понять. Какую ошибку. Вы о чем?
  • @helloworld2024 #214752 01:01 PM, 20 Apr 2021
    Что-то я смотрю на clickhouse backup, он дифы не умеет получается? Каждый раз полная таблица?
  • https://t.me/clickhouse_ru
    @DeSile ↶ Reply to #214717 #214753 01:06 PM, 20 Apr 2021
    Этот кодек не поддерживат массивы, или в новых версиях (20+) уже добавили поддержку?
  • @vadamlyuk #214754 01:11 PM, 20 Apr 2021
    Добрый день, не подскажете новичку, что делать, если clickhouse-client висит и жрет при этом 100% cpu и 16GB памяти на запросе quit

    данных вообще нет, оригинальные данные дефолтные + таблица на 2 записи

    Как дебажить и в какую сторону копать

    ClickHouse client version 21.4.3.21 (official build).
    Connecting to localhost:9000 as user default.
    Connected to ClickHouse server version 21.4.3 revision 54447.
  • https://t.me/clickhouse_ru
    https://github.com/AlexAkulov/clickhouse-backup/search?q=diff
    Upload backup to remote storage: curl -s localhost:7171/backup/upload/<BACKUP_NAME> -X POST | jq .
    Optional query argument diff-from works the same as the --diff-from CLI argument.

    не то чтобы он вообще не умеет diff
    но скажем так, пока там диффами все сложно можно вот тут спросить у автора
    https://t.me/clickhousebackup
    Search · diff · AlexAkulov/clickhouse-backup

    Tool for easy ClickHouse backup and restore with cloud storages support - Search · diff · AlexAkulov/clickhouse-backup

  • Причем, clickhouse-server очень даже живой, при обращении curl’ом на порт 8123 данные отдает нормально
  • ключ сортировки таблицы не совпадал с колонкой, по которой делается выборка диапазона. т.е. запрос был по колонке Time, а сортировка по колонке TimeStamp, из которой материализуется колонка Time
  • Спасибо, нашел вот тут issue https://github.com/AlexAkulov/clickhouse-backup/issues/81

    Но как-то сильно много надо работы, чтоб делать один раз в день, скажем бэкап, а потом снапшоты каждый час
  • @helloworld2024 #214759 01:22 PM, 20 Apr 2021
    Может проще каждый час всю таблицу заливать)
  • @helloworld2024 #214760 01:24 PM, 20 Apr 2021
    Это нужен какой-то конвеншн по названию, скажем начало часа, привязывать к предыдущему еще каждый раз, сложна получается
  • @helloworld2024 #214761 01:24 PM, 20 Apr 2021
    Странно немного что такая частая задача не автоматизирована полностью
  • https://t.me/clickhouse_ru
    ну, вы представляете, но лет 10 назад, инкрементальный бекап считался "прорывом"

    вы можете попробовать в dev ветку clickhouse-backup патч прислать, я думаю его с радостью примут
  • да, оборзел совсем я, понимаю) я скорее о том, что это по идее первое что хотят для продакшна, патч, надо спросить у автора, может какой-то просто рецепт есть
  • https://t.me/clickhouse_ru
    @dphil #214765 01:40 PM, 20 Apr 2021
    Коллеги, а как проще всего из Kotlin (или Java) добавлять данные в CH, используя сложные типы CH (массивы и т.п.)
    Вроде бы JDBC тут не поможет, там нет этих типов.
    Или через какие input formats это проще сделать?
    Заранее спасибо.
  • https://t.me/clickhouse_ru
    Jdbc позволяет лить стрим в чем угодно. Tsv/parquet/native/rowbinary...
  • https://t.me/clickhouse_ru
    @dphil #214767 01:43 PM, 20 Apr 2021
    Хм, а как там будет выглядит поле-массив?
  • https://t.me/clickhouse_ru
    почему JDBC не поможет?
    https://github.com/ClickHouse/clickhouse-jdbc/search?q=array
    вроде есть там поддержка массивов
    Search · array · ClickHouse/clickhouse-jdbc

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

  • https://t.me/clickhouse_ru
    @dphil #214769 01:44 PM, 20 Apr 2021
    О, если есть, то ok. Вроде бы не стандартный тип.
  • https://t.me/clickhouse_ru
    select 1,2,3 format CSV
  • https://t.me/clickhouse_ru
    @dphil ↶ Reply to #214770 #214771 01:44 PM, 20 Apr 2021
    Не совсем понял, как это связано с добавлением массива в поле через JDBC
  • https://t.me/clickhouse_ru
    Это покажет как должен выглядеть стрим в нужном формате
  • https://t.me/clickhouse_ru
    @den_crane #214773 01:55 PM, 20 Apr 2021
    В jdbc проще эффективнее всего просто самому формировать стрим например в rowbinary и посылать через sendstream
  • https://t.me/clickhouse_ru
    @dphil #214774 02:01 PM, 20 Apr 2021
    Спасибо
  • https://t.me/clickhouse_ru
    Изменилась логика какие поля двигать в prewhere. Но все равно это не имеет отношения к max. Кстати max можно найти через orderby limit в этом случае используется индекс
  • @Yes789564 #214777 02:11 PM, 20 Apr 2021
    Добрый день. Помогите новичку. Есть основная таблица xxx_table с количеством записей 9 823 014 063. Тип ReplicatedMergeTree. PARTITION BY toYYYYMM(date), SETTINGS index_granularity = 8192
    Для этой таблицы пытаюсь сделать матвью с движком AggregatingMergeTree (с ограниченными предикатом записями, кол-во 7 534 660 705, и с меньшим кол-вом стоблцов + sum агрегации сжимая данные за день).
    Если создавать матвью с POPULATE, то запрос падает с нехваткой памяти выделенной под один запродс (60Гб).
    Вопрос: Почему не получается? На что нужно обратить внимание? Какой должен быть объем памяти?
  • https://t.me/clickhouse_ru
    https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf
    https://youtu.be/1LVJ_WcLgF8?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7597
  • Прямо на ваш вопрос это не отвечает, но, как альтернатива:
    1) Использовать явное задание MV (когда таблица-результат создаётся отдельно и независимо от MV). Судя по POPULATE - вы используете неявное задание.
    2) Вместо POPULATE заполнять результирующую таблицу с помощью INSERT ... SELECT ...
    из исходной, воспроизведя там ту же обработку, что и должно делать MV.
    Это и отлаживать куда проще, и контроля больше
  • https://t.me/clickhouse_ru
    @kbespalov #214781 02:35 PM, 20 Apr 2021
    Привет. А есть ли в CH данные про попытки вставить дубликаты в MergeTree ?
  • https://t.me/clickhouse_ru
    @kbespalov #214782 02:37 PM, 20 Apr 2021
    В материализованном представлении в x2 меньше данных чем в оригинальной таблице. Сходу сетую на дедубликацию. Оставляют ли какие-то артефакты INSERT с дублями?
  • https://t.me/clickhouse_ru
    по умолчанию дедупликация наследуется от исходной таблицы
  • https://t.me/clickhouse_ru
    @kbespalov #214784 02:40 PM, 20 Apr 2021
    да, у меня включена deduplicate on materialized view и на каждую вставку я генерирую строку уникальную для этой вставки
  • https://t.me/clickhouse_ru
    @kbespalov #214785 02:40 PM, 20 Apr 2021
    подкладываю ее в insert чтобы group by оно попало
  • https://t.me/clickhouse_ru
    @kbespalov #214786 02:41 PM, 20 Apr 2021
    читаю из кафки, грубо говоря у меня idempotency_key это

    topic:partition:offset
  • https://t.me/clickhouse_ru
    в логе КХ видны сообщения про skipped когда дедупликация срабатывает
  • https://t.me/clickhouse_ru
    @kbespalov #214788 02:42 PM, 20 Apr 2021
    посмотрю, спасибо
  • https://t.me/clickhouse_ru
    так, только что вспомнил, чтобы не мусорить актуальными датами, я выкрутил date и datetime в 0, то есть та часть, которая идет про идемпотентность уходит в парт 1970 года

    hash на дедубликацию относительно чего считается? надеюсь целиком от всего insert или бьет на парты и по отдельности?
  • @7699150 #214790 02:43 PM, 20 Apr 2021
    Кто-то сталкивалса с такой ошибкой при попытке сделать выборку из s3() ?

    The request signature we calculated does not match the signature you provided. Check your key and signing method.
  • https://t.me/clickhouse_ru
    @kbespalov #214792 03:07 PM, 20 Apr 2021
    Провел эксперимент, выполнил два INSERT

    INSERT INTO test_table (usage_date, user_id) VALUES ('1970-01-01', 'b'), ('2021-04-01', 'b')

    INSERT INTO test_table (usage_date, user_id) VALUES ('1970-01-01', 'a'), ('2021-04-01', ‘b’)
  • https://t.me/clickhouse_ru
    @kbespalov #214793 03:08 PM, 20 Apr 2021
    результатом должно было стать

    1970-01-01 b
    1970-01-01 a
    2021-04-01 b
    2021-04-01 b
  • https://t.me/clickhouse_ru
    @kbespalov #214794 03:08 PM, 20 Apr 2021
    но clickhouse сдедублицировал второй инсерт, причем не полностью
  • https://t.me/clickhouse_ru
    @kbespalov #214795 03:08 PM, 20 Apr 2021
    а напротив парта 2021-04
  • https://t.me/clickhouse_ru
    @kbespalov #214796 03:09 PM, 20 Apr 2021
    это ожидаемо?
  • https://t.me/clickhouse_ru
    Покажите SHOW CREATE TABLE таблицы test_table
  • @uname91 #214799 04:16 PM, 20 Apr 2021
    А это нормально, что внутри /var/lib/clickhouse/tmp/data/<databases>/<tables>/ скапливаются пустые папки tmp_merge_partition_X_Y_N чуть ли не со всех происходивших когда-то давно слияний?
    Кроме как впустую расходовать inodes они там зачем-то нужны, можно их почистить?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Какая версия? вообще не должно
  • https://t.me/clickhouse_ru
    @timofeevdmitry #214802 04:20 PM, 20 Apr 2021
    Маньяки 😁
  • Поначалу 20.4.* , последние несколько месяцев 20.10.7.4
  • https://t.me/clickhouse_ru
    @robscand #214805 04:25 PM, 20 Apr 2021
    Добрый день, подскажите, пожалуйста, как можно подключиться к clickhouse по бинарному протоколу (не через http) в гошке?
    Сейчас использую коннектор от мейлру, ругается на то, что не подходит протокол:
    connect, err := sql.Open("clickhouse", "tcp://127.0.0.1:9001")
  • https://t.me/clickhouse_ru
    @zholmyrza_t #214806 04:30 PM, 20 Apr 2021
    кто знает, в КХ есть возможность "предпросмотра" в том плане, что когда выполняешь запрос, КХ начнёт показывать какое-то кол-во результатов(к примеру 100), пока выполняет большой запрос
  • https://t.me/clickhouse_ru
    @YasnyjSokol #214807 04:33 PM, 20 Apr 2021
    select * from liquidity_test limit 10

    подойдет?
  • https://t.me/clickhouse_ru
    нет) запрос с лимитом 1млн допустим, и пока селект выполняется показывает первые 100
  • https://t.me/clickhouse_ru
    какой драйвер?
    почему 9001 порт?
  • https://t.me/clickhouse_ru
    кликхаус умеет отправлять уже готовые блоки данных во время выполнения запроса, но это зависит от самого запроса.
  • https://t.me/clickhouse_ru
    А когда последний раз изменялись папки в этой папке?
  • https://t.me/clickhouse_ru
    ага, тоже замечал, только не уловил закономерность
  • https://t.me/clickhouse_ru
    Закономерность простейшая, допустим есть оптимизация optimize_read_in_order, если ваш ORDER BY в запросе частично совпадает с ORDER BY таблицы, то кх может отправлять блоки по мере готовности, аналогично для GROUP BY и optimize_aggregation_in_order
  • @460254773 #214815 05:11 PM, 20 Apr 2021
    всем привет!
    подскажите пожалуйста
    где почитать, посмотреть
    как формируются *.bin файлы в распределённых таблицах
    почему на инсерт 10к строк создаются десятки - сотни бинов
    и в файле тоже вложена конструкция NSERT INTO
    но катом такой файл на пару строк всего
    хочется более подробно разобраться как это работает
  • https://t.me/clickhouse_ru
    Если в данных инсерта есть строки, относящиеся к разным партициям - будет создано несколько наборов файлов на диске.
  • хм, интересно
    но у нас вставки всегда на текущую дату
    в редких случаях когда затрагиваем несколько дат в разных партициях
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    нет, не так должно работать. У вас точно в insert 10к строк? Через что вы (api) инсерт делаете?
  • https://t.me/clickhouse_ru
    Пофиксили
    https://github.com/ClickHouse/ClickHouse/issues/22432
    Ошибка ClickHouse Code: 10, e.displayText() = DB::Exception: Not found column equals(catalog_id, 1041) in block · Issue #22432 · ClickHouse/ClickHouse

    Имеется Materialized база, данные реплицируюся нормально, в базе данные есть Если выполнить запрос SELECT DISTINCT P.id, P.name, P.catalog_id FROM products P WHERE P.name ILIKE '%Легкие%&am...

  • https://t.me/clickhouse_ru
    дистрибьютид таблица не знает про партиции
  • пайтон, go клиенты
    нативный в шелл скриптах
    разные консьюмеры на go, а писатели метрик пайтон юзают
  • https://t.me/clickhouse_ru
    я спрашиваю как вы инсерты делаете? почему вы думаете что у вас 10к строк в инсерте?
  • такие нашим разработчикам инструкции даны)
    батчи не менее 10К строк и не чаще одной вставки в сек
  • https://t.me/clickhouse_ru
    ну и заводите им баг. Чтобы разобрались как батч-инсерты делать в КХ
  • https://t.me/clickhouse_ru
    @monashev #214826 05:52 PM, 20 Apr 2021
    Привет.
    Не могу понять , как работать с AggregatingMergeTree. Создал вот такую таблицу:
    CREATE TABLE Test1
    (
    `ID` UInt64,
    `Counter` SimpleAggregateFunction(sum, UInt64),
    `Description` SimpleAggregateFunction(argMax, String, DateTime),

    `UpdatedTime` DateTime
    )
    ENGINE = AggregatingMergeTree
    ORDER BY (ID)

    Как из ней выбрать для заданного ID значение счётчика и последний вставленный Description ? По отдельности ясно как это сделать. Но одним запросом - нет.
  • https://t.me/clickhouse_ru
    А какая версия КХ? Можете еще пожалуйста приложить побольше логов во время выполнения такого запроса.
  • тогда так и сделаю
    то есть на одну вставку в дистриб таблицу, при условии что правильно сформирован батч-инсерт
    должно быть создано только по одному bin файлу в папках по каждому шарду
    никак не десятки?
  • https://t.me/clickhouse_ru
    `Description` SimpleAggregateFunction(argMax, String, DateTime),

    это вы сами такое придумали? SimpleAggregateFunction(argMax, String, DateTime)
    не будет работать.
  • https://t.me/clickhouse_ru
    да
  • спасибо
  • @vvvjhaq #214833 06:28 PM, 20 Apr 2021
    Добрый вечер, подскажите как сделать ({‘key1’:’value1’}, {‘key2’:’value2’}), map() еще не доступна(
  • https://t.me/clickhouse_ru
    key Array(String), value Array(String)
  • https://t.me/clickhouse_ru
    @den_crane #214836 07:12 PM, 20 Apr 2021
    map внутри это Array ( Tuple (K, V))
  • https://t.me/clickhouse_ru
    я так же делал, а в чём проблема?
  • https://t.me/clickhouse_ru
    И как это может работать? Продемонстрируете?
  • https://t.me/clickhouse_ru
    SimpleAggregateFunction поддерживает argMax. или проблема в том что val - дата?
    https://clickhouse.tech/docs/ru/sql-reference/data-types/simpleaggregatefunction/
    SimpleAggregateFunction(func, type) | Документация ClickHouse

    SimpleAggregateFunction(func, type) Хранит только текущее значение агрегатной функции и не сохраняет ее полное состояние

  • https://t.me/clickhouse_ru
    эта таблица создалась без проблем:
    CREATE TABLE simple (id UInt64, val SimpleAggregateFunction(argMax, String, DateTime)) ENGINE=AggregatingMergeTree ORDER BY id;
  • https://t.me/clickhouse_ru
    а инсерте вы что туда?
  • https://t.me/clickhouse_ru
    @den_crane #214843 07:33 PM, 20 Apr 2021
    что лежит в val ? Tuple(String, DateTime) ?
  • https://t.me/clickhouse_ru
    да tuple, но сейчас у меня последняя версия кликхауса и на таком инсерте у меня кликхаус падает
  • https://t.me/clickhouse_ru
    а как вы инсерт тупла делаете / собирались делать?
  • https://t.me/clickhouse_ru
    из мат вью
  • https://t.me/clickhouse_ru
    insert select тоже работал
  • https://t.me/clickhouse_ru
    починил свои проблемы (была зависшая мутация).
    отрабатывает без проблем:
    INSERT INTO simple SELECT 1, tuple('k', '2020-01-01 01:01:01:02');
  • https://t.me/clickhouse_ru
    @den_crane #214849 07:48 PM, 20 Apr 2021
    Received signal Segmentation fault impleAggregateFunction(argMax · Issue #23380 · ClickHouse/ClickHouse

    21.5.1.6605 create table A ( Description SimpleAggregateFunction(argMax, String, DateTime)) Engine=SummingMergeTree Order by tuple(); insert into A values ('a'), ('v&#39...

  • https://t.me/clickhouse_ru
    то что SimpleAggregateFunction работает с argMax раньше было написано только в английской и китайской документации. а сейчас смотрю уже и в русской поправили
  • спасибо, разбираюсь
  • https://t.me/clickhouse_ru
    ну я вообще не про это, я считал что надо явно писать Tuple в
    SimpleAggregateFunction(argMax, Tuple(String, DateTime))
  • https://t.me/clickhouse_ru
    что-то через раз рабоает
  • https://t.me/clickhouse_ru
    @den_crane #214854 07:53 PM, 20 Apr 2021
    и я все правильно думал (оказывается я даже тесты на это писал).

    create table A (k Int64, Description SimpleAggregateFunction(argMax, Tuple(String, DateTime))) Engine=SummingMergeTree Order by k;
    insert into A select 1, arrayJoin([('a', '2020-01-05 00:00:00'), ('v','2020-01-05 00:00:30'), ('zx','2020-01-05 00:00:00')]);
    optimize table A final;

    SELECT * FROM A
    ┌─k─┬─Description─────────────────┐
    │ 1 │ ('v','2020-01-05 00:00:30') │
    └───┴─────────────────────────────┘
  • https://t.me/clickhouse_ru
    @den_crane #214855 07:55 PM, 20 Apr 2021
    Ну и смысла в этом никакого SimpleAggregateFunction(argMax, Tuple(String, DateTime) это ровно тоже самое что AggregateFunction(argMax
  • https://t.me/clickhouse_ru
    @morozovsk #214856 07:56 PM, 20 Apr 2021
    так и я правильно думал :) только что-то при попытке сейчас вставить ещё одну запись ловлю сегфолт, но на какой-то старой версии всё работало
  • https://t.me/clickhouse_ru
    смысл в том что дынные лежат уже в нужном виде и не надо возиться с -Merge/-State
  • https://t.me/clickhouse_ru
    еще раз
    SimpleAggregateFunction(argMax, String, DateTime) === неправильно, никогда не работало и не будет.
    SimpleAggregateFunction(argMax, Tuple(String, DateTime)) -- правильно и обложено тестами и проверяется тысячи раз в день
  • https://t.me/clickhouse_ru
    кто ж знал, что обложено тестами а что нет, что правильно, а что нет. argMax работает как с двумя парметрами так и с туплом.
  • https://t.me/clickhouse_ru
    т.е. вы хотите сказать что раньше работало правильно даже без Tuple в SimpleAggregateFunction ? В какой версии?
  • https://t.me/clickhouse_ru
    скрин, который я вам сейчас скинул - 21.3.3.14, но больше одной записи не вставляется, ловлю сегфолт. раньше тестил на 20.4.5.36, ошибок не было
    раньше использовал даже вот такую штуку: AggregateFunction(argMaxIf, String, DateTime, UInt8)
    но в прод не ушло, возможно по этому не знал, что оно работает через раз
  • https://t.me/clickhouse_ru
    да блин да вы издеваетесь, только время блин теряю.
    причем тут AggregateFunction ?
  • https://t.me/clickhouse_ru
    @den_crane #214864 08:13 PM, 20 Apr 2021
    во всех версиях КХ SimpleAggregateFunction(argMax, String, DateTime) падает, никогда не работало

    AggregateFunction вообще не про это и вообще абсолютно другой код, с похожей функциональностью
  • https://t.me/clickhouse_ru
    это я для примера скинул, что я тестил разное, но пример не корректный, соглашусь. на этом предлагаю остановиться и не тратить ваше время и нервы :) бага заведена, всё хорошо
  • https://t.me/clickhouse_ru
    @bralbral #214866 08:23 PM, 20 Apr 2021
    Добрый вечер. Функция IPv4CIDRToRange(ipv4, Cidr) возвращает кортеж. Можно ли результат преобразовать как-то в массив, или ещё вот что-то, чтобы смело можно было написать ip in (...) Или ip between , используя средства только кликхауса? Куда смотреть ?

    На текущий момент делал достаточно топорно - загружал в словарь и искал вхождения.
  • https://t.me/clickhouse_ru
    наверное просто IPv4CIDRToRange ().1 and IPv4CIDRToRange().2 ?
  • https://t.me/clickhouse_ru
    Благодарю.
  • https://t.me/clickhouse_ru
    @ivanbrrr #214870 08:48 PM, 20 Apr 2021
    Всем привет.
    Подскажите оптимальную настройку для характеристики max-final-threads
    с учётом, что параллельных final запросов могут быть сотни
    на сервере КХ 64 CPU и 128 RAM
  • @amberon #214871 08:53 PM, 20 Apr 2021
    Правильно ли я понимаю что для разных таблиц на движке RabbitMQ нельзя задать разные rmq vhost? так как vhost ставится только в конфиге
    <rabbitmq>
    <username>root</username>
    <password>clickhouse</password>
    <vhost>clickhouse</vhost>
    </rabbitmq>
  • https://t.me/clickhouse_ru
    берете два кубика, бросаете, результат перемножаете, это будет оптимальная величина
  • https://t.me/clickhouse_ru
    то есть от 1 до 36?)
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    @avhaliullin #214875 10:30 PM, 20 Apr 2021
    Привет! Кажется стоит обновить документацию по s3 engine: в ней сейчас указано 6 параметров для движка (включая структуру). Но версия 21.4.4.30 знает только про 5 (структуры нет).
    BTW, это было очень больно дебажить, поскольку я положил креды в конфиг, и передавал в create 4 параметра (path, format, structure и compression). При попытке insert я получал SignatureDoesNotMatch и долго недоумевал, что происходит, и только когда решил бахнуть select - увидел Unknown format gzip, который навел на мысль о том, что с позиционными параметрами что-то не так - ch решил, что я принес креды в create
    S3 | ClickHouse Documentation

    S3 Table Engine This engine provides integration with Amazon S3 ecosystem. This engine is similar to the HDFS engine, bu

  • https://t.me/clickhouse_ru
  • 21 April 2021 (168 messages)
  • https://t.me/clickhouse_ru
    да, ошибки на nifi при вставке в КХ по http post. Подобные ошибки появляются при интенсивной вставке, может ли быть что КХ их отбивает?
    Бывает часть данных успевает записать и отваливается.

    Может ли параметр keep_alive_timeout влиять на эту проблему??

    IOException thrown from InvokeHTTP[id=3a0966a1-6338-3490-8811-8115f338bc44]: java.net.SocketException: Broken pipe (Write failed)

    http://Х.Х.Х.Х:8123/?format_csv_delimiter=;&max_partitions_per_insert_block=0&format_csv_allow_double_quotes=0&date_time_input_format=best_effort&receive_timeout=36000&send_timeout=360000&query=INSERT%20INTO%20...
  • https://t.me/clickhouse_ru
    @chubukov #214878 05:09 AM, 21 Apr 2021
    Привет, есть кластер из 3х реплик. Возможно ли его пересобрать в кластер из 2х шардов и 2х реплик как на картинке. Если просто конфигурацию поменять поможет?
  • Такой запрос:
    SELECT * FROM s3('https://backup.s3.amazonaws.com/data/topic/2021/01/01/00/s_user+2+0001190991.json.gz', 'KEY', 'SECRET', 'JSONEachRow', 'user_id Int64, name String, ts Int64', 'gzip')

    Такой эксепшн:
    Received exception from server (version 20.10.5):
    Code: 499. DB::Exception: Received from my.cluster.com:9000. DB::Exception: <?xml version="1.0" encoding="UTF-8"?>
    <Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message><AWSAccessKeyId>********************</AWSAccessKeyId><StringToSign>AWS4-HMAC-SHA256
  • @7699150 #214883 07:15 AM, 21 Apr 2021
    Версия КХ — 20.10.5
  • https://t.me/clickhouse_ru
    Huawei OBS: s3 SignatureDoesNotMatch when path has '=' · Issue #23283 · ClickHouse/ClickHouse

    CREATE TABLE default.ods_test_user ( mobile_number String ) ENGINE = S3('https://***.com/${bucket}/test/user/etl_date=*/*', '***', '***', 'CS...

  • https://t.me/clickhouse_ru
    @unamedrus #214885 07:28 AM, 21 Apr 2021
    кх не поддерживает = в url строке для s3
  • сори, не тот пример сбросил
    там = не должно быть, это ради интереса попробовал
    без = то же самое выдает
  • https://t.me/clickhouse_ru
    А какой там url?
  • https://t.me/clickhouse_ru
    А если
    https://backup.s3.amazonaws.com/data/topic/2021/01/01/00/s_user_name*.json.gz
    ?
  • сейчас пробну
    думаете плюсы мешают?
  • https://t.me/clickhouse_ru
    @unamedrus #214891 07:33 AM, 21 Apr 2021
    Возможно
  • не, то же самое
  • https://t.me/clickhouse_ru
    ну порт поменяйте на 8123
    будете ходить по http

    есть binary коннектор
    https://github.com/ClickHouse/clickhouse-go/
    GitHub - ClickHouse/clickhouse-go: Golang driver for ClickHouse

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

  • @DovgalyukA #214894 07:40 AM, 21 Apr 2021
    Всем привет!
    А существует в явном виде возможность conditional join'a? Хотел присоединить вторую табличку, но только для тех строк, где ключ-строка не пустой
    AS t2 ON (t1.session_id = t2.session_id) AND isNotNull(t1.session_id)
    Получаю:
    DB::Exception: Expected equality or inequality, got 'isNotNull(id)': While processing isNotNull(id).
    Для условия \and t1.id!=''\ аналогично.
  • По всей видимости плюсы декодируются как-то неправильно.
    Прописал URL со звездочкой, чтобы все файлы перебрал.
    В эксепшене вижу упоминание объекта — `s_user_name%200%200001188763.json.gz`

    В S3 он именован как s_user_name+0+0001188763.json.gz
  • https://t.me/clickhouse_ru
    Видимо так, можете написать это в тот issue в гитхабе?
  • @7699150 #214897 07:55 AM, 21 Apr 2021
    ага, допишу
  • @7699150 #214898 07:55 AM, 21 Apr 2021
    на выходе плюсы превращаются в пробелы
  • https://t.me/clickhouse_ru
    Вы скорее всего можете прямо в WHERE написать это условие и кх пропихнет его вверх в подзапрос
  • https://t.me/clickhouse_ru
    увы нет
  • https://t.me/clickhouse_ru
    @Mike_Er #214901 08:22 AM, 21 Apr 2021
    Добрый день, обновились до 21.4.4.30
    Начали получать вот такие вот ошибки
    2021.04.21 05:07:53.641943 [ 586494 ] {04d19dd0-692d-4dab-ab46-ac75cdc87eb8} <Error> DynamicQueryHandler: Code: 49, e.displayText() = DB::Exception: Can't
    initialize pipeline with empty pipe.: While executing Remote, Stack trace (when copying this message, always include the lines below):
    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x8914f0a in /usr/bin/clickhouse
    1. DB::QueryPipeline::init(DB::Pipe) @ 0x101b03f1 in /usr/bin/clickhouse
    2. DB::Connection::sendExternalTablesData(std::__1::vector<std::__1::unique_ptr<DB::ExternalTableData, std::__1::default_delete<DB::ExternalTableData> >, std::__1::allocator<std::__1::unique_ptr<DB::ExternalTableData, std::__1::default_delete<DB::ExternalTableData> > > >&) @ 0x1008c5db in /usr/bin/clickhouse
    3. DB::HedgedConnections::processNewReplicaState(DB::HedgedConnectionsFactory::State, DB::Connection*) @ 0x100a3f89 in /usr/bin/clickhouse
    4. DB::HedgedConnections::getReadyReplicaLocation(std::__1::function<void (int, Poco::Timespan const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>) @ 0x100a243f in /usr/bin/clickhouse
    5. DB::HedgedConnections::receivePacketUnlocked(std::__1::function<void (int, Poco::Timespan const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>) @ 0x100a323e in /usr/bin/clickhouse
    6. DB::RemoteQueryExecutorRoutine::operator()(boost::context::fiber&&) const @ 0xf11cb52 in /usr/bin/clickhouse
    7. void boost::context::detail::fiber_entry<boost::context::detail::fiber_record<boost::context::fiber, FiberStack&, DB::RemoteQueryExecutorRoutine> >(boost::context::detail::transfer_t) @ 0xf11ca2e in /usr/bin/clickhouse
    (version 21.4.4.30 (official build))
    Откатываться назад?
  • https://t.me/clickhouse_ru
    @Mike_Er #214902 08:28 AM, 21 Apr 2021
    запрос впроде простой, селект внутри селекта
  • https://t.me/clickhouse_ru
    EXPLAIN SYNTAX SELECT ...

    EXPLAIN AST SELECT...
    что показывает?
  • https://t.me/clickhouse_ru
    DB::RemoteQueryExecutorRoutine

    вы remote() или Distributed таблички используете?
  • https://t.me/clickhouse_ru
    @Mike_Er #214905 08:36 AM, 21 Apr 2021
    Дистрибутед. В запросе еще global in, если global убрать - работать начинает
  • https://t.me/clickhouse_ru
    @Mike_Er #214906 08:37 AM, 21 Apr 2021
    ┌─explain───────────────────────────────────────────────────────────────────────────────────────────┐
    │ SELECT │
    │ count(), │
    │ sum(vol) │
    │ FROM │
    │ ( │
    │ SELECT │
    │ count() AS cnt, │
    │ sum(size) AS vol │
    │ FROM ladnl.dnl_log │
    │ WHERE (event_date = '2021-04-20') AND (serial GLOBAL IN ( │
    │ ( │
    │ SELECT md5 │
    │ FROM ladnl.dnl_log │
    │ WHERE (event_date = '2021-04-20') AND (host_id = 191) AND (appid = 2143) AND (keynum > 0) │
    │ GROUP BY md5 │
    │ ) AS _subquery30)) │
    │ GROUP BY serial │
    │ HAVING count() = 73 │
    │ ) │
    └───────────────────────────────────────────────────────────────────────────────────────────────────┘

    ┌─explain────────────────────────────────────────────────────┐
    │ SelectWithUnionQuery (children 1) │
    │ ExpressionList (children 1) │
    │ SelectQuery (children 2) │
    │ ExpressionList (children 2) │
    │ Function count (children 1) │
    │ ExpressionList │
    │ Function sum (children 1) │
    │ ExpressionList (children 1) │
    │ Identifier vol │
    │ TablesInSelectQuery (children 1) │
    │ TablesInSelectQueryElement (children 1) │
    │ TableExpression (children 1) │
    │ Subquery (children 1) │
    │ SelectWithUnionQuery (children 1) │
    │ ExpressionList (children 1) │
    │ SelectQuery (children 5) │
    │ ExpressionList (children 2) │
    │ Function count (alias cnt) (children 1) │
    │ ExpressionList │
    │ Function sum (alias vol) (children 1) │
    │ ExpressionList (children 1) │
    │ Identifier size │
    │ TablesInSelectQuery (children 1) │
    │ TablesInSelectQueryElement (children 1) │
    │ TableExpression (children 1) │
    │ Identifier ladnl.dnl_log │
    │ Function and (children 1) │
    │ ExpressionList (children 2) │
    │ Function equals (children 1) │
    │ ExpressionList (children 2) │
  • https://t.me/clickhouse_ru
    @Mike_Er #214907 08:37 AM, 21 Apr 2021
    │ Identifier event_date │
    │ Literal '2021-04-20' │
    │ Function globalIn (children 1) │
    │ ExpressionList (children 2) │
    │ Identifier serial │
    │ Subquery (children 1) │
    │ SelectWithUnionQuery (children 1) │
    │ ExpressionList (children 1) │
    │ SelectQuery (children 4) │
    │ ExpressionList (children 1) │
    │ Identifier md5 │
    │ TablesInSelectQuery (children 1) │
    │ TablesInSelectQueryElement (children 1) │
    │ TableExpression (children 1) │
    │ Identifier ladnl.dnl_log │
    │ Function and (children 1) │
    │ ExpressionList (children 4) │
    │ Function equals (children 1) │
    │ ExpressionList (children 2) │
    │ Identifier event_date │
    │ Literal '2021-04-20' │
    │ Function equals (children 1) │
    │ ExpressionList (children 2) │
    │ Identifier host_id │
    │ Literal UInt64_191 │
    │ Function equals (children 1) │
    │ ExpressionList (children 2) │
    │ Identifier appid │
    │ Literal UInt64_2143 │
    │ Function greater (children 1) │
    │ ExpressionList (children 2) │
    │ Identifier keynum │
    │ Literal UInt64_0 │
    │ ExpressionList (children 1) │
    │ Identifier md5 │
    │ ExpressionList (children 1) │
    │ Identifier serial │
    │ Function equals (children 1) │
    │ ExpressionList (children 2) │
    │ Function count (children 1) │
    │ ExpressionList │
    │ Literal UInt64_73 │
    └────────────────────────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    похоже на баг в GLOBAL ...

    думаю стоит упростить запрос до минимально воспроизводимого и сделать issue на github
  • https://t.me/clickhouse_ru
    @nyoroon #214909 09:00 AM, 21 Apr 2021
    добрый день!
    подскажите, почему такой запрос:
    SELECT
    event_time, abs(runningDifference(event_time)) AS delta, rb, mu
    FROM (
    SELECT event_time, formatReadableSize(read_bytes) AS rb, formatReadableSize(memory_usage) AS mu
    FROM clusterAllReplicas('sosisa', 'system', 'query_log')
    WHERE
    event_date = today()
    AND event_time >= now() - INTERVAL 1 HOUR
    AND ProfileEvents.Values[indexOf(ProfileEvents.Names, 'SelectQuery')] = '1'
    AND user = 'kotique'
    ORDER BY event_time ASC
    LIMIT 25
    )
    не всегда считает runningDifference (местами он просто 0 как будто разные блоки)?
  • https://t.me/clickhouse_ru
    @nyoroon #214910 09:01 AM, 21 Apr 2021
    можно какой-нибудь костыль вкорячить или так с этим и жить?
  • https://t.me/clickhouse_ru
    optimize_read_in_order=0?
  • https://t.me/clickhouse_ru
    то же самое
  • https://t.me/clickhouse_ru
    @nyoroon #214913 09:04 AM, 21 Apr 2021
    вот пример ответа https://pastebin.com/M9qi44yD
    2021-04-21 11:04:04 0 68.10 GiB 5.35 GiB2021-04-21 11:05:01 57 68.13 GiB 5.36 - 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
    @peter_ll #214914 09:17 AM, 21 Apr 2021
    ребят, такой вопрос:
    расследую Exception: Cannot provide query execution status. The query's node <path> has been deleted by the cleaner since it was finished (or its lifetime is expired).
    ловится рандомно на дистрибьютед DDL (version 20.12.4.5)
    в квэри-логе родительский запрос:
    QueryStart - 2021-04-21 08:05:44.397523
    ExceptionWhileProcessing - 2021-04-21 08:05:44.456042
    т.е. получает эксепшен через 58 мс
    * причем дочерний квэрик (типа /* ddl_entry=query-XX */ ...) пришел (из ЗК как понимаю) и выполнился без проблем на этой ноде и по остальным в кластере
    ** на ноде-инициаторе запроса - дочерний начался даже раньше чем получен эксепшен на родительский запрос
    QueryStart = 2021-04-21 08:05:44.423589
    QueryFinish = 2021-04-21 08:05:44.735141
    =====
    вопросы:
    1 - может ли быть так что в ClickHouse/dbms/src/Interpreters/DDLWorker.cpp обращение if (!zookeeper->exists(node_path)) ждет, например, кворума или еще по какой-то причине не получает корректного ответа, при том что запрос который был сформирован из ЗК task_queue уже успел прийти и начать выполняться? Если да - есть советы по обходу?
    2 - есть ли способ добавить запросу какую-нибудь задержку/возможность ре-трая параметрами при проверке статуса? (помню был параметр timeout_before_checking_execution_speed - может на ЗК водится что-нибудь подобное) ну или возможно набор сеттингов для ЗК с потенциально лагающей сетью?
    3 - может ли засада таиться в том что разные процессы хэндлят и почему-то не договорились по нодам/локам/...?
  • @nr678 #214916 09:28 AM, 21 Apr 2021
    Добрый день! Подскажите какой опенсорс продукт есть для работы с олап-кубами. Интересует возможность выполнения запросов по данным, а не пивот, в котором вытянул данные и уже крутишь их. Смотрел Olaper, saiku, можете что-то посоветовать?
  • https://t.me/clickhouse_ru
    mondrian ?

    https://altinity.com/blog/accessing-clickhouse-from-excel-using-mondrian-rolap-engine
    Accessing ClickHouse from Excel using Mondrian ROLAP engine

    ClickHouse is a very powerful database for analytics. Microsoft Excel is one of the world’s most popular business applications. There are several ways to bring ClickHouse data to Excel spreadsheets. In this article we will explain how to connect Excel to ClickHouse using the Mondrian OLAP server. This approach has been pioneered in Sergei Semenkov’s[...]

  • @643935039 #214918 09:30 AM, 21 Apr 2021
    Коллеги добрый день! При добавлении настройки из примера документации

    <http_handlers>
    <rule>
    <url><![CDATA[/query_param_with_url/\w+/(?P<name_1>[^/]+)(/(?P<name_2>[^/]+))?]]></url>
    <method>GET</method>
    <headers>
    <XXX>TEST_HEADER_VALUE</XXX>
    <PARAMS_XXX><![CDATA[(?P<name_1>[^/]+)(/(?P<name_2>[^/]+))?]]></PARAMS_XXX>
    </headers>
    <handler>
    <type>predefined_query_handler</type>
    <query>SELECT value FROM system.settings WHERE name = {name_1:String}</query>
    <query>SELECT name, value FROM system.settings WHERE name = {name_2:String}</query>
    </handler>
    </rule>
    </http_handlers>

    отваливается порт 8123 и, соответственно запрос curl-ом из документации выполнить нет никакой возможности. Запрос на 9000 порт даёт отлуп -- мол, http запросы только на 8123! Непонятно, как это вылечить. Очень хочется воспользоваться хендлером. Подскажите пожалуйста! Версия свежая, установлена на чистую машину.
  • @nr678 ↶ Reply to #214917 #214919 09:32 AM, 21 Apr 2021
    Спасибо. Saiku тоже на mondrian. Может еще что есть?
  • https://t.me/clickhouse_ru
    Не знаю таких
  • https://t.me/clickhouse_ru
    @g_soos #214921 09:47 AM, 21 Apr 2021
    Добрый день, вопрос уточнение:
    Это правда, что при использовании clickhouse-copier единственный правильный способ пополнить xml для задач это получить список таблиц и engine через таблицу system.tables?
    И где-то был комментарий, что в новой версии copier не нужно создавать таблицу на целевом кластере
  • https://t.me/clickhouse_ru
    @ARyndin #214922 09:50 AM, 21 Apr 2021
    Привет. В какой таблице можно посмотреть какой пароль присвоен юзеру? В system.users только тип пароля (типа plaintext), самого пароля нет
  • https://t.me/clickhouse_ru
    @Kanuas_1 #214924 10:05 AM, 21 Apr 2021
    Всем привет, столкнулся с такой ошибкой:
    <Error> DynamicQueryHandler: Code: 999, e.displayText() = Coordination::Exception: Session expired (Session expired): While executing Tables, Stack trace (when copying this message, always include the lines below):
    при селекте: Select * from system.tables
    На гитхабе писалось что это исправленный баг
    Версия кликхауса 20.8.3.18
  • https://t.me/clickhouse_ru
    @Kanuas_1 #214925 10:06 AM, 21 Apr 2021
    Полный текст ошибки:
    <Error> DynamicQueryHandler: Code: 999, e.displayText() = Coordination::Exception: Session expired (Session expired): While executing Tables, 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) @ 0x13cd24bc in /usr/bin/clickhouse
    1. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0xa4346c9 in /usr/bin/clickhouse
    2. Coordination::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Coordination::Error, int) @ 0x1199f4e4 in /usr/bin/clickhouse
    3. Coordination::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Coordination::Error) @ 0x1199fb7a in /usr/bin/clickhouse
    4. ? @ 0xa042c1d in /usr/bin/clickhouse
    5. Coordination::ZooKeeper::get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<void (Coordination::GetResponse const&)>, std::__1::function<void (Coordination::WatchResponse const&)>) @ 0x119b6f65 in /usr/bin/clickhouse
    6. zkutil::ZooKeeper::getImpl(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> >&, Coordination::Stat*, std::__1::function<void (Coordination::WatchResponse const&)>) @ 0x119a5cb5 in /usr/bin/clickhouse
    7. zkutil::ZooKeeper::tryGet(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> >&, Coordination::Stat*, std::__1::shared_ptr<Poco::Event> const&, Coordination::Error*) @ 0x119a5e97 in /usr/bin/clickhouse
    8. DB::StorageReplicatedMergeTree::getMaxAddedBlocks() const @ 0x10fdb687 in /usr/bin/clickhouse
    9. DB::StorageReplicatedMergeTree::totalRows() const @ 0x10fdbef1 in /usr/bin/clickhouse
    10. DB::TablesBlockSource::generate() @ 0x1082660a in /usr/bin/clickhouse
    11. DB::ISource::work() @ 0x112719d7 in /usr/bin/clickhouse
    12. DB::SourceWithProgress::work() @ 0x113f356f in /usr/bin/clickhouse
    13. ? @ 0x1129478e in /usr/bin/clickhouse
    14. ? @ 0x11298748 in /usr/bin/clickhouse
    15. DB::PipelineExecutor::executeImpl(unsigned long) @ 0x11298f96 in /usr/bin/clickhouse
    16. DB::PipelineExecutor::execute(unsigned long) @ 0x112999ed in /usr/bin/clickhouse
    17. DB::executeQuery(DB::ReadBuffer&, DB::WriteBuffer&, bool, DB::Context&, std::__1::function<void (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::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&)>) @ 0x10e10699 in /usr/bin/clickhouse
    18. DB::HTTPHandler::processQuery(DB::Context&, Poco::Net::HTTPServerRequest&, HTMLForm&, Poco::Net::HTTPServerResponse&, DB::HTTPHandler::Output&) @ 0x117e3a2e in /usr/bin/clickhouse
    19. DB::HTTPHandler::handleRequest(Poco::Net::HTTPServerRequest&, Poco::Net::HTTPServerResponse&) @ 0x117e7260 in /usr/bin/clickhouse
    20. Poco::Net::HTTPServerConnection::run() @ 0x13c1466e in /usr/bin/clickhouse
    21. Poco::Net::TCPServerConnection::start() @ 0x13c11197 in /usr/bin/clickhouse
    22. Poco::Net::TCPServerDispatcher::run() @ 0x13c1158b in /usr/bin/clickhouse
    23. Poco::PooledThread::run() @ 0x13d481ae in /usr/bin/clickhouse
    24. Poco::ThreadImpl::runnableEntry(void*) @ 0x13d44ea9 in /usr/bin/clickhouse
    25. start_thread @ 0x7dd5 in /usr/lib64/libpthread-2.17.so
    26. __clone @ 0xfdead in /usr/lib64/libc-2.17.so
    (version 20.8.3.18)
  • https://t.me/clickhouse_ru
    А как правильно? Я хотел по-разному агрегировать разные столбцы: для счётчика считать сумму, а для текстового описания - иметь последнее значение.
  • https://t.me/clickhouse_ru
    @hemisis #214928 10:49 AM, 21 Apr 2021
    Коллеги, вопрос: как экранировать символы(<>) в конфигах клика? Пробовал и одинарные и двойные ковычки, что-то ничего дельного больше в голову не приходит
  • https://t.me/clickhouse_ru
    https://www.ibm.com/docs/en/was-liberty/core?topic=manually-xml-escape-characters

    Так это XML правила смотреть надо
    XML escape characters

    You need to escape specific XML characters in Liberty configuration files, such as the server.xml file because Liberty does not automatically escape these characters. If you use the Rational Application Developer tool, you do not need to manually escape these characters.

  • https://t.me/clickhouse_ru
    Оу, спасибище
  • https://t.me/clickhouse_ru
    такого нет, есть maxMap/argMax, но нужно что-то типа lastMap
    https://github.com/ClickHouse/ClickHouse/issues/21805
    lastMap, firstMap/anyMap, mergeMap/mapMerge for aggregating/merging arrays (like maxMap but for strings and etc) · Issue #21805 · ClickHouse/ClickHouse

    I'm working on simple backend for amplitude sdk. My backend can get events from clients, put it in clickhouse and I can view data in metabase. Use case I have: table events (MergeTree, os, ...

  • https://t.me/clickhouse_ru
    @morozovsk #214932 10:56 AM, 21 Apr 2021
    хотя наверно неправильно понял ваше сообщение. вам нужно SimpleAggregateFunction(argMax, Tuple(String, DateTime)) вместо SimpleAggregateFunction(argMax, String, DateTime)
  • https://t.me/clickhouse_ru
    Can't initialize pipeline with empty pipe.: While executing Remote (version 21.4.4.30 (official build)) · Issue #23431 · ClickHouse/ClickHouse

    CREATE TABLE ladnl.dnl_log ( event_date Date, date_id UInt64, tm FixedString(8), dt DateTime DEFAULT toDateTime(concat(toString(event_date), ' ', tm)), host_id UInt32, ip Int32, cc ...

  • https://t.me/clickhouse_ru
    @Gulshan5k #214934 11:42 AM, 21 Apr 2021
    Подскажите пожалуйста какой системный параметр КХ может отбивать concurrent сессии. У нас когда запускаются одновременных >3 сессий вставок в сервер, идет отбитие
  • https://t.me/clickhouse_ru
    Ошибку хоть покажите
  • https://t.me/clickhouse_ru
    @Gulshan5k #214936 11:44 AM, 21 Apr 2021
    на стороне КХ ошибок не видим, но стороне nifi IOException thrown from InvokeHTTP[id=3a0966a1-6338-3490-8811-8115f338bc44]: java.net.SocketException: Broken pipe (Write failed)
  • https://t.me/clickhouse_ru
    отбитие чего? ;) почек? пяток? копчика? гонга на ринге ;)
  • https://t.me/clickhouse_ru
    @Gulshan5k #214938 11:45 AM, 21 Apr 2021
    отбитие сессии
  • https://t.me/clickhouse_ru
    tcpdump -w clickhouse.pcap -i any port 8123
    и дальше смотреть где соединение рвется

    может у вас криво socket pool на nifi стороне реализован как нибудь

    ищите TCP RST и т.п. вещи
  • https://t.me/clickhouse_ru
    спасибо. попробуем протейсить
  • https://t.me/clickhouse_ru
    @Gulshan5k #214941 11:52 AM, 21 Apr 2021
    [root@bi-ckh1-02-2 clickhouse-server]# tcpdump -w clickhouse.pcap -i any port 8123
    tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes

    ---воспроизвели ошибку, но здесь ничего не отобразилось..
  • https://t.me/clickhouse_ru
    @Gulshan5k #214942 11:52 AM, 21 Apr 2021
    что это может значить?
  • https://t.me/clickhouse_ru
    @LookinaPolina #214945 12:03 PM, 21 Apr 2021
    Привет. Возник вопрос про работу select на распределенной таблице. Помогите, пожалуйста.

    Есть распределенная табличка, у удаленной таблицы задан ключ сортировки. Хочу поселектить все данные из таблички (возможно с потерями самых свежих изменений), но кусочками не больше фиксированного размера. Нашла, что можно делать select ... limit x offset y. Смогу ли я это сделать последовательно сдвигая offset или распределенность может мне помешать?
  • https://t.me/clickhouse_ru
    у вас файл создался clickhouse.pcap
    его откройте в wireshark
    и там ищите tcp rst и т.п. вещи
  • https://t.me/clickhouse_ru
    спасибо)
  • https://t.me/clickhouse_ru
    смотрите как это работает

    "distributed" таблица
    читает данные из "таблица" указанной в ENGINE Distributed('cluster_name',база, таблица) на всех шардах которые указаны в <remote_servers> секции в конфиге для заданного <cluster_name>

    в момент чтения на шарды отправляются переписанные SQL запросы у которых initial_query_id стоит как query_id от вашего исходного SQL запроса, запросы переписываются так чтобы максимальное кол-во работы было выполнено на шардах в подзапросах

    дальше результаты потоково читаются на ноде инициаторе distributed запроса
    и финальная аггрегация и сортировка уже идет на ней

    соответсвенно если вы хотите прочитать SELECT * FROM distribued_table ORDER BY key LIMIT X OFFEST Y
    то каждый раз у вас будет идти сортировка на ноде инициаторе

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

    сама конструкция LIMIT X OFFEST Y
    означает что сначала будет прочитано Y записей, потом еще X и эти X будут отданы клиенту...
    то есть 100 запросов LIMIT 10 OFFSET 10000
    прочитают 100 раз по 10000 записей

    зачем вам понадобилось вычитать ВСЮ таблицу с разбивкой на "кусочки"? вы хотите какой то экспорт сделать?
  • https://t.me/clickhouse_ru
    @robscand #214949 12:31 PM, 21 Apr 2021
    Добрый день. При создании юзера докерконтейнер с кликхаусом как настроить нового юзера? Нужно руками лезть в контенер в файл users.xml?
  • https://t.me/clickhouse_ru
    @LookinaPolina #214950 12:31 PM, 21 Apr 2021
    Да, хочется сделать экспорт, но нет уверенности, что вся таблица влезет в память.
  • https://t.me/clickhouse_ru
    А вариант
    SELECT * FROM distribued_table WHERE key > last_batch_greatest_key ORDER BY key LIMIT x WITH TIES
    лучше подходит? Правильно я понимаю, что в этом случае сортировка будет на каждом шарде, потом мержинг и лимитирование?
  • https://t.me/clickhouse_ru
    @ma110y #214952 12:44 PM, 21 Apr 2021
    помогите с проблемой. В цикле крутится обычный запрос на выборку с условием и группировкой. Через какое-то время падает с ошибкой

    Query error: Code: 241, e.displayText() = DB::Exception: Memory limit (total) exceeded: would use 21.19 GiB (attempt to allocate chunk of 4219266 bytes), maximum: 21.19 GiB: (while reading column earnings): (while reading from part /var/lib/clickhouse/data/rpdev/cumulative_table/123_3_3_0/ from mark 1 with max_rows_to_read = 8192): While executing MergeTreeThread (version 20.9.3.45 (official build))

    max_memory_usage не трогал. Вычитал что возможно это проблема из-за группировки. Выставил
    max_bytes_before_external_group_by = 8000000000
    distributed_aggregation_memory_efficient = 1

    ошибка та же
  • https://t.me/clickhouse_ru
    да, это лучше
    сначала на шарде будет отброшены все парты которые условию не удовлетворяют
    потом по x записей с каждого шарда
    финальная сортировка
    и x записей с клиента

    но надо проверять через
    SET send_logs_level='trace';
    SELECT ...
    происходит ли срабатывание LIMIT в подзапросах
  • https://t.me/clickhouse_ru
    сколько таких запросов парарлельно?

    SELECT formatReadableSize(memory_usage), query FROM system.query_log WHERE memory_usage > 0 ORDER BY event_time DESC LIMIT 100;
  • https://t.me/clickhouse_ru
    @364269317 #214955 12:56 PM, 21 Apr 2021
    Добрый день! Подскажите, работает ли tabix с версией 21.4.4.30? При попытке подключения выдаёт ошибку связанную с словарями. Code: 47, e.displayText() = DB::Exception: Missing columns: 'key' while processing query: 'SELECT name, key, attribute.names, attribute.types FROM system.dictionaries ARRAY JOIN attribute ORDER BY name ASC, attribute.names ASC', required columns: 'name' 'key', maybe you meant: ['name'], arrayJoin columns: 'attribute.names' 'attribute.types' (version 21.4.4.30 (official build))
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    @ma110y ↶ Reply to #214954 #214957 12:57 PM, 21 Apr 2021
    php крутит цикл. Должен быть 1. Но не исключено что к кх делает запрос кто-то еще
  • https://t.me/clickhouse_ru
    поменяли структуру таблицы
    вот в этом коммите
    https://github.com/ClickHouse/ClickHouse/commit/a53c90e509d0ab9596e73747f085cf0191284311

    думаю можно issue завести в tabix и в clickhouse github
    и автора коммита упомянуть
    Upated system.dictionaries table · ClickHouse/ClickHouse@a53c90e

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

  • https://t.me/clickhouse_ru
    попробуйте по времени вашей ошибки найти кто еще ест память
    вот так точное время ошибки найдете

    SELECT event_time, formatReadableSize(memory_usage), query FROM system.query_log WHERE memory_usage > 0 AND type!='QueryFinish' ORDER BY event_time DESC LIMIT 100;

    а потом просто

    SELECT event_time, formatReadableSize(memory_usage), query FROM system.query_log WHERE memory_usage > 0 AND event_time BETWEEN ${error_event_time} - INTERVAL 1 MINUTE AND $error_event_time + INTERVAL 1 MINUTE ORDER BY event_time DESC;
    и вот это еще посмотрите

    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-who-ate-my-memory
  • неужели никто не сталкивался?
  • https://t.me/clickhouse_ru
    @ma110y ↶ Reply to #214959 #214963 01:19 PM, 21 Apr 2021
    последнее падение в 2021-04-21 15:46:29
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    если интересно это "net/url" виноват. Чтобы использовать подобные символы в значениях в dsn, нужно сделать с ними urlencode, т.е. + это %2B. Тогда работает.
  • @uname91 #214966 01:34 PM, 21 Apr 2021
    Здравствуйте!
    Коллеги, получается, в случае каких-либо ошибок, препятствующих Distributed таблице (в асинхронном режиме) разослать по шардам bin-файлы очередного запроса, нет НИКАКОГО способа исправить эту ситуацию, кроме как удалить вручную файлы в файловой системе?
    А если продуктивная среда, где возможности удалять файлы внутри поддиректорий clickhouse нет? И проблемная асинхронная вставка так и будет до бесконечности перезапускаться каждые distributed_directory_monitor_max_sleep_time_ms миллисекунд?
  • @uname91 #214967 01:35 PM, 21 Apr 2021
    Допустим, в какой-то момент сработал предохранитель max_partitions_per_insert_block (одна из причин, которая может привести к невозможности асинхронной Distributed таблице разослать данные по шардам). После этого уже поздно max_partitions_per_insert_block в 0 выставлять в профиле - в настройках несработавшей вставки то осталось старое значение max_partitions_per_insert_block.
    initial_query_id не сработавшей вставки известен, но толку от этого, если всё время новое query_id порождается (и завершается ошибкой).

    SYSTEM STOP DISTRIBUTED - остановит все последующие вставки. Не годится.
    SYSTEM FLUSH DISTRIBUTED - выдаст exception (который и так постоянно по таймеру происходит), но bin файлы и настройки initial_query_id которые их не могут разослать, остались.

    https://github.com/ClickHouse/ClickHouse/issues/17380
    "Another issue that Distributed table tries to insert into underlying table indefinitely.
    It needs some stopper. For example after some number of tries/errors block insert into Distributed for example to signal to a client."
    More reliable async inserts into Distributed · Issue #17380 · ClickHouse/ClickHouse

    support fsync after insert into Distributed (i saw many times damaged files in distributed tables after hard restarts) mechanism similar to "Too many parts" when inserting to Dist...

  • https://t.me/clickhouse_ru
    Спасибо, завёл
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    DROP TABLE db.distributed_table ON CLUSTER
    вроде как почистит .bin файлы
    CREATE TABLE ... ON CLUSTER
    создаст каталоги с нуля

    вообще предполагается что скопления .bin файлов у вас быть не должно
    если <remote_servers> правильно настроено
    и кол-во реплик в каждом шарде больше 1
    то при падении 1й реплики, данные должны литься на вторую...

    а если у вас кривые настройки (авторизация, принимающая сторона не содержит таблицу, или содержит таблицу не той структуры), то это надо настройки править, а не .bin файлы удалять
  • https://t.me/clickhouse_ru
    @ma110y ↶ Reply to #214969 #214971 01:40 PM, 21 Apr 2021
    по всем запросом результаты меньше 3.75 MiB за исключением последнего, но там все запросы к system.query_log
  • Да, действительно! Что-то мне в голову не пришло:( - Distributed таблицу же не страшно прибивать и пересоздавать. Не догадался.
    Спасибо
  • https://t.me/clickhouse_ru
    правильно с tuple SimpleAggregateFunction(argMax, Tuple(String, DateTime))

    !!! но вообще я бы начал пробовать с SimpleAggregateFunction(anyLast,String)
  • https://t.me/clickhouse_ru
    SELECT formatReadableSize(memory_usage), toStartOfHour(event_time) h
    FROM system.query_log
    WHERE event_date = toDate(now())
    GROUP BY h

    никакого роста нет?
    SELECT event_time,formatReadableSize(CurrentMetric_MemoryTracking) FROM system.metric_log WHERE event_time BETWEEN toDateTime($last_error_time) - INTERVAL 1 MINUTE AND toDateTime($last_error_time);
  • https://t.me/clickhouse_ru
    @ma110y ↶ Reply to #214974 #214976 01:54 PM, 21 Apr 2021
    скрин - первый запрос отсортированный по памяти. Второй, пишет что нет такой таблицы
    DB::Exception: Table system.metric_log doesn't exist. (version 20.9.3.45 (official build))
  • https://t.me/clickhouse_ru
    она видимо у вас выключена
    она включается отдельной настройкой
    https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#metric_log
    Server Settings | ClickHouse Documentation

    Server Settings builtin_dictionaries_reload_interval The interval in seconds before reloading built-in dictionaries. Cli

  • https://t.me/clickhouse_ru
    @ma110y ↶ Reply to #214977 #214978 01:57 PM, 21 Apr 2021
    Без ее никак? Нельзя сейчас ребутнуть сервер
  • https://t.me/clickhouse_ru
    SELECT formatReadableSize(memory_usage) AS memory, count() AS queries, toStartOfMinute(event_time) t
    FROM system.query_log
    WHERE event_time BETWEEN toDateTime('2021-04-21 15:40:00') AND toDateTime('2021-04-21 15:50:00')
    GROUP BY t
  • https://t.me/clickhouse_ru
    ну что-то же у вас память отожрало

    ну еще посмотрите в /var/log/clickhouse-server/clickhouse-server.log
    на время вашей ошибки
    и посмотрите там какие запросы выполнялись непосдерственно до запроса который упал у вас по памяти
  • @anton_shelin #214982 02:38 PM, 21 Apr 2021
    Здравствуйте. А что произойдет с колонкой не State типа в AggregatingMergeTree во время мерджа строк?
  • Если добавить колонку дейттайм для ттл в такую таблицу, будет ли в ней lasr значение или что после мерджа?
  • https://t.me/clickhouse_ru
    @nyatmeat #214984 02:49 PM, 21 Apr 2021
    Всем привет, как правильно посчитать кол-во уникальных элементов в столбце с array.
    В голову пришло только
    select sum(arrayUniq(leadContactList)) from new_table
  • https://t.me/clickhouse_ru
    uniqExactArray(leadContactList)
  • https://t.me/clickhouse_ru
    @unamedrus #214986 02:50 PM, 21 Apr 2021
    > sum(arrayUniq(leadContactList))

    Посчитает сумму юников в каждой строке
  • https://t.me/clickhouse_ru
    @nyatmeat #214987 02:51 PM, 21 Apr 2021
    Ага, спасибо. не долистал доку
  • https://t.me/clickhouse_ru
    @ma110y ↶ Reply to #214981 #214988 02:56 PM, 21 Apr 2021
    поставил в php слип в 0.1 секунду. Не знаю связано это с этим или нет, но уже второй час без падений. Может ли быть такое что php отдавал много запросов в секунду?
  • если нужна последняя дата, попробуйте SimpleAggregateFunction(max, <date_column>)
  • https://t.me/clickhouse_ru
    а коннект к HTTP у вас закрывался ? или это все было в рамках одного HTTP коннекта?
  • https://t.me/clickhouse_ru
    @ma110y ↶ Reply to #214990 #214991 03:38 PM, 21 Apr 2021
    Коннект закрывается только по окончанию работы скрипта. Все в рамках одного Коннекта
  • @n_liybchenko #214992 03:47 PM, 21 Apr 2021
    Добрый день!
    Столкнулся с проблемой при при переводе тайм зоны.
    Код запроса:
    toDateTime(data, 'Europe/Moscow')
    Где data - поле которое переводим из UTS в 'Europe/Moscow.
    Но при компиляции функция toDateTime() возвращает то же самое значение что и принимает, то есть время не меняется.
    С чем может быть связано?
  • https://t.me/clickhouse_ru
    @ARyndin #214993 03:48 PM, 21 Apr 2021
    а можно ли в клике сделать так, чтобы один и тот же юзер мог авторизоваться как по керберосу, так и по паролю?
  • https://t.me/clickhouse_ru
    @Luck1ess #214994 04:09 PM, 21 Apr 2021
    Всем привет, а как лучше оптимизировать группировки, у меня есть узкая таблица, с двумя полями - id и value, но довольно объемная - несколько сотен гигов, хочется постоянно джойнить какие-то семплы айдишников по id и группировать по полю value, может ли как-то помочь AggregatingMergeTree ?
  • https://t.me/clickhouse_ru
    @phpcode83 #214996 04:25 PM, 21 Apr 2021
    Добрый вечер.
    Как можно очистить таблицу?
  • https://t.me/clickhouse_ru
    Как и везде, truncate
  • https://t.me/clickhouse_ru
    @phpcode83 #214998 04:26 PM, 21 Apr 2021
    TRUNCATE TABLE table выдает ошибку
    Table or Partition in default.table was not dropped.
  • https://t.me/clickhouse_ru
    @phpcode83 #214999 04:28 PM, 21 Apr 2021
    1. Size (69.07 GB) is greater than max_[table/partition]_size_to_drop (50.00 GB)
    2. File '/var/lib/clickhouse/flags/force_drop_table' intended to force DROP doesn't exist
  • https://t.me/clickhouse_ru
    @Luck1ess #215000 04:28 PM, 21 Apr 2021
    вроде тут все написано) как вариант можно сделать альтер тейбл делит, с всегда верным условием, но это будет долговато
  • https://t.me/clickhouse_ru
    @phpcode83 #215001 04:29 PM, 21 Apr 2021
    на сервер нет доступа чтобы изменить параметр. можно как то вывести какие партиции есть в базе чтобы по партициям поудалять?
  • https://t.me/clickhouse_ru
    @bralbral #215002 04:46 PM, 21 Apr 2021
    Добрый вечер. делаю селект в дистрибутивную таблицу. Запрос без group by, order by. Единственное , что есть это обращения к dictGetString(). Через некоторое время стабильно - "Attempt to read after eof: error". Немного погуглив нашел https://github.com/ClickHouse/ClickHouse/issues/5618. И действительно, в dmesg вижу что убили за OOM. Как я понял, конечного решения для таких запросов вообще нет ( настройки чтобы дампить на диск есть только для group by и order by. Что делать?
    Attempt to read after eof and click house services shutting down · Issue #5618 · ClickHouse/ClickHouse

    i am trying to group by a distributed tables (~100 million records ) so two interesting issues are happening 1)It is throwing "Attempt to read after eof: error" 2)click house serv...

  • select ... from system.parts ... group by partition
  • запустить запрос с трейсом, попробовать без словаря. вылетать может изза Join тоже например
    если непонятно - запустить запрос непосредственно на шарде и посмотреть почему он вылетает...
  • https://t.me/clickhouse_ru
    @erombombom #215005 05:26 PM, 21 Apr 2021
    Добрый вечер!
    Есть две таблицы statistics_filters MergeTree і statistics_counters SummingMergeTree

    SELECT
    sf.*,
    sc.*
    FROM (
    SELECT * FROM statistics_filters
    WHERE filter1 = 11
    AND date between '2020-01-01 00:00:00' AND '2021-04-01 00:00:00'
    AND filter2 in (1, 4)
    ) AS sf
    INNER JOIN (
    SELECT *
    FROM statistics_counters
    WHERE filter_id IN (
    SELECT id
    FROM statistics_filters
    WHERE filter1 = 11
    AND date between '2020-01-01 00:00:00' AND '2021-04-01 00:00:00'
    AND filter2 in (1, 4)
    )
    ) AS sc
    ON sf.id = bc.filter_id
    ORDER BY bc.counter1 DESC
    LIMIT 50;

    есть ли возможность упростить запрос (обойтись без дублирования запроса statistics_filters) при этом не джоинить всю таблицу statistics_counters.
    Данные нужны с обеих таблиц
  • https://t.me/clickhouse_ru
    @nyatmeat #215007 06:01 PM, 21 Apr 2021
    Есть ли более изысканный способ привести элементы массива к другому типу чем
    arrayMap(x -> toString(x), [1,2,3]) ?
  • @kruteev #215009 06:18 PM, 21 Apr 2021
    Кто-то может подсказать? При чтении таблицы падает такая ощибка Cannot read all data. Bytes read: 3638. Bytes expected: 7957.: while reading column ...
  • https://t.me/clickhouse_ru
    @Sshuvaev #215010 06:19 PM, 21 Apr 2021
    может памяти нехватает?
  • https://t.me/clickhouse_ru
    @Sshuvaev #215011 06:20 PM, 21 Apr 2021
    ну типа "хочу вычитать все, вычитал половину, из всего"
  • @kruteev #215012 06:26 PM, 21 Apr 2021
    Табличка читается но не целиком
  • @kruteev #215013 06:27 PM, 21 Apr 2021
    Например в ней 1000 записей. Первые 200 читаются а с 300 такая ошибка падает
  • @kruteev #215014 06:27 PM, 21 Apr 2021
    Памяти полно
  • https://t.me/clickhouse_ru
    Было такое при некорректном запросе где start было больше end
  • @vadim_cj #215016 06:29 PM, 21 Apr 2021
    1 - какой клиент ?
  • DataGrip другие таблы читаются. Ну я ее целиком без старта пытаюсь читаьь тоже ошибка
  • @kruteev #215018 06:33 PM, 21 Apr 2021
    Через https://github.com/smi2/phpClickHouse такая же ошибка при чтении падает
    GitHub - smi2/phpClickHouse: php ClickHouse wrapper

    php ClickHouse wrapper. Contribute to smi2/phpClickHouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @malkeshar #215019 06:47 PM, 21 Apr 2021
    Добрый вечер. Извините за нубский вопрос, а можно ли кликхауз попросить проитерировать список функций(avg, max, quantile(0.95) и т.д) над списком полей (read_bytes, read_rows, memory_usage и т.д), не перечисляя их вручную все со всеми. Не знаю, с какой стороны подобраться к задаче.
  • https://t.me/clickhouse_ru
    @malkeshar #215020 06:51 PM, 21 Apr 2021
    Так, видимо лямда и массивы мне в помощь, сейчас попробую
  • https://t.me/clickhouse_ru
    @yarlanzey #215021 06:59 PM, 21 Apr 2021
    Версия 20.12.4.5
    SELECT DISTINCT всегда дает верный результат
    SELECT GROUP BY иногда может давать меньше данных и через curl и через jdbc. ошибок в логах при этом нет. куда можно копать? размер результата curl - около 4GB
  • https://t.me/clickhouse_ru
    Не проитерировать, но все же
    https://clickhouse.tech/docs/ru/sql-reference/statements/select/#select-modifiers
    Синтаксис запросов SELECT

    Синтаксис запросов SELECT SELECT выполняет получение данных. [WITH expr_list|(subquery)] SELECT [DISTINCT [ON (column1,

  • https://t.me/clickhouse_ru
    апгрейд в 20.12.8.5 или read_backoff_min_latency_ms=0

    https://github.com/ClickHouse/ClickHouse/issues?q=is%3Aissue+read_backoff_min_latency_ms+is%3Aclosed
  • https://t.me/clickhouse_ru
    версия КХ ?
  • https://t.me/clickhouse_ru
    Спасибо большое 😌
  • 19.14
  • https://t.me/clickhouse_ru
    select version()
  • 19.14.13.4
  • https://t.me/clickhouse_ru
    а тип поля ? LowCardinality есть?
    таблица Distributed?
  • https://t.me/clickhouse_ru
    Спасибо большое! APPLY - отличная штука. Жаль, у меня более старая версия клика, но на будущее возьму на заметку
  • В одной таблице на поле Uint8 в другой на стринге. Нет
  • https://t.me/clickhouse_ru
    @Sshuvaev #215033 07:39 PM, 21 Apr 2021
    curl на 43gb - сильно...
  • https://t.me/clickhouse_ru
    skip индексы?
  • https://t.me/clickhouse_ru
    @Sshuvaev #215035 07:40 PM, 21 Apr 2021
    вм под курл наверное 64/128 ? (cpu/ram)
  • Нет
  • https://t.me/clickhouse_ru
    ошибка повторятся если запрос повторять?

    попробуйте сделать system drop mark cache интересно вылечит на какое-то время или нет
  • Да. Там таблица есть на 250гб все к херам не повиснет без кэша?) я не спец)
  • https://t.me/clickhouse_ru
    @bralbral #215040 07:49 PM, 21 Apr 2021
    read_backoff_min_latency_ms - не документирована ? в Eng/RU не нашел версиях. Где-то про неё подробно расписано ? Этот параметр уменьшает количество тредов на чтение, или я путаю.
  • https://t.me/clickhouse_ru
    Да

    https://github.com/ClickHouse/ClickHouse/pull/16423
    Balanced reading from JBOD by amosbird · Pull Request #16423 · ClickHouse/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en Changelog category (leave one): Improvement Changelog entry (a user-readable short description of the cha...

  • Трабла с таблицами тинилог
  • https://t.me/clickhouse_ru
    Благодарю.
  • https://t.me/clickhouse_ru
    так надо было с этого начинать.
    вы в tinylog данные храните?
    они не предназначены для хранения и портятся при рестартах
  • https://t.me/clickhouse_ru
    @den_crane #215045 08:12 PM, 21 Apr 2021
    и одновременных инсертах / селектах
  • Только временно в течении минуты и сливаем в мержтри
  • Рестарта не было залиты были часов 8 назад
  • Одновременных инсертов тоже все через очередь
  • @kruteev #215049 08:14 PM, 21 Apr 2021
    Процесс как раз повис на слитии в мержтри
  • @kruteev #215050 08:15 PM, 21 Apr 2021
    Инсерт фром тинилог не проходит падает эта ошибка при попытке по сути прочитать весь тинилог
  • @kruteev #215051 08:15 PM, 21 Apr 2021
    Все работало как часы почти год уже и вдруг
  • https://t.me/clickhouse_ru
    память ECC у сервера?
  • @kruteev #215053 08:18 PM, 21 Apr 2021
    Закончилась утром но ее оперативно увеличили в 2 раза
  • @kruteev #215054 08:18 PM, 21 Apr 2021
    И только после этого залили эти таблы
  • https://t.me/clickhouse_ru
    что? не понял что вы увеличили и что закончилось?
  • @kruteev #215056 08:19 PM, 21 Apr 2021
    Память на диске
  • https://t.me/clickhouse_ru
    ECC-память

    Оперативная память с коррекцией ошибок

  • Честно говоря без понятия как это выяснить, первый раз такой термин вижу. Кластер на облаке стоит яндекса
  • @kruteev #215059 08:23 PM, 21 Apr 2021
    Если подскажите где что посмотреть
  • https://t.me/clickhouse_ru
    @nyoroon #215061 08:39 PM, 21 Apr 2021
    подскажите, а в каком виде clickhouse посылает нужные ключи в http словарь если стоит layout cached?
  • https://t.me/clickhouse_ru
    @nyoroon #215062 08:39 PM, 21 Apr 2021
    может, у кого-нибудь есть пример такой апишки?
  • 22 April 2021 (212 messages)
  • https://t.me/clickhouse_ru
    @lytvyniukWebAnalyst #215063 03:01 AM, 22 Apr 2021
    Привет! Тут можно задать вопрос про деплой на cloud run flask?
    Хочу часть etl на python перенести с sql.
  • https://t.me/clickhouse_ru
    ну подробности внутрянки AWS скорее оффтопик
    а что конкретно хотите сделать то? ;)
    и что не получается?
  • https://t.me/clickhouse_ru
    @lytvyniukWebAnalyst #215065 03:12 AM, 22 Apr 2021
    это google cloud run)
    западелоил докер контейнер и выдает Service Unavailable, пример
    локальна просто запускается(
  • https://t.me/clickhouse_ru
    Лучше спросить тут
    https://t.me/goo_cloud_ru
    и тут
    https://t.me/gcp_ru
    Google Cloud Platform_ru

    Русскоязычное обсуждение google_cloud_platform

  • https://t.me/clickhouse_ru
    @lytvyniukWebAnalyst #215067 03:29 AM, 22 Apr 2021
    спс за чатики
  • https://t.me/clickhouse_ru
    так. это надо посмотреть
    честно говоря не ожидал увидеть HTTP в списке поддерживаемых источников для cached layout

    я бы предложил словарь на http выложить и сделать tcpdump -i any -w cached_dictionary.pcap port 80 и потом wireshark посмотреть
  • https://t.me/clickhouse_ru
    @BloodJazMan #215069 03:32 AM, 22 Apr 2021
    вариантов не много, либо в URL либо в query string
    либо в POST request body добавлять будет

    но скорее в URL или в query string
    с точки зрения REST это же GET запрос
  • https://t.me/clickhouse_ru
    Спасибо большое! проверим
  • https://t.me/clickhouse_ru
    @romul87 #215071 05:05 AM, 22 Apr 2021
    Народ, подскажите если у меня из кластера выпал шард, то при попытки записи в него данные теряются или клик понимает, что шарда нет и нужно идти в другой?
  • https://t.me/clickhouse_ru
    @Atervit #215072 05:40 AM, 22 Apr 2021
    Всем привет!
    Подскажите может ли clichouse-copier перенести данные из старой инсталляции в новую с изменением параметров таблицы PARTITION BY и ORDER BY:

    было:
    ENGINE = MergeTree()
    PARTITION BY Date
    ORDER BY (Date, intHash32(ClientID))

    стало:
    ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/{database}/{shard}/{table}', '{replica}')
    PARTITION BY (Date, jumpConsistentHash(cityHash64(toString(ClientID)), 64))
    ORDER BY (Date, intHash32(ClientID))

    Данные переливаются из Clickhouse 20.9.3.45 -> 21.4.3.21, но так же пробовал перенести данные в рамках одной инсталляции на версии 21.4.3.21.

    При использовании clichouse-copier 20.3, после нескольких минут после запуска копирования получаю записи в лог и копирование останавливается:
    2021.04.22 05:08:46.703051 [ 1 ] {} <Debug> ClusterCopier: Execute distributed DROP PARTITION: ALTER TABLE test_db.test_table DROP PARTITION ('2020-10-11',2)
    Насколья я понимаю clichouse-copier пытается проверить скопированные данные, но из-за изменения партиционирования это не выходит?

    При использовании clichouse-copier 21.4:
    2021.04.22 05:27:50.025991 [ 44 ] {} <Trace> StorageDistributed (.read_shard_0.destination_cluster.test_db.test_table): (node-01.clickhouse.example.com:9000) Cancelling query
    2021.04.22 05:27:50.026286 [ 44 ] {} <Debug> ClusterCopier: Partition ('2020-03-02',51) piece number 0 is PRESENT on shard N1 (having a replica node-01.clickhouse.example.com:9000, pull table test_db.table of cluster source_cluster
    2021.04.22 05:27:50.026317 [ 44 ] {} <Trace> Connection (node-01.clickhouse.example.com:9000): Connecting. Database: default. User: default
    2021.04.22 05:27:50.026920 [ 44 ] {} <Trace> Connection (node-01.clickhouse.example.com:9000): Connected to ClickHouse server version 21.4.3.
    2021.04.22 05:27:50.029163 [ 44 ] {} <Debug> StorageDistributed (.read_shard_0.destination_cluster.test_db.test_table): Joining background threads for async INSERT
    2021.04.22 05:27:50.029180 [ 44 ] {} <Debug> StorageDistributed (.read_shard_0.destination_cluster.test_db.test_table): Background threads for async INSERT joined
    2021.04.22 05:27:50.029194 [ 44 ] {} <Debug> StorageDistributed (.read_shard_0.destination_cluster.test_db.test_table): Joining background threads for async INSERT
    2021.04.22 05:27:50.029198 [ 44 ] {} <Debug> StorageDistributed (.read_shard_0.destination_cluster.test_db.test_table): Background threads for async INSERT joined
    2021.04.22 05:27:50.029203 [ 44 ] {} <Debug> StorageDistributed (.read_shard_0.destination_cluster.test_db.test_table): Removing pending blocks for async INSERT from filesystem on DROP TABLE
    2021.04.22 05:27:50.029296 [ 44 ] {} <Debug> StorageDistributed (.read_shard_0.destination_cluster.test_db.test_table): Removed
    2021.04.22 05:27:50.029676 [ 44 ] {} <Debug> StorageDistributed (.read_shard_0.destination_cluster.test_db.test_table): Auto-increment is 0
    2021.04.22 05:27:50.029723 [ 44 ] {} <Debug> ClusterCopier: Checking shard N1 (having a replica node-01.clickhouse.example.com:9000, pull table test_db.table of cluster source_cluster for partition ('2020-03-02',52) piece 0 existence, executing query: SELECT 1 FROM _local.`.read_shard_0.destination_cluster.test_db.test_table` WHERE ((Date, jumpConsistentHash(cityHash64(toString(ClientID)), 64)) = (('2020-03-02',52) AS partition_key)) AND (cityHash64(`Date`, intHash32(`ClientID`)) % 1 = 0 ) LIMIT 1
    2021.04.22 05:27:50.030999 [ 44 ] {} <Trace> InterpreterSelectQuery: Complete -> Complete
    Подобные записи будут постоянно в логе, но данные так и не начнут переноситься.

    Может быть есть какие-то рекомендации как лучше переносить таблицы с изменением PARTITION BY и ORDER BY?
  • https://t.me/clickhouse_ru
    В теле POST в формате из настроек будет отправлен список ключей
  • https://t.me/clickhouse_ru
    А как вы записываете данные на шард? Через distributed? Или приложение само пишет на разные шарды?
  • https://t.me/clickhouse_ru
    что значит "выпал шард"? в смысле clickhouse-server на хостах шарда запущен, но реплики шарда по сети недоступны для остальных реплик? или вы реплики шарда из remote_servers убрали на всех серверах?
  • https://t.me/clickhouse_ru
    @romul87 #215077 06:33 AM, 22 Apr 2021
    Я виду имею сервера стали полностью недоступны, где шард(сеть отвалилась, кто то выключил и тд)
  • https://t.me/clickhouse_ru
    о, спасибо, надо бы патч сделать в документацию
    потому что для какого нибудь REDIS и SQL понятно примерно что будет запрос по ключам и как
    а для HTTP не ясно было как оно работает
  • https://t.me/clickhouse_ru
    Через дистр, при чем дистр таблица на каждой реплике
  • https://t.me/clickhouse_ru
    Afaik: тогда данные останутся в очереди в distributed таблице ожидая возвращение шарда. В каталоге таблицы будут Бин файлы с запросами на выставку. Посмотрите, если есть зависшие(по mtime), то это ваш случай.
  • https://t.me/clickhouse_ru
    вы вставку делаете через ENGINE=Distributed таблицу
    ок. а какую библиотеку на клиенте используете?

    перед кластером clickhouse какой-то load balancer стоит типа chproxy? или напрямую ноды вибираете?

    каждый INSERT в Distributed
    порождает сначала временные файлы .bin на ноде инициаторе, в котором разбитые по sharding key данные лежат
    дальше эти данные пушатся на удаленные ноды из remote_servers
    если ноды недоступны то данные лежат в distributed в /var/lib/clickhouse/data/db/distributed_tabel_name/host+реплики:port/*.bin, пока ноды не будут доступны

    тут все подробно описано
    https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/
    Distributed | ClickHouse Documentation

    Distributed Table Engine Tables with Distributed engine do not store any data by their own, but allow distributed query

  • https://t.me/clickhouse_ru
    Выше все подробно расписали. Но если у вас шард состоит из больше, чем одной реплики, то данные уйдут на первую живую
  • @chghehe #215083 06:48 AM, 22 Apr 2021
    Можно ли сделать так, чтобы локальный КХ выступал в роли кэша для основного (удаленного) инстанса, который сам, когда нужно, синхронизируется с основной (удаленной) базой?
    Зачем это нужно: соединение до основного инстанса нестабильное, данных льется много и часто. Поэтому необходимо лепить какие-то свои буферизации с использованием примитивных средств, которые не функциональны (по ним, например, выборку не сделаешь). Что хочется: делать вставки и выборки из локального инстанса, а он бы предоставлял актуальные результаты, и выполнял бы в фоне вставки в основной инстанс.
  • https://t.me/clickhouse_ru
    Использовать два сервера и таблицу с репликацией?
  • https://t.me/clickhouse_ru
    Используем ivi библиотеку для флинка. Она на прямую льет в указанные дистр таблицы. Теперь сам отвечу, если дистр таблица будет не доступна данные будут откинуты в директорию с failed.
    P.S. при непродолжительных тестах, данные не откидывались в failed.
    Спасибо за информацию по дистр таблицам.
  • Репликация, как я понимаю, будет хранить все данные этой таблицы на обоих серверах? если так, то это (в моем случае) будет требовать слишком много места в локальном инстансе.
  • https://t.me/clickhouse_ru
    вы имеете ввиду папку failed на стороне apache flink?
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
    IMHO вы сами себе противоречите
    с одной стороны вам выборки по данным нужны
    с другой стороны вы данные вставлять не можете

    данные либо в кластере clickhouse
    либо нет

    может вам не все данные для выборок нужны?

    как вариант храните данные в промежуточном формате типа /data/table_name-YYYY-MM-DD-random_number.TSV.gz
    и делайте выборки из них через локальный clickhouse с использованием табличной функции`file(path='/data/table_name*.tsv.gz' )
    https://clickhouse.tech/docs/en/sql-reference/table-functions/file/
    а к удаленному серверу если он один через remoteSecure или remote ходите
    https://clickhouse.tech/docs/en/sql-reference/table-functions/remote/

    и делайте на локальном clickhouse instance выборку через
    SELECT ... FROM file(...) AS local
    WHERE
    UNION ALL
    SELECT ... remote(...) AS remote
    WHERE

    и в крон вставку в удаленный сервер делайте по cron
    можно даже средствами clickhouse

    INSERT INTO remote(....) SELECT ... FROM file(...)
    и потом тупо
    rm -rf *.tar.gz локально если данные вставились

    можно даже clickhouse server не поднимать на машине где данные аккумулируете
    а использовать clickhouse-local
    https://clickhouse.tech/docs/en/operations/utilities/clickhouse-local/
    file | ClickHouse Documentation

    file Creates a table from a file. This table function is similar to url and hdfs ones. file function can be used in SELE

  • Я, честно говоря, не понял, в чем противоречие. В порядке аналогии. Ядро процессора работает со своим ограниченным L1, получается любые данные, вставляет любые данные. А когда данные окажутся на реальном носителе и синхронизация между ядрами — вопрос другой. Это называется кэшем. Так вот, я интересуюсь, умеет ли КХ решать эту задачу своими средствами.
    Да, это чем-то похоже на репликацию, но у меня нет возможности хранить все данные в локальном инстансе
  • Сейчас я буферизую данные на вставку своими средствами, они лежат мертвым грузом и ждут момента отправки на основной инстанс. До этого времени эти данные недоступны для выборки.
    Я же хочу делать запросы по выборкам и вставкам только к локальному инстансу, а удаленный использовать, фактически, как хранилище.
    Если еще точнее. Я делаю сервис получения данных (таким образом абстрагируя клиента от КХ). Он будет вставлять и выбирать данные, но он не может решать задачу хранения большого объема данных.
  • Решение без буферизации вполне себе работает (когда данные напрямую летят в основную базу), но я хочу подстраховаться на случай сетевой недоступности базы. Т.к. в основном нужны данные не более чем за несколько суток.
  • @Melentyev #215095 07:56 AM, 22 Apr 2021
    Добрый день!
    Сориентируйте как подсчитать необходимый объем диска для КХ? Так же как подсчитать объем для индексов отдельно?
  • https://t.me/clickhouse_ru
    ну, посмотрите насколько медленно работает CPU относительно возможностей своего ALU
    когда данные в L1\L2 кеш не пролезают
    кеш мисс с точки зрения CPU очень дорогая в тактах операция

    теперь умножайте это все на 3-4 порядка, получите масштабы бедствия когда вам надо будет по вашей нестабильной сети на "локальный инстанс" что-то выбрать с удаленного

    решение для вашего случая я привел, вы уж его прочитайте
  • Да, я его прочитал, спасибо! Выглядит существенно лучше, чем то, как реализовано сейчас.
  • https://t.me/clickhouse_ru
    посчитать объем ваших сырых данных без сжатия можете?
    коэффициент сжатия в clickhouse обычно в районе x5
    вот так примерно и считайте

    если надо прямо точно
    то вставляйте данные живые
    и потом через system.disk и system.parts
    делайте запросы по которым сможете понять когда диск заполнится

    всякие системы мониторинга сейчас не плохо научились предсказывать через сколько времени диск заполнится
    https://www.zabbix.com/documentation/current/ru/manual/config/triggers/prediction
    https://github.com/nfrumkin/forecast-prometheus
    GitHub - nfrumkin/forecast-prometheus: A collection of analysis, and machine learning techniques for time series forecasting w/ Prometheus metrics

    A collection of analysis, and machine learning techniques for time series forecasting w/ Prometheus metrics - GitHub - nfrumkin/forecast-prometheus: A collection of analysis, and machine learning t...

  • https://t.me/clickhouse_ru
    https://clickhouse.tech/docs/en/operations/system-tables/parts/
    https://clickhouse.tech/docs/en/operations/system-tables/disks/
    system.parts | ClickHouse Documentation

    system.parts Contains information about parts of MergeTree tables. Each row describes one data part. Columns: partition

  • https://t.me/clickhouse_ru
    @agkucherov #215100 08:10 AM, 22 Apr 2021
    Ребят, можно ли как то быстро в клике вставить кучу данных в одну новую колонку в разные партиции таблицы?
  • @anton_shelin #215101 08:11 AM, 22 Apr 2021
    Привет. Есть материализованная вьюшка AggregatingMergeTree но селект с нее с groupby и мерджем агрегатов довольно долгий. Имеет ли смысла сделать с этого финального запроса еще одну материализованную вьюшку ReplacingMergeTree ?
  • В дополнение к рекомендации Slach выше добавлю, что в случае если на кону что-то серьёзное - sizing для будущего продуктива или типа того, то всё же стоит на практике проверять.
    Слишком много всего влияет на результат, чтобы теоретической прикидкой получилось бы более-менее точно угадать. Один лишь порядок полей в ORDER BY основной таблицы фактов (если схема данных у вас ещё не установилась) может радикально, в разы изменить сжатие данных.

    Причём стоит вдумчиво определять какие параметры тестового стенда должны соответствовать реальным. Так если вы в свою схему будете загружать небольшую выборку данных (по сравнению с размером, который эти же данные занимали бы для полной партиции), то может получиться отличающийся коэффициент сжатия. То есть по-хорошему для проверки должно быть не "загрузить 1 млн записей и посмотреть средний размер записи", а, например, "загрузить пару дней реальных данных в случае toYYYYMMDD партиционирования"
  • @and1by #215103 08:53 AM, 22 Apr 2021
    Всем привет. Подскажите, можно ли как добавить в первичный ключ поле timestamp типа DateTime но чтобы сотртировка ключа была DESC?
    Чтобы в запросе не делать orderBy(['timestamp' => SORT_DESC])
  • @and1by #215105 08:56 AM, 22 Apr 2021
    Или может как-то в фоне можно эту сотрировку добавить?
  • https://t.me/clickhouse_ru
    @nyatmeat #215106 09:11 AM, 22 Apr 2021
    Всем привет. Делаю вставку в таблицу где двумерный массив.
    Ругается на поле
    Code: 349, e.displayText() = DB::Exception: Cannot convert NULL value to non-Nullable type: while converting source column sharesInfoList to destination column sharesInfoList (version 20.9.2.20 (official build))
    Добавил проверку
    if(isNull(viewSharesJoin.sharesInfoList), [[]], viewSharesJoin.sharesInfoList) as sharesInfoList
    Но ничего не изменилось.
    Что я делаю не так?
    Nullable на массивы не применяется как я понимаю
  • https://t.me/clickhouse_ru
    Ну если думать о разного рода костылях, то можно попробовать такое решение: пишете в локальную таблицу с ограничением по сроку хранения данных(ттл в ваши несколько дней), над ней Матвью, которая пишет все данные из вашей таблицы в локальную distributed, а та в свою очередь пишет в удалённую. При недоступности удалённой ноды данные на вставку будут буферизироваться в distributed. Ну и сверху ещё какую-то Вью, если вам нужно данные получать из обеих таблиц, локальной и удаленной. Хер знает, что у этого решения с производительностью будет и что ещё на нем можно отхватить. //В общем, если я ничего не напутал здесь
  • @uname91 #215108 09:56 AM, 22 Apr 2021
    А какая генеральная линия партии в отношении традиционных (Ordinary) databases?
    Не планируется ли их, начиная с какой-то версии, совершенно искоренить?
    А то в актуальной документации об их существовании вообще нигде не упоминается - как-то тревожно...
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @ztseri #215110 10:05 AM, 22 Apr 2021
    Ребята а как грант выдать?
  • grant select on db.table to user username
  • https://t.me/clickhouse_ru
    @ztseri ↶ Reply to #215111 #215112 10:06 AM, 22 Apr 2021
    Тут же в sql запросе?
  • https://t.me/clickhouse_ru
    @Sablast #215114 11:13 AM, 22 Apr 2021
    подскажите из-за чего clickhouse-client мог перестать подключаться? причем без каких либо ошибок, просто проглатывает команду и тишина
  • а вы хотите через xml добавить прав?
  • сервер может лежит?
    Смотрели логи сервера?
  • https://t.me/clickhouse_ru
    через jdbc до сервер доступен, есть ощущение что это из-за того что вчера на машине шатался brew, а клиент из терминала не выгружался, а сейчас вот вышел и все сломалось) буду пробовать пересобрать
  • https://t.me/clickhouse_ru
    clickhouse-client --log-level=trace -h host -u user --password=password
    попробуйте
  • https://t.me/clickhouse_ru
    спасибо, я уже снёс и пересобираю) там никаких реакций не было даже на clickhouse-client без параметров
  • https://t.me/clickhouse_ru
    ну вообще clickhouse-client это симлинк на clickhouse
    так что вполне возможно вы как то сервер не так собрали
  • https://t.me/clickhouse_ru
    не, оно работало, просто вчера я сносил на ноуте brew и видимо какие то пакеты не доставил из-за чего запущенный клиент еще сегодня работал, а после того как я вышел из него он перестал запускаться
  • https://t.me/clickhouse_ru
    @Gulshan5k #215122 12:14 PM, 22 Apr 2021
    подскажите пожалуйста, как можно проверить сколько concurrent sessions на базе КХ?
  • https://t.me/clickhouse_ru
    @Gulshan5k #215123 12:14 PM, 22 Apr 2021
    подскажите пожалуйста, как можно проверить сколько concurrent sessions на базе КХ?
  • https://t.me/clickhouse_ru
    @lazovskiy #215124 12:16 PM, 22 Apr 2021
    Добрый день.
    Подскажите, пожалуйста, что делать с ошибкой
    The local set of parts of table ... doesn't look like the set of parts in ZooKeeper: 79.38 million rows of 121.11 million total rows in filesystem are suspicious. There are 1 unexpected parts with 79383828 rows (1 of them is not just-written with 79383828 rows), 1 missing parts (with 410367 blocks).: Cannot attach table
  • https://t.me/clickhouse_ru
    @lazovskiy #215125 12:17 PM, 22 Apr 2021
    сделали rsync из старого datadir в новый, потом остановили CH, сделали еще раз rsync, переключились на новый datadir - и все
  • https://t.me/clickhouse_ru
    @lazovskiy #215126 12:17 PM, 22 Apr 2021
    теперь ни туда ни сюда
  • https://t.me/clickhouse_ru
    u mean this:
    https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#max-concurrent-queries

    ???
    Server Settings | ClickHouse Documentation

    Server Settings builtin_dictionaries_reload_interval The interval in seconds before reloading built-in dictionaries. Cli

  • https://t.me/clickhouse_ru
    а можно видеть и отслеживать текущее их состояние, какие сессии висят ,какие выполняются
  • https://t.me/clickhouse_ru
    не припоминаю такого, дайте контекст задачи, в чем проблема
  • https://t.me/clickhouse_ru
    @Gulshan5k #215130 12:21 PM, 22 Apr 2021
    есть типа system.processes только по сессиям
  • https://t.me/clickhouse_ru
    @Gulshan5k #215131 12:21 PM, 22 Apr 2021
    ?
  • https://t.me/clickhouse_ru
    @Gulshan5k #215132 12:23 PM, 22 Apr 2021
    хотим понять причину socket timeouts на стороне nifi при вставке в КХ. Хотим убедиться что сессии не отваливаются из-за достижения лимита по concurrent sessions
  • https://t.me/clickhouse_ru
    @critskiy #215133 12:23 PM, 22 Apr 2021
    есть query_log и query_thread_log, есть trace_log, емнип
  • https://t.me/clickhouse_ru
    @Gulshan5k #215134 12:24 PM, 22 Apr 2021
    это не история?
  • https://t.me/clickhouse_ru
    receive_timeout, send_timeout трогали, решали проблему вашу?
  • https://t.me/clickhouse_ru
    @Gulshan5k #215136 12:25 PM, 22 Apr 2021
    да,
    http://10.16.197.76:8123/?format_csv_delimiter=;&max_partitions_per_insert_block=0&format_csv_allow_double_quotes=0&date_time_input_format=best_effort&receive_timeout=36000&send_timeout=360000&query=INSERT%20INTO%20RawDATA.EGCDR_DR2_original%20FORMAT%20CSV
  • https://t.me/clickhouse_ru
    это настройки таймаута для кх
    https://clickhouse.tech/docs/en/operations/settings/settings/#connect-timeout-receive-timeout-send-timeout
    Settings | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @brbrbr #215138 12:27 PM, 22 Apr 2021
    Подвис DDL запрос удаления таблицы (был выполнен ON CLUSTER), висит уже часа четыре, из которых час в system.processes висит в статусе is_cancelled.
    Что можно с ним сделать?
  • https://t.me/clickhouse_ru
    @critskiy #215139 12:28 PM, 22 Apr 2021
    эмммммм, щас тупой вопрос, но что за задача по обработке с CSV?
  • https://t.me/clickhouse_ru
    если у вас задача не пихать все из файла, а что-то просто из него забрать для чтения или вычитать некоторые данные, то имхо, юзать clickhouse-local:
    https://clickhouse.tech/docs/en/operations/utilities/clickhouse-local/

    или file engine
    clickhouse-local | ClickHouse Documentation

    clickhouse-local The clickhouse-local program enables you to perform fast processing on local files, without having to d

  • https://t.me/clickhouse_ru
    SELECT CurrentMetric_Query, event_time FROM system.metrics_log WHERE CurrentMetric_Query > 80 ORDER BY event_time DESC LIMIT 10;
  • https://t.me/clickhouse_ru
    DB::Exception: Table system.metrics_log doesn't exist. (version 20.8.3.18)
  • https://t.me/clickhouse_ru
    задача вставить весь файл
  • https://t.me/clickhouse_ru
    @501846356 #215145 12:47 PM, 22 Apr 2021
    Добрый день, подскажите пожалуйста, имею проблему в DBeaver с отображением данных из колонок типа array[decimal] - вместо элементов массива отображается "DBCException: Can't extract array data from JDBC array". Вроде бы проблема не новая, есть шанс что ей занимаются и надежда что устранят? :)
  • https://t.me/clickhouse_ru
    system.metric_log
    s названии лишняя
  • https://t.me/clickhouse_ru
    @crazyproger #215147 01:05 PM, 22 Apr 2021
    подскажите пожалуйста заклинание как в консоли исключить вывод результата запроса? Оптимизирую запрос и нужно видеть только логи КХ, где-то как-то Алексей Миловидов показывал трюк на какой-то конференции чтоб результат запроса не выводился на экран, не могу найти где(
  • https://t.me/clickhouse_ru
    бага, либо на стороне dbeaver либо на стороне clickhouse-jdbc

    заведите issue на https://github.com/dbeaver/dbeaver/issues/
    кстати там где то еще log файл кажется был, можно там полный stacktrace ошибки поискать
    Issues · dbeaver/dbeaver

    Free universal database tool and SQL client. Contribute to dbeaver/dbeaver development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @chghehe, норм решение, я бы так и сделал если бы мне было нужно решать подобную задачу. но если клиент должен полностью абстрагироваться от кликхауса в случае запуска на слабом/специфическом железе, то в принципе можно локально и в sqlite пихать. и по крону отправлять из него данные в кликхаус сервер, используемый как хранилище.
  • https://t.me/clickhouse_ru
    @399999446 #215150 01:14 PM, 22 Apr 2021
    всем привет
    Подскажите пож-та какой формат нужно использовать для загрузки файла след структуры:

    ид (int) , json (string)
    Пример

    123, {"k1":"v1","k2":"v2"}
  • я обычно limit в конце ставлю
  • https://t.me/clickhouse_ru
    Спасибо за ответ, пока так тоже делаю, но по-моему limit может соптимизироваться и запрос выполнится не по эквивалентному плану
  • https://t.me/clickhouse_ru
    @vdimir ↶ Reply to #215147 #215153 01:34 PM, 22 Apr 2021
    FORMAT Null
    https://clickhouse.tech/docs/en/interfaces/formats/#null
  • https://t.me/clickhouse_ru
    То что нужно! Благодарю!
  • @Sapar1999 #215156 01:40 PM, 22 Apr 2021
    Добрый день. Select из дистрибутивной завершается нехваткой памяти на сервере-инициаторе. ( всего 128 гб) В запрос нет джойнов, нет аггрегации и сортировки. Используются только словари. Ищется where dictGetString(id) != ''. В чем может быть проблема ?
  • https://t.me/clickhouse_ru
    @Makasinov #215157 01:49 PM, 22 Apr 2021
    Привет! После нескольких неудачных ddl операций, в некоторых партициях пропали колонки (как минимум из файлов columns.txt)
    В логах страшные вещи
    <Error> DB.TABLE: auto DB::StorageReplicatedMergeTree::processQueueEntry(ReplicatedMergeTreeQueue::SelectedEntryPtr)::(anonymous class)::operator()(DB::StorageReplicatedMergeTree::LogEntryPtr &) const: Code: 10, e.displayText() = DB::Exception: Not found column usage_type in block
    Кто нибудь сталкивался? Как починить? Потому что сейчас даже дропнуть индекс не могу, пишет в зк мета данные не сходятся с локалкой
  • https://t.me/clickhouse_ru
    @Makasinov #215158 01:51 PM, 22 Apr 2021
    Версия 21.1.2.15
  • https://t.me/clickhouse_ru
    @Makasinov #215159 01:57 PM, 22 Apr 2021
    Интересно, что если провернуть SYSTEM STOP MERGES, то проблема исчезает. Я залез в фс и глянул что не во всех партициях есть колонка. В кх клиенте метаданных, всё ровно на всех репликах
  • https://t.me/clickhouse_ru
    @romul87 #215161 02:05 PM, 22 Apr 2021
    Сегодня при тестах выключил на горячую шард, запись в остальные шарды продолжилась, а вот при обращении к дистр таблицам появилась ошибка code 279. Db exception: all connection tries failed
    Connection refused server1
    Я как понял, читать клик через дистр таблицы не возможно при выпадение всего шарда. Кто нибудь сталкивался с подобным?
  • https://t.me/clickhouse_ru
    да. нужна хотя бы одна живая реплика
    либо кометировать шард в конфиге <remote_servers>
  • https://t.me/clickhouse_ru
    ну после этого у вас база будет пухнуть и куча партов будет не эффективных

    так что не стоит это делать без необходимости...
  • https://t.me/clickhouse_ru
    @aksimemor #215164 02:21 PM, 22 Apr 2021
    Подскажите, можно ли сделать freez всей таблицы как один partition? чтобы не надо было каждый партитион отдельно делать ATTACH ?
  • https://t.me/clickhouse_ru
    Понимяу, поэтому включил обратно конечно же. Может optimize помочь в восстановлении партов?
  • https://t.me/clickhouse_ru
    FREEZE
    это создание на диске hadlinks для того чтобы предотвартить удаление старых партов после MERGE
    (парты удаляются из data но hardlink остается в shadow)

    вы это делаете для бекапа?
  • https://t.me/clickhouse_ru
    @aksimemor #215167 02:24 PM, 22 Apr 2021
    Мы сейчас хотим перенести данные с одного кликхаус сервера на новый более мощный
  • https://t.me/clickhouse_ru
    наскок большие таблицы то?
  • https://t.me/clickhouse_ru
    @aksimemor #215169 02:26 PM, 22 Apr 2021
    Есть по 2тб, есть по 20гб

    В среднем по 10-20гб в сжатом виде
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    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
    UP
    @den_crane , @dj_mixer , может у Вас в карманах случайно магическая парамка завалялась?
  • https://t.me/clickhouse_ru
    @chemistvik #215176 02:32 PM, 22 Apr 2021
    а я правильно понимаю что freeze таблиц делается последовательно?
    тоесть если у меня в базе для примера 30 таблиц, для каждой из них я делаю freeze и в итоге получаю на диске 30 чекпоинтов (по одному на каждую таблицу)

    есть возможность сделать freeze всех таблиц в базе одновременно?
  • https://t.me/clickhouse_ru
    >есть возможность сделать freeze всех таблиц в базе одновременно?
    Нет, такой возможности нет (кроме остановки сервера)
  • https://t.me/clickhouse_ru
    @chemistvik #215178 02:37 PM, 22 Apr 2021
    а как с остановкой?
    в смысле снапшот файловой системы сделать или еще какой вариант?
  • https://t.me/clickhouse_ru
    @tthread #215179 02:43 PM, 22 Apr 2021
    ребята, подскажите ламеру: у меня есть посчитанные гистограммы где идет group by по одному полю, а дальше эти данные используются в селекте где группируются еще по одному, более верхнеуровнему полю. как правильно тут склеить таплы массива и получить для верхнеуровнего поля всего одну строчку. какую функцию правильно для этого использовать, чтобы получился merge отрезков?
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    https://unix.stackexchange.com/questions/202430/how-to-copy-a-directory-recursively-using-hardlinks-for-each-file

    Можно просто наделать хардлинков, ровно как FREEZE работает
    How to copy a directory recursively using hardlinks for each file

    I want to create a "copy" of a directory tree where each file is a hardlink to the original file Example: I have a directory structure: dirA/ dirA/file1 dirA/x/ dirA/x/file2 dirA/y/ dirA/y/file3 ...

  • https://t.me/clickhouse_ru
    Решил проблему. Оказалось, что была мутация вставшая намертво. Грохнул её и всё стало хорошо
  • https://t.me/clickhouse_ru
    @chemistvik #215183 02:47 PM, 22 Apr 2021
    Понятно, спасибо
  • хм, суть проблемы в чем? запрос выполнился вроде успешно - вы не хотите видеть ошибку на выполнении?
  • https://t.me/clickhouse_ru
    а что с ЗК? у вас случайно не обзервер используется?
  • https://t.me/clickhouse_ru
    да
    ложных эксепшенов избежать
  • у вас много ДДЛов создается/бегает?
  • https://t.me/clickhouse_ru
    Не знаю что под "обзервером" понимаете, опсы ответили не, нет обезрверов
    у меня ЗК 5 нод на отдельных машинках
    * сеть - Hetzner (
  • https://t.me/clickhouse_ru
    а можно с лидера зк echo mntr | nc localhost 2181
  • https://t.me/clickhouse_ru
    дропы партишек от промежуточного тира ... ~ 20-60 запросов в час
    остальные ддл - стохастически и редко <1/час
  • наверно просто баг в реализации (судя по коду)
    https://github.com/ClickHouse/ClickHouse/issues/19027

    у вас есть на инициаторе какие-либо ещё ошибки либо в ЗК логе?
    Error : Cannot provide query execution status · Issue #19027 · ClickHouse/ClickHouse

    Describe the bug run sql : GRANT ON CLUSTER s6r2 ALL ON *.* TO admin WITH GRANT OPTION; sometimes ok and Sometimes an error occurs: 2021.01.14 12:23:07.457028 [ 56976 ] {e95938d6-21cd-42ea-af99-783...

  • https://t.me/clickhouse_ru
    Тебе прям все?
  • https://t.me/clickhouse_ru
    в личку пульнул чтоб чат не порочить
  • https://t.me/clickhouse_ru
    в зк эрроров не вижу (ток INFO/WARNING)
    на ноде тоже ничего подозрительного в этот диапазон времени
  • https://t.me/clickhouse_ru
    @AChemyakin #215195 03:32 PM, 22 Apr 2021
    Уважаемые, может кто встречался с подобной задачей и подскажет.
    Есть string, хочу получать map.
    Проблема в том, что количество пар ключ : значение - плавающее. Нужно решение, чтобы под любое количество пар ключ : значение работало.
    Т.е. как в запросе ниже, но с возможностью подставлять "все элементы массива", а не как в запросе ниже - явно указывать каждый элемент.

    WITH
    'key1:Value1,Key2:Value2'
    as myString
    SELECT
    myString
    ,arrayFlatten(arrayMap( i -> splitByChar(':',i),splitByChar(',',myString))) myArray
    ,map(myArray[1],myArray[2],myArray[3],myArray[4]) myMap
    FORMAT Vertical

    myString: key1:Value1,Key2:Value2
    myArray: ['key1','Value1','Key2','Value2']
    myMap: {'key1':'Value1','Key2':'Value2'}
  • такой инфолог есть?
    An error occurred while creating auxiliary ZooKeeper directories in
  • https://t.me/clickhouse_ru
    @kernelorg #215197 03:39 PM, 22 Apr 2021
    Подскажите, можно ли поменять хост host1.example (мускуля в этом случае) , если БД была создана следующим образом:
    CREATE DATABASE test_db ON CLUSTER cluster_name ENGINE = MySQL('host1.example:3306', 'db', 'user', 'pass')
  • базы только пересоздавать вроде
  • https://t.me/clickhouse_ru
    нет
  • ну тогда это баг и надо в коде сильно копать, скорее всего связано с переделкой database=replicated, судя по времени всех багов...

    в гитхабе несколько тикетов, добавляйтесь в любой...
  • https://t.me/clickhouse_ru
    @peter_ll #215201 03:59 PM, 22 Apr 2021
    спасибо
  • https://t.me/clickhouse_ru
    @agkucherov #215202 04:01 PM, 22 Apr 2021
    Вопрос по оптимизации:
    сильно ли на клик влияет case во вьюшке?
    Если строк миллиарды
  • @dj_mixer #215203 04:04 PM, 22 Apr 2021
    смотря какой case :) если if(a>3,a,b) то не очень, а если вложенность большая то очень...
  • https://t.me/clickhouse_ru
    там одно условие как ты указал в примере
  • https://t.me/clickhouse_ru
    @agkucherov #215205 04:20 PM, 22 Apr 2021
    спасибо )
  • https://t.me/clickhouse_ru
    @Felixoid #215206 04:21 PM, 22 Apr 2021
    Есть такой вопрос. Го генерирует запрос, выставляя такой prewhere PREWHERE Date >='2021-04-22' AND Date <= '2021-04-22' для HTTP

    Эти даты генерируются из timestamp на хосте при помощи выражения time.Unix(from, 0).Format("2006-01-02"), то есть учитывается локальная тайм-зона. Тайм-зона в запросе не передаётся.

    Мне кажется, что это способ, который может не работать, если зоны разные. Будет ли лучше и правильнее передавать PREWHERE Date >=toDate(fromTimestamp) AND Date <= toDate(untilTimestamp)?
  • КХ читает все ветки всегда в ИФ-е, т.е. если будет вложенность или сложные подсчёты условия - это увеличивает тяжесть запроса пропорционально...
  • https://t.me/clickhouse_ru
    снапшот файловой системы вполне себе вариант
    но для этого обычно надо /var/lib/clickhouse/ отдельным разделом монтировать
  • https://t.me/clickhouse_ru
    @chemistvik #215209 04:37 PM, 22 Apr 2021
    Ну эт понятно
  • @l_dar #215210 04:42 PM, 22 Apr 2021
    Привет, читал документацию, но все равно возникла не уверенность в познаниях)
    Подскажите пожалуйста в некоторых вопросах:
    1. Primary Index, удобная штука для выборки, этот индекс может содержать несколько полей, на сколько будет хардкорно, если у меня будет 5-6 полей, вставка происходит с частотой 3000 записей в сек . Не возникнут ли у меня проблемы?
    2. Партиционирование думаю сделать под дням, норма ли это? В основном выборка идет по суточно, реже за несколько суток, совсем редко за месяц.Не будет ли большой проблемой?
    Можно ли партиционирование сделать к примеру по несколько дней, к примеру 7....
    Спасибо!
  • https://t.me/clickhouse_ru
    1. В целом длинный pk - это плохо: он будет помещаться в оперативку.
    2. Партиционирование по дням делают, однако надо тестировать на данных, если вы поместите дату в начало pk, ch использует его на запросе.
    Также учитывайте, что партиционирование по дням это x30 файлов.
    По поводу партиционирования по некоторому количеству дней (например по 7) - да, можно. Нужно добавить в partition by не date, а toStartOfWeek или нечто подобное. Однако я не уверен, что без указания аналогичной функции в запросе не будут прочтены лишние данные.
  • https://t.me/clickhouse_ru
    @VorobyevPavel #215212 04:54 PM, 22 Apr 2021
    Добрый день.

    Как правильно настроить clickhouse-copier, если целевой кластер находится в Яндекс.Облаке (Managed Service) и требуется подключение по SSL?

    Сейчас выдается ошибка Code: 210, e.displayText() = DB::NetException: SSL Exception: error:14000086:SSL routines::certificate verify failed (xxx.mdb.yandexcloud.net:9440) (version 20.5.3.27 (official build))
  • @l_dar ↶ Reply to #215211 #215213 04:55 PM, 22 Apr 2021
    Спасибо! Буду тестировать
  • https://t.me/clickhouse_ru
    ах да, самое важное
    вставка происходит с частотой 3000 записей в сек
    не надо лить в ch данные по 1 строке, заливайте батчами
    3000 записей в секунду по 1 строке - ужас
    1 запись в секунду по 3000 строк - легко
  • @l_dar ↶ Reply to #215214 #215215 05:01 PM, 22 Apr 2021
    Ну да, читал об этом. Какой инструмент посоветуете, чтоб собирал эти батчи, перед вставкой?
  • https://t.me/clickhouse_ru
    мы используем kafka + заливка батчами по расписанию
    есть готовые инструменты, заточенные под ch: https://clickhouse.tech/docs/ru/interfaces/third-party/proxy/
    Прокси-серверы от сторонних разработчиков | Документация ClickHouse

    Прокси-серверы от сторонних разработчиков chproxy chproxy - это http-прокси и балансировщик нагрузки для базы данных Cli

  • https://t.me/clickhouse_ru
    @rdbuf ↶ Reply to #212514 #215217 05:05 PM, 22 Apr 2021
    Завёл Issue, workaround описан там же.
    https://github.com/ClickHouse/ClickHouse/issues/23515
    Expected ColumnLowCardinality, gotUInt8: While executing MergingSortedTransform · Issue #23515 · ClickHouse/ClickHouse

    Describe the bug We encounter the following problem when performing some SELECT queries to a Distributed table with LowCardinality columns: DB::Exception: Expected ColumnLowCardinality, gotUInt8: W...

  • @l_dar ↶ Reply to #215216 #215218 05:05 PM, 22 Apr 2021
    уххх. Спасибо!
  • https://t.me/clickhouse_ru
    @malkeshar #215219 05:41 PM, 22 Apr 2021
    Добрый вечер. А можно ли сделать вью, при запросе к которой(только чтение) в зависимости от значения Date запросы ходили в одну из двух таблиц? Или я хочу странного и не хер логику приложения пытаться впихнуть в бд? Кейс - по возможности без модификации приложения подсовывать ему таблицы с разными периодами агрегации данных и партиционирования.
  • В одной из таблиц будет будет ваша дата или в обоих может быть?
  • https://t.me/clickhouse_ru
    Таблица будет полностью одинаковая. Таймсириес: Path, Date, Value, Time, Timestamp. Просто данные в одной будут младше, а в другой старше месяца
  • Так вы по какой-то дате будете ходить в одну или другую таблицу? Есть ли случай, когда дата есть и в 1 и во 2 таблице?
  • https://t.me/clickhouse_ru
    Да, младше месяца в хот сет с сырыми данными, старше - в таблицу с аггрегированными данными
  • Мы это решаем через union all двухзапросов
  • https://t.me/clickhouse_ru
    @malkeshar #215227 06:02 PM, 22 Apr 2021
    Даты, конечно, будут отличаться
  • https://t.me/clickhouse_ru
    Хм. Надо подумать. То есть, если запрос прилетает, а такой даты нет, то есть шанс получить быстро пустой ответ вместо какого-нибудь условно фуллскана?
  • @vvvjhaq #215229 06:02 PM, 22 Apr 2021
    Мб вам тоже подойдёт, работает вполне сносно.
    Запрос, в котором не будет выборки естественно ничего не отдаёт за очень быстрое время.
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #215223 #215230 06:02 PM, 22 Apr 2021
    Можно через union двух таблиц сделать или через distributed таблицу, если на разных серваках лежит.
  • https://t.me/clickhouse_ru
    Спасибо большое!
  • https://t.me/clickhouse_ru
    Буду копать в сторону union. Супер)
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #215138 #215234 06:52 PM, 22 Apr 2021
    Уточнение - дело не в DDL.

    Была настроена гора таблиц с Kafka движком. Коллеги перевезли Кафку в другую подсеть, стал после этого пересоздавать их - не могу удалить: delete table запросы падают по таймауту. При этом они остаются висеть в system.processes (самый старший висит уже больше суток) и не реагируют на kill query (флаг is_cancelled появился ещё 6 часов назад, но запрос так и продолжает висеть).

    Проверил - обычную таблицу с engine=Memory() я спокойно создал и удалил.

    В чём может быть причина такой проблемы и как её побороть?
  • https://t.me/clickhouse_ru
    @bralbral #215235 07:05 PM, 22 Apr 2021
    Добрый вечер. Запрос возвращает тюплы - 1 строка - (1,10), вторая (n,m) ... (l.t). Каждый тюпл обозначает диапазон , хотелось бы пребразовать его в between. В итоге запрос (как я полагаю), должен выглядеть , как where (a between m and k) or (a between t and l) и т.д. можно ли средствами кликхауса преобразовать к таком виду? В документации функций относящиеся к тюплам не так уж и много, и они не подходят.
  • https://t.me/clickhouse_ru
    не до конца понял, что вы хотите, но пусть будет так:SELECT
    (2, 8) AS t,
    t.1 AS a,
    t.2 AS b
    FROM numbers(10)
    WHERE (number > a) AND (number < b)

    ┌─t─────┬─a─┬─b─┐
    │ (2,8) │ 2 │ 8 │
    │ (2,8) │ 2 │ 8 │
    │ (2,8) │ 2 │ 8 │
    │ (2,8) │ 2 │ 8 │
    │ (2,8) │ 2 │ 8 │
    └───────┴───┴───┘
  • @1469014344 #215238 07:39 PM, 22 Apr 2021
    Скажите пожалуйста, где можно найти pipeline сборок Clickouse для builds.clockhouse.tech ( clickhouse-builds.s3.yandex.net? )
    Меня в частности интересуют нестандартные билды https://clickhouse.tech/docs/en/getting-started/install/#from-binaries-non-linux
    Очень хочется найти с какими ключами запускаются сборки как для MacOS так и FreeBSD.

    ( на лог сборки FreeBSD, например, ссылается Алексей Миловидов здесь: https://github.com/ClickHouse/ClickHouse/pull/18924 но для паблика что-то ресурс не отдает нужной инфы или уже отротировался )
  • https://t.me/clickhouse_ru
    arrayExists(x -> you_column between x.1 and x.2, groupArray(tuples_column))
  • https://t.me/clickhouse_ru
    так они же в основное репе, в make файлах?

    или просто из любого свежего PR ClickHouse build check — 16/16 builds are OK -> detailes
    https://clickhouse-builds.s3.yandex.net/23517/d78da1fa7765881b4362564cd6efa7fb1f5489c6/clickhouse_build_check/report.html
  • Я не уверен, что Яндексовый кластер собирает билд на FreeBSD через эту последовательность:
    git submodule update --init --recursive
    cmake .

    тк в такой конструкции ошибки связанные с местонахождением llvm.
    Вот хочется выяснить, то ли EMBEDDED LLVM то ли -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ и тд.

    Мне пару патчей надо протестировать именно под FreeBSD, собрав пару разных версий.
  • что-то по ссылке нету clang-11-freebsd, видимо тоже перестал собираться 😉
  • хм, он в докере а не нативной среде билдится?) хорошо, сейчас проверю,спасибо
  • да, пока что только кросс-компиляция
  • https://t.me/clickhouse_ru
    благодарю.
  • @sergnafanya #215247 08:02 PM, 22 Apr 2021
    доброй ночи
    подскажите пожалуйста, можно ли в MV с типом SummingMergeTree в качестве суммируемой колонки использовать argMin?
    пока все эксперементы не дают ожидаемых результатов (
  • можно не мучить себя флагами, а найти packager в репозитории и собрать как-то так ./packager --compiler=clang-11-freebsd --docker-image-version=latest --package-type=binary --output-dir=/home/jakalletti/ClickHouse/build/freebsd/ --clickhouse-repo-path=/home/jakalletti/ClickHouse/ClickHouse --cache=ccache --ccache_dir=/home/jakalletti/docker_ccache
  • вероятно да, тут есть проблема, что у меня нет такой же хорошо настроенной инфры с волюмами/ccache и докерами, но есть FreeBSD.
    Во фре есть порт Clickhouse, который содержит патчи решающую очень серъезную проблему на FreeBSD, но эти патчи отсутствуют в апстриме. Порт безбожно устарел и заказчики (западная компания и bigdata, которая по каким-то причинам использует FreeBSD и Clickhouse ) хотели бы иметь свежую версию.
  • можно попробовать такое
    cmake -DLINKER_NAME=lld -DCMAKE_CXX_COMPILER_LAUNCHER=/usr/bin/ccache -DCMAKE_C_COMPILER=`which clang` -DCMAKE_CXX_COMPILER=`which clang++` -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_TESTS=0 -DENABLE_UTILS=0 -DPARALLEL_LINK_JOBS=16 -DPARALLEL_COMPILE_JOBS=64 -G Ninja ../../ClickHouse/
  • это я видел, тут проблемы не существует потому что собирается в линукс окружении но с freebsd_build тулчейном. Я уже нашел проблемное место:
    CmakeLists.txt: find_program (LLVM_AR_PATH NAMES "llvm-ar" "llvm-ar-11" "llvm-ar-10" "llvm-ar-9" "llvm-ar-8",

    тогда как llvm11, lllvm12 и тд инсталлируют бинари вида llvm-ar11, llvm-ar12 _во FreeBSD_
    Незнаю как а апстриме llvm и MacOS.

    Спасибо за ссылку на лог, многое стало понятно и полезно в целом.
  • Ждем PR)
  • +. Было бы круто конечно этот PR оживить: https://github.com/ClickHouse/ClickHouse/pull/13869
    из-за него весь сыр-бор.
  • @1469014344 #215254 08:33 PM, 22 Apr 2021
    выбор FreeBSD меня не касается, но Clickhouse похоже стал очень популярен за пределами России, успех)
  • https://t.me/clickhouse_ru
    SimpleAggregateFunction или AggregateFunction ?

    например https://github.com/ClickHouse/ClickHouse/issues/23356#issuecomment-824907780

    версия КХ ?
  • попробую подробнее объяснить….версия 21.4.3.21
    есть таблица в которой 3 основных поля - event, value, created_at

    задача посчитать sum(value) да не всех, а только первых для каждого event
    потому и решил использовать argMin, но кроме как запрос их MV обернуть снова запросом для суммы я не нашел других вариантов (
  • https://t.me/clickhouse_ru
    это невозможно
  • @sergnafanya #215259 08:46 PM, 22 Apr 2021
    в итоге пришел к варианту MV AggregatingMergeTree c argMinState(value, created_at) и group by event с последуюшим запросом SELECT sum(value) FROM select (argMinMerge(…) as value)
    на стестовых данных в 1лярд записей - скорость приемлимая вроде получилась
  • https://t.me/clickhouse_ru
    да, только так.
  • спасибо за ответ…не буду копать туда куда не получится )
  • @satanch #215262 08:48 PM, 22 Apr 2021
    сегодня начинался страстей с партицией toYYYYMM сколько же открытых файлов будет через год, 365 или гораздо больше? а оператива как себя будет чуствовать?
  • @satanch #215263 08:48 PM, 22 Apr 2021
    за референс брал доку кликхауса
  • https://t.me/clickhouse_ru
    YYYYMM это 12
  • @satanch #215265 08:49 PM, 22 Apr 2021
    ой, извиняюсь
  • @satanch #215266 08:49 PM, 22 Apr 2021
    без DD, да
  • @satanch #215267 08:49 PM, 22 Apr 2021
    изначально сделал с DD
  • @satanch #215268 08:49 PM, 22 Apr 2021
    что почитать "для новичков" в категории "советы как не обосраться"
  • https://t.me/clickhouse_ru
    все зависит от запросов. Иногда 365 иногда 12 хорошо.
  • от выборки зависит….если выборка будет за год - 365 партиций…а за неделю - всего 7…..
  • @sergnafanya #215271 08:51 PM, 22 Apr 2021
    у меня выборка в 90% случаев за неделю….причем с ПН по ВС - так и делал партицию PARTITION BY toStartOfWeek(ep_dt, 1)
  • https://t.me/clickhouse_ru
    UP. =)
    А возможно ли превратить string с произвольным количеством пар ключ:значение в map?
  • @satanch #215273 08:51 PM, 22 Apr 2021
    я храню визиты и их данные (юзерагент, некоторые флаги), потребуется ли тонкая настройка? за день может быть несколько миллионов таких визитов
  • @satanch #215274 08:51 PM, 22 Apr 2021
    по сути "просмотров"
  • @satanch #215275 08:52 PM, 22 Apr 2021
    постгрес у меня быстро погиб, через три месяца стал минуту почти считать выборку за месяц
  • @sergnafanya #215276 08:55 PM, 22 Apr 2021
    все от выборки зависит…если брать за год такие выборки то будет «тормозить» (но опять же относительно….на днях генерировал себе очень похожие по описанию данные по 2,5М в сутки за полтора года) партицирование по неделям…запрос на выборку с двойной вложенностью и группировкой за все время - порядка 3с, а по неделям - 30-40мс….на диске это все заняло 90+ GB
  • @satanch #215277 08:56 PM, 22 Apr 2021
    очень хороший отзыв, спасибо, учитывая что у меня только группировка и подсчет уников
  • @satanch #215278 08:56 PM, 22 Apr 2021
    через несколько дней пущу в прод, посмотрю что будет 🙂
  • никто опять же для частых выборок из разряда - уники по дням - не помешает вам сделать MV агрегированные….а для детального вывода уже использовать raw данные
  • https://t.me/clickhouse_ru
    брр, на входе строка 'key1:Value1,Key2:Value2'
    а что на выходе надо ?
  • никто = кликхаус, опечатка?
  • https://t.me/clickhouse_ru
    вам 100% надо месячные партиции
  • такие и есть сейчас
  • https://t.me/clickhouse_ru
    вы не знаете как массив запихать в map ?
  • https://t.me/clickhouse_ru
    Хочу получить map {'key1':'Value1','Key2':'Value2'}, но в моем случае string может быть разной длинны. т.е. нужно решение, которое бы работало и для 'key1:Value1,Key2:Value2,Key5:Value5'

    Да, не получается массив в map запихать. Очень старался, но никак =\
  • та нет ) в этом и прелесть клика - что можно с помощью MV агрегировать данные на лету…тем самым заранее избавлять как от объемов данных, так и от сложных расчетов агрегаций
  • @satanch #215287 09:01 PM, 22 Apr 2021
    а вот про Materialized View тут много бесед было, видимо что-то стоящее
  • https://t.me/clickhouse_ru
    WITH 'key1:Value1,Key2:Value2,Key5:Value5' as myString
    SELECT
    arrayMap( i -> ((splitByChar(':',i) as z) [1], z[2]) ,splitByChar(',',myString)) myArray,
    cast ( (myArray.1, myArray.2) as Map(String,String)) mp
  • https://t.me/clickhouse_ru
    Гигантское спасибо за ответ и за то, что Вы тут каждый день пишите. =)
  • 23 April 2021 (192 messages)
  • https://t.me/clickhouse_ru
    Мы используем graphite-clickhouse, там модно читать из разных таблиц, в зависимости от давности данных в запросе, но запрос - как к графиту
  • https://t.me/clickhouse_ru
    @chubukov #215293 06:21 AM, 23 Apr 2021
    Попробую еще разок)
    За ранее спасибо за помощь
  • https://t.me/clickhouse_ru
    @chubukov #215294 06:21 AM, 23 Apr 2021
    Привет, есть кластер из 3х реплик. Возможно ли его пересобрать в кластер из 2х шардов и 2х реплик как на картинке. Если просто конфигурацию поменять поможет?
  • https://t.me/clickhouse_ru
    никто не сталкивался что ли с таким?)
  • https://t.me/clickhouse_ru
    вообще, надо понять что индексы в clickhouse
    это не B-Tree индексы как в остальных СУБД, когда мы методом половинного поиска по значению из индекса за o(log n) быстро находим где у нас в основном файле смещения по которому лежат данные с требуемым значением индекса

    в ClickHouse индексы это data skip индексы
    для PK это фактически min max индекс
    то есть мы читаем небольшой .mrk файл с кешированием в памяти ..
    видим в нем значения min \ max значения pk полей, для нескольких (по умолчанию 8192) строк в таблице
    и смещения в .bin файлах (начало compressed блока + смещение внутри uncompressed блока)
    и на этом основании принимаем решение как именно вычитывать этот .bin файл

    Партицирование по дням нужно только когда данных (размер .bin файлов) РЕАЛЬНО ОЧЕНЬ МНОГО... (размеры старых смерженых партов начинаются от нескольких сотен мегабайт)

    Партицирование это физическое разбиение на разные каталоги и оно позволяет очень быстро сразу определиться за какой период мы читаем, выборка из партиций идет паралельно, но для HDD много партиций в таком случае будет вредно, для SSD норм

    Партицирование по дням может мешать если вы всталяете данные в одном INSERT за большой промежуток времени и затрагиваете сразу несколько партиций, в которых будет создаваться куча мелких партов (system.parts) которые потом надо в бекграунде мержить с более старыми крупными партами

    > Вставка 3000 записей в секунду.
    в смысле 3000 INSERT по одной записи в секунду?
    НЕ ДЕЛАЙТЕ ТАК!

    или 3000 INSERT по 1 000 записей в секунду?
    так можно, лучше пусть будет 30 INSERT по 100 000 записей, или один INSERT в секунду на 3 000 000 записей
  • https://t.me/clickhouse_ru
    второе поле лучше в одинарные кавычки взять

    Template
    https://clickhouse.tech/docs/en/interfaces/formats/#format-template

    JSON храните как строку

    получается что то типа
    CREATE TABLE t (id UInt64, json String) ENGINE=MergeTree();

    echo ''${id:CSV}, ${json:JSON}" >/var/lib/clickhouse/user_files/row.format
    cat file | curl -XPOST --data-binary=@- "http://127.0.0.1:8123/?query=INSERT INTO table(id, json) FORMAT Template SETTINGS format_template_row = '/var/lib/clickhouse/user_files/row.format'"
    Input and Output Formats | ClickHouse Documentation

    Formats for Input and Output Data ClickHouse can accept and return data in various formats. A format supported for input

  • https://t.me/clickhouse_ru
    а словари на удаленных нодах есть?

    SELECT hostName(), memory_usage, query_id, exception FROM cluster('your_cluster',system.query_log) WHERE type NOT IN ('QueryFinish','QueryStart') AND query LIKE '% dictGetString(id) != %';

    и потом
    SELECT hostName(), * FROM cluster('your_cluster',system.query_log) WHERE initial_query_id='ваш_упавший_query_id'
  • @l_dar ↶ Reply to #215296 #215299 07:07 AM, 23 Apr 2021
    Спасибо за развернутый ответ и совет.
    Вопрос такой, стоит ли в индексе хранить UUID? Как он тогда вычислит min max? Или будет сортировать в алфавитном порядке?
  • https://t.me/clickhouse_ru
    перебалансировки данных в clickhouse нет
    если вы про это

    ну и реплики в ZK по новой надо регистрировать c другими именами

    3 реплики у вас на скольки физических машинах?
    на 3х
    хотите 4 сервера? или сколько?
  • https://t.me/clickhouse_ru
    @artemhnilov #215301 07:10 AM, 23 Apr 2021
    Привет. Можно ли как-то научить кликхаус самостоятельно делать HTTP запрос на внешний сервис, после срабатывания условного триггера в Live Views?
  • https://t.me/clickhouse_ru
    нет не стоит
    вообще в PK индексе не стоит хранить поля с высокой кардинальностью (больше сотен тысяч) значений
    UUID вообще вредная штука, потому что значение рандомное и монотонно не возрастает
    соответсвенно размазывается по всем партам
    и трудно парты отбрасывать потому что не ясно есть ваш UUID в них или нет

    лучше замените на snowflake id какой нибудь который возрастает монотонно
    он похож на время и его кстати уже можно в PK хранить
  • https://t.me/clickhouse_ru
    нет =)
    откуда триггеры в LIVE VIEWS?

    можно какой нибудь
    CREATE MATERIALIZED VIEW mv_to_url TO table_name
    AS
    SELECT ...
    FROM another_table
    WHERE value > 10

    и у этого table_name, ENGINE=URL(...)

    тогда может быть будет POST запрос с значениями которые вы вставляете
    но надо экспериментировать
  • https://t.me/clickhouse_ru
    Интересная идея.
  • https://t.me/clickhouse_ru
    MATERIALIZED VIEW работает не со всей another_table
    а только с блоком данных прилетевшим из INSERT
  • https://t.me/clickhouse_ru
    Это я понимаю.
  • Словари есть. Буду пробовать, спасибо. На что ориентироваться в результате?
  • @l_dar ↶ Reply to #215302 #215308 07:19 AM, 23 Apr 2021
    а что такое snowflake id? Гугл говорит только что snowflake база данных
  • https://t.me/clickhouse_ru
    вот так гуглите =)
    snowflake да =) такая база есть

    twitter snowflakeid
    sonyflake id
  • https://t.me/clickhouse_ru
    Ваш гугл вам врет
    https://medium.com/nuances-of-programming/%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-snowflake-id-968dd6d21ca8
    Что такое Snowflake ID?

    Как обеспечить сохранность больших объемов данных? Три метода помогут вам в этом разобраться.

  • @l_dar #215311 07:21 AM, 23 Apr 2021
    Спасибо!
  • https://t.me/clickhouse_ru
    ну вы смотрите какой именно запрос генерирует на удаленных нодах ваш distributed запрос
    может быть там не передается dictGet условие... и вы там пытаетесь как то не потоково буферизировать результат

    вообще конечно запрос и структуры таблиц словарей нужны ...
    по памяти не обязательно именно ваш запрос отваливается, может быть там что-то другое отжирает
  • https://t.me/clickhouse_ru
    да на 3х, хочу еще одну взять машину. 2 шарда и к ним по реплике
  • https://t.me/clickhouse_ru
    @artemhnilov #215314 07:35 AM, 23 Apr 2021
    Подскажите, пожалуйста, Engine=Kafka — это только для консьюмера? Продьюсить в Кафку КХ не умеет?
  • https://t.me/clickhouse_ru
    ну тогда в целом не очень сложно должно быть. хотя надо смотреть какие косяки всплывут с Atomic и папкой /var/lib/clickhouse/store

    убираете replica-3 из <remote_servers> на replica-1 и replica-2
    должно подхватиться без рестарта
    ну и на уровне chproxy \ приложения \ kubernetes sevices если есть ее выключаете

    стопаете replica-3
    чистите в ней /var/lib/clickhouse/data/db/ваши_replicated_merge_tree_Таблицы/
    надеюсь вы использовали макросы при создании ReplicatedMergeTree таблиц =)
    меняете <shard>2</shard> <replica>replica-3</replica> в <macros>

    ставите новый сервер replica-4
    стопаете clickhouse-server на replica-4
    меняете <shard>2</shard> <replica>replica-4</replica> в <macros>
    переносите /var/lib/clickhouse/metadata с replica-3 на replica-4

    меняете на replica-3 и replica-4 <remote_servers> на двухшардовую конфигурацию
    стартуете replica-4 и replica-4

    проверяете что таблицы есть. но данных нет

    меняете на replica-1 и replica-2 <remote_servers> на двухшардовую конфигурацию
    подхватить должно без рестарта

    после этого проверяем что данные из Distributed таблиц выбираются нормально

    для ребалансировки данных
    можно сделать
    на replica-3
    INSERT INTO table SELECT * FROM remote('replica-1', db, table) WHERE <sharding_expression>=XXX
    и на replica-1
    ALTER TABLE table DELETE WHERE <sharding_expression>=XXX
    и молиться что все нормально отреплицируется

    пользуясь случаем прорекламирую что если у вас kubernetes умеет horizontal autoscaling
    и вы используете clickhouse-operator

    может провернуть вам подобное (но без перебалансировки данных)
    там просто в yaml манифесте меняется
    spec:
    clusters:
    - name: cluster_name
    layout:
    shardCount: 1
    replicasCount: 3
    на
    layout:
    shardCount: 2
    replicasCount: 2
    ;)
  • https://t.me/clickhouse_ru
    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
    Спасибо. Прекрасно.
  • https://t.me/clickhouse_ru
    спасибо за крутой ответ!
  • @tuneyourserver #215319 08:50 AM, 23 Apr 2021
    День добрый.
    Не подскажете куда копать? переехал кластер с 20.9.2.20 на 21.3.6.55 с заменой конфигов.
    сейчас в лог валяться ошибки при достаточно легковесных запросах такого рода:
  • @tuneyourserver #215320 08:50 AM, 23 Apr 2021
    2021.04.23 08:46:08.171993 [ 2114 ] {cb4541fc-bac8-41ea-87cc-3665791c09ca} <Error>
    executeQuery: Code: 210, e.displayText() = DB::NetException: I/O error: Broken pipe, while writing to socket (192.168.0.171:49796) (version 21.3.6.55 (official build)) (from 192.168.0.171:49796)
    (in query: SELECT count() FROM DATABASE.TABLE), Stack trace (when copying this message, always include the lines below):

    0. DB::WriteBufferFromPocoSocket::nextImpl() @ 0xeb675e2 in /usr/bin/clickhouse
    1. DB::TCPHandler::sendProgress() @ 0xf8d1d80 in /usr/bin/clickhouse
    2. DB::TCPHandler::processOrdinaryQueryWithProcessors() @ 0xf8cd930 in /usr/bin/clickhouse
    3. DB::TCPHandler::runImpl() @ 0xf8c6d05 in /usr/bin/clickhouse
    4. DB::TCPHandler::run() @ 0xf8d8159 in /usr/bin/clickhouse
    5. Poco::Net::TCPServerConnection::start() @ 0x11f8c91f in /usr/bin/clickhouse
    6. Poco::Net::TCPServerDispatcher::run() @ 0x11f8e331 in /usr/bin/clickhouse
    7. Poco::PooledThread::run() @ 0x120c4a59 in /usr/bin/clickhouse
    8. Poco::ThreadImpl::runnableEntry(void*) @ 0x120c08ba in /usr/bin/clickhouse
    9. start_thread @ 0x76db in /lib/x86_64-linux-gnu/libpthread-2.27.so
    10. clone @ 0x12171f in /lib/x86_64-linux-gnu/libc-2.27.so

    2021.04.23 08:46:08.172078 [ 2114 ] {cb4541fc-bac8-41ea-87cc-3665791c09ca} <Error> TCPHandler: Code: 210, e.displayText() = DB::Exception: I/O error: Broken pipe, while writing to socket (192.168.0.171:49796), Stack trace:

    0. DB::WriteBufferFromPocoSocket::nextImpl() @ 0xeb675e2 in /usr/bin/clickhouse
    1. DB::TCPHandler::sendProgress() @ 0xf8d1d80 in /usr/bin/clickhouse
    2. DB::TCPHandler::processOrdinaryQueryWithProcessors() @ 0xf8cd930 in /usr/bin/clickhouse
    3. DB::TCPHandler::runImpl() @ 0xf8c6d05 in /usr/bin/clickhouse
    4. DB::TCPHandler::run() @ 0xf8d8159 in /usr/bin/clickhouse
    5. Poco::Net::TCPServerConnection::start() @ 0x11f8c91f in /usr/bin/clickhouse
    6. Poco::Net::TCPServerDispatcher::run() @ 0x11f8e331 in /usr/bin/clickhouse
    7. Poco::PooledThread::run() @ 0x120c4a59 in /usr/bin/clickhouse
    8. Poco::ThreadImpl::runnableEntry(void*) @ 0x120c08ba in /usr/bin/clickhouse
    9. start_thread @ 0x76db in /lib/x86_64-linux-gnu/libpthread-2.27.so
    10. clone @ 0x12171f in /lib/x86_64-linux-gnu/libc-2.27.so

    2021.04.23 08:46:08.172229 [ 2114 ] {cb4541fc-bac8-41ea-87cc-3665791c09ca} <Warning> TCPHandler: Client has gone away.
  • https://t.me/clickhouse_ru
    192.168.0.171
    это адрес клиента или сервера?
  • https://t.me/clickhouse_ru
    @forclarity #215322 09:29 AM, 23 Apr 2021
    Joined.
  • https://t.me/clickhouse_ru
    @joyzzi #215323 09:32 AM, 23 Apr 2021
    Joined.
  • @tuneyourserver #215324 09:34 AM, 23 Apr 2021
    сервера. Все ИП которые фигурируют в ошибках - серверов.
  • @tuneyourserver #215325 09:34 AM, 23 Apr 2021
    табличка distributed
  • @tuneyourserver #215326 09:39 AM, 23 Apr 2021
    2 шарда 2 реплики. Вылазит на всех без видимой закономерности
  • https://t.me/clickhouse_ru
    так, а эта ошибка на ноде инициаторе запроса?
    или на ноде с которой данные в distributed пытаются прочитаться?

    SELECT hostName(), * FROM clusterAllReplicas('your_cluster',system.settings) WHERE changed
    покажите ?
    или тоже не работает?

    https://clickhouse.tech/docs/en/operations/settings/settings/#settings-max_replica_delay_for_distributed_queries
    вот это значение одинаковое у всех?

    и вот это
    https://clickhouse.tech/docs/en/operations/settings/settings/#connect-timeout-with-failover-ms
    Settings | ClickHouse Documentation

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

  • @tuneyourserver #215328 09:41 AM, 23 Apr 2021
    насчет инициатора - надо ловить проверять. Займусь сейчас. У меня клиент с кластером работает random.
  • @tuneyourserver #215329 09:41 AM, 23 Apr 2021
    Query id: 464778a6-32c8-4482-a858-b69a24d852b8

    ┌─hostName()─┬─name─────────────────────────────┬─value───────┬─changed─┬─description──────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─min──┬─max──┬─readonly─┬─type───────────────────┐
    │ c1-s1-r1 │ max_query_size │ 1000000000 │ 1 │ Which part of the query can be read into RAM for parsing (the remaining data for INSERT, if any, is read later) │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    │ c1-s1-r1 │ connect_timeout_with_failover_ms │ 2000 │ 1 │ Connection timeout for selecting first healthy replica. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Milliseconds │
    │ c1-s1-r1 │ queue_max_wait_ms │ 0 │ 1 │ The wait time in the request queue, if the number of concurrent requests exceeds the maximum. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Milliseconds │
    │ c1-s1-r1 │ load_balancing │ random │ 1 │ Which replicas (among healthy replicas) to preferably send a query to (on the first attempt) for distributed processing. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ LoadBalancing │
    │ c1-s1-r1 │ log_queries │ 0 │ 1 │ Log requests and write the log to the system table. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ c1-s1-r1 │ distributed_product_mode │ local │ 1 │ How are distributed subqueries performed inside IN or JOIN sections? │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ DistributedProductMode │
    │ c1-s1-r1 │ joined_subquery_requires_alias │ 0 │ 1 │ Force joined subqueries and table functions to have aliases for correct name qualification. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ c1-s1-r1 │ max_memory_usage │ 10000000000 │ 1 │ Maximum memory usage for processing of single query. Zero means unlimited. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    │ c1-s1-r1 │ log_query_threads │ 0 │ 1 │ Log query threads into system.query_thread_log table. This setting have effect only when 'log_queries' is true. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    └────────────┴──────────────────────────────────┴─────────────┴─────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────┴──────┴──────────┴────────────────────────┘
    ┌─hostName()─┬─name─────────────────────────────┬─value───────┬─changed─┬─description──────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─min──┬─max──┬─readonly─┬─type───────────────────┐
    │ c1-s1-r2 │ max_query_size │ 1000000000 │ 1 │ Which part of the query can be read into RAM for parsing (the remaining data for INSERT, if any, is read later) │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    │ c1-s1-r2 │ connect_timeout_with_failover_ms │ 2000 │ 1 │ Connection timeout for selecting first healthy replica. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Milliseconds │
    │ c1-s1-r2 │ load_balancing │ random │ 1 │ Which replicas (among healthy replicas) to preferably send a query to (on the first attempt) for distributed processing. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ LoadBalancing │
    │ c1-s1-r2 │ log_queries │ 0 │ 1 │ Log requests and write the log to the system table. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
  • @tuneyourserver #215330 09:41 AM, 23 Apr 2021
    │ c1-s1-r2 │ distributed_product_mode │ local │ 1 │ How are distributed subqueries performed inside IN or JOIN sections? │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ DistributedProductMode │
    │ c1-s1-r2 │ joined_subquery_requires_alias │ 0 │ 1 │ Force joined subqueries and table functions to have aliases for correct name qualification. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ c1-s1-r2 │ max_memory_usage │ 10000000000 │ 1 │ Maximum memory usage for processing of single query. Zero means unlimited. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    │ c1-s1-r2 │ log_query_threads │ 0 │ 1 │ Log query threads into system.query_thread_log table. This setting have effect only when 'log_queries' is true. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ c1-s1-r2 │ normalize_function_names │ 0 │ 1 │ Normalize function names to their canonical names │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    └────────────┴──────────────────────────────────┴─────────────┴─────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────┴──────┴──────────┴────────────────────────┘
    ┌─hostName()─┬─name─────────────────────────────┬─value───────┬─changed─┬─description──────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─min──┬─max──┬─readonly─┬─type───────────────────┐
    │ c1-s2-r2 │ max_query_size │ 1000000000 │ 1 │ Which part of the query can be read into RAM for parsing (the remaining data for INSERT, if any, is read later) │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    │ c1-s2-r2 │ connect_timeout_with_failover_ms │ 2000 │ 1 │ Connection timeout for selecting first healthy replica. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Milliseconds │
    │ c1-s2-r2 │ load_balancing │ random │ 1 │ Which replicas (among healthy replicas) to preferably send a query to (on the first attempt) for distributed processing. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ LoadBalancing │
    │ c1-s2-r2 │ log_queries │ 0 │ 1 │ Log requests and write the log to the system table. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ c1-s2-r2 │ distributed_product_mode │ local │ 1 │ How are distributed subqueries performed inside IN or JOIN sections? │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ DistributedProductMode │
    │ c1-s2-r2 │ joined_subquery_requires_alias │ 0 │ 1 │ Force joined subqueries and table functions to have aliases for correct name qualification. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ c1-s2-r2 │ max_memory_usage │ 10000000000 │ 1 │ Maximum memory usage for processing of single query. Zero means unlimited. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    │ c1-s2-r2 │ log_query_threads │ 0 │ 1 │ Log query threads into system.query_thread_log table. This setting have effect only when 'log_queries' is true. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ c1-s2-r2 │ normalize_function_names │ 0 │ 1 │ Normalize function names to their canonical names │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
  • @tuneyourserver #215331 09:41 AM, 23 Apr 2021
    └────────────┴──────────────────────────────────┴─────────────┴─────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────┴──────┴──────────┴────────────────────────┘
    ┌─hostName()─┬─name─────────────────────────────┬─value───────┬─changed─┬─description──────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─min──┬─max──┬─readonly─┬─type───────────────────┐
    │ c1-s2-r1 │ max_query_size │ 1000000000 │ 1 │ Which part of the query can be read into RAM for parsing (the remaining data for INSERT, if any, is read later) │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    │ c1-s2-r1 │ connect_timeout_with_failover_ms │ 2000 │ 1 │ Connection timeout for selecting first healthy replica. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Milliseconds │
    │ c1-s2-r1 │ load_balancing │ random │ 1 │ Which replicas (among healthy replicas) to preferably send a query to (on the first attempt) for distributed processing. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ LoadBalancing │
    │ c1-s2-r1 │ log_queries │ 0 │ 1 │ Log requests and write the log to the system table. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ c1-s2-r1 │ distributed_product_mode │ local │ 1 │ How are distributed subqueries performed inside IN or JOIN sections? │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ DistributedProductMode │
    │ c1-s2-r1 │ joined_subquery_requires_alias │ 0 │ 1 │ Force joined subqueries and table functions to have aliases for correct name qualification. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ c1-s2-r1 │ max_memory_usage │ 10000000000 │ 1 │ Maximum memory usage for processing of single query. Zero means unlimited. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    │ c1-s2-r1 │ log_query_threads │ 0 │ 1 │ Log query threads into system.query_thread_log table. This setting have effect only when 'log_queries' is true. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ c1-s2-r1 │ normalize_function_names │ 0 │ 1 │ Normalize function names to their canonical names │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    └────────────┴──────────────────────────────────┴─────────────┴─────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────┴──────┴──────────┴────────────────────────┘
  • @tuneyourserver #215332 09:42 AM, 23 Apr 2021
    так. Наверно как-то отформатировать надо?
  • @tuneyourserver #215333 09:42 AM, 23 Apr 2021
    или норм?
  • https://t.me/clickhouse_ru
    @403151304 #215335 09:42 AM, 23 Apr 2021
    format Vertical
  • @tuneyourserver #215336 09:44 AM, 23 Apr 2021
    Query id: 8a995e1e-0352-4511-bc74-fd2b0cd4c235

    Row 1:
    ──────
    hostName(): c1-s1-r1
    name: max_query_size
    value: 1000000000
    changed: 1
    description: Which part of the query can be read into RAM for parsing (the remaining data for INSERT, if any, is read later)
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: UInt64

    Row 2:
    ──────
    hostName(): c1-s1-r1
    name: connect_timeout_with_failover_ms
    value: 2000
    changed: 1
    description: Connection timeout for selecting first healthy replica.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Milliseconds

    Row 3:
    ──────
    hostName(): c1-s1-r1
    name: queue_max_wait_ms
    value: 0
    changed: 1
    description: The wait time in the request queue, if the number of concurrent requests exceeds the maximum.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Milliseconds

    Row 4:
    ──────
    hostName(): c1-s1-r1
    name: load_balancing
    value: random
    changed: 1
    description: Which replicas (among healthy replicas) to preferably send a query to (on the first attempt) for distributed processing.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: LoadBalancing

    Row 5:
    ──────
    hostName(): c1-s1-r1
    name: log_queries
    value: 0
    changed: 1
    description: Log requests and write the log to the system table.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Bool

    Row 6:
    ──────
    hostName(): c1-s1-r1
    name: distributed_product_mode
    value: local
    changed: 1
    description: How are distributed subqueries performed inside IN or JOIN sections?
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: DistributedProductMode

    Row 7:
    ──────
    hostName(): c1-s1-r1
    name: joined_subquery_requires_alias
    value: 0
    changed: 1
    description: Force joined subqueries and table functions to have aliases for correct name qualification.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Bool

    Row 8:
    ──────
    hostName(): c1-s1-r1
    name: max_memory_usage
    value: 10000000000
    changed: 1
    description: Maximum memory usage for processing of single query. Zero means unlimited.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: UInt64

    Row 9:
    ───────
    hostName(): c1-s1-r1
    name: log_query_threads
    value: 0
    changed: 1
    description: Log query threads into system.query_thread_log table. This setting have effect only when 'log_queries' is true.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Bool

    Row 10:
    ───────
    hostName(): c1-s1-r2
    name: max_query_size
    value: 1000000000
    changed: 1
    description: Which part of the query can be read into RAM for parsing (the remaining data for INSERT, if any, is read later)
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: UInt64

    Row 11:
    ───────
    hostName(): c1-s1-r2
    name: connect_timeout_with_failover_ms
    value: 2000
    changed: 1
    description: Connection timeout for selecting first healthy replica.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Milliseconds

    Row 12:
    ───────
    hostName(): c1-s1-r2
    name: load_balancing
    value: random
    changed: 1
    description: Which replicas (among healthy replicas) to preferably send a query to (on the first attempt) for distributed processing.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: LoadBalancing

    Row 13:
    ───────
    hostName(): c1-s1-r2
    name: log_queries
    value: 0
    changed: 1
    description: Log requests and write the log to the system table.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Bool

    Row 14:
    ───────
    hostName(): c1-s1-r2
    name: distributed_product_mode
    value: local
    changed: 1
    description: How are distributed subqueries performed inside IN or JOIN sections?
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: DistributedProductMode
  • @tuneyourserver #215337 09:44 AM, 23 Apr 2021
    Row 15:
    ───────
    hostName(): c1-s1-r2
    name: joined_subquery_requires_alias
    value: 0
    changed: 1
    description: Force joined subqueries and table functions to have aliases for correct name qualification.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Bool

    Row 16:
    ───────
    hostName(): c1-s1-r2
    name: max_memory_usage
    value: 10000000000
    changed: 1
    description: Maximum memory usage for processing of single query. Zero means unlimited.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: UInt64

    Row 17:
    ───────
    hostName(): c1-s1-r2
    name: log_query_threads
    value: 0
    changed: 1
    description: Log query threads into system.query_thread_log table. This setting have effect only when 'log_queries' is true.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Bool

    Row 18:
    ───────
    hostName(): c1-s1-r2
    name: normalize_function_names
    value: 0
    changed: 1
    description: Normalize function names to their canonical names
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Bool

    Row 19:
    ───────
    hostName(): c1-s2-r2
    name: max_query_size
    value: 1000000000
    changed: 1
    description: Which part of the query can be read into RAM for parsing (the remaining data for INSERT, if any, is read later)
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: UInt64

    Row 20:
    ───────
    hostName(): c1-s2-r2
    name: connect_timeout_with_failover_ms
    value: 2000
    changed: 1
    description: Connection timeout for selecting first healthy replica.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Milliseconds

    Row 21:
    ───────
    hostName(): c1-s2-r2
    name: load_balancing
    value: random
    changed: 1
    description: Which replicas (among healthy replicas) to preferably send a query to (on the first attempt) for distributed processing.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: LoadBalancing

    Row 22:
    ───────
    hostName(): c1-s2-r2
    name: log_queries
    value: 0
    changed: 1
    description: Log requests and write the log to the system table.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Bool

    Row 23:
    ───────
    hostName(): c1-s2-r2
    name: distributed_product_mode
    value: local
    changed: 1
    description: How are distributed subqueries performed inside IN or JOIN sections?
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: DistributedProductMode

    Row 24:
    ───────
    hostName(): c1-s2-r2
    name: joined_subquery_requires_alias
    value: 0
    changed: 1
    description: Force joined subqueries and table functions to have aliases for correct name qualification.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Bool

    Row 25:
    ───────
    hostName(): c1-s2-r2
    name: max_memory_usage
    value: 10000000000
    changed: 1
    description: Maximum memory usage for processing of single query. Zero means unlimited.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: UInt64

    Row 26:
    ───────
    hostName(): c1-s2-r2
    name: log_query_threads
    value: 0
    changed: 1
    description: Log query threads into system.query_thread_log table. This setting have effect only when 'log_queries' is true.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Bool

    Row 27:
    ───────
    hostName(): c1-s2-r2
    name: normalize_function_names
    value: 0
    changed: 1
    description: Normalize function names to their canonical names
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Bool

    Row 28:
    ───────
    hostName(): c1-s2-r1
    name: max_query_size
    value: 1000000000
    changed: 1
    description: Which part of the query can be read into RAM for parsing (the remaining data for INSERT, if any, is read later)
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: UInt64
  • @tuneyourserver #215338 09:44 AM, 23 Apr 2021
    Row 29:
    ───────
    hostName(): c1-s2-r1
    name: connect_timeout_with_failover_ms
    value: 2000
    changed: 1
    description: Connection timeout for selecting first healthy replica.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Milliseconds

    Row 30:
    ───────
    hostName(): c1-s2-r1
    name: load_balancing
    value: random
    changed: 1
    description: Which replicas (among healthy replicas) to preferably send a query to (on the first attempt) for distributed processing.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: LoadBalancing

    Row 31:
    ───────
    hostName(): c1-s2-r1
    name: log_queries
    value: 0
    changed: 1
    description: Log requests and write the log to the system table.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Bool

    Row 32:
    ───────
    hostName(): c1-s2-r1
    name: distributed_product_mode
    value: local
    changed: 1
    description: How are distributed subqueries performed inside IN or JOIN sections?
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: DistributedProductMode

    Row 33:
    ───────
    hostName(): c1-s2-r1
    name: joined_subquery_requires_alias
    value: 0
    changed: 1
    description: Force joined subqueries and table functions to have aliases for correct name qualification.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Bool

    Row 34:
    ───────
    hostName(): c1-s2-r1
    name: max_memory_usage
    value: 10000000000
    changed: 1
    description: Maximum memory usage for processing of single query. Zero means unlimited.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: UInt64

    Row 35:
    ───────
    hostName(): c1-s2-r1
    name: log_query_threads
    value: 0
    changed: 1
    description: Log query threads into system.query_thread_log table. This setting have effect only when 'log_queries' is true.
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Bool

    Row 36:
    ───────
    hostName(): c1-s2-r1
    name: normalize_function_names
    value: 0
    changed: 1
    description: Normalize function names to their canonical names
    min: ᴺᵁᴸᴸ
    max: ᴺᵁᴸᴸ
    readonly: 0
    type: Bool

    36 rows in set. Elapsed: 0.022 sec. Processed 1.56 thousand rows, 294.36 KB (69.38 thousand rows/s., 13.13 MB/s.)
  • https://t.me/clickhouse_ru
    ну только один таймаут меньше сделали

    ошибка непонятна в том в каком именно сокет и кто не может записать

    конфиги сети не менялись ?
  • @tuneyourserver #215340 09:44 AM, 23 Apr 2021
    нет. сеть не менялась, ipv6 выключен
  • @tuneyourserver #215341 09:44 AM, 23 Apr 2021
    max_replica_delay_for_distributed_queries не знаю, не трогал настройку. Как ее найти?
  • https://t.me/clickhouse_ru
    @beeblebrox #215343 09:48 AM, 23 Apr 2021
    всем привет!

    поделитесь опытом, пожалуйста - если у вас есть таблица с сырым логом событий, и вам нужен агрегат над ней, как кошерней поступить: matview или агрегировать по крону руками
    или как-то ещё?

    важны надёжность (в первую очередь составления агрегата; если же в него иногда не доедет капелюшечка данных, то это терпимо)
    простота добавления новых столбцов
    возможность иногда переагрегировать данные (matview же не запрещает это сделать, кажется?)

    на самом деле, не очень хорошо представляю свои конкретные вопросы - хотелось бы просто узнать неочевидные плюсы-минусы-подводные камни подходов

    пока что я знаю только, что matview это по сути таблица + триггер на инсерт в основную таблицу
    ну и могу себе представить, как может фейлиться кронджоба)
  • Если поможет, могу смоделировать ситуацию когда клиент будет слать запросы на один инстанс.
  • https://t.me/clickhouse_ru
    ну не трогайте пока, нет смысла

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

    исходящая запись в клиентский сокет для записи ответа вашему клиенту
    исходящая запись на узле инициаторе запроса в сокет идущий к другим узлам
    исходящая запись на узле обработчике запроса в сокет идущий к узлу инициатору

    Distributed таблица поверх каких таблиц сделана?
    <remote_servers>
    проверьте на всех серверах
    вдруг там порты не те, или хосты
  • https://t.me/clickhouse_ru
    ну у вас SELECT * FROM clusterAllReplicas без ошибок прошел, возможно проблем нет
  • https://t.me/clickhouse_ru
    @BloodJazMan #215347 09:52 AM, 23 Apr 2021
    еще можно попробовать SYSTEM DROP DNS CACHE на всех узлах выполнить
  • @tuneyourserver #215349 09:55 AM, 23 Apr 2021
    хм...
    ни NS ни hostname не менялось. Ни ИПы. Конфигурация кластера переехала в конфиг с предыдущих версий где проблем небыло.
    Конфиги проверю сейчас еще раз и резетну кеш. Но ошибка возникает на всех машинах и не всегда. В общем попробую сейчас собрать больше статистики - отпишусь.

    Еще момент - все 4 машинки на proxmox крутятся, т.е. вритуалки. Апдейта убунты не проводит перед поднятием версии клика.
  • @tuneyourserver #215350 09:55 AM, 23 Apr 2021
    Спасибо
  • https://t.me/clickhouse_ru
    ну как вариант смотреть в сторону proxmox может быть он дропает коннекты

    смотреть IPTABLES
    поснифать трафик посмотреть на какие нибудь неожиданные TCP RST
  • @tuneyourserver #215352 10:02 AM, 23 Apr 2021
    сейчас соберу статистику по дропам. но опять же, даже перезагрузок небыло при поднятии версии клика.
  • https://t.me/clickhouse_ru
    ну тогда надо определиться все таки
    между чем и чем ошибка возникает
    https://t.me/clickhouse_ru/215345
    Slach [altinity] in ClickHouse не тормозит

    ну не трогайте пока, нет смысла тут просто надо понять где ошибка возникает в какой именно сокет не может записать clickhouse вариантов несколько исходящая запись в клиентский сокет для записи ответа вашему клиенту исходящая запись на узле инициаторе запроса в сокет идущий к другим узлам исходящая запись на узле обработчике запроса в сокет идущий к узлу инициатору Distributed таблица поверх каких таблиц сделана? <remote_servers> проверьте на всех серверах вдруг там порты не те, или хосты

  • @tuneyourserver #215355 10:06 AM, 23 Apr 2021
    <Error> TCPHandler: Code: 210, e.displayText() = DB::Exception: I/O error: Broken pipe, while writing to socket (192.168.0.172:48668)

    всегда ошибка с ИП адресом, кто инициатор запроса. С ип адресом хоста, куда коннектится клиент.
  • @tuneyourserver #215356 10:08 AM, 23 Apr 2021
    iptables чист. Ни коннтрека ни инпута ни NAT правил нет.
  • @tuneyourserver #215357 10:09 AM, 23 Apr 2021
    сетевой интерфейс общий, прокс virtio, ресурсы одинаковы. uptime прокса не более 25%
  • @tuneyourserver #215358 10:09 AM, 23 Apr 2021
    остальное в идле
  • @tuneyourserver #215359 10:09 AM, 23 Apr 2021
    =/
  • @tuneyourserver #215360 10:13 AM, 23 Apr 2021
    если попробовать debag пакеты поставить - как это дело попробовать прострейсить? или нет смысла дергаться?
  • @tuneyourserver #215361 10:13 AM, 23 Apr 2021
    debug*
  • https://t.me/clickhouse_ru
    @chemistvik #215362 10:13 AM, 23 Apr 2021
    nft правил нет?
    Телнет на порт проходит?
    tcpdump ом трафик смотрел?
  • @tuneyourserver #215363 10:15 AM, 23 Apr 2021
    nft - нета
    Телнет на порт проходит? - да. И запросы в 80% времени без сбоев. Данные собираются и дистрьютятся.
    tcpdump ом трафик смотрел? - нет. если подскажете команды моду снять
  • @tuneyourserver #215365 10:16 AM, 23 Apr 2021
    UPD - даже при ошибке данные корректны.... Хм...
  • @tuneyourserver #215366 10:17 AM, 23 Apr 2021
    я не знаю, может и можно закрыть глаза на лог и вылить в прод это дело, но что-то немного страшновато
  • https://t.me/clickhouse_ru
    @708912204 #215367 11:24 AM, 23 Apr 2021
    Добрый день. Подскажите, пожалуйста, по оптимальному написанию запроса для следующей задачи. Есть кластер из 10 узлов. На нем нужно посчитать одним запросом 1) Количество уникальных отправок, кликов и открытий сообщений. 2) Общее количество отправок, кликов и открытий сообщений. 3) Количество уникальных получателей сообщений. Ключ шардирования выбран как Hash(Identity) (идентификатор получателя). Делаю вот такой запрос: SELECT
    Date,
    SUM(SentCountTmp) AS AllSent,
    SUM(OpenedCountTmp) AS AllOpened,
    SUM(ClickedCountTmp) AS AllClicked,
    SUM(UniqueSentCountTmp) AS UniqueSent,
    SUM(UniqueOpenedCountTmp) AS UniqueOpened,
    SUM(UniqueClickedCountTmp) AS UniqueClicked
    FROM(
    SELECT
    Sent AS Date,
    SUM(SentCount) AS SentCountTmp,
    SUM(OpenedCount) AS OpenedCountTmp,
    SUM(ClickedCount) AS ClickedCountTmp,
    1 AS UniqueSentCountTmp,
    SUM(UniqueOpenedCount) AS UniqueOpenedCountTmp,
    SUM(UniqueClickedCount) AS UniqueClickedCountTmp
    FROM(
    SELECT
    Sent AS Sent,
    Identity AS Identity,
    SUM(SentCount) AS SentCount,
    SUM(OpenedCount) AS OpenedCount,
    SUM(ClickedCount) AS ClickedCount,
    OpenedCount > 0 AS UniqueOpenedCount,
    ClickedCount > 0 AS UniqueClickedCount
    FROM Retention.Events_View
    WHERE Realm = 'some data' AND Sent >= 'from date' AND Sent <= 'to date'
    GROUP BY Sent, MessageId, Identity)
    GROUP BY Sent, Identity)
    GROUP BY Date. Хотелось бы выполнить основной запрос (3-й по вложенности) и вложенный подзапрос (2-й по вложенности) на локальных узлах, т.к. в GroupBy есть ключ шардирования, в самый верхний запрос уже доагрегировать на узле к которому стучится клиент. Сейчас по метрикам потребления памяти на узле к которому стучится клиент, кажется, что агрегацией занимается тот узел, к которому стучится клиент (т.к. данные скачиваются на него), т.к. там память для запроса утекает ну очень сильно.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @708912204 #215370 11:27 AM, 23 Apr 2021
    Можно как-то запрос переписать так, чтобы он весь выполнялся на локальных узлах, а потом происходила доагрегация всех результатов на том узле, куда клиент пришел?
  • https://t.me/clickhouse_ru
    Можно через view пихнуть, но это костыль

    https://clickhouse.tech/docs/en/sql-reference/table-functions/view/#view
    view | ClickHouse Documentation

    view Turns a subquery into a table. The function implements views (see CREATE VIEW). The resulting table doesn't store d

  • https://t.me/clickhouse_ru
    Но это ведь даже и не агрегат
  • https://t.me/clickhouse_ru
    Непонятно зачем вам два уровня подзапроса, почему не sumIf ?
  • https://t.me/clickhouse_ru
    Спасибо, про uniqExact почитаю. Не знал про эту функцию.
  • https://t.me/clickhouse_ru
    @unamedrus #215375 11:35 AM, 23 Apr 2021
    да вам кажется, что даже uniqExact не нужен, простой sumIf достаточно
  • https://t.me/clickhouse_ru
    @708912204 #215376 11:37 AM, 23 Apr 2021
    Можно конечно решить задачу банально рассчитывая ключ шардирования в коде клиента, и зная количество шард сделать 10 запросов ( по запросу на каждую) и уже в коде сделать суммирование по датам. Но это совсем не гибко.
  • https://t.me/clickhouse_ru
    @unamedrus #215377 11:40 AM, 23 Apr 2021
    Мне не понятно, что мешает переписать запрос на что то подобное:

    SELECT
    Date,
    SUM(SentCount) AS AllSent,
    SUM(OpenedCount) AS AllOpened,
    SUM(ClickedCount) AS AllClicked,
    uniqExact(Sent,Identity) AS UniqueSent,
    countIf(OpenedCount > 0) AS UniqueOpened,
    countIf(ClickedCount > 0) AS UniqueClicked
    FROM Retention.Events_View
    WHERE (Realm = 'some data') AND (Sent >= 'from date') AND (Sent <= 'to date')
    )
    GROUP BY Date
  • https://t.me/clickhouse_ru
    Ага, понял вас. Сейчас почитаю как работает uniqExact.
  • https://t.me/clickhouse_ru
    Спасибо! Действительно полезная функция для моей задачи.
  • вернул кластер на 20.9.2.20. Ошибка ушла все работает....
  • @tuneyourserver #215381 11:59 AM, 23 Apr 2021
    та же конфигурация машин. только пакеты заменил. Конфиги те же
  • https://t.me/clickhouse_ru
    @708912204 #215382 11:59 AM, 23 Apr 2021
    А еще подскажите, по поводу ключа сортировки. В данный момент ключ сортировки для мат вью выбран исходя из фильтров в условии WHERE. Проанализировав количество запросов с использованием фильтров пришел к выводу, что фильтр в 95% случаев используется только по датам, и по 2 другим полям. Остальные поля в фильтре очень редко используются. Если сделать ключ сортировки по Date, двум полям, которые практически во всех запросах используются в WHERE, поля группировки - это сильно ускорит запрос? Будет ли как-то при группировке индекс использоваться? Или лучше замерить?
  • @697746773 #215383 12:29 PM, 23 Apr 2021
    Всем привет.
    пытаюсь удалить старые данные через удаление партиции
    ALTER TABLE history DROP PARTITION '202101'
    ругается и говорит "Type mismatch in IN or VALUES section"
    судя по всему нужно еще что-то указать но не пойму что
    тут ничего подобного нет
    https://clickhouse.tech/docs/ru/sql-reference/statements/alter/partition/#alter_drop-partition
    подскажите плиз. версия достаточно старая 19.15.3.6 возможно там другой синтаксис был
    PARTITION | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    ALTER TABLE history DROP PARTITION ID '202101'; попробуйте
  • Спасибо большое, помогло.
  • https://t.me/clickhouse_ru
    Вообще как совет лучше всегда делать манипуляции с партициями через ID
  • https://t.me/clickhouse_ru
    @innopolis #215389 01:08 PM, 23 Apr 2021
    почему может быть ошибка
    DB::Exception: Cannot parse input: expected \t before: \n1476808621985072019\t32937699\t2017-05-05\n1476808621985072019\t32937699\t2017-05-05\n1476808621985072019\t32937699\t2017-05-05\n1476808621985072019\t32937699\t2017-05-05 (version 19.16.4.12)
    ?
    Параметры при запросе
    {u'query': u'INSERT INTO db.table FORMAT TabSeparatedWithNames ', u'input_format_allow_errors_num': 99999, u'input_format_tsv_empty_as_default': 1, u'input_format_allow_errors_ratio': 1}
    не помогают

    MergeTree()

    поля не Nullable
  • https://t.me/clickhouse_ru
    MV не читает таблицу, ей все равно какой-там ключ сортировки.

    ключ сортировки надо выбирать исходя
    1. из используемого движка
    2. из похожести данных, чтобы увеличить компрессию
    3. из условий запросов where ...
    4. индекс primary key может не совпадать c order by (быть префиксом ключа сортировки)

    Очень часто помогает трюк ORDER BY a, toStartOfHour(ts), b, ...., ts

    абстрактно все это тяжело объяснить. Надо видимо сделать лекцию, часа на два.
  • https://t.me/clickhouse_ru
    Понял. Спасибо.
  • https://t.me/clickhouse_ru
    @den_crane #215392 01:15 PM, 23 Apr 2021
    И похоже у Яметрики очень которткие ORDER BY , буквально из 3 или 2х полей (таких чтобы кардинальность оставалась маленькой), для того чтобы работал sampling, это нигде не объяснено, и хрен догадаешься.
  • https://t.me/clickhouse_ru
    Clickhouse Cannot parse input: expected \t before

    I am trying to insert data into clickhouse using yandex logs api (https://github.com/yndx-metrika/logs_api_integration) It uses requests as a library to send request. My error is: Code: 27, e.displ...

  • https://t.me/clickhouse_ru
    какой то баг
    очень странно что он у вас не воспроизводится на clusterAllReplicas() там тот же механизм создается distributed таблица на лету

    а воспроизводится только на вашей distributed таблице..

    возможно надо попробовать последний stable 21.4
  • @tuneyourserver #215395 01:31 PM, 23 Apr 2021
    по идее могу свичнуть. Главное что бы возможность откатить была.
  • @tuneyourserver #215396 01:32 PM, 23 Apr 2021
    21.4.4.30 ?
  • https://t.me/clickhouse_ru
    оно
    но лучше конечно сначала на стенде каком нибудь проверить что с вашим конфигом откатиться можно

    прямо вот так 100% переключиться советовать не буду
  • @tuneyourserver #215398 01:37 PM, 23 Apr 2021
    это и есть стенд. тут прогоны до попадания на прод =)
  • @tuneyourserver #215399 01:37 PM, 23 Apr 2021
    свичнул
  • @tuneyourserver #215400 01:37 PM, 23 Apr 2021
    сейчас подам нагрузку.
  • https://t.me/clickhouse_ru
    @BloodJazMan #215401 01:38 PM, 23 Apr 2021
    если воспроизведется
    то надо какой то minimal reproducible project на docker-compose сделать
  • @tuneyourserver #215402 01:40 PM, 23 Apr 2021
    воспроизвелось. Причем на новом кейсе. дистрибютед таблица + словарь. Без таблицы в памяти
  • @tuneyourserver #215403 01:41 PM, 23 Apr 2021
    пусть тут тоже полежит
  • @tuneyourserver #215404 01:41 PM, 23 Apr 2021
    2021.04.23 13:38:27.202595 [ 2571 ] {7f44d23b-db70-4235-9d67-38fdd6ee984e} <Warning> TCPHandler: Client has gone away.
    2021.04.23 13:38:27.202600 [ 2647 ] {a3c948d4-8a32-4fa1-99bd-74e7dd927955} <Warning> TCPHandler: Client has gone away.
    2021.04.23 13:38:27.204699 [ 2570 ] {2325b7fc-3be3-438d-a62a-a8deeb9fc046} <Error> executeQuery: Code: 210, e.displayText() = DB::NetException: I/O error: Broken pipe, while writing to socket (192.168.0.172:45494) (version 21.4.4.30 (official build)) (from 192.168.0.172:45494) (in query:
    SELECT a_784586213.geoname_id, a_784586213.locale_code, a_784586213.continent_code, a_784586213.continent_name, a_784586213.country_iso_code, a_784586213.country_name, a_784586213.subdivision_1_iso_code, a_784586213.subdivision_1_name, a_784586213.subdivision_2_iso_code, a_784586213.subdivision_2_name, a_784586213.city_name, a_784586213.metro_code, a_784586213.time_zone, a_784586213.is_in_european_union FROM DB.local_geoipData AS a_784586213 WHERE geoname_id = dictGetUInt64('geoip2', 'geoname_id', tuple(IPv4StringToNum('172.23.0.1')))), Stack trace (when copying this message, always include the lines below):

    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x8914f0a in /usr/bin/clickhouse
    1. DB::WriteBufferFromPocoSocket::nextImpl() @ 0xf3bf255 in /usr/bin/clickhouse
    2. DB::TCPHandler::sendProfileInfo(DB::BlockStreamProfileInfo const&) @ 0x101676af in /usr/bin/clickhouse
    3. DB::TCPHandler::processOrdinaryQueryWithProcessors() @ 0x10162da8 in /usr/bin/clickhouse
    4. DB::TCPHandler::runImpl() @ 0x1015c165 in /usr/bin/clickhouse
    5. DB::TCPHandler::run() @ 0x1016d5c9 in /usr/bin/clickhouse
    6. Poco::Net::TCPServerConnection::start() @ 0x1282790f in /usr/bin/clickhouse
    7. Poco::Net::TCPServerDispatcher::run() @ 0x12829321 in /usr/bin/clickhouse
    8. Poco::PooledThread::run() @ 0x1295fa49 in /usr/bin/clickhouse
    9. Poco::ThreadImpl::runnableEntry(void*) @ 0x1295b8aa in /usr/bin/clickhouse
    10. start_thread @ 0x76db in /lib/x86_64-linux-gnu/libpthread-2.27.so
    11. __clone @ 0x12171f in /lib/x86_64-linux-gnu/libc-2.27.so

    2021.04.23 13:38:27.204768 [ 2570 ] {2325b7fc-3be3-438d-a62a-a8deeb9fc046} <Error> TCPHandler: Code: 210, e.displayText() = DB::Exception: I/O error: Broken pipe, while writing to socket (192.168.0.172:45494), Stack trace:

    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x8914f0a in /usr/bin/clickhouse
    1. DB::WriteBufferFromPocoSocket::nextImpl() @ 0xf3bf255 in /usr/bin/clickhouse
    2. DB::TCPHandler::sendProfileInfo(DB::BlockStreamProfileInfo const&) @ 0x101676af in /usr/bin/clickhouse
    3. DB::TCPHandler::processOrdinaryQueryWithProcessors() @ 0x10162da8 in /usr/bin/clickhouse
    4. DB::TCPHandler::runImpl() @ 0x1015c165 in /usr/bin/clickhouse
    5. DB::TCPHandler::run() @ 0x1016d5c9 in /usr/bin/clickhouse
    6. Poco::Net::TCPServerConnection::start() @ 0x1282790f in /usr/bin/clickhouse
    7. Poco::Net::TCPServerDispatcher::run() @ 0x12829321 in /usr/bin/clickhouse
    8. Poco::PooledThread::run() @ 0x1295fa49 in /usr/bin/clickhouse
    9. Poco::ThreadImpl::runnableEntry(void*) @ 0x1295b8aa in /usr/bin/clickhouse
    10. start_thread @ 0x76db in /lib/x86_64-linux-gnu/libpthread-2.27.so
    11. __clone @ 0x12171f in /lib/x86_64-linux-gnu/libc-2.27.so

    2021.04.23 13:38:27.204935 [ 2570 ] {2325b7fc-3be3-438d-a62a-a8deeb9fc046} <Warning> TCPHandler: Client has gone away.
  • @tuneyourserver #215405 01:42 PM, 23 Apr 2021
    CREATE TABLE DB.local_geoipData
    (
    geoname_id UInt64,
    locale_code String,
    continent_code String,
    continent_name String,
    country_iso_code String,
    country_name String,
    subdivision_1_iso_code String,
    subdivision_1_name String,
    subdivision_2_iso_code String,
    subdivision_2_name String,
    city_name String,
    metro_code String,
    time_zone String,
    is_in_european_union Int8
    )
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/local_geoipData ', '{replica}')
    ORDER BY (geoname_id, locale_code, continent_code)
    SETTINGS index_granularity = 8192

    CREATE TABLE DB.geoipData
    (
    geoname_id UInt64,
    locale_code String,
    continent_code String,
    continent_name String,
    country_iso_code String,
    country_name String,
    subdivision_1_iso_code String,
    subdivision_1_name String,
    subdivision_2_iso_code String,
    subdivision_2_name String,
    city_name String,
    metro_code String,
    time_zone String,
    is_in_european_union Int8
    )
    ENGINE = Distributed('DB_cluster', 'DB', 'local_geoipData', intHash64(geoname_id))
  • Попробую сделать. Но к сожалению нагрузку не уверен что смогу воссоздать без стейжей своих
  • @tuneyourserver #215407 01:46 PM, 23 Apr 2021
    субъективно еще версии 21.* медленней работают чем 20.9 текущая. Но это без метрик к сожалению, на глаз....
  • https://t.me/clickhouse_ru
    нельзя такое в TSV
    input_format_tsv_empty_as_default не для этого
  • https://t.me/clickhouse_ru
    данные так выглядят
    ClientID CounterID Date
    55 33 2017-05-05
    55 33 2017-05-05
    55 33 2017-05-05
    55 33 2017-05-05
    55 33 2017-05-05
    55 33 2017-05-05
    55 33 2017-05-05
    55 33 2017-05-05
  • https://t.me/clickhouse_ru
    uname -a (ядро какое)?
  • https://t.me/clickhouse_ru
    а инсерт как выглядит? сколько полей в таблице?
  • @tuneyourserver #215412 01:50 PM, 23 Apr 2021
    все тоже самое кроме DEB пакетов сервера
    https://monosnap.com/file/97EVnY95vCbVeebzI1PTpE5sFlAQki

    20 версия

    https://monosnap.com/file/0CYNqHnJ5IwOcOdYrBeeYwUYxqqPPv
    21 версия
  • uname -a
    Linux c1-s2-r2 4.15.0-142-generic #146-Ubuntu SMP Tue Apr 13 01:11:19 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
  • https://t.me/clickhouse_ru
    полей в таблице много, вставляю только часть полей в инсерте

    INSERT INTO db.table FORMAT TabSeparatedWithNames
  • https://t.me/clickhouse_ru
    проблема в 21.4 я правильно понял?

    попробуйте

    cat /etc/clickhouse-server/users.d/dis_async.xml
    <?xml version="1.0" ?>
    <yandex>
    <profiles>
    <default>
    <async_socket_for_remote>0</async_socket_for_remote>
    <use_hedged_requests>0</use_hedged_requests>
    </default>
    </profiles>
    </yandex>

    там баг в ядрах ниже 5...чего-то
  • @tuneyourserver #215416 01:53 PM, 23 Apr 2021
    секунду. создам файл и перенагружу.
  • https://t.me/clickhouse_ru
    Дэн, ты велИк и могУч!
  • https://t.me/clickhouse_ru
    ну не умеет такого КХ.
    Делайте select into T(a,b,c)
  • https://t.me/clickhouse_ru
    я угадываю подбрасывая кубики. Вот если поможет, тогда можно хвалить
  • https://t.me/clickhouse_ru
    💔

    спасибо
  • Похоже помогло. Пока не ловлю. Сейчас довешу нагрузки, но вроде вылечилось. И скорость отработки АПИ выровнялась.
    а есть вообще где почитать про эти опции поподробней?
    https://clickhouse.tech/codebrowser/html_report/ClickHouse/src/Core/Settings.h.html
  • @tuneyourserver #215422 02:03 PM, 23 Apr 2021
    Ребят, спасибо! Крутой продукт и вы крутые =) Пользуясь случаем, так сказать. Спасибо вам.
  • https://t.me/clickhouse_ru
    денни кран вроде из altinity, а ch проект яндекса?
  • немного не понял вопроса. но вроде как да =) про ch
  • И если Вас не затруднит, можете скинуть информацию по багу в ядре? если я верно истолковал опции - мне для поднятия скорости хорошо бы вернуть ассинк работу с сокетами. Соотв найти ядро с исправленным багом.
  • https://t.me/clickhouse_ru
    ну как сказать, я лично написал кучку документации, поправил несколько строк кода и написал кучку тестов и воспроизвел десятки критичных багов.
    и вообще 46% pull requests в последних релизах сделано не Яндексом уже
    из них 30% это Альтинити.
    В Альтинити кажется рабоает уже примерно столько же c++ девелоперов, которые работают над кодом КХ, как и в Яндексе
    DateTime64 / odbc (перепилен и поддерживается) / Delta DoubleDelta/ tiered storage / Ldap Kerberos -- это то что я помню из функциональности сделанной Альтинити
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/pull/22109

    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=339ddb53d373
    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0c54a6a44bf3
    Disable async_socket_for_remote/use_hedged_requests for buggy linux kernels by azat · Pull Request #22109 · ClickHouse/ClickHouse

    Changelog category (leave one): Bug Fix Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): Disable async_socket_for_remote/use_hedged_requests for buggy...

  • Спасибо огромное!
  • https://t.me/clickhouse_ru
    @1236463047 #215429 03:29 PM, 23 Apr 2021
    Парни, как увеличить таймаут к внешним mysql словарям?
  • https://t.me/clickhouse_ru
    @1236463047 #215430 03:30 PM, 23 Apr 2021
    что-то застыли... хотя на reload отрабатывают
  • https://t.me/clickhouse_ru
    LIFETIME имеется ввиду? или что?

    SHOW CREATE TABLE dictionary_name
    что у вас в source и layout ?
  • https://t.me/clickhouse_ru
    @1236463047 #215432 03:32 PM, 23 Apr 2021
    нене... словари через xml заданы
  • https://t.me/clickhouse_ru
    что в system.dictionaries ? ошибки есть какие то?
  • https://t.me/clickhouse_ru
    @1236463047 #215434 03:32 PM, 23 Apr 2021
    лайфтам стоит от 10 до 60
  • https://t.me/clickhouse_ru
    @1236463047 #215435 03:33 PM, 23 Apr 2021
    ошибки в логах хауса?
  • https://t.me/clickhouse_ru
    @1236463047 #215436 03:33 PM, 23 Apr 2021
    вот в system.dictionaries и вижу что не обновляются
  • https://t.me/clickhouse_ru
    @1236463047 #215437 03:34 PM, 23 Apr 2021
    а лайфтайм это минуты или секунды?
  • https://t.me/clickhouse_ru
    секунды
  • https://t.me/clickhouse_ru
    ошибки в system.dictionaries там поле есть типа last_exception и т.п.

    еще вроде была для XML возможность задать invalidate query по которому проверяется что надо новые данные грузить
  • https://t.me/clickhouse_ru
    @1236463047 #215440 03:37 PM, 23 Apr 2021
    эксепншенов нет. там походу глючок... у меня стояло 10 - отрабатывало. Я поставил 60 сек и дело встало... счас попробую на 10-20 вернуть
  • @simpl1g #215441 03:40 PM, 23 Apr 2021
    Подскажите почему HTTP запрос возвращающий DB::Exception отдаёт 200 ОК? Что-то не так отправляю?
    ClickHouse server version 20.8.9 revision 54438

    curl -i -X POST 'http://localhost:8123?send_progress_in_http_headers=1' -d 'SELECT device_type from table LIMIT 1 format Parquet'

    HTTP/1.1 200 OK
    Code: 50, e.displayText() = DB::Exception: The type "Enum8" of a column "device_type" is not supported for conversion into a Parquet data format: While executing ParquetBlockOutputFormat (version 20.8.9.6 (official build))

    Если убрать параметр send_progress_in_http_headers из урла, то возвращает 404. Или например если задать несуществующую колонку в sql запросе, то отдаст 404
  • https://t.me/clickhouse_ru
    10-20 секунд у вас полностью таблица \ SQL quey истоник будет перечитываться
  • https://t.me/clickhouse_ru
    @1236463047 #215443 03:41 PM, 23 Apr 2021
    да. у меня они небольшие
  • https://t.me/clickhouse_ru
    @1236463047 #215444 03:41 PM, 23 Apr 2021
    пусть читаются
  • https://t.me/clickhouse_ru
    send_progress_in_http_headers
    ее лучше вообще убирать, эта штука так себе работает с HTTP
  • https://t.me/clickhouse_ru
    @1236463047 #215446 03:43 PM, 23 Apr 2021
    нет, дело не в секундах, не помогло
  • https://t.me/clickhouse_ru
    @1236463047 #215447 03:43 PM, 23 Apr 2021
    эксепшенов нет, ошибок в логе нет... а дата перечитываания словарей не двигается
  • понял, спасибо
  • @helloworld2024 #215449 03:45 PM, 23 Apr 2021
    Всем привет, пытаюсь создать distributed таблицу
    CREATE TABLE event_distributed ON CLUSTER '{{.MIGRATIONS_CLUSTER_NAME}}' AS event_local

    Но на локальной таблице висит TTL, ругается что Distributed его поддерживает, как лучше сделать чтобы без ttl создать distr? Или дублировать колонки надо?
  • Это нормально, КХ не может знать если исполнение завалится в рантайме, т.е. если нет явной ошибки и запрос запущен будет 200 с периодическими хедерами статуса
  • тоесть недостаточно проверять что статус 2ХХ, но ещё надо парсить тело ответа на что-то типа /Code: \d+, e.displayText() = DB::Exception/ ??
  • да, более того у вас обычный запрос без прогресса тоже может начать стримить результат и умереть...
  • @dj_mixer #215453 03:53 PM, 23 Apr 2021
    единственный гарантированный способ это:
    wait_end_of_query=1

    но там со всеми вытекающими (память держать для всего результата, задержка, итд)...
  • https://t.me/clickhouse_ru
    @1236463047 #215454 03:53 PM, 23 Apr 2021
    нич не понимаю - system reload dictionary 'xxxx' отрабатывают, самый большой loading duration 0.063. Но автоматом раз в хх секунд ничего не читается. Изменение в xml файле словаря - перечитывается... как жить то дальше ))))
  • объяснять проблему получше... чего и куда там раз в ХХ секунд должно читаться
  • отбой, убрал ttl, и добавил его через alter table local после создания distributed, сработало
  • https://t.me/clickhouse_ru
    @1236463047 #215459 03:56 PM, 23 Apr 2021
    вот словарь. Надеюсь на его перечитку раз в 60 сек
  • https://t.me/clickhouse_ru
    @1236463047 #215460 03:56 PM, 23 Apr 2021
    invalidate_query убирал - не помогает
  • https://t.me/clickhouse_ru
    @1236463047 #215461 03:58 PM, 23 Apr 2021
    есть 3 базы данных - две спящих, одна боевая. со спящих читается, а с боевой нет. Вот возникла идея - мож таймаут отваливается при автоматической зачитке
  • https://t.me/clickhouse_ru
    @1236463047 #215462 03:59 PM, 23 Apr 2021
    боевая под нагрузкой всеже
  • https://t.me/clickhouse_ru
    @1236463047 #215463 04:05 PM, 23 Apr 2021
    попроболвал переключить на чтение словаря с резервного сервера - тоже самое. Измение хмл-файла - читается. И все на этом
  • https://t.me/clickhouse_ru
    @1236463047 #215464 04:05 PM, 23 Apr 2021
    автообновления нет
  • http://localhost:8123?send_progress_in_http_headers=1&wait_end_of_query=1

    так всеравно 200 ОК с ошибкой
    без send_progress_in_http_headers всё ок
  • https://t.me/clickhouse_ru
    @1236463047 #215468 04:22 PM, 23 Apr 2021
    ага... Вот оно:
    для MySQL 8 необходимо отключить кеширование мета-информации в MySQL set global information_schema_stats_expiry=0
    Скинулось после рестарта сервака
  • https://t.me/clickhouse_ru
    @bralbral #215469 04:52 PM, 23 Apr 2021
    Добрый вечер. Вопрос , скорее всего понятийного характера. Есть сырые данные вида (date_time, uid_from UInt32, uid_to UInt32 и еще 10 колонок - все целочисленные). Они попадают , как в MergeTree , так и AggregatingMergeTree. Запросы вида prewhere date_time between x and y where uid_from = или uid_to=. С аггрегацией проблем нет - время отклика удовлетворяет. Все хуже, когда человек хочет получить сырые данные из MergeTree. При таком запросе восникает iowait (смотрел в glances), полная утилизация диска. Храним 2 таблицы MT - одна order by (uid_from , toStartOfHour(date_time)) и (uid_to , toStartOfHour(date_time)). Сознательно уменьшали index_granularity с дефолтного значения до 256, надеясь, что это как-то должно разгрузить диски. Строк ~30-40kk в день. Менять диски, и вообще оборудование - нельзя 😊. уходить от кх куда-то в более подходящее для такого (кассандра и т.д) тоже не вариант, в силу инертности персонала. Есть идея (навеяно https://www.percona.com/sites/default/files/ple19-slides/day1-pm/clickhouse-for-timeseries.pdf) загружать все в одну таблицу - где сортировка будет (uid, direction, date_time), а остальное запихнуть, например в массив. Подскажите, правильное ли направление мыслей, или же исходная схема имеет место быть, и но проблемы не из-за архитектурного решения, а из-за железа?
  • https://t.me/clickhouse_ru
    >prewhere date_time between x and y where uid_from = или uid_to=
    и сколько таких запросов одновременно? Сколько строк они возвращают? Partition by что? сколько партиций сканирует запрос? Order by у select-а есть?
  • https://t.me/clickhouse_ru
    Запросов одновременно ~10-15. Строк возвращают по разному - начиная от десятков строк, заканчивая миллионом ( файлы порой несколько Гб). Партиции недельные - диапазон дат тоже разнится , чаще всего 2-3 месяца, нужна полная статистика , например , начиная с начала года. Сортировка order by toStartOfHour одновремя была, сейчас вообще отключили .
  • https://t.me/clickhouse_ru
    т.е. КХ выступает в роли block storage ? Я сомневаюсь что тут поможет что-то типа кассандры. По описанию вам просто надо читать очень много, и диски физически не могут выдать больше. Я бы начал с оптимизации диска на уровне железа и линукса, типа используется железный раид, убрать ...
  • https://t.me/clickhouse_ru
    Не совсем понимаю данный термин, но чтение действительно преобладает. Raid10 , везде. Железный. По поводу оптимизации линукса - смотрел в документации кх, выставлял параметры , которые в ней указаны. Хоть, хоть как-то сделать чуть лучше, хотим с lz4 на zstd перепрыгнуть, но по ощущениям , большого выигрыша ждать не стоит.
  • https://t.me/clickhouse_ru
    @OrNixx #215474 05:47 PM, 23 Apr 2021
    всем доброго вечера. почему может распухать таблица query_thread_log_0? 150 гиг уже налилось
  • https://t.me/clickhouse_ru
    железные рейды зачастую узкое место, у них очень слабые cpu , он не могут процессить с такой скоростью как современные HDD отдают.
    Я как-то раз переключил lsi-что-то там в режим hba, сделал из тех же самых 12 HDD софт-раид и получил перфоманс *2 в КХ на запросах которым надо много читать
  • https://t.me/clickhouse_ru
    можно удалить. Вот я тут статейку накидал https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-system-tables-eat-my-disk
  • https://t.me/clickhouse_ru
    Благодарю.
  • https://t.me/clickhouse_ru
    @den_crane #215478 05:58 PM, 23 Apr 2021
    query_thread_log_0 это вообще старая таблица, при апгрейде КХ переименовывает query_thread_log -> query_thread_log_0 -> query_thread_log_1
  • https://t.me/clickhouse_ru
    @den_crane #215479 05:59 PM, 23 Apr 2021
    если структура таблицы меняется
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #215476 #215480 05:59 PM, 23 Apr 2021
    благодарю. можно транкейтнуть смело?
  • https://t.me/clickhouse_ru
    да , и даже дроп
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #215481 #215482 06:01 PM, 23 Apr 2021
    но в ней свежие записи, от сегодня
  • https://t.me/clickhouse_ru
    точно не query_thread_log ?
    их всех можно дропать, это логи для пользователей
  • https://t.me/clickhouse_ru
    @den_crane #215484 06:02 PM, 23 Apr 2021
    можно отключить вообще

    $ cat /etc/clickhouse-server/config.d/z_log_disable.xml
    <?xml version="1.0"?>
    <yandex>
    <asynchronous_metric_log remove="1"/>
    <metric_log remove="1"/>
    <part_log remove="1" />
    <query_log remove="1" />
    <query_thread_log remove="1" />
    <text_log remove="1" />
    <trace_log remove="1"/>
    </yandex>
  • https://t.me/clickhouse_ru
    @den_crane #215485 06:02 PM, 23 Apr 2021
    (нужен рестарт)
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #215484 #215486 06:03 PM, 23 Apr 2021
    да, это в статье прочитал уже
  • Progress убрать
  • @tuneyourserver #215491 11:54 PM, 23 Apr 2021
    добрый. Простите, я тут опять спрошу
  • @tuneyourserver #215492 11:55 PM, 23 Apr 2021
    4 часа под нагрузкой
  • @tuneyourserver #215493 11:55 PM, 23 Apr 2021
    вижу такое
  • @tuneyourserver #215494 11:55 PM, 23 Apr 2021
    2021.04.23 23:53:06.901464 [ 2840 ] {25bb07d6-4bbd-4ac1-8516-f5cbd3883fe6} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.4.4.30 (official build))
    2021.04.23 23:53:07.118414 [ 3077 ] {647f530f-858e-4486-94e8-5804bdef29c6} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.4.4.30 (official build))
  • @tuneyourserver #215495 11:56 PM, 23 Apr 2021
    на каждом шарде по 20-30 сообщений прилетает
  • @tuneyourserver #215496 11:56 PM, 23 Apr 2021
    под нагрузкой только
  • @tuneyourserver #215497 11:59 PM, 23 Apr 2021
    данные валидны.
    Linux c1-s1-r1 4.15.0-142-generic
    21.4.4.30
    опции
  • @tuneyourserver #215498 11:59 PM, 23 Apr 2021
    <yandex>
    <!-- Profiles of settings. -->
    <profiles>
    <!-- Default settings. -->
    <default>

    <async_socket_for_remote>0</async_socket_for_remote>
    <use_hedged_requests>0</use_hedged_requests>

    <!-- Maximum memory usage for processing single query, in bytes. -->
    <max_memory_usage>10000000000</max_memory_usage>
    <max_query_size>1000000000</max_query_size>
    <log_queries>0</log_queries>
    <log_query_threads>0</log_query_threads>
    <connect_timeout_with_failover_ms>2000</connect_timeout_with_failover_ms>
    <distributed_product_mode>local</distributed_product_mode>
    <joined_subquery_requires_alias>0</joined_subquery_requires_alias>
  • 24 April 2021 (38 messages)
  • @tuneyourserver #215500 12:01 AM, 24 Apr 2021
    Connected to ClickHouse server version 21.4.4 revision 54447.
  • @tuneyourserver #215501 12:03 AM, 24 Apr 2021
    это стейж, но опять таки лог под нагрузкой говорит
  • @tuneyourserver #215502 12:04 AM, 24 Apr 2021
    такое
  • @tuneyourserver #215504 12:07 AM, 24 Apr 2021
    Linux c1-s1-r2 4.15.0-142-generic #146-Ubuntu SMP Tue Apr 13 01:11:19 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
  • @tuneyourserver #215505 12:08 AM, 24 Apr 2021
    опции по сокетам сделаны
  • https://t.me/clickhouse_ru
    а на что это влияет?
    clickhouse перечитывает каким то отдельным запросом метаданные из information_schema и там это как то подвисает или что?
  • https://t.me/clickhouse_ru
    Видимо да. Зачитал, там update_time не сменилось - значит можно не перезапрашивать. Странно только что mysql это поле хешит
  • @antsupovsa #215511 01:33 PM, 24 Apr 2021
    Коллеги, а кто-нибудь сталкивался с тем что при insert в CH не происходит добавление в базу ?
  • https://t.me/clickhouse_ru
    Какой движок у таблицы, через что вставляете?
  • Через php таблица mergetree
  • https://t.me/clickhouse_ru
    не distibuted и не replicated?
    как понимаете, что данные не вставились?
  • Не просто mergedtree, дебагом смотрю что запрос выполнился успешно и смотрю в таблице а записи нет:(
  • https://t.me/clickhouse_ru
    КХ для mysql делает show table ... и смотрит update_time. А в 8м mysql включили кеширование по умолчаниию и обновляют инфу раз в сутки.
  • https://t.me/clickhouse_ru
    TTL на таблице удаляет в момент инсерта?
  • Я не силён в кликхаусе. А что за ttl на таблице?
  • https://t.me/clickhouse_ru
    покажите show create table таблица
  • Мне дико не ловко. Но я отошёл от компьютера :(
  • https://t.me/clickhouse_ru
    ничего страшного, мы никуда не спешим. Потом покажите
    https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/mergetree/#mergetree-table-ttl
    MergeTree | Документация ClickHouse

    MergeTree Движок MergeTree, а также другие движки этого семейства (*MergeTree) — это наиболее функциональные движки табл

  • @l_dar #215522 02:25 PM, 24 Apr 2021
    Привет, помогите советом. Очень надо повесить на колонку индексацию, только одно но, там может быть NULL, clickhouse не дает добавить на эту колонку индекс.
    Скорее всего, у вас, профессионалов, уже есть определенные хитрости, как это сделать, можете поделиться? Или все таки никак?
  • https://t.me/clickhouse_ru
    тип поля? Зачем вам null?

    зависит от версии КХ, есть параметр allow_nullable_key https://github.com/sevirov/ClickHouse/blob/4da5882bec3e9b4cdc7af9079a259a1563be0ce5/docs/en/operations/settings/settings.md#allow_nullable_key-allow-nullable-key

    но поиска по индексу where ... is null кажется не будет
  • @l_dar ↶ Reply to #215523 #215524 02:37 PM, 24 Apr 2021
    Тип поля Int
    Это поле не обязательное, поэтому там может быть NULL
    Искать мне нужно как раз по значению, не NULL
  • @l_dar #215525 02:38 PM, 24 Apr 2021
    allow_nullable_key то что надо, с какой версии внедрили?
  • https://t.me/clickhouse_ru
    Ну и храните -999999999999 вместо null
  • @l_dar ↶ Reply to #215526 #215527 02:42 PM, 24 Apr 2021
    ну да, это первое что мне пришло в голову, но хотел все таки уточнить)
    Наверное попробую активировать allow_nullable_key
    Спасибо!
  • https://t.me/clickhouse_ru
    null корректно работает с аггрегирующими столбцами типа anyLatst и не перезатирает там последнее значение, а -999999999999 перезатирает и тогда приходится городить argMax, а он усложняет запросы и больше хранит данных на диске, хотя и полезен при многопоточной вставке, когда нужна гарантия, что значение действительно последнее
  • https://t.me/clickhouse_ru
    @artemhnilov #215531 05:36 PM, 24 Apr 2021
    Привет, можно ли мгновенно получить последнюю запись по времени или инкрементально возрастающему ID, не используя MV => CollapsingMergeTree?
  • https://t.me/clickhouse_ru
    @artemhnilov #215532 05:40 PM, 24 Apr 2021
    Ну или более общая задача: как можно эффективно получить последнюю запись какого-нибудь датчика IoT или грузовика в дороге (TimeSeries)? Или последнее состояние всех датчиков сразу?
  • https://t.me/clickhouse_ru
    anyLast?
  • https://t.me/clickhouse_ru
    ааа. 5 сек
  • https://t.me/clickhouse_ru
    allow_nullable_key? Ого, внезапно. А почему оно по дефолту выключено? Какие подводные камни?
  • https://t.me/clickhouse_ru
    Это не то. Нужно быстро получить последнее состояние.
  • https://t.me/clickhouse_ru
    argMax(tuple(*), t) ?
  • https://t.me/clickhouse_ru
    Потому что никто ее не тестировал. И не рекомендуется использовать с точки зрения перфоманса.
    Кх тормозит.
  • https://t.me/clickhouse_ru
    Не, это сканирует все 8 млрд. записей.
  • https://t.me/clickhouse_ru
    так если индексы по времени есть, то должно быть ок. но если нету, то да нужна какая-то специфическая низкоуровневая функция типо как в mysql last_insert_id или типо того
  • https://t.me/clickhouse_ru
    Время и инкрементальный ID есть в ключе сортировки таблицы. Но сканировать все подряд не вариант конечно. Буду пробовать с MV.
  • 25 April 2021 (60 messages)
  • https://t.me/clickhouse_ru
    Aggregating движки
  • https://t.me/clickhouse_ru
    Уже реализовал вчера. Все работает мгновенно.
  • https://t.me/clickhouse_ru
    @unamedrus #215549 07:58 AM, 25 Apr 2021
    Да тут и простого Replacing хватит
  • https://t.me/clickhouse_ru
    @artemhnilov #215551 09:22 AM, 25 Apr 2021
    Привет. Год назад Михаил Филимонов говорил о реализации атомарных MV в ближайшем будущем. Подскажите, пожалуйста, есть ли прогресс?
  • https://t.me/clickhouse_ru
    Прогресс есть,
    https://github.com/ClickHouse/ClickHouse/issues/22086
    есть RFC и ожидание, что будет сделано в этом году.
    [RFC] Limited support for transactions in MergeTree tables · Issue #22086 · ClickHouse/ClickHouse

    Use case Main use cases: Ability to execute multiple INSERTs (maybe into multiple MergeTree tables, including materialized views, #11909) in a single "transaction". All INSERT que...

  • @428004870 #215557 02:27 PM, 25 Apr 2021
    Доброго времени суток коллеги. Используем на службе ELK стек. В качестве альтернативы, планируем перейти так сказать на отечественное ПО -), есть ряд вопросов, прошу знатоков, помочь с ответами:
    1. В КликХаусе, есть аналог Кибаны?
    2. В индексы КликХаус можно грузить данные из xls или csv файлов?
    3. Возможен ли, так называемый массовый поиск: к примеру есть у нас огромное количество индексов, содержимое индексов разное, но во всех присутсвует поле: serialnum, так вот можно ли по всем индексам искать интересующие значение ? А если этих значений 1000 ? Поддерживается ли массовый поиск одной командой, с выводом результата что найдено а что нет ?
  • https://t.me/clickhouse_ru
    КХ это не про полнотекстовый поиск.

    Это колоночная СУБД с sql синтаксисом, иногда, с кастомным синтаксисом
    Но .
    1. Кибаны нет (суперсет/табикс)
    2. Да, загружать в таблицы можно разные форматы https://clickhouse.tech/docs/ru/interfaces/formats/amp/

    3. КХ и рассчитан на массовый поиск/вставку/апдейт. Точечные операции - не про КХ
  • 1) есть 3rd party типа tabix, но с кибаной рядом не валялось. но любой другой опен сорс БИ поставить можно, под популярные есть драйвера
    2) нет понятия индексы КХ. это просто колоночная ДБ со всеми вытекающими. Это не полнотекстовый текст. в колонки сами будете раскладывать важные поля.
    3) можно, если нечасто но лучше используйте ЭЛК
  • @428004870 #215560 02:37 PM, 25 Apr 2021
    Информацию принял, ELK как раз и пользуем для полнотекстового поиска. Отчегото считал, что КХ может его заменить. Перечитаю документацию. Но вот в ELK нельзя делать массовый поиск.
  • https://t.me/clickhouse_ru
    Вот есть статья, но это больше похоже на большой sql full-text search костыль. КХ не заменит полноценный фул-текст сёрч стек, типа ЭЛК

    https://m.habr.com/ru/post/304602/
    Разрабатываем систему real-time fulltext-поиска по error-логам на основе ClickHouse от Яндекса

    В этой статье я расскажу о том, как разработать систему для индексирования и полнотекстового поиска error-логов (или любых других логов) на основе СУБД от Яндекса под названием ClickHouse. Про саму...

  • Ознакомлюсь, благодарю.
  • https://t.me/clickhouse_ru
    @dbalashov #215563 02:42 PM, 25 Apr 2021
    привет, есть табличка с сотней полей, одно из полей - Name, обозначающее название группы. Распределение по количеству записей в группах примерно такое: https://i.tk-chel.ru/denisio/202104/25_194209.png
  • https://t.me/clickhouse_ru
    @dbalashov #215564 02:43 PM, 25 Apr 2021
    в типовых запросах всегда используется название группы. Всегда. Есть ли смысл разложить на 30 таблиц с одинаковой структурой - по одной на каждую группу?
  • https://t.me/clickhouse_ru
    @dbalashov #215565 02:43 PM, 25 Apr 2021
    или оставить в одной таблице всё и оставить в запросах where Name='Overspeed' and ... ?
  • https://t.me/clickhouse_ru
    а это же можно через invalidate_query разрулить как то?
  • https://t.me/clickhouse_ru
    @dbalashov #215567 02:51 PM, 25 Apr 2021
    @BloodJazMan ёу, чо скажешь :)
  • https://t.me/clickhouse_ru
    @dphil ↶ Reply to #215560 #215568 02:55 PM, 25 Apr 2021
    А вам нужен именно полнотекстовый поиск или поиск по шаблону или поиск по подстроке? Это очень разные сценарии )
  • https://eng.uber.com/logging/
    ну если железо становится дороже людей то можно что угодно накостылять...
    Fast and Reliable Schema-Agnostic Log Analytics Platform

    At Uber, we provide a centralized, reliable, and interactive logging platform that empowers engineers to work quickly and confidently at scale. The logs are tag

  • ну можете сделать партишнинг/субпартишнинг по именам и не надо 30 таблиц...
  • Таак интересно уже -) есть серийный номер содержащий в себе иногда только цыфры, а иногда содержит пару букв в начале а затем идут цифры, как пример: 1234567890 или abc1234567890. в кибане делаем: запрос через веб интерфейс: serialnum: *1234567890. В результате на выдаче имеем на выдаче все индексы + содержимое строки где встречалась искомая комбинация
  • @428004870 #215572 03:02 PM, 25 Apr 2021
    Если надо поискать информацию по ФИО сотрудника то порядок аналогичен.
  • @428004870 #215573 03:02 PM, 25 Apr 2021
    Единственно не умеем делать масовые запросы
  • https://t.me/clickhouse_ru
    @dphil ↶ Reply to #215571 #215574 03:03 PM, 25 Apr 2021
    Это поиск по подстроке, это уже несколько проще.
    Массовый запрос в вашем понимании - это "по всем полям вообще", я правильно понимаю? Т.е. искать 1234 и в серийном номере и в ФИО?
  • Массовый поиск в моем понимании: это с помошью одного запроса послать на поиск по 1000 номеров
  • @428004870 #215576 03:04 PM, 25 Apr 2021
    или же по 1000 ФИО
  • https://t.me/clickhouse_ru
    @dphil ↶ Reply to #215575 #215577 03:05 PM, 25 Apr 2021
    Ага, такое есть (но мне казалось, что и ELK умеет такое, в люцене вроде бы нужные функции были).
  • я лично не нашел. у нас стак: эластик + логстеш + кибана
  • https://t.me/clickhouse_ru
    @dphil #215579 03:06 PM, 25 Apr 2021
    А сколько GB логов в сутки и за какой период нужно искать обычно?
  • Вопрос мне адресован ?
  • https://t.me/clickhouse_ru
    @dphil ↶ Reply to #215580 #215581 03:07 PM, 25 Apr 2021
    Да, к вам.
  • тогда эт не полнотекстовый, можете КХ использовать. но все поля по которым идет поиск надо держать в отдельных колонках.. и все
  • у нас организовано так: от поставщика получаем список вида: серийник;модель; и прочие колонки с ТТХ. для каждой поставки свои индекс.
  • @428004870 #215584 03:11 PM, 25 Apr 2021
    есть так же куча индексов вида: подразделение, отделение, ФИО, должность, модель устройства которые выдано
  • @428004870 #215585 03:11 PM, 25 Apr 2021
    такого плана
  • Принял пасеб, изучу мат часть, потренируюсь на кошках -)
  • @428004870 #215587 03:12 PM, 25 Apr 2021
    единственно как пологаю, для массового поиска нажо составить SQL запрос ?
  • @dj_mixer #215588 03:15 PM, 25 Apr 2021
    проблема в том, что в таблице КХ индекс один, кластерный (скип индексы это не совсем индексы). И поиск где нет первых полей индекса будет делать фул скан

    Можно просто дублировать данные с другими индексами в принципе...

    еще можно делать для высококардинальных колонок prewhere, будет норм...

    один сложный запрос - для КХ самое то...

    надо пробовать
  • Принял, пасеба.
  • https://t.me/clickhouse_ru
    @dphil #215590 03:24 PM, 25 Apr 2021
    Ну, фулскан в KХ очень быстрый, так что зависит от объема данных. Но если пока нет проблем с ЕЛК, то не будет и на КХ )
  • пока одна проблему у ELK осушествлять массовый поиск
  • @428004870 #215592 03:26 PM, 25 Apr 2021
    принял, буду изумать материалы, благодарю.
  • https://t.me/clickhouse_ru
    @dphil ↶ Reply to #215591 #215593 03:26 PM, 25 Apr 2021
    Ну, значит данных не очень много.
  • около полумиллиарда
  • https://t.me/clickhouse_ru
    @dphil ↶ Reply to #215594 #215595 03:28 PM, 25 Apr 2021
    Ну, не очень много, да.
  • @428004870 #215596 03:28 PM, 25 Apr 2021
    так точно
  • @428004870 #215597 03:31 PM, 25 Apr 2021
    так вопрос еще, в КХ можно создавать пользователей и вести логи, в том плане что бы смотреть какие запросы делал пользователь ?
  • да
    да
  • @428004870 #215599 03:57 PM, 25 Apr 2021
    Принял
  • https://t.me/clickhouse_ru
    вообще особо смысла нет
    тип LowCardinality(String) и поле в PK должно быть длябыстрой выборки
  • https://t.me/clickhouse_ru
    @387452444 #215602 05:31 PM, 25 Apr 2021
    в 21.4 experimental feature - Zero-copy replication for ReplicatedMergeTree over S3 storage. Это то что я думаю? новая реплика подтягивает данные из S3 автоматически не создавая копию? https://github.com/ClickHouse/ClickHouse/pull/16240
    S3 zero copy replication by ianton-ru · Pull Request #16240 · ClickHouse/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en Changelog category (leave one): New Feature Changelog entry (a user-readable short description of the cha...

  • https://t.me/clickhouse_ru
    @387452444 #215603 05:32 PM, 25 Apr 2021
    пробовал читать описание - но там даже по русски сложно понять что оно делает
  • @topParser #215604 05:42 PM, 25 Apr 2021
    Привет. Как разложить данные из таблицы с одним столбцом типа string , в строках лежит json в другую таблицу с столбцами - ключами json. Заранее, спасибо.
  • https://t.me/clickhouse_ru
    Не совсем, это разновидность диска s3, просто все реплики шарят один и тот же набор данных в с3
  • https://t.me/clickhouse_ru
    Да, я это и имел ввиду - типа если у меня допустим только s3 диск то при запуске новой реплики - она сразу готова к жксплуатации?
  • https://t.me/clickhouse_ru
    Вроде так и задумывалось
  • https://t.me/clickhouse_ru
    @387452444 #215608 06:31 PM, 25 Apr 2021
    Прям порадовали старика - отличная новость
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/23634#issuecomment-826374602
    alexey-milovidov : allow_nullable_key is a nonsense, this setting should not be used in production.
    Nullable key and where != produces wrong result. · Issue #23634 · ClickHouse/ClickHouse

    20.8.18.32, 21.3.8.76, 21.4.5.46 CREATE TABLE test001 (id Nullable(String), s Nullable(String), s1 Nullable(String)) ENGINE = MergeTree() ORDER BY (id,s,s1) SETTINGS allow_nullable_key = 1; INSERT ...

  • https://t.me/clickhouse_ru
    😂 спасибо
  • странно ограничивать это S3, можно было добавить НФС и любой cluster - FS уже...
  • https://t.me/clickhouse_ru
    @387452444 #215613 09:04 PM, 25 Apr 2021
    Согласен
  • 26 April 2021 (160 messages)
  • https://t.me/clickhouse_ru
    @skarzhinets #215615 02:00 AM, 26 Apr 2021
    Привет. подскажите, почему при выполнении "Set allow_experimental_window_functions = 1" получаю ошибку: ClickHouse exception, code: 113, e.displayText() = DB::Exception: There is no session (version 21.4.3.21 (official build))
  • https://t.me/clickhouse_ru
    потому что в JDBC нужно включить сессию , в параметрах соединения создать новую настройку , session_id = любая строка.
    но проще просто включить в профиле пользователя.
  • https://t.me/clickhouse_ru
    спасибо, получилось через сессию. как через профиль пользователя включить в sql не нашёл, зато нашёл что можно в конце запроса добавить параметры через SETTINGS - так тоже работает, выберу этот вариант
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    помогло, когда было одинаковое кол-во колонок (и сами колонки) в destination таблице и в данных на вход
  • https://t.me/clickhouse_ru
    @ilevd #215621 07:26 AM, 26 Apr 2021
    Товарищи, возникает такая ошибка, (похоже, во время мутации) хотя места свободно вроде 35 из 48 гб:
    2021.04.23 16:46:03.485180 [ 14501 ] {} <Error> void DB::BackgroundProcessingPool::workLoopFunc(): Poco::Exception. Code: 1000, e.code() = 28, e.displayText() = File access error: no space left on device: /data/base/clickhouse/data/default/metrics/tmp_clone_8e0a4cdf946227b2fed279037d117c58_225030_225030_0_231161, Stack trace (when copying this message, always include the lines below):
    0. Poco::FileException::FileException(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&, int) @ 0x18ba945f in /usr/bin/clickhouse
    1. Poco::FileImpl::handleLastErrorImpl(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x18bb58e1 in /usr/bin/clickhouse
    2. ? @ 0x18bb5c37 in /usr/bin/clickhouse
    3. Poco::File::createDirectories() @ 0x18bb3ed0 in /usr/bin/clickhouse
    4. DB::DiskLocal::createDirectories(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x1557e8cf in /usr/bin/clickhouse
    5. ? @ 0x161bab28 in /usr/bin/clickhouse
    6. DB::localBackup(std::__1::shared_ptr<DB::IDisk> const&, 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::optional<unsigned long>) @ 0x161baef0 in /usr/bin/clickhouse
    7. DB::MergeTreeData::cloneAndLoadDataPartOnSameDisk(std::__1::shared_ptr<DB::IMergeTreeDataPart const> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::MergeTreePartInfo const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&) @ 0x15fb0d45 in /usr/bin/clickhouse
    8. DB::MergeTreeDataMergerMutator::mutatePartToTemporaryPart(DB::FutureMergedMutatedPart const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, DB::MutationCommands const&, DB::MergeListEntry&, long, DB::Context const&, std::__1::unique_ptr<DB::IReservation, std::__1::default_delete<DB::IReservation> > const&, std::__1::shared_ptr<DB::RWLockImpl::LockHolderImpl>&) @ 0x16000409 in /usr/bin/clickhouse
    9. DB::StorageMergeTree::tryMutatePart() @ 0x15dddbfe in /usr/bin/clickhouse
    10. DB::StorageMergeTree::mergeMutateTask() @ 0x15ddeada in /usr/bin/clickhouse
    11. DB::BackgroundProcessingPool::workLoopFunc() @ 0x15f67003 in /usr/bin/clickhouse
    12. ? @ 0x15f67932 in /usr/bin/clickhouse
    13. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0xe6345b7 in /usr/bin/clickhouse
    14. ? @ 0xe632b03 in /usr/bin/clickhouse
    15. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
    16. __clone @ 0xfe96d in /usr/lib64/libc-2.17.so
    Total space: 48.52 GiB
    Available space: 35.81 GiB
    Total inodes: 12.19 million
    Available inodes: 11.68 million
    Mount point: /data/base
    Filesystem: /dev/mapper/vg_data_base-base (version 20.8.4.11 (official build))
  • https://t.me/clickhouse_ru
    ну да странно, inodes вроде тоже достаточно

    а как ваши диски вообще живые?
    /dev/mapper это что? железный RAID? LVM?
    это виртуалка какая то или голое железо?
    там кроме clickhouse кто-то еще эти диски использует?
    может просто /dev/mapper врет?
    у вас там какой нибудь thin provisioning не включен на RAID массиве?
  • https://t.me/clickhouse_ru
    @ilevd ↶ Reply to #215622 #215623 08:23 AM, 26 Apr 2021
    Виртуалка на vmware
    Диски живые
    Lvm
    Кроме клика используют, но не сильно
  • https://t.me/clickhouse_ru
    Ну эти самые no space left on device они из ниоткуда не берутся
    по факту это просто C++ exception который вернул какой то из файловых syscall в миграции
  • https://t.me/clickhouse_ru
    @rvkggwp #215625 08:42 AM, 26 Apr 2021
    Подскажите, есть ли в ch функция, чтобы дату и время вернуть в ISO-8601 не используя formatDateTime
  • https://t.me/clickhouse_ru
    @ievgenpro #215626 08:45 AM, 26 Apr 2021
    Всем привет. Есть таблица вида ts, vol1 Float64, vol2 Float64, нужно добавить колонку vol3 в которой сохранить значение vol1, а в vol1 вместо этого прописать f(vol2), но разово, без привязки к vol2 навсегда
    пробовал сделал ADD column vol1, потом ALTER TABLE UPDATE vol3=vol1, ALTER TABLE UPDATE vol1=f(vol2), но почему то после последнего UPDATE изменились значения vol3
  • https://t.me/clickhouse_ru
    Настройки | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    спасибо большое
  • https://t.me/clickhouse_ru
    миграции последовательные вроде должны быть и асинхронные...
    то есть первый должен vol3 поменять...
    а второй vol1 ...

    SELECT * FROM system.migrations посмотрите
  • https://t.me/clickhouse_ru
    @ievgenpro #215630 08:54 AM, 26 Apr 2021
    тут на какая то дикая версия CH, еще нет этой таблицы 18.12.17. плесенью все покрылось :)
  • https://t.me/clickhouse_ru
    гхм... оно на липовый мед разложилось

    ALTER UPDATE как вы написали вообще не должен был сработать =)
  • https://t.me/clickhouse_ru
    @ievgenpro #215632 08:58 AM, 26 Apr 2021
    ALTER TABLE db_test.table_1
    UPDATE vol3=vol1
    WHERE 1
    вот так писал если быть точным. отработало
  • https://t.me/clickhouse_ru
    в 18.x версии???
  • https://t.me/clickhouse_ru
    @ievgenpro #215634 09:26 AM, 26 Apr 2021
    да
  • https://t.me/clickhouse_ru
    SELECT version()
    в студию
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @ilevd #215639 10:50 AM, 26 Apr 2021
    А как кликхаус обрабатывает ошибочные мутации, бывает висит с ошибкой, но через какое-то время завершается:
    SELECT *
    FROM system.mutations
    WHERE is_done = 0
    ORDER BY create_time ASC
    FORMAT Vertical

    Row 1:
    ──────
    database: default
    table: metrics
    mutation_id: mutation_231431.txt
    command: DELETE WHERE (date = toDate('2021-02-16')) AND ('e91b6059-7339-4066-852d-f4ad43999427' = dictGetString('doe', 'unt', tuple(pid)))
    create_time: 2021-04-23 16:51:05
    block_numbers.partition_id: ['']
    block_numbers.number: [231431]
    parts_to_do_names: ['a2cdf0f2d6a97772047f53a2583de118_224949_224949_0_231298']
    parts_to_do: 1
    is_done: 0
    latest_failed_part: a2cdf0f2d6a97772047f53a2583de118_224949_224949_0_231298
    latest_fail_time: 2021-04-23 17:55:07
    latest_fail_reason: Code: 84, e.displayText() = DB::Exception: Part in /data/base/clickhouse/data/default/metrics/tmp_clone_a2cdf0f2d6a97772047f53a2583de118_224949_224949_0_231431 already exists (version 20.8.4.11 (official build))
  • https://t.me/clickhouse_ru
    @ilevd #215640 10:52 AM, 26 Apr 2021
    Он retry-и делает пока не получится?
  • https://t.me/clickhouse_ru
    @87558923 #215641 10:56 AM, 26 Apr 2021
    Добрый день. Имеем кластер Кликхауса в Кубернетесе, управляемый Алтинити оператором, в кластере 16 шардов по 2 реплики. Данные вставляются ежесекундно по несколько тысяч записей в Distributed таблицу, на шард приходится около тысячи строк за вставку. Иногда (раз в несколько секунд на одной из реплик, всегда разные реплики) получаем ошибку
    2021.04.26 09:51:36.670217 [ 623 ] {} <Error> ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 107, e.displayText() = Net Exception: Socket is not connected, Stack trace (when copying this message, always include the lines below):

    0. Poco::Net::SocketImpl::error(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x128208ae in /usr/bin/clickhouse
    1. Poco::Net::SocketImpl::peerAddress() @ 0x12822b26 in /usr/bin/clickhouse
    2. DB::HTTPServerRequest::HTTPServerRequest(DB::Context const&, DB::HTTPServerResponse&, Poco::Net::HTTPServerSession&) @ 0x101778e4 in /usr/bin/clickhouse
    3. DB::HTTPServerConnection::run() @ 0x10176754 in /usr/bin/clickhouse
    4. Poco::Net::TCPServerConnection::start() @ 0x1282790f in /usr/bin/clickhouse
    5. Poco::Net::TCPServerDispatcher::run() @ 0x12829321 in /usr/bin/clickhouse
    6. Poco::PooledThread::run() @ 0x1295fa49 in /usr/bin/clickhouse
    7. Poco::ThreadImpl::runnableEntry(void*) @ 0x1295b8aa in /usr/bin/clickhouse
    8. start_thread @ 0x9609 in /lib/libpthread.so.0
    9. clone @ 0x122293 in /lib/libc.so.6
    (version 21.4.4.30 (official build))
    Сеть стабильная, если вставки не делать, ошибок нет.
  • https://t.me/clickhouse_ru
    у вас такое ощущение что ALTER TABLE ... ON CLUSTER запустился на ReplicatedMergeTree таблице?

    там скорее не retry
    а просто парты кончились потому что отреплицировались...
  • https://t.me/clickhouse_ru
    попробуйте async отключить
    https://t.me/clickhouse_ru/215415
    Denny Crane [Junior support specialist at Altinity (NB,Canada)] in ClickHouse не тормозит

    проблема в 21.4 я правильно понял? попробуйте cat /etc/clickhouse-server/users.d/dis_async.xml <?xml version="1.0" ?> <yandex> <profiles> <default> <async_socket_for_remote>0</async_socket_for_remote> <use_hedged_requests>0</use_hedged_requests> </default> </profiles> </yandex> там баг в ядрах ниже 5...чего-то

  • https://t.me/clickhouse_ru
    у вас какого нибудь prometheus который в 8123 порт ходит нету?
  • https://t.me/clickhouse_ru
    @ilevd ↶ Reply to #215642 #215645 11:11 AM, 26 Apr 2021
    Ну, вообще просто MergeTree
  • https://t.me/clickhouse_ru
    Отредактировать ClickHouseInstallation будет достаточно, изменения сами разойдутся по репликам?
  • https://t.me/clickhouse_ru
    @87558923 #215647 11:24 AM, 26 Apr 2021
    В ClickHouseInstallation добавил настройки, он перешёл в состояние Completed, поды не перезапущены, ошибка продолжает появляться
  • https://t.me/clickhouse_ru
    Нету
  • https://t.me/clickhouse_ru
    в SELECT hostName(), * FROM cluster('all-replicated',system.settings) WHERE changed изменения пришли?
  • https://t.me/clickhouse_ru
    Изменения профиля пользователя сюда тоже попадает?
  • https://t.me/clickhouse_ru
    @87558923 #215651 12:28 PM, 26 Apr 2021
    Ядро кстати 5.4.89+
  • https://t.me/clickhouse_ru
    ну да, это естественно
  • https://t.me/clickhouse_ru
    Alter delete 1.1.54388
    Alter update 18.12.14
    18.14.18 -- full proper support of where ...
  • https://t.me/clickhouse_ru
    @den_crane #215656 01:13 PM, 26 Apr 2021
    я кстати в проде использую 18.14 в одном проекте, и все ОК.
  • https://t.me/clickhouse_ru
    @ievgenpro #215657 01:13 PM, 26 Apr 2021
    понял. спасибо большое. т.е. с запросами я не накосячил, нужно обновлять этого мамонта просто?
  • https://t.me/clickhouse_ru
    а у вас clickhouse_operator под каким профилем ? default?
  • https://t.me/clickhouse_ru
    k8s как расвернут и где?
    bare metal? aws? gcp?
  • https://t.me/clickhouse_ru
    зачем обновляться ? Любое обновление что-нибудь ломает. Надо тестировать, с 18.12 весь КХ изменился, некоторые SQL перестали работать, некоторые возвращают другой результат
  • https://t.me/clickhouse_ru
    @ievgenpro #215661 01:15 PM, 26 Apr 2021
    да
  • https://t.me/clickhouse_ru
    @ievgenpro #215662 01:15 PM, 26 Apr 2021
    я думал минорно обновить на 18.14.18, я не собирался выше :)
  • https://t.me/clickhouse_ru
    @BatyaZhizni #215663 01:15 PM, 26 Apr 2021
    Привет, а нет подобного чатика, только про mysql спросить?
  • https://t.me/clickhouse_ru
    18.14.18 можно, разрешаю.

    там @BloodJazMan неправильно написал имя таблицы

    >...SELECT * FROM system.migrations посмотрите

    она называется mutations

    SELECT * FROM system.mutations where not is_done
  • https://t.me/clickhouse_ru
    @ievgenpro #215665 01:21 PM, 26 Apr 2021
    такая есть таблица, но по запросу пусто
  • https://t.me/clickhouse_ru
    в vmware место есть? Это очень похоже на thin provisioning
  • https://t.me/clickhouse_ru
    @ievgenpro #215667 01:22 PM, 26 Apr 2021
    вообще выполненные в ней есть. везде is_done = 1
  • https://t.me/clickhouse_ru
    вы после первого update дождитесь пусто SELECT * FROM system.mutations where not is_done
    а затем второй запускайте, хотя даже 18.12 мутации строго последовательно должны выполняться
  • https://t.me/clickhouse_ru
    @ievgenpro #215669 01:23 PM, 26 Apr 2021
    ага. принял. большое спасибо
  • https://t.me/clickhouse_ru
    @den_crane #215670 01:27 PM, 26 Apr 2021
    Я не понимаю ваш российский новояз. Мне казалось, что "ага. принял." имеет отрицательную коннотацию: "ну ладно, так уж и быть"
  • https://t.me/clickhouse_ru
    да, должен делать.
    вы обновитесь обязательно до 20.8.18 , 20.8.4.11 слишком ранний релиз
  • https://t.me/clickhouse_ru
    это баг. обновитесь 21.4.5.46
  • https://t.me/clickhouse_ru
    @rvkggwp #215673 01:44 PM, 26 Apr 2021
    Правильно ли я понял механизм работы данной функции argMax(id, (datast.status, datast.addedUTC)). Выберет мне id из строки в которой самый большой status и addedUTC. Просто в документации это не описано, можем есть где более подробная документация, чем на офф сайте?
  • https://t.me/clickhouse_ru
    туплы сравниваются последовательно от левого элемента, это где-то есть в доке.

    короче вот такое сравнение будет работать (year, month, day) >= (2021, 04, 26)
  • https://t.me/clickhouse_ru
    gcp
  • https://t.me/clickhouse_ru
    наверное это в описание туплов надо смотреть, а функция просто с ними умеет работать, спасибо
  • https://t.me/clickhouse_ru
    ну да, это не фича argMax, это везде так работает для туплов, argMax не понимает что там что-то этакое.
  • https://t.me/clickhouse_ru
    Видимо да, default, подскажите как поменять, в документации не нашёл
  • https://t.me/clickhouse_ru
    Обновлюсь, дам обратную связь
  • https://t.me/clickhouse_ru
    @87558923 #215680 02:01 PM, 26 Apr 2021
    Новая версия оператора 0.14.0 появилась два часа назад. Она совместима с 0.13.5? Можно просто обновить версию или нужны какие-то дополнительные действия?
  • @pavel_maksimow #215681 02:19 PM, 26 Apr 2021
    Подскажите, возможно ли добавить вычисляемую колонку, порядкового номера строки?
  • https://t.me/clickhouse_ru
    Строго говоря нет, вам зачем?
  • https://t.me/clickhouse_ru
    @ilevd ↶ Reply to #215671 #215684 02:20 PM, 26 Apr 2021
    Спасибо, а почему именно 20.8.18? Это последняя стабильная 20.8.*?
  • https://t.me/clickhouse_ru
    @BSolovyev #215685 02:21 PM, 26 Apr 2021
    всем привет, можно так сравнить Uint64 поле и FixedString(32)
    toFixedString(toString(<Uint64>), 32) == <FixedString(32)>
    версия клика 20.12.5.14
  • https://t.me/clickhouse_ru
    Можно, но почему приводить к FixedString а не к UInt64?
  • https://t.me/clickhouse_ru
    незнаю, просто так написал, а лучше наоборот?
  • https://t.me/clickhouse_ru
    Ну Int64 это 8 байт, FixedString это 32 байта.
    Сравнить 8 байт быстрее
  • https://t.me/clickhouse_ru
    точно, спасибо за ответ
  • https://t.me/clickhouse_ru
    @unamedrus #215690 02:23 PM, 26 Apr 2021
    Хотя вопрос в том, что из этого колонка а что значение
  • https://t.me/clickhouse_ru
    @BSolovyev #215691 02:23 PM, 26 Apr 2021
    это join
  • https://t.me/clickhouse_ru
    @unamedrus #215692 02:24 PM, 26 Apr 2021
    А, ну тогда приводите все к UInt64 и память сэкономите.
  • https://t.me/clickhouse_ru
    спасибо, так и сделаю
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    а что лежит в FixedString(32) ? число в hex ?
  • https://t.me/clickhouse_ru
    я точно не уверен, первый раз сейчас базу эту увидел, но похоже на простое число, десятиричное
  • https://t.me/clickhouse_ru
    просто как текст?
  • https://t.me/clickhouse_ru
    ага
  • https://t.me/clickhouse_ru
    числа "какбы нельзя" сравнивать как строки на < > и даже на = из-за лидирующих 0.

    toUInt64OrNull(toString(<FixedString(32)))
  • https://t.me/clickhouse_ru
    Спасибо за разъяснения.
  • https://t.me/clickhouse_ru
    https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationprofiles

    kind: ClickhouseInstallation
    meta:
    name: XXX
    spec:
    configuration:
    profiles:
    default/async_socket_for_remote: 0
    default/use_hedged_requests: 0
    clickhouse-operator/custom_resource_explained.md at master · Altinity/clickhouse-operator

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

  • https://t.me/clickhouse_ru
    совместима
    обновляться можно

    в releases есть подробности что изменилось
    изменения в основном направлены на улучшение скорости принятия в систему новых изменений чтобы не ждать пока старые reconciling cycles закончатся
  • https://t.me/clickhouse_ru
    Я имел в виду как поменять пользователя, из-под которого ходит оператор, а не как добавить профиль дефолтному пользователю
  • https://t.me/clickhouse_ru
    The ClusterRoleBinding "clickhouse-operator-clickhouse-operator" is invalid: roleRef: Invalid value: rbac.RoleRef{APIGroup:"rbac.authorization.k8s.io", Kind:"ClusterRole", Name:"clickhouse-operator-clickhouse-operator"}: cannot change roleRef
    Видимо всё-таки нужно сначала что-то удалить
  • https://t.me/clickhouse_ru
    @87558923 #215706 03:04 PM, 26 Apr 2021
    clickhouse-operator/clickhouse-operator-install-template.yaml at 0.14.0 · Altinity/clickhouse-operator

    The ClickHouse Operator creates, configures and manages ClickHouse clusters running on Kubernetes - clickhouse-operator/clickhouse-operator-install-template.yaml at 0.14.0 · Altinity/clickhouse-ope...

  • https://t.me/clickhouse_ru
    kubectl get configmap --all-namespaces | grep clickhouse-operator

    вам надо отредактировать
    etc-clickhouse-operator-files
    там chUser и chPassword
    их можно в секреты загнать еще

    chCredentialsSecretNamespace: "" ││ chCredentialsSecretName: ""

    но вообще async Лучше именно для всех профилей отключить и посмотреть будут ли снова возникать ошибки с сокетами
  • https://t.me/clickhouse_ru
    а вас не затруднит сделать issue на github?
  • https://t.me/clickhouse_ru
    @ademidov #215709 03:06 PM, 26 Apr 2021
    привет, импортирую данные из файла примерно вот таким образом clickhouse-client --query "INSERT INTO table FORMAT JSONEachRow" --max_insert_block_size=100000 < file - ошибок нет, но и данные в таблице не появляются; если взять небольшое подмножетсво строк из файла - все работает
  • https://t.me/clickhouse_ru
    @ademidov #215710 03:07 PM, 26 Apr 2021
    можно как то получить ошибку, которая возникает при вставке данных ?
  • https://t.me/clickhouse_ru
    Ваш коллега подсказал обновить версию Кликхауса, сначала это попробую, потом, если не поможет, применю настройки
  • https://t.me/clickhouse_ru
    там делалось органичение по security правам для роли clickhouse operator
    чтобы меньше прав было...

    скорее всего можно попробовать
    kubectl delete ClusterRoleBinding "clickhouse-operator-clickhouse-operator" -n clickhouse-operator
    а потом apply
  • https://t.me/clickhouse_ru
    Can't update Operator 0.13.5 to 0.14.0 · Issue #684 · Altinity/clickhouse-operator

    We have the running operator created by applying https://github.com/Altinity/clickhouse-operator/blob/0.13.5/deploy/operator/clickhouse-operator-install-template.yaml. After apply https://github.co...

  • https://t.me/clickhouse_ru
    Похоже сработало, добавил коммент в issue
  • https://t.me/clickhouse_ru
    @balalaikin #215715 03:13 PM, 26 Apr 2021
    Кстати на счет Altinity/clickhouse-operator.

    Мы тут обратили внимание, что он при каждом обновлении переписывает label'ы у подключенных к кх-кластеру PersistentVolume значениями из ClickHouseInstallation, хотя самими объектами PersistentVolume управляет другой оператор которому это может что-то подломать. При этом label'ы у PersistentVolumeClaim после создания уже не обновляются, хотя PersistentVolumeClaim создает как раз clickhouse-operator.

    Это точно правильное поведение?
  • https://t.me/clickhouse_ru
    Оператор генерит PVC из volumeClaimTemplate + StatefullSet
    в которых выставляет Label
    а уже ниже их тащит
    в 0.14.0
    добавилась опция
    https://github.com/Altinity/clickhouse-operator/releases/tag/0.14.0

    excludeFromPropagationLabels
    Release release-0.14.0 · Altinity/clickhouse-operator

    New features: Operator reconciles CHI with the actual state of objects in k8s. In previous releases it compared new CHI and old CHI, but not with k8s state. The current reconcile cycle can be inte...

  • https://t.me/clickhouse_ru
    @balalaikin #215717 03:18 PM, 26 Apr 2021
    Т.е. в excludeFromPropagationLabels можно перечислить label'ы, которые мы бы не хотели копировать в PV?
  • https://t.me/clickhouse_ru
    @balalaikin #215718 03:19 PM, 26 Apr 2021
    А про PVC вопрос только в том, почему для них не работает labels propogation. Создаются они правильно, но если у ClickHouseInstallation меняются label'ы, то на PVC это никак не отражается.
  • https://t.me/clickhouse_ru
    @balalaikin #215719 03:20 PM, 26 Apr 2021
    Если, конечно, это тоже не исправили в последней версии.
  • https://t.me/clickhouse_ru
    Версия КХ ?
    /var/log/clickhouse-server/clickhouse-server.err.log
  • https://t.me/clickhouse_ru
    @ademidov #215721 03:29 PM, 26 Apr 2021
    20.12.8 - сервер
  • https://t.me/clickhouse_ru
    @ademidov #215722 03:30 PM, 26 Apr 2021
    20.8.16.20 - клиент
  • https://t.me/clickhouse_ru
    @ademidov #215723 03:30 PM, 26 Apr 2021
    пока обновить не могу
  • https://t.me/clickhouse_ru
    @ademidov #215724 03:32 PM, 26 Apr 2021
    к логам доступа нет
  • https://t.me/clickhouse_ru
    @maga_rs #215725 04:08 PM, 26 Apr 2021
    Привет! Есть две таблицы, около млн строк в каждой. Подскажите плз как в КХ лучше реализовать такую логику в джоине с доп условием по дате?

    select a.*, b.name
    from a
    join b
    on a.id = b.id
    and a.start_dt between b.start_dt and b.end_dt;

    Тут нужен ASOF JOIN ?
  • https://t.me/clickhouse_ru
    Обновление не помогло:
    2021.04.26 16:09:09.582017 [ 561 ] {} <Error> ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 107, e.displayText() = Net Exception: Socket is not connected, Stack trace (when copying this message, always include the lines below):

    0. Poco::Net::SocketImpl::error(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x125aeaae in /usr/bin/clickhouse
    1. Poco::Net::SocketImpl::peerAddress() @ 0x125b0d26 in /usr/bin/clickhouse
    2. DB::HTTPServerRequest::HTTPServerRequest(DB::Context const&, DB::HTTPServerResponse&, Poco::Net::HTTPServerSession&) @ 0xff05b84 in /usr/bin/clickhouse
    3. DB::HTTPServerConnection::run() @ 0xff049f4 in /usr/bin/clickhouse
    4. Poco::Net::TCPServerConnection::start() @ 0x125b5b0f in /usr/bin/clickhouse
    5. Poco::Net::TCPServerDispatcher::run() @ 0x125b7521 in /usr/bin/clickhouse
    6. Poco::PooledThread::run() @ 0x126edc49 in /usr/bin/clickhouse
    7. ? @ 0x126e9aaa in /usr/bin/clickhouse
    8. start_thread @ 0x9609 in /lib/libpthread.so.0
    9. __clone @ 0x122293 in /lib/libc.so.6
    (version 21.4.5.46 (official build))
  • https://t.me/clickhouse_ru
    Эта кофигурация применилась, но ошибка всё равно появляется
  • https://t.me/clickhouse_ru
    >Имеем кластер Кликхауса в Кубернетесе, управляемый Алтинити оператором, в кластере 16 шардов по 2 реплики. Данные >вставляются ежесекундно по несколько тысяч записей в Distributed таблицу, на шард приходится около тысячи строк за >вставку. Иногда (раз в несколько секунд на одной из реплик, всегда разные реплики) получаем ошибку

    ошибку инсерт возвращает? JDBC драйвер?
  • https://t.me/clickhouse_ru
    Ошибка падает в логи реплики, запрос через http возвращает успех
  • https://t.me/clickhouse_ru
    а так эта ошибка вообще как-то связана с вашим приложением?

    выше уже писали что это возможно балансер делает probe.
  • https://t.me/clickhouse_ru
    Напрямую не связана, но я не знаю что это за ошибка, может данные теряются какие. Балансер какой? Может его можно как-то сконфигурировать? Я правильно понял, что во время вставки реплика не отвечает на какой то внутренний пинг, и это генерирует такую ошибку?
  • https://t.me/clickhouse_ru
    да я не про КХ.
    У вас КХ где запущены? В облаках или on-premises ?
  • https://t.me/clickhouse_ru
    Нет
    приходит коннект входящий на HTTP
    дальше его пытаются обработать
    DB::HTTPServerRequest::HTTPServerRequest
    но сокет разравает соединение
  • https://t.me/clickhouse_ru
    @rvkggwp #215734 04:38 PM, 26 Apr 2021
    В кликхаус есть rank функция теперь, но она еще в тестовом режиме, кто-нибудь знает на сколько она в тестовом режиме или уже можно спокойно пользоваться?
  • https://t.me/clickhouse_ru
    ну вот сегодня только баг с distributed + window функциями закрыли...

    если необходимость есть, пользуйтесь но на последних релизах только
    и проверяйте результаты
  • https://t.me/clickhouse_ru
    сейчас оно неправильно работает с distributed запросами.

    rank можно через массивы считать, это даже в разы быстрее чем wf
  • https://t.me/clickhouse_ru
    да, я пробовал через массивы, но получается медленно, из-за того, что надо все пихать в массив
  • https://t.me/clickhouse_ru
    КХ поднят в GKE оператором, рядом поднято приложение, которое вставляет данные через HTTP запросы. Все запросы завершаются статусом 200. Но в логах реплик попадается такая ошибка. Далеко не каждый запрос, но раз в минуту на одной из реплик точно появляется.
  • https://t.me/clickhouse_ru
    Т.е wf будет еще медленнее, чем массивы? Это странно
  • https://t.me/clickhouse_ru
    в моих тестах wf сильно медленнее чем массивы.
  • https://t.me/clickhouse_ru
    почему странно? По моему как раз наоборот, это ожидаемо
  • https://t.me/clickhouse_ru
    аа это точно тогда: либо dns сервер, либо App. load balancer

    не обращайте внимания
  • https://t.me/clickhouse_ru
    Если на это можно не обращать внимания, может это не ошибка и нужно понизить уровень? А если это всё так ошибка, может её можно исправить? Логи завалены этими ошибками, ещё и стек длинный, как среди них искать реальные ошибки, они могут затеряться.
    В качестве балансировщика используется Kubernetes service, который создаётся оператором. Других балансировщиков или каких-то проб нет, приложение этим не занимается.
  • https://t.me/clickhouse_ru
    Ну мои аргументы будут наверное такие себе, потому что я не знаю как под капотом это все работает, но сделать ранк в постгре очень быстро, а в кликхаусе через массивы очень медленно. Получается я ожидал в кх той же скорости для ранк и даже быстрее. Мои ожидания - мои проблемы)
  • https://t.me/clickhouse_ru
    OK. Kubernetes service. А дальше что? Приложение тоже в кубах и ходит используя k8s сервис?
  • https://t.me/clickhouse_ru
    Верно, приложение тоже в кубах, ходит через имя сервиса
  • https://t.me/clickhouse_ru
    @bralbral #215747 05:05 PM, 26 Apr 2021
    Добрый вечер. В настройках есть разграничения на уровне строк, а есть ли разграничения на уровне столбцов? Например, одному юзеру выводить 10 столбцов, а другому -9? Или это делается на уровне вьюх?
  • https://t.me/clickhouse_ru
    GRANT | ClickHouse Documentation

    GRANT Statement Grants privileges to ClickHouse user accounts or roles. Assigns roles to user accounts or to the other r

  • https://t.me/clickhouse_ru
    Обращаю внимание, что ошибка появляется только когда приложение вставляет данные. Если прекратить вставку, ошибок нет.
  • https://t.me/clickhouse_ru
    Благодарю
  • https://t.me/clickhouse_ru
    приложение через JDBC ?
  • @amberon #215752 05:12 PM, 26 Apr 2021
    Как думаете, это нормально, что при таком запросе КХ прогоняет лярды строк,
    SELECT max(MyDateTime) FROM MyTable WHERE smth=99;
    хотя у него партиции по дням, и результат можно было бы найти, начав с последней, и там же остановиться.
    Стоит ли завести баг?
  • https://t.me/clickhouse_ru
    Через http
  • это нормально... partition pruning не так работает.
    попробуйте в условном оракле, будет то же самое...
  • Эх. Спасибо. Значит сделаю ограничение по MyTime дополнительное, тогда уж должно подрезать, как я полагаю
  • @dj_mixer #215756 05:19 PM, 26 Apr 2021
    да, только так и будет работать...
  • https://t.me/clickhouse_ru
    @kbespalov #215757 05:31 PM, 26 Apr 2021
    Ребят, а кто нибудь сталкивался с потерей данных в ch при no space left? Известная проблема? в какой то момент времени закончилось место, все insert ретраились и часть из них выполнилась без ошибок с 100℅ диском, конечно, никакие данные не записались
  • https://t.me/clickhouse_ru
    @kbespalov #215758 05:32 PM, 26 Apr 2021
    Как будто ch отметил их в zk и сработала дедубликация
  • https://t.me/clickhouse_ru
    @kbespalov #215759 05:32 PM, 26 Apr 2021
    Но черт, данные то не записались) стоит обычный replicated merge tree, даже для надежности делал insert quorum
  • https://t.me/clickhouse_ru
    @kbespalov #215760 05:32 PM, 26 Apr 2021
    2
  • https://t.me/clickhouse_ru
    а в индексе есть MyDateTime ?

    SELECT MyDateTime FROM MyTable WHERE smth=99
    order by MyDateTime desc limit 1

    или:
    SELECT MyDateTime FROM MyTable WHERE smth=99
    order by smth desc, MyDateTime desc limit 1
  • В Индексе MyDateTime далеко не на первом месте, поэтому не поможет
    PARTITION BY toYYYYMMDD(MyDateTime) ORDER BY (UserID, smth, MyDateTime)

    Так как в большинстве запросов нужно выбрать диапазон времени через партиции, а уж дальше искать по UserID и остальному
  • ну так поставили бы MyDataTime на первое место. не вижу проблемы
  • https://t.me/clickhouse_ru
    т.е если даже время присутствует в индексе, например, на 2 или 3 месте, условие, например в prewhere date_time between разве не поможет отсечь ненужные данные? Вернее отработает не так, как предполагается.
  • Ну так поиск по UserID в рамках конкретного партишена-дня будет быстрее если и в order-ключе он на первом месте, разве нет?
  • быстрее из за того что они в грануле рядом, ну так вы все равно все результаты читаете из range по времени...

    1 очень медленный 1 быстрый

    против двух типа быстрых...
  • https://t.me/clickhouse_ru
    вторым в смысле?
    ORDER BY (UserID, MyDateTime, smth)

    ну и можно MyDateTime загрубить до часа попробовать
    ORDER BY (toStartOfHour(MyDateTime), UserID, smth, MyDateTime)
  • ORDER BY (toStartOfHour(MyDateTime), UserID, smth, MyDateTime)

    так имелось ввиду... и фильтровало бы норм
  • @dj_mixer #215769 05:59 PM, 26 Apr 2021
    ну не так быстро, но быстро достаточно
  • @amberon #215770 06:02 PM, 26 Apr 2021
    Ввиду того что объем запросов именно по UserID в десятки раз больше, пожалуй оставлю как есть. А оптимизировать Max(MyDateTime) буду по простому where за последнюю неделю.

    Спасибы за просвещение.
  • @dj_mixer #215771 06:18 PM, 26 Apr 2021
    да, если есть вариант в приложении это делать или где то держать последний ИД для юзера - самое то
  • https://t.me/clickhouse_ru
    @floxard #215772 07:47 PM, 26 Apr 2021
    А кто нибудь пробовал заводить кликхаус с таким "зукипером"?
    https://github.com/etcd-io/zetcd
  • https://t.me/clickhouse_ru
    не работает и не будет работать.

    сейчас в КХ уже имплементирован собственный аналог, называется nukeeper (экспериментальный)
  • https://t.me/clickhouse_ru
    @den_crane #215774 08:10 PM, 26 Apr 2021
    ха, уже просто keeper, он эмулирует zookeeper

    https://github.com/ClickHouse/ClickHouse/tree/master/tests/integration/test_keeper_back_to_back/configs
  • https://t.me/clickhouse_ru
    @Luck1ess #215775 08:16 PM, 26 Apr 2021
    Всем привет, подскажите пожалуйста, как лучше формализовать рассчеты на клике в питоне, стоит ли смотреть в сторону орм?
  • https://t.me/clickhouse_ru
    Кто-нибудь уже использует на проде?
  • https://t.me/clickhouse_ru
    @zzema_dj #215777 08:36 PM, 26 Apr 2021
    Подскажите плиз, как посчитать сумму по массиву cum_summ?
    sumArray(cum_summ) - это не работает, выдает ошибку:
    Illegal type Array(UInt8) of argument for aggregate function sum
  • https://t.me/clickhouse_ru
    @zzema_dj #215778 08:37 PM, 26 Apr 2021
    Пытаюсь без оконных функций реализовать накопленную сумму
  • https://t.me/clickhouse_ru
    прочитать доку и заметить что sumArray(arr) - просуммировать все элементы всех массивов arr, и что в твоем случае нужна arraySum
  • https://t.me/clickhouse_ru
    Сорри, разобрался)))
  • https://t.me/clickhouse_ru
    нет. Оно еще не готово и официально не релизнулось, неофициально оно уже есть в 21.4 кажется
  • 27 April 2021 (172 messages)
  • https://t.me/clickhouse_ru
    @regorov #215782 12:05 AM, 27 Apr 2021
    Ребят, подбираю модель хранения данных. Пробую разные варианты. Вопрос возник. Возможно ли?
    Есть таблица
    create table ireadings (
    dt datetime not null,
    val Int64 not null,
    meter_id Int64 not null,
    reading_type_id Int8 not null,
    usage_point_id Int8 not null,
    data_channel_id Int64 not null,
    data_channel_spec_id Int16 not null,
    vee_state_id Int8 not null
    )
    engine = ReplacingMergeTree()
    partition by toYYYYMM(dt)
    order by (vee_state_id, reading_type_id, dt, meter_id);

    Хочу страшного. Хочу MW где данные будут такой структуры:
    dt datetime not null,
    val Array(Int64) not null,
    meter_id Int64 not null,
    reading_type_id Int8 not null,
    usage_point_id Int8 not null,
    data_channel_id Int64 not null,
    data_channel_spec_id Int16 not null,
    vee_state_id Array(Int8) not null
    и При появлении в исходной таблице записи с существующим vee_state_id, reading_type_id, dt, meter_id, в MW обновляется запись при этом в колонках-массивах val и vee_state_id добавляются элементы из записи ireadings
  • https://t.me/clickhouse_ru
    сначала сюда https://youtu.be/1LVJ_WcLgF8?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7597
    https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf

    потом сюда https://gist.github.com/den-crane/048ce66bc59f5577d56e42d76934682e
  • @irusin #215785 02:48 AM, 27 Apr 2021
    Всем привет! А как в ClickHouse эффективнее всего работать с комбинацией enum? К примеру, есть поле описывающее категорию события. Каждое событие (каждая строка таблицы) может иметь одну или несколько категорий. Таблица широкая, >500 колонок. В ней 5 колонок которые хотелось бы видеть как комбинацию enum. Эти колонки будут участвовать в запросах, так что по ним нужны и индексы. Пока не понял что эффективнее взять - LowCardinality, набор bool колонок, array. В планах самому измерить, но наверняка кто-то сталкивался.
  • https://t.me/clickhouse_ru
    в чем то LowCardinality это и есть enum просто свой словарь на каждый data part
    массивы нет смысла брать если вы не знаете зачем конкретно они вам нужны
  • @irusin #215787 04:04 AM, 27 Apr 2021
    Спасибо!
  • https://t.me/clickhouse_ru
    насчет "индексы должны быть"
    если поле low cardinality
    и действительно кардинальность низкая

    время есть какое то в таблице?
  • @SemyonGalichenko #215789 04:32 AM, 27 Apr 2021
    Привет!
    Подскажите, пожалуйста. Есть большие таблицы в которые идёт запись и которые нужно расшардить. INSERT INTO .. SELECT в Distributed таблицу занимает много времени. Есть какой-то другой вариант (без длительного downtime)? Можно, например, сделать INSERT SELECT при включеной базе, потом остановить базу и дозалить инкременты?
  • @irusin ↶ Reply to #215788 #215790 05:02 AM, 27 Apr 2021
    Да, время есть, это временной ряд по сути
  • https://t.me/clickhouse_ru
    Кажется проще всего поднять рядом шардированный кластер, переключить запись туда и долить старые данные через insert... select
  • https://t.me/clickhouse_ru
    ну тогда стандартный совет
    PARTITION BY toYYYYMM(datetime_field)

    PRIMARY KEY datetime_field, несколько_полей_по_степени_увеличения_кардинальности_значений

    все поля измерений строковые засовывать LowCardinality(String)
    высоко кардинальные поля типа UUID лучше менять на что нибудь типа snowflakeid или sonyflakeid
  • @irusin #215793 05:57 AM, 27 Apr 2021
    Спасибо большое, пробую!
  • https://t.me/clickhouse_ru
    +1 я бы сначала начал новые данные в новую схему лить
    и старые перелил бы отдельно

    вместо DISTRIBUTED
    можно наверное INSERT INTO ReplicatedMergeTree ... SELECT FROM remote(, mergetree_table) WHERE ...
  • https://t.me/clickhouse_ru
    еще тут можно посмотреть
    https://kb.altinity.com/altinity-kb-schema-design/best-schema-for-storing-many-metrics-registered-from-the-single-source
  • @irusin #215796 06:05 AM, 27 Apr 2021
    Хорошая статья, сейчас храним всё в 1 JSON, экспериментируем с 500 известными полями - пробуем на стороне клиента делать проекцию на колоночную схему с целью снизить объём хранения. Попробуем с *backets of arrays*
  • https://t.me/clickhouse_ru
    ну по поводу "одного большого JSON"
    есть вот такая статья
    https://eng.uber.com/logging/
    Fast and Reliable Schema-Agnostic Log Analytics Platform

    At Uber, we provide a centralized, reliable, and interactive logging platform that empowers engineers to work quickly and confidently at scale. The logs are tag

  • Спасибо за совет!
  • И Вам спасибо!
  • https://t.me/clickhouse_ru
    @artemhnilov #215800 07:14 AM, 27 Apr 2021
    Привет. Насколько рациональным будет подход с использованием CH MV + Kafka для data processing вместо Spark, если типичные задачи для Spark — это агрегации? То есть прилетели данные в CH из кафки, MV тригернулось, данные доагрегировались, CH отправил эти агрегаты в другой топик Кафки...
    Ногами сильно не пинайте, просто размышляю.
  • @ruslan_chadin #215801 07:23 AM, 27 Apr 2021
    Всем привет!
    Возник вопрос при работе с SQL доступами пользователей.
    Можно ли указать последовательность применения прав на объекты?
    Пример
    GRANT role1 TO role;
    GRANT ON CLUSTER '{cluster}' SELECT ON *.* TO role;
    REVOKE ON CLUSTER '{cluster}' SELECT ON database.* FROM role;
    GRANT ON CLUSTER '{cluster}' SELECT ON database.table1 TO role;
    GRANT ON CLUSTER '{cluster}' SELECT ON database.table2 TO role;
    REVOKE ON CLUSTER '{cluster}' SELECT ON database2.table1 FROM role;
    REVOKE ON CLUSTER '{cluster}' SELECT ON database2.table2 FROM role;
    Однако
    show grants и в файле пользователя в каталоге access
    следующий вывод
    ATTACH REVOKE SELECT ON database2.table1 FROM role;
    ATTACH REVOKE SELECT ON database2.table2 FROM role;
    ATTACH SELECT ON *.* TO role;
    ATTACH GRANT SELECT ON database.table1 TO role;
    ATTACH GRANT SELECT ON database.table1 TO role;
    ATTACH REVOKE SELECT ON database.* FROM role;
    ATTACH GRANT ID('66477b08-76e1-bad8-685f-ba664077ff8b') TO role;
    Это противоречит цели выдачи прав.
    Если подправить файл в ручную, расставив в правильном порядке и перезагрузив сервер - права становятся правильными
    Однако, если выполнить команду по выдаче прав, то опять все возвращается.
    Хотелось бы понять, возможно ли как-то добиться правильной последовательности применения прав.
  • https://t.me/clickhouse_ru
    @Makasinov #215802 07:31 AM, 27 Apr 2021
    Привет, подскажите если ли смысл вешать на массивы индекс? Как он будет работать?
  • https://t.me/clickhouse_ru
    @ztseri #215803 07:50 AM, 27 Apr 2021
    Всем привет, подскажите как получить токен для подключения к app metrica
  • https://t.me/clickhouse_ru
    похоже на баг в сериализации в SQL для RBAC
    заведите issue на github
  • @ruslan_chadin #215805 07:53 AM, 27 Apr 2021
    ok. Спасибо
  • https://t.me/clickhouse_ru
    как все data skip indexes
    при вычитке партов, если есть оператор с полем который ускоряется индексом, то будет прочитана гранула индекса и определено, можно ли отбросить текущий парт для вычитки

    arrayX функции оно не ускоряет
  • @av_hello #215808 08:30 AM, 27 Apr 2021
    Добрый день! Можно ли использовать hibernate с кликом и как? У меня не получилось подключиться с использованием hibernate
  • https://t.me/clickhouse_ru
    За Спарк не скажу. Кафка и mv работают прекрасно
  • https://t.me/clickhouse_ru
    Можете привести примеры, для каких конкретно случаев? Возвращаете ли вы назад в Кафку результат работы MV?
  • https://t.me/clickhouse_ru
    Ну приходит миллиард транзакций день условно
    На таблицу повесили mv нужные для 5 агрегаций разных, например
    Я думаю, что можно повесить на эти таблицы с агрегациями другие mv, которые уже будут продюсить в кафку
  • https://t.me/clickhouse_ru
    @unamedrus #215812 08:52 AM, 27 Apr 2021
    Можно но проблема в том, что если вставка в кафку поломается по какой то причине то весь пайплайн из MV встанет
  • https://t.me/clickhouse_ru
    hibernate он поверх JDBC же работает

    а что конкретно не получилось?
  • а что за кейс такой? 😳
  • https://t.me/clickhouse_ru
    Денис спасибо большое! Ваш доклад я смотрел только вчера. Спасибо за доп материалы. Если бы вас (Altinity) не существовало, не знаю как бы мы выживали!
  • https://t.me/clickhouse_ru
    @madreyg #215818 09:42 AM, 27 Apr 2021
    Добрый день. Был ошибочный запрос Insert, который упал с ошибкой
    <Error> TCPHandler: Code: 252, e.displayText() = DB::Exception: Too many partitions for single INSERT block (more than 100).
    Теперь в логах видно, что этот процесс постоянно повторяется. Можно ли как-то остановить эту background задачу без увеличения лимита? В логах не могу найти упоминание про какой-либо .bin файл =(
  • https://t.me/clickhouse_ru
    Thx :)
  • https://t.me/clickhouse_ru
    у вас один сервер или несколько?

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

    у вас вставка в Distributed таблицу?
  • https://t.me/clickhouse_ru
    несколько серверов. Вставка в distibuted таблицу)
  • https://t.me/clickhouse_ru
    @madreyg #215822 10:02 AM, 27 Apr 2021
    Сейчас решили вопрос временно увеличив лимит, и потом вернув обратно. Вопрос, а есть ли другой способ?
  • https://t.me/clickhouse_ru
    тогда скорее всего в DISTRIBUTED таблице отсутсвует PARTITION BY
    а в дочерних таблицах они есть
    и у вас проблема со структурой данных прежде всего
    и при вставке в дочерние таблицы видимо .bin пытается разбиться на кучу маленьких .bin

    за какой период вставляете данные?
    по какому признаку делаете PARTITION BY в MergeTree Таблицах которые под distirbuted живут?

    ищите на серверах /var/lib/clickhouse/data/db/distributed_table_name/**.bin файлы
    смотрите логи
    удаляйте
    разбивайте по другому данные на клиенте до того как вставить в distributed
  • https://t.me/clickhouse_ru
    @fedorenko_vk #215824 10:07 AM, 27 Apr 2021
    Всем привет.

    Подскажите, пожалуйста, сталкивался ли кто-либо со сложностями при обновлении Debian (Jessie -> Stretch -> Buster), на котором работает clickhouse.

    Ситуация такая: есть 2 хоста с Debian 8 и Clickhouse 19.11.3.11. У них один шард на двоих. Пишут в distributed таблицу.

    Обновлять сам clickhouse сейчас задачи нет, пока что только Debian. Но вот возникают сомнения, не сломает ли обновление Debian на одном из хостов, что-то на другом 🙂
  • https://t.me/clickhouse_ru
    Дык в докер загони клик и вероятность того, что всё накроется при апдейте будет минимизирована. Ибо такой апдейтище сам по себе выглядит крайне стрёмным...
  • https://t.me/clickhouse_ru
    Спасибо, про DISTRIBUTED я посмотрю, возможно это поможет. PARTITION BY toYYYYMMDD(created_at). Но так получилось, что вставлялось 1000 записей с большим разбросом по разным дням. Поэтому и получилась такая проблема.
  • https://t.me/clickhouse_ru
    @easya ↶ Reply to #215824 #215827 10:18 AM, 27 Apr 2021
    Нет, не сломает. Если версия КХ одинаковая, то все должно быть ОК. Мы недавно обновлялись Jessie -> Buster в кластере из 4х нод (2 шарда, 2 реплики) по одной ноде, без проблем.
  • https://t.me/clickhouse_ru
    тогда это единичный случай, и можно найти тот самый .bin который не может раскидаться по дням в distributed таблице
    если знаете на какую ноду вставляли то будет легче
  • https://t.me/clickhouse_ru
    Спасибо!
    Будем пробовать 🙂
  • https://t.me/clickhouse_ru
    clickhouse-server это статический бинарник практически без зависимостей от libc и ядра
    так что сломаться не должно

    только в очень каких нибудь экзотических случаях
  • https://t.me/clickhouse_ru
    👍 спасибо!
  • https://t.me/clickhouse_ru
    @solard #215835 12:30 PM, 27 Apr 2021
    Народ привет. Кто-нибудь может обьяснить ошибку. КХ упал без причины и не поднимается
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @solard #215837 12:47 PM, 27 Apr 2021
    Никто с таким не сталкивался?
  • https://t.me/clickhouse_ru
    ошибка в конфиге
    grep -e "logger|errorlog" -r /etc/clickhouse-server/
  • https://t.me/clickhouse_ru
    @solard #215839 12:47 PM, 27 Apr 2021
    А чем обьяснить то что конфигурация не менялась 2 недели
  • https://t.me/clickhouse_ru
    @solard #215840 12:47 PM, 27 Apr 2021
    и в один момент он вырубился
  • https://t.me/clickhouse_ru
    =) хм... а точно не менялась?

    ls -la /var/lib/clickhouse-server/preprocessed_configs/

    какие тут даты модификации?
  • https://t.me/clickhouse_ru
    @solard #215842 12:49 PM, 27 Apr 2021
    В момент последнего рестарта
  • https://t.me/clickhouse_ru
    @solard #215843 12:49 PM, 27 Apr 2021
    4 дня назад
  • https://t.me/clickhouse_ru
    @solard #215844 12:49 PM, 27 Apr 2021
    всё красиво
  • https://t.me/clickhouse_ru
    а можно логи отсортировать по возрастанию времени?
  • https://t.me/clickhouse_ru
    @solard #215846 12:51 PM, 27 Apr 2021
    Можно но не имеет смысла
  • https://t.me/clickhouse_ru
    @solard #215847 12:51 PM, 27 Apr 2021
    За месяц такого не было и только сейчас такая ошибка)
  • https://t.me/clickhouse_ru
    дак надо сначала определиться какая ошибка была ДО shutdown

    окно по логам расширьте и на pastebin куда нибудь выложите с сортировкой по возрастанию
  • https://t.me/clickhouse_ru
    @yurytrostin #215849 12:53 PM, 27 Apr 2021
    привет ! можно ли таблицу типа Join сделать реплицируемой ?
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #215848 #215850 12:53 PM, 27 Apr 2021
    Так а нет ошибок
  • https://t.me/clickhouse_ru
    @solard #215851 12:53 PM, 27 Apr 2021
    Просто работал и умер
  • https://t.me/clickhouse_ru
    @solard #215852 12:54 PM, 27 Apr 2021
    Это всё что есть в логах, что очень странно
  • https://t.me/clickhouse_ru
    @c0nr4d92 #215853 01:06 PM, 27 Apr 2021
    Всем доброго времени суток! Подскажите пожалуйста как корректно удалить реплику из кластера clickhouse? Нужно ли на оставшемся сервере менять Engine?
  • https://t.me/clickhouse_ru
    это точно не все что есть в логах
    и было бы не плохо логи все таки глазами в правильном порядке посмотреть
  • https://t.me/clickhouse_ru
    нет
    Engine менять не нужно
    а вот если будете новую реплику добавлять, то желательно чтобы с другим именем и макросом {replica} в <macros> было
    для distributed таблиц
    надо из remote_host убрать реплику
    оно без рестарта должно подхватиться
    ну и быть уверенным что в distributed во временных .bin для шарда нет ничего...
  • https://t.me/clickhouse_ru
    большое спасибо за информацию, а как удостовериться в последнем пункте?
  • https://t.me/clickhouse_ru
    SELECT hostName(), * FROM clusterAllReplicas('your-cluster-name-from-system.clusters',system.metrics) WHERE metric='DistributedFilesToInsert' FORMAT Vertical;

    желательно по нулям чтобы было
    ну и приостановить вставку если можно пока не рассасется
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    не забудьте удалить все реплицированные таблицы с сервера
    drop database …
  • https://t.me/clickhouse_ru
    @nemchch #215861 01:21 PM, 27 Apr 2021
    Привет!
    Использую в запросе now(time_zone), где таймзону получаю через dictGetString(...) — дата вне зависимости от параметра конвертится в +03:00. Ставлю таймзону как константу — конвертится в любую нужную. Может кто-то знает как это лечится? Версия 20.12.3.3
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #215854 #215863 01:27 PM, 27 Apr 2021
    Просмотрел глазами. Просто пустоста. Простыня из успешных квериков а потом ошибка
  • https://t.me/clickhouse_ru
    @solard #215864 01:27 PM, 27 Apr 2021
    Поднял рядом новый КХ, триггернул ошибку, всё записалось системой логирования
  • https://t.me/clickhouse_ru
    @solard #215865 01:27 PM, 27 Apr 2021
    Так что я пожалуй ей верю
  • https://t.me/clickhouse_ru
    @MasterErik1 #215866 01:27 PM, 27 Apr 2021
    Добрый день.
    Можно ли получить max значение с группировкой по другому полю? Хочу избавится от подзапроса.
    SELECT datevalue, max(ts)
    FROM dbo.svn_min_levels
    WHERE datevalue BETWEEN ${dt_start} AND ${dt_end}
    GROUP BY datevalue
  • https://t.me/clickhouse_ru
    @abdulgalimov #215867 01:28 PM, 27 Apr 2021
    Подскажите пожалуйста, почему так? access_management=1 включил юзеру default, clickhouse-server перезапустил.
  • https://t.me/clickhouse_ru
    now() вроде считается один раз за весь query
    и ему вроде константа должна быть на вход

    а dictGetString это не константа
  • https://t.me/clickhouse_ru
    @nemchch #215869 01:29 PM, 27 Apr 2021
    А есть какие-то альтернативы для неконстант?
  • https://t.me/clickhouse_ru
    argMax | ClickHouse Documentation

    argMax Calculates the arg value for a maximum val value. If there are several different values of arg for maximum values

  • https://t.me/clickhouse_ru
    Я рассматривал её, но мне нужно максимальное значение для director, manager ... если бы у него было несколько зарплат
  • https://t.me/clickhouse_ru
    @MasterErik1 #215873 01:35 PM, 27 Apr 2021
    По datevalue BETWEEN .. задается условие а работается с максимальными значениями из другого поля
  • https://t.me/clickhouse_ru
    @erombombom #215874 01:36 PM, 27 Apr 2021
    а можно пример таблицы и то что нужно в результате?
  • https://t.me/clickhouse_ru
    @suvorovis #215875 01:38 PM, 27 Apr 2021
    Уважаемые коллеги!
    Столкнулся с kernel panic при использовании таблиц KafkaEngine в Clickhouse: насколько я понял, ошибка в оперативной памяти процесса, обрабатывающего background-процессы (BUG: Bad page state in process BgSchPool pfn:1fcdb35).
    Сталкивался ли кто нибудь с таким? Есть мысли куда копать?
    Описение конфигурации и лог ошибок ниже:

    Кластер серверов clickhouse из 3 реплик.
    Кластер брокеров kafka из 3 реплик.
    По отдельному кластеру zookeeper из 3 реплик для clickhouse и kafka.
    На каждом из серверов clickhouse по 30 таблиц с движком Kafka + MatView в Replicated target-таблицы.
    Изменен background_schedule_pool_size=50.

    ClickHouse server version 20.8.6 revision 54438

    <pre>2019.04.18 07:44:29.917382 [ 27 ] {} <Warning> dbname.tablename_sharded (ReplicatedMergeTreePartCheckThread): We have part 20190417_20190417_539039_540909_120 covering part 20190418_20190418_539738_539738_0
    2019.04.18 07:44:29.941543 [ 7 ] {} <Error> dbname.tablename_sharded (StorageReplicatedMergeTree): DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 235, e.displayText() = DB::Exception: Part 20190417_20190417_539039_540909_120 (state Committed) already exists.5200172.356694] BUG: Bad page state in process BgSchPool pfn:1fcdb35</pre>
  • https://t.me/clickhouse_ru
    @846371512 #215877 01:38 PM, 27 Apr 2021
    Подскажите пожалуйста как поменять в таблице поля по которым нужно суммировать?
    engine = SummingMergeTree()
    ORDER BY (hour, id, otherId)
  • https://t.me/clickhouse_ru
    как поменять
  • https://t.me/clickhouse_ru
    @846371512 #215879 01:41 PM, 27 Apr 2021
    ORDER BY сменить
  • https://t.me/clickhouse_ru
    @846371512 #215880 01:41 PM, 27 Apr 2021
    как поменять
  • https://t.me/clickhouse_ru
    Вот полный запрос
    SELECT ....
    FROM dbo.svn_min_levels
    WHERE (datevalue, ts) IN
    (
    SELECT datevalue, max(ts)
    FROM dbo.svn_min_levels
    WHERE datevalue BETWEEN ${dt_start} AND ${dt_end}
    AND filialid = ${filial_id}
    GROUP BY datevalue
    )
    AND filialid = ${filial_id}
    ORDER BY date_value
  • https://t.me/clickhouse_ru
    Если поменять ORDER BY (а не добавить новые столбцы в конец) то только пересозданием и переливом таблицы
  • https://t.me/clickhouse_ru
    CREATE TABLE salary
    (
    user String,
    salary Int32
    )
    ENGINE = MergeTree()
    ORDER BY (user)
    SETTINGS index_granularity = 8192;

    INSERT INTO salary (user, salary)
    VALUES ('director', 1000), ('director', 1001), ('director', 1002),
    ('manager', 100), ('manager', 102),
    ('worker', 10), ('worker', 12), ('worker', 14);

    SELECT argMax((user, salary), salary) as r
    FROM salary
    GROUP BY user;
    результат:
    '(''worker'',14)'
    '(''director'',1002)'
    '(''manager'',102)'
  • https://t.me/clickhouse_ru
    с какого именно сервера?
  • https://t.me/clickhouse_ru
    который хотите выкинуть
  • https://t.me/clickhouse_ru
    @tendallas #215886 01:47 PM, 27 Apr 2021
    Добрый день! Уважаемое сообщество. Ищем сильного .net специалиста на ETL, который хочет работать с кликхаусом и большими данными. Проект - ML + analytics под продуктовый ритейл. Детали по ссылке - https://docs.google.com/document/d/1I6VzBcNtft6MGAl6lf5rrZH7D6jDa4gMyJW90swNFfA/edit?usp=sharing
    C#_.Net_developer_ETL_NEW

    OSA Hybrid Platform, a company with offices in Kiev, Moscow and California, USA helps big retailers and FMCG to improve OSA (on shelf availability). https://osahp.com Vacancy of Senior С#/.Net Engineer, ETL Project Description: Our product is focused on AI in retail and it includes: Analyt...

  • https://t.me/clickhouse_ru
    ок, спасибо)
  • https://t.me/clickhouse_ru
    Получается тоже самое как у меня. Приходится делать условие по одному полю а связь по max(ts) = ts
  • https://t.me/clickhouse_ru
    увы
    toDateTime(, таймзона все равно константная должна быть)
  • https://t.me/clickhouse_ru
    сделайте toUInt32(dateTime_Field) AS timestamp, getDictString() AS tz
    и на клиенте потом просто преобразовывайте
  • https://t.me/clickhouse_ru
    @abdulgalimov #215891 01:52 PM, 27 Apr 2021
    господа, есть кто может за оплату помочь перенести clickhouse базу с одного сервера на другой?
  • clickhouse-backup сумеет бесплатно. Ну либо руками перенести data
  • https://t.me/clickhouse_ru
    @abdulgalimov #215894 02:41 PM, 27 Apr 2021
    экспорт руками я уже сделал) осталось разобраться как сделать восстановление
  • https://t.me/clickhouse_ru
    Пишут, что может помочь настройка optimize_move_to_prewhere = 0, прописываю её в settings для конкретного запроса, она не применяется, та же ошибка — expected const String, got String
  • https://t.me/clickhouse_ru
    =) да вроде move_to_prewhere вообще не про это, это про переписывание WHERE и прокидывание в PREWHERE для того чтобы выборку ускорить -)
    к параметрам функций это отношения не должно быть
  • @vmakulov #215897 02:54 PM, 27 Apr 2021
    экспорт структуры сделали, теперь /var/lib/data/clickhouse/ подсуньте и стартуйте
  • https://t.me/clickhouse_ru
    можно было без экспорта
    INSERT INTO ... SELECT ... FROM remote()
    https://clickhouse.tech/docs/en/sql-reference/table-functions/remote/
    remote | ClickHouse Documentation

    remote, remoteSecure Allows to access remote servers without creating a Distributed table. remoteSecure - same as remote

  • @vmakulov #215899 02:55 PM, 27 Apr 2021
    INSERT INTO ... SELECT ... FROM remote()
    Иногода может дорого стоИть, ввиду тонких каналов, обрывов и прочих радостей жизни.
  • https://t.me/clickhouse_ru
    Спасибо! Буду тогда на клиенте обрабатывать)
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #215901 03:04 PM, 27 Apr 2021
    Здравствуйте, обновился с 20.4 до 21.3, одна из таблиц MergeTree была партицирована по такому выражению:
    (ceil(fileId / 1000) % 1000). fileId - UInt64. Теперь кликхаус ругается, что нельзя использовать float point as partition key. Соответственно вопрос , это баг или фича? ведь toTypeName((ceil(fileId / 1000) % 1000)) возвращает Int16. Вот пул-реквест, который реализует эту проверку https://github.com/ClickHouse/ClickHouse/pull/18464
    Disallow floating point as partition key by hexiaoting · Pull Request #18464 · ClickHouse/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en Changelog category (leave one): New Feature Changelog entry (a user-readable short description of the cha...

  • https://t.me/clickhouse_ru
    @abdulgalimov #215903 03:41 PM, 27 Apr 2021
    Пытаюсь восстановить базу по инструкции
    https://altinity.com/blog/introduction-to-clickhouse-backups-and-clickhouse-backup

    echo 'alter table events attach partition 202006' | clickhouse-client

    Подскажите что означает partition 202006?
    Introduction to ClickHouse Backups and clickhouse-backup

    This article will explore the plumbing involved in backing up ClickHouse and introduce the clickhouse-backup tool for automating the process.

  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #215903 #215904 03:42 PM, 27 Apr 2021
    PARTITION | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    скорее баг

    можно через XML поменть, но нужен перезапуск сервера
    <megre_tree_settings>
    <allow_floating_point_partition_key>1</allow_floating_point_partition_key>
    </merge_tree_settings>
  • https://t.me/clickhouse_ru
    да, я в курсе про эту настройку, просто выглядит как костыль, ведь и так должно работать
  • https://t.me/clickhouse_ru
    PARTITION это логическая часть которая в *MergeTree таблицах в PARTITION BY объявлена
    позволяет разбить таблицу на крупные части (отдельные каталоги)
    и в запросах быстро определяется какие партиции задействованы и из них паралельно данные можно вычитывать...
  • https://t.me/clickhouse_ru
    выглядит как баг, заводите issue и делайте ссылку на pull request
  • https://t.me/clickhouse_ru
    если у меня таблица создается так:
    ENGINE = MergeTree() PARTITION BY toYear(createdAt)
    что мне надо писать в импорте?
  • https://t.me/clickhouse_ru
    имя партции равно значению выражения PARTITION BY
    так что
    2020
    или
    2021
    или за какой вы там период восстанавливаете
  • https://t.me/clickhouse_ru
    @abdulgalimov #215912 03:48 PM, 27 Apr 2021
    а если я сделал дамп всей базы, и там данные за 2020 и 2021 тогда что делать? экспортировать/импортировать кусками ?
  • https://t.me/clickhouse_ru
    @vovamrky #215913 03:48 PM, 27 Apr 2021
    Ребят, всем привет!
    Кто-то сталкивался с проблемой подключения CH к tableau desktop на mac os Catalina? Вычитал, что надо самому как-то конфигурировать odbc-драйвер. Но рабочего гайда так и не нашел.
    Может у кого-то есть готовый драйвер, или может наставить на путь истинный?
  • https://t.me/clickhouse_ru
    ну если вы все по инструкции делали и правильно поняли инструкцию то у на шаге ATTACH есть
    /var/lib/clickhouse/data/<database>/<table>/detached/2020
    и
    /var/lib/clickhouse/data/<database>/<table>/detached/2021

    можно сделать что нибудь типа однострочника bash
    for partition in /var/lib/clickhouse/data/<database>/<table>/detached/*; do clickhouse-client --echo -q 'alert table <db>.<table> attach partition $partition'; done
  • https://t.me/clickhouse_ru
    Releases · ClickHouse/clickhouse-odbc

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

  • https://t.me/clickhouse_ru
    @solard #215917 04:06 PM, 27 Apr 2021
    А Altinity оператор в проде кто-то использует?
  • https://t.me/clickhouse_ru
    @BloodJazMan #215918 04:06 PM, 27 Apr 2021
    и читаем внимательно инструкции

    https://github.com/ClickHouse/clickhouse-odbc/blob/master/README.md
    clickhouse-odbc/README.md at master · ClickHouse/clickhouse-odbc

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

  • https://t.me/clickhouse_ru
    https://altinity.cloud
    пользуют =)
    и не только в проде
    Altinity.Cloud

    Altinity.Cloud is a fully-managed AWS and Google Cloud ClickHouse Service developed and operated by Altinity enterprise experts. Launch production-ready ClickHouse clusters today!

  • https://t.me/clickhouse_ru
    @solard #215920 04:07 PM, 27 Apr 2021
    Интересно просто если я хочу развернуть схему 3 шарда + 1 реплика на каждый шард я буду прав или нужно как-то пересмотреть?
  • https://t.me/clickhouse_ru
    huawei например
    https://support.huaweicloud.com/intl/en-us/bestpractice-cce/cce_bestpractice_0128.html
    Deploying ClickHouse Operator_Cloud Container Engine_Best Practices_Batch Computing_Deploying ClickHouse on CCE_HUAWEI CLOUD

    kubectl apply -f https://raw.githubusercontent.com/Altinity/clickhouse-operator/master/deploy/operator/clickhouse-operator-install.yamlAfter a period of time, check the r

  • https://t.me/clickhouse_ru
    почему так все сложно, почему нельзя сделать mysqldump, а потом mysql < file.sql 😭
  • https://t.me/clickhouse_ru
    серверов то у вас 3 штуки?
    ну если вам шардинг нужен а не резервирование, то да
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #215923 #215924 04:08 PM, 27 Apr 2021
    Именно шардинг инетересует
  • https://t.me/clickhouse_ru
    @solard #215925 04:08 PM, 27 Apr 2021
    И еще вопрос наверное больше холиварный, в K8s КХ тащить опасно?
  • https://t.me/clickhouse_ru
    удачи вам сделать mysqldump на таблице размером с терабайт =)
    там в статье на которую вы ссылаетесь есть утилита. clickhouse-backup
    которая делает то что описано в статье, только сама
  • https://t.me/clickhouse_ru
    @abdulgalimov #215927 04:09 PM, 27 Apr 2021
    да нету у меня терабайта) скромные 350 метров
  • https://t.me/clickhouse_ru
    @dbalashov #215928 04:10 PM, 27 Apr 2021
    переделал вчерашние данные, вместо партиционирования toYYYYMM(DT) сделал (Name,DT), объем данных вырос на ~15%, запросы стали быстрее ~в 5 раз
  • https://t.me/clickhouse_ru
    @dbalashov #215929 04:10 PM, 27 Apr 2021
    некоторые на порядок
  • https://t.me/clickhouse_ru
    @dbalashov #215930 04:10 PM, 27 Apr 2021
    ищу как померять дисковые io в запросах
  • https://t.me/clickhouse_ru
    а какой у вас вообще опыт с k8s ?
    и какой именно у вас k8s ?

    в целом наличие clickhouse-operator многие подводные камни скрывает
    но 100% всех специфичных кейсов не покрывает, хотя оператор у нас может дейсвительно многое и очень гибкий
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #215931 #215932 04:11 PM, 27 Apr 2021
    Опыт в пару лет в продакшн имеется. Траблшутить тоже умеем. K8s managed в клауде возможно bare metal будет
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #215931 #215933 04:12 PM, 27 Apr 2021
    Потрогаем, можно будет сюда за консультациями обращаться?
  • https://t.me/clickhouse_ru
    @solard #215934 04:12 PM, 27 Apr 2021
    С КХ не так много опыта как хотелось бы и хочется чтобы опыт не плачевный был
  • https://t.me/clickhouse_ru
    дак сделайте
    clickhouse-client -q "SELECT create_table_query FROM remote(..., system.tables) WHERE database='XXX' AND table='YYY'" > YYY.sql
    cat YYY.sql > clickhouse-client --echo
    clickhouse-client --progress -q "INSERT INTO XXX.YYYY SELECT * FROM remote(... , XXX.YYY)"
    почитайте доку про remote
    https://clickhouse.tech/docs/en/sql-reference/table-functions/remote/
    remote | ClickHouse Documentation

    remote, remoteSecure Allows to access remote servers without creating a Distributed table. remoteSecure - same as remote

  • https://t.me/clickhouse_ru
    обращайтесь
    можно сразу на github issues делать, их читают
  • @miksir #215938 04:15 PM, 27 Apr 2021
    Приветики! Подскажите про rabbitmq - можно ли durable для exchange настраивать? как я понимаю rabbitmq_persistent - это для очереди?
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #215938 #215939 04:16 PM, 27 Apr 2021
    Разве не консюмер настраивает для себя эксчейндж?
  • @vadim_cj #215940 04:16 PM, 27 Apr 2021
    а - это вроде по КХ группа ? и б - persistent - это значит что пишется на диск а не только в памяти
  • @miksir ↶ Reply to #215939 #215941 04:17 PM, 27 Apr 2021
    в кролике там вроде эксчендж описывается и продьюсером и консьюмером
  • @miksir ↶ Reply to #215939 #215942 04:18 PM, 27 Apr 2021
    ну и КХ же консьмер и есть
  • https://t.me/clickhouse_ru
    Exchange по дефолту durable
  • @miksir ↶ Reply to #215943 #215944 04:19 PM, 27 Apr 2021
    ну проблема в том, что есть не durable эксчендж
    и туда нужно прицепить КХ
    и как бы оно не стартует ясно почему
  • https://t.me/clickhouse_ru
    тогда тащите
    для AWS могу сказать что Zookeeper лучше на gp3 дисках разместить
    а clickhouse можно на gp2 оставить, но и gp3 тоже норм будет

    для base metal можно посоветовать https://github.com/minio/direct-csi в качестве CSI

    лучше сохранять принцип для продакшена один StatefulSet с clickhouse = 1 k8s node
    ну или уметь правильно задавать Limits \ Requests по CPU \ RAM
    GitHub - minio/direct-csi: Container Storage Interface (CSI) driver for direct attached storage

    Container Storage Interface (CSI) driver for direct attached storage - GitHub - minio/direct-csi: Container Storage Interface (CSI) driver for direct attached storage

  • https://t.me/clickhouse_ru
    ;)) ну поплачете, потом перестанете, все через это проходят
    а может предыдущий опыт поможет и все будет хорошо наоборот
  • https://t.me/clickhouse_ru
    Потому что не реализовано, чтобы можно было использовать user-defined exchange, сейчас подразумевается что им полностью владеет сама таблица (создаёт / удаляет )
  • @miksir ↶ Reply to #215948 #215949 04:22 PM, 27 Apr 2021
    охтыж
    ну те походу перекладыватель нужно писать
  • @miksir #215950 04:23 PM, 27 Apr 2021
    но спасибо =)
  • https://t.me/clickhouse_ru
    Ну можно реализовать, несложно совсем
  • @miksir #215952 04:26 PM, 27 Apr 2021
    хотя оказываться у кролика можно ексченджи биндить меж собой
    подумаю
  • https://t.me/clickhouse_ru
    $ clickhouse-client -q "SELECT create_table_query FROM remote('ipaddr:9000', system.tables, 'user', 'password') WHERE database='tableName' AND table='Stats'" > stats.sql

    Code: 194. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Password required for user default.
    что ему не нравится? ((
  • @s4851 #215954 04:40 PM, 27 Apr 2021
    Судя по тексту пароль
  • @s4851 #215955 04:40 PM, 27 Apr 2021
    Дефолтная установка?
  • https://t.me/clickhouse_ru
    @abdulgalimov #215956 04:41 PM, 27 Apr 2021
    вот так clickhouse-client -u —password с этим же паролем я могу зайти
  • https://t.me/clickhouse_ru
    @solard #215957 04:47 PM, 27 Apr 2021
    Ну так прокиньте в команду креды)
  • https://t.me/clickhouse_ru
    @abdulgalimov #215958 04:53 PM, 27 Apr 2021
    теперь так ругается,
    Code: 10. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Not found column comment_expression in block. There are only columns: name, type, default_type, default_expression, comment, codec_expression, ttl_expression.
    что это может означать ?
  • https://t.me/clickhouse_ru
    @abdulgalimov #215959 04:59 PM, 27 Apr 2021
    ребят, готов заплатить 1000 российских рублей кто поможет перенести с одного сервера на другой 1 таблицу, размером ~350мб. Помогите пожалуйста, я устал в этом копаться :( кто готов помочь, напишите в личку пожалуйста. Спасибо.
  • @n1ght_f0x #215960 05:04 PM, 27 Apr 2021
    Так а в чем проблема зайти на clickhouse1, выполнить show create table Stats, скопировать
    Зайти на clickhouse2 создать таблицу Stats

    выполнить insert into clickhouse2.Stats select * from remote('clickhouse1', 'db', 'table', 'user', 'password')

    ?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @unamedrus #215962 05:26 PM, 27 Apr 2021
    Сделайте простой INSERT SELECT
  • @1739078534 #215964 05:45 PM, 27 Apr 2021
    всем привет. Подскажите, пожалуйста, когда по времени должна выполниться очистка диска после выполнения команды alter table ... drop partition ...? Партиции я вижу, что были удалены уже больше 1 часа назад, а в system.disks изменения не видно и в system.tables тоже
  • https://t.me/clickhouse_ru
    вопрос решен, проблема была в том что на серверах стояли разные версии clickhouse (18 и 20)
  • https://t.me/clickhouse_ru
    @UglyKoyote #215966 05:57 PM, 27 Apr 2021
    Вот, 1к съэкономил) и опыт получил
  • https://t.me/clickhouse_ru
    @abdulgalimov #215967 06:00 PM, 27 Apr 2021
    не совсем)
  • https://t.me/clickhouse_ru
    сразу должны удалится, моментально. (есть хитрость что неактивные парты через 8 минут удалятся).
    и если эта партиция была забекаплена (alter table freeze), то бекап не удалится понятное дело, и место не осводится.

    и если неправильно написать имя партиции в drop partition то молча ничего не дропнется
  • понял, большое спасибо за информацию
  • https://t.me/clickhouse_ru
    @680342979 #215973 11:04 PM, 27 Apr 2021
    Доброго дня!
    после обновления
    `
    SELECT
    'cnt',
    formatDateTime(timestamp, '%m/%d %H:%M') AS ts,
    replaceRegexpAll(hostname, '.home.net', ''),
    severity,
    tag,
    message
    FROM syslog
    WHERE (timestamp >= toDate('2021-03-14')) AND (hostname = 'host21.home.net') AND (message LIKE '%Mar 14 17:47:34.003%')
    ORDER BY timestamp ASC
    LIMIT 1

    Progress: 1.41 billion rows, 201.80 GB (34.14 million rows/s., 4.88 GB/s.)
    0 rows in set. Elapsed: 41.391 sec. Processed 1.41 billion rows, 201.80 GB (34.11 million rows/s., 4.88 GB/s.)

    Received exception from server (version 21.4.5):
    Code: 241. DB::Exception: Received from localhost:9000. DB::Exception: Memory limit (total) exceeded: would use 28.34 GiB (attempt to allocate chunk of 4271277 bytes), maximum: 28.28 GiB: (avg_value_size_hint = 257.16845703125, avg_chars_size = 299.0021484375, limit = 8192): (while reading column message): (while reading from part /dbs/clickhouse/data/default/syslog/202104_296585563_316221151_2468/ from mark 14868 with max_rows_to_read = 8192): While executing MergeTree.
    `
  • https://t.me/clickhouse_ru
    памяти сколько? 32?
    и раньше хватало или в своп залезал?
    какая версия раньше была?
  • 28 April 2021 (136 messages)
  • https://t.me/clickhouse_ru
    Да, 32GB
    Раньше не замечал нехватки памяти.
    работало на
    version 21.2.4.6 (official build)
    version 21.3.4.25 (official build)
    version 21.4.3.21 (official build)
  • https://t.me/clickhouse_ru
    @den_crane #215976 01:07 AM, 28 Apr 2021
    Скорее всего тогда случайность, кто-то другой отожрал память в этот момент.
  • https://t.me/clickhouse_ru
    @680342979 #215977 01:35 AM, 28 Apr 2021
    Не похоже, что случайность.
    Легко воспроизводится...

    2021.04.28 01:31:30.012326 [ 4316 ] {44a0e3b6-3d85-46b3-a432-8e7d2e0b9255} <Error> TCPHandler: Code: 241, e.displayText() = DB::Exception: Memory limit (total) exceeded: would use 28.82 GiB (attempt to allocate chunk of 4194400 bytes), maximum: 28.28 GiB: (avg_value_size_hint = 256.3509521484375, avg_chars_size = 298.02114257812497, limit = 8192): (while reading column message): (while reading from part /dbs/clickhouse/data/default/syslog/202103_248874547_268597903_2521_286611038/ from mark 15 with max_rows_to_read = 8192): While executing MergeTree, Stack trace:

    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x87f4c4a in /usr/bin/clickhouse
    1. DB::Exception::Exception<char const*, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*&&, char const*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&, long&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&) @ 0x8809679 in /usr/bin/clickhouse
    2. MemoryTracker::alloc(long) @ 0x8808fed in /usr/bin/clickhouse
    3. MemoryTracker::alloc(long) @ 0x8808d54 in /usr/bin/clickhouse
    4. MemoryTracker::alloc(long) @ 0x8808d54 in /usr/bin/clickhouse
    5. MemoryTracker::alloc(long) @ 0x8808d54 in /usr/bin/clickhouse
    6. DB::SerializationString::deserializeBinaryBulk(DB::IColumn&, DB::ReadBuffer&, unsigned long, double) const @ 0xef7fd64 in /usr/bin/clickhouse
    7. DB::ISerialization::deserializeBinaryBulkWithMultipleStreams(COW<DB::IColumn>::immutable_ptr<DB::IColumn>&, unsigned long, DB::ISerialization::DeserializeBinaryBulkSettings&, std::__1::shared_ptr<DB::ISerialization::DeserializeBinaryBulkState>&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, COW<DB::IColumn>::immutable_ptr<DB::IColumn>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, COW<DB::IColumn>::immutable_ptr<DB::IColumn> > > >*) const @ 0xef4e435 in /usr/bin/clickhouse
    8. DB::MergeTreeReaderWide::readData(DB::NameAndTypePair const&, COW<DB::IColumn>::immutable_ptr<DB::IColumn>&, unsigned long, bool, unsigned long, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, COW<DB::IColumn>::immutable_ptr<DB::IColumn>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, COW<DB::IColumn>::immutable_ptr<DB::IColumn> > > >&) @ 0xfd2ae5e in /usr/bin/clickhouse
    9. DB::MergeTreeReaderWide::readRows(unsigned long, bool, unsigned long, std::__1::vector<COW<DB::IColumn>::immutable_ptr<DB::IColumn>, std::__1::allocator<COW<DB::IColumn>::immutable_ptr<DB::IColumn> > >&) @ 0xfd29f1b in /usr/bin/clickhouse
    10. DB::MergeTreeRangeReader::DelayedStream::finalize(std::__1::vector<COW<DB::IColumn>::immutable_ptr<DB::IColumn>, std::__1::allocator<COW<DB::IColumn>::immutable_ptr<DB::IColumn> > >&) @ 0xfd337aa in /usr/bin/clickhouse
    11. DB::MergeTreeRangeReader::startReadingChain(unsigned long, std::__1::deque<DB::MarkRange, std::__1::allocator<DB::MarkRange> >&) @ 0xfd382e6 in /usr/bin/clickhouse
  • https://t.me/clickhouse_ru
    @680342979 #215978 01:35 AM, 28 Apr 2021

    12. DB::MergeTreeRangeReader::read(unsigned long, std::__1::deque<DB::MarkRange, std::__1::allocator<DB::MarkRange> >&) @ 0xfd36b84 in /usr/bin/clickhouse
    13. DB::MergeTreeRangeReader::read(unsigned long, std::__1::deque<DB::MarkRange, std::__1::allocator<DB::MarkRange> >&) @ 0xfd36ad3 in /usr/bin/clickhouse
    14. DB::MergeTreeBaseSelectProcessor::readFromPartImpl() @ 0xfd302e3 in /usr/bin/clickhouse
    15. DB::MergeTreeBaseSelectProcessor::readFromPart() @ 0xfd30fad in /usr/bin/clickhouse
    16. DB::MergeTreeBaseSelectProcessor::generate() @ 0xfd2f7db in /usr/bin/clickhouse
    17. DB::ISource::tryGenerate() @ 0xff29c85 in /usr/bin/clickhouse
    18. DB::ISource::work() @ 0xff2987a in /usr/bin/clickhouse
    19. DB::SourceWithProgress::work() @ 0x100daaba in /usr/bin/clickhouse
    20. ? @ 0xff62f1d in /usr/bin/clickhouse
    21. DB::PipelineExecutor::executeStepImpl(unsigned long, unsigned long, std::__1::atomic<bool>*) @ 0xff5fbd1 in /usr/bin/clickhouse
    22. ? @ 0xff64716 in /usr/bin/clickhouse
    23. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x8834d2f in /usr/bin/clickhouse
    24. ? @ 0x88387c3 in /usr/bin/clickhouse
    25. start_thread @ 0x7fa3 in /usr/lib/x86_64-linux-gnu/libpthread-2.28.so
    26. __clone @ 0xf94cf in /usr/lib/x86_64-linux-gnu/libc-2.28.so
  • https://t.me/clickhouse_ru
    @680342979 #215979 01:37 AM, 28 Apr 2021
    После этого база требует рестарта.
  • https://t.me/clickhouse_ru
    ну пароль ему нужен для пользователя default

    куда можете зайти с паролем? на ipaddr:9000 ?

    clickhouse -u user --password=password -h ipaddr работает с машины на которую данные переносите?
  • @mlvni #215982 08:08 AM, 28 Apr 2021
    Ребят, всем привет.
    Мы пробуем перейти с версии кх 18.6 на последнюю.
    В процессе, у нас упало несколько запросов, в которых были JOIN без алиаса, это исправильно одним параметром.
    Но потом начали падать запросы с вот такой ошибкой.
    2021.04.27 17:00:25.916859 [ 1027 ] {} <Trace> DynamicQueryHandler: Request URI: /?readonly=true
    2021.04.27 17:00:25.917107 [ 1027 ] {} <Error> DynamicQueryHandler: Code: 27, e.displayText() = DB::ParsingException: Cannot parse input: expected 'eof' before: 'true', Stack trace (when copying this message, always include the lines below):
    Дело в том, что в куске легаси кода был самопальный драйвер для кх, который с каждым запросом слал /?readonly=true. Со старой версией это работало нормально с переходом на новую - все запросы начали падать.
    Проблему устранилась, после того как убрали этот параметр. Но может кто-то знает, из-за чего могла возникнуть вообще такая проблема?
  • @vvvjhaq #215984 09:30 AM, 28 Apr 2021
    Добрый день, из доки убрали пункт с блокировкой при ALTER запросах?
    ALTER ..DROP PARTITION блокирует чтение или нет?
  • @l_dar #215985 09:37 AM, 28 Apr 2021
    Привет. Подскажите пожалуйста. Читал Доку, искал здесь. Вроде не нашёл.
    В доке написано, первичный ключ создается при создании таблицы. И если он не указан то значения берутся из сортировки.
    Мне необходимо добавить первичный ключ, явно я его не создавал, просто указывал сортировку order by, можно добавить в сортировку колонки, будут ли они добавлены в индекс?
  • @l_dar #215986 09:39 AM, 28 Apr 2021
    Возможно мне и не нужен сам первичный индекс, мне необходимо быстро выбирать данные по колонкам, которые хочу указать в order by. Может мне будет этого достаточно?
  • https://t.me/clickhouse_ru
    если вы не указывали PRIMARY KEY ваш ORDER BY и есть PRIMARY KEY.

    Если вы хотите добавить уже существующие столбцы в индекс, то единственный выход это создание новой таблицы
  • https://t.me/clickhouse_ru
    Убрали скорее всего для Atomic database engine который by default сейчас
  • @l_dar ↶ Reply to #215987 #215989 09:44 AM, 28 Apr 2021
    Order by на сколько эффективно помогает при выборке по этим столбцам?
  • https://t.me/clickhouse_ru
    возможно это связано c этой фичей
    https://clickhouse.tech/docs/en/interfaces/http/#predefined_query_handler
    HTTP Interface | ClickHouse Documentation

    HTTP Interface The HTTP interface lets you use ClickHouse on any platform from any programming language. We use it for w

  • https://t.me/clickhouse_ru
    Сильно помогает
    Но нужно много думать когда его составляешь, это сильно виляет
  • @l_dar ↶ Reply to #215991 #215992 09:47 AM, 28 Apr 2021
    Спасибо
  • так он не блокирует селекты/инсерты? не понял(
  • https://t.me/clickhouse_ru
    SELECT engine, name FROM system.databases;

    там где Ordinary - блокирует
    там где Atomic - не блокирует
  • @ichirkin #215996 10:08 AM, 28 Apr 2021
    Добрый день! кто-нибуть сталкивался с задачей построения блумфильтра на основе данных в кликхаусе, получиться ли вытащить стейт прям из кликхауса, чтобы не тянуть всю таблицу?
  • https://t.me/clickhouse_ru
    @l_dar вы можете добавлять индексы в таблицу без её пересоздания с помощью индексов пропуска, minmax например идентичен order by
    https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/mergetree/#table_engine-mergetree-data_skipping-indexes
    MergeTree | Документация ClickHouse

    MergeTree Движок MergeTree, а также другие движки этого семейства (*MergeTree) — это наиболее функциональные движки табл

  • спасибо
  • https://t.me/clickhouse_ru
    Он не идентичен ORDER BY в том смысле. что minmax индекс никак не влияет на сортировку данных в таблице. так что на рандомных данных пользы от него будет немного
  • https://t.me/clickhouse_ru
    всё так, самая большая разница будет, если в order by нужное поле будет на первом месте. но если в order by уже будет несколько полей, то добавление ещё одного уже мало повлияет на сортировку данных или даже вообще не повлияет, если например последняя колонка - что-то типа uuid, в таком случае можно добавить индекс пропуска без пересоздания таблица. более того в случае с агрегирующими движками это пожалуй единственный выход, потому что первичный ключ может только уменьшать количество поле в индексе.
    но в целом да, не идентичны. правильнее было бы выразиться, что minmax идентичен primary key, а не order by
  • https://t.me/clickhouse_ru
    @patzantre #216004 10:31 AM, 28 Apr 2021
    Всем привет! Подскажите пожалуйста, как правильно обновлять схемы в /var/lib/clickhouse/format_schemas/ ? Допустим, нужно добавить новое поле в существующую схему, как заставить clickhouse перечитать схемы?
  • https://t.me/clickhouse_ru
    @lesikv #216005 10:52 AM, 28 Apr 2021
    Всем привет! Подскажите пожалуйста (киньте докой, статьями) возможно ли в КХ настроить запись в одну таблицу с нескольких источников?
    Например с нескольких сервисов собирать данные и писать в одну таблицу?
    Непонятно что с блокировками, транзакции в КХ не поддерживаются.

    Сходу кажется что лучше сделать запись в разные таблицы а потом собрать поверх агрегат.
  • https://t.me/clickhouse_ru
    если запросов в секунду на запись очень много, то можно использовать таблицу с движком буфер.
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #216006 #216007 10:56 AM, 28 Apr 2021
    и то есть если из разных источников идет одновременная запись то она будет происходить последовательно ?
  • https://t.me/clickhouse_ru
    если слоёв у буфера несколько, то попадать строки из разных слоёв могут не в порядке попадения этих строк в кликхаус. если слой один, то данные из буфера в таблицы попадают в том же порядке, что и в буфер
    https://clickhouse.tech/docs/ru/engines/table-engines/special/buffer/
    Buffer | Документация ClickHouse

    Buffer Буферизует записываемые данные в оперативке, периодически сбрасывая их в другую таблицу. При чтении, производится

  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #216008 #216009 11:02 AM, 28 Apr 2021
    Спасибо!
  • https://t.me/clickhouse_ru
    есть data skip indexes с типом bloom

    https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/mergetree/#available-types-of-indices

    внутренности наружу вы не вытащите, но сможете что-то оптимизировать по выборкам если bloom фильтр прямо ваш юзкейс
    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
    если из разных источников одновременно идет запись в MergeTree таблицу
    1) пишите большими батчами а не одиночными строками
    2) каждый INSERT запрос разбивается на блоки по миллиону записей (если записей в INSERT меньше миллиона, то блок один, см. https://clickhouse.tech/docs/en/operations/settings/settings/#min-insert-block-size-rows)
    дальше в зависимости от вашего PARTITION BY и данных в блоке этот блок бьется по кол-ву партиций (обычно так и остается один блок), дальше для каждой партиции создается "кусок данных" (см. system.parts) в котором данные уже сжаты и отсортированы в .bin файлы по ORDER BY \ и созданы .mrk* файлы по PRIMARY KEY \ *.idx по data skip indexes
    3) каждый новый system.parts "имутабелен" сразу доступен для чтения после создания без всяких блокировок
    4) после этого идет фоновый процесс background merge который сливает более мелкие parts внутри partition в более крупные
    Settings | ClickHouse Documentation

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

  • @vvvjhaq #216012 11:29 AM, 28 Apr 2021
    Можно ли при выполнении запроса узнать его query_id из запроса? либо вернуть это значение как-то? не ходя в processes
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #216011 #216013 11:32 AM, 28 Apr 2021
    Спасибо! То есть я правильно понимаю что какие-то дополнительные настройки не требуются кроме батчей?
  • https://t.me/clickhouse_ru
    Можно query_id задать наперед.
  • к сожалению мне нужен именно стейт, есть два провайдера которые хотят обменяться данными, но данные в открытом виде предоставлять не могут

    придется вытаскивать и строить стейт вне кликхауса (
  • через settings? не подскажете настройку?
  • https://t.me/clickhouse_ru
    Через setting не получится. тк для этого кх должен распарсить запрос и в этот момент query_id уже назначен
  • https://t.me/clickhouse_ru
    @unamedrus #216018 11:39 AM, 28 Apr 2021
    Как вы запрашиваете кх?
  • https://t.me/clickhouse_ru
    @unamedrus #216019 11:40 AM, 28 Apr 2021
    clickhouse-client --help | grep query_id
  • https://t.me/clickhouse_ru
    да, нужна только вставка батчами
    ну у вас должно хватать пропускной способности чтобы эти батчи сжатые последовательно писать на диск

    то есть если вы запустите 100 паралельных INSERT а диска \ RAM и CPU хватает только на 10
    то будет боль

    clickhouse при вставке аллоцирует буфера под каждую колонку около 2 мегабайт
    100 колонок - 2 гигабайта памяти на 1 INSERT
  • https://t.me/clickhouse_ru
    @bvt123 #216021 11:41 AM, 28 Apr 2021
    у кого-нибудь работают словари на основе внешних программ?
    2021.04.28 14:36:59.198887 [ 10075468 ] {} <Trace> ExecutableDictionarySource: loadKeys Executable: /Users/bvt/Clickhouse/bin/mystem size = 1
    2021.04.28 14:36:59.198918 [ 10075468 ] {} <Trace> ShellCommand: Will start shell command '/bin/sh' with arguments 'sh', '-c', '/Users/bvt/Clickhouse/bin/mystem'
    2021.04.28 14:36:59.200283 [ 10075468 ] {} <Trace> ShellCommand: Started shell command '/bin/sh' with pid 82372
    2021.04.28 14:36:59.200704 [ 10075453 ] {} <Trace> BaseDaemon: Received signal 6
    2021.04.28 14:36:59.201198 [ 10075632 ] {} <Fatal> BaseDaemon: ########################################
    2021.04.28 14:36:59.201272 [ 10075632 ] {} <Fatal> BaseDaemon: (version 21.4.1.1, no build id) (from thread 10075468) (no query) Received signal Abort trap: 6 (6)
    2021.04.28 14:36:59.201292 [ 10075632 ] {} <Fatal> BaseDaemon:
    2021.04.28 14:36:59.201316 [ 10075632 ] {} <Fatal> BaseDaemon: Stack trace: 0x7fff20367462
  • https://t.me/clickhouse_ru
    @bvt123 #216022 11:42 AM, 28 Apr 2021
    Это на маке. Но 21.1 на дебиане тоже крешится
  • https://t.me/clickhouse_ru
    curl "http://localhost:8123/?query=SELECT ...&query_id=$(uuidgen)"

    это HTTP интерфейс, соответсвенно будет работать в JDBC \ Python

    какой у вас язык программирования, какая клиентская библиотека?
  • GitHub - killwort/ClickHouse-Net: Yandex ClickHouse fully managed .NET client

    Yandex ClickHouse fully managed .NET client. Contribute to killwort/ClickHouse-Net development by creating an account on GitHub.

  • через clickhouse-Net
  • https://t.me/clickhouse_ru
    тяжко, пробежался краем глаза этой либе C#
    оно не полностью реализуют binary протокол и все не умеют задавать query_id

    можно попробовать вот эту либу
    https://github.com/DarkWanderer/ClickHouse.Client

    кажется тут можно параметры задавать
    https://github.com/DarkWanderer/ClickHouse.Client/blob/dfbb23d8dd4e311632f289fd91b25f6ffda2f66b/ClickHouse.Client/ClickHouseUriBuilder.cs

    Но это не точно

    так что вам видимо надо идти на поклон в github к авторам библиотек
    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
    @dbalashov #216028 11:59 AM, 28 Apr 2021
    двачую DarkWanderer/ClickHouse.Client, работает как часы
  • https://t.me/clickhouse_ru
    @madreyg #216029 12:20 PM, 28 Apr 2021
    Привет, сори, если это плохой вопрос для данного канала, но может ребята из Altinity подскажут. Подключили tableau к clickhouse через odbc. (clickhouse-odbc-1.1.8-1.el7.x86_64.rpm).
    Но при extract'e в tableau ловим переодически ошибку:
    Connectionless Failure (status code = 10000, Tableau was unable to generate a query to perform this operation. Generic ODBC requires additional configuration. The driver and DSN (data source name) must be installed and configured to match the connection. Unable to connect using the DSN named "ClickHouse DSN (Unicode)". Check that the DSN exists and is a valid connection. )
    Может сталкивались с этим ?
  • https://t.me/clickhouse_ru
    @Ivan_Tyurin_web #216031 12:44 PM, 28 Apr 2021
    Всем привет, заинтересовала технология clickhouse, может есть какой-нибудь не сложный обучающий материал по нему? Помимо доки и google))))
  • https://t.me/clickhouse_ru
    почитайте https://github.com/ClickHouse/clickhouse-odbc/
    вы extract делаете на tableau server или desktop ?

    судя по сообщению об ошибке, у вас точно ODBC драйвер настроен на машине где extract делается?
    GitHub - ClickHouse/clickhouse-odbc: ODBC driver for ClickHouse

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

  • https://t.me/clickhouse_ru
    на сервере.
    - отчет опубликован сервере на live-подключении к кликхаусу
    - тип подключения сменен на extract, который успешно создался
    - дальше он успешно не создавался ()
  • https://t.me/clickhouse_ru
    а сервер cloud ? или свой купленый?
    там точно odbc.ini правильный?

    увы, у нас мало опыта с tableau
  • https://t.me/clickhouse_ru
    сервер свой. odbc.ini сделан по инструкции с https://github.com/ClickHouse/clickhouse-odbc . И судя по тому что первые 2 шага срабатывают:
    - отчет опубликован сервере на live-подключении к кликхаусу
    - тип подключения сменен на extract, который успешно создался

    То соединение получается.
    Почему потом пропадает - не понятно. Вот ищем возможные решения )
    GitHub - ClickHouse/clickhouse-odbc: ODBC driver for ClickHouse

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

  • https://t.me/clickhouse_ru
    Можно статьи на хабре посмотреть. Недавно была про нестандартное использование.
  • @Bekzhan_Satbek #216037 01:04 PM, 28 Apr 2021
    ну вообще clickhouse-client это симлинк на clickhouse
    так что вполне возможно вы как то сервер не так собрали
  • https://t.me/clickhouse_ru
    начните отсюда
    https://clickhouse.tech/docs/ru/
    Обзор | Документация ClickHouse

    Что такое ClickHouse ClickHouse - столбцовая система управления базами данных (СУБД) для онлайн обработки аналитических

  • @lexa_work #216039 01:20 PM, 28 Apr 2021
    а вот такой тип имеет смысл и как он работает?
    Array(LowCardinality(String))

    Там словарь внутренний как? для всего массива или для конкретных позиций будет?
  • @maiorrulz #216040 01:20 PM, 28 Apr 2021
    Всем привет, какой наилучший способ загрузить Json line файлы, которые находятся на S3 используя JSONEachRow format в таблицу.
    Есть ли возможность не указывать structure, так чтобы структуру бран с json.
  • https://t.me/clickhouse_ru
    ну скорее словарь будет все таки для всего блока, а не для отдельной строки
    а в массиве будут храниться идентификаторы из словаря
  • https://t.me/clickhouse_ru
    структуру все равно придется задать
    если структура сложная, то можно импортировать как JSONAsString

    https://clickhouse.tech/docs/en/interfaces/formats/#jsonasstring

    а в таблицу добавить позже поля с DEFAULT JSONExtract ..
    Input and Output Formats | ClickHouse Documentation

    Formats for Input and Output Data ClickHouse can accept and return data in various formats. A format supported for input

  • https://t.me/clickhouse_ru
    точнее вам нужен будет JSONStringEachRow для сложного импорта
    https://clickhouse.tech/docs/en/interfaces/formats/#jsonstringseachrow
    Input and Output Formats | ClickHouse Documentation

    Formats for Input and Output Data ClickHouse can accept and return data in various formats. A format supported for input

  • https://t.me/clickhouse_ru
    еще можно тут идеи посмотреть
    http://eng.uber.com/logging
    https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup40/uber.pdf
    Fast and Reliable Schema-Agnostic Log Analytics Platform

    At Uber, we provide a centralized, reliable, and interactive logging platform that empowers engineers to work quickly and confidently at scale. The logs are tag

  • https://t.me/clickhouse_ru
    @343206394 #216047 01:51 PM, 28 Apr 2021
    Привет
    Пытаюсь потестить различные комбинации кодеков на своих данных.
    Что-то не пойму как к массиву целых кодек прицепить, типа такого не работает
    CREATE TABLE default.Test
    (
    `timestamp` UInt32,
    `value` Array(UInt32) CODEC(DoubleDelta,LZ4)
    )
    ENGINE = MergeTree()
    PARTITION BY floor(timestamp / 86400)
    ORDER BY (timestamp)
    SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    @343206394 #216048 01:51 PM, 28 Apr 2021
    Есть возможность создать массив целых с кодеком?
  • Спасибо
  • https://t.me/clickhouse_ru
    @baltazorbest #216050 01:56 PM, 28 Apr 2021
    Привет, а подскажите пожалуйста, в папке с Distributed таблицей появилась папка которая весит 300гб, с чем может быть связано такое поведение? версия КХ 19.15.3.6 , папка вида:
    default@192%2E168%2E0%2E2:9000,default@192%2E168%2E0%2E3:9000
  • https://t.me/clickhouse_ru
    @baltazorbest #216051 01:57 PM, 28 Apr 2021
    внутри файлы вида 3360347.bin + есть папка tmp и broken
  • https://t.me/clickhouse_ru
    Ошибку прочитайте при создании?
    с кодеками все порядке у вас
    а вот с PARTITION BY лучше поменять на toYYYYMM(toDateTime(timestamp))
    дневные партиции применять надо очень осторожно

    CREATE TABLE default.Test
    (
    timestamp UInt32,
    value Array(UInt32) CODEC(DoubleDelta, LZ4)
    )
    ENGINE = MergeTree
    PARTITION BY toYYYYMM(toDateTime(timestamp))
    ORDER BY timestamp
    SETTINGS index_granularity = 8192

    вот так нормально сработает
  • https://t.me/clickhouse_ru
    это временные файлы которые по каким то причинам не могут быть вставлены в удаленный шард
    у вас 300гигабайт данных которые не попали в MergeTree таблицы которые под капотом Distributed

    логи смотрите /var/log/clickhouse-server
    там у вас скорее всего забито все сообщениями с объяснением что не так...
  • https://t.me/clickhouse_ru
    Ничего не изменилось
    CREATE TABLE default.Test
    :-] (
    :-] timestamp UInt32,
    :-] value Array(UInt32) CODEC(DoubleDelta, LZ4)
    :-] )
    :-] ENGINE = MergeTree
    :-] PARTITION BY toYYYYMM(toDateTime(timestamp))
    :-] ORDER BY timestamp
    :-] SETTINGS index_granularity = 8192

    CREATE TABLE default.Test
    (
    `timestamp` UInt32,
    `value` Array(UInt32) CODEC(DoubleDelta, LZ4)
    )
    ENGINE = MergeTree
    PARTITION BY toYYYYMM(toDateTime(timestamp))
    ORDER BY timestamp
    SETTINGS index_granularity = 8192

    Received exception from server (version 20.8.12):
    Code: 36. DB::Exception: Received from localhost:9000. DB::Exception: Codec DoubleDelta is not applicable for Array(UInt32) because the data type is not of fixed size.

    0 rows in set. Elapsed: 0.002 sec.
  • https://t.me/clickhouse_ru
    @343206394 #216055 02:00 PM, 28 Apr 2021
    И чем плохи дневные партиции не подскажите?
  • https://t.me/clickhouse_ru
    @baltazorbest #216056 02:00 PM, 28 Apr 2021
    2021.04.28 16:56:49.098740 [ 44 ] {} <Error> tbname.Distributed.DirectoryMonitor: Code: 209, e.displayText() = DB::NetException: Timeout exceeded while reading from socket (192.168.0.2:9000): while receiving packet from 192.168.0.1:9000, Stack trace:
  • https://t.me/clickhouse_ru
    обновитесь до 21.3
    https://kb.altinity.com/altinity-kb-schema-design/codecs/codecs-on-array-columns
  • https://t.me/clickhouse_ru
    @baltazorbest #216058 02:02 PM, 28 Apr 2021
    <Error> executeQuery: Code: 33, e.displayText() = DB::Exception: Cannot read all data. Bytes read: 167307. Bytes expected: 188879. (version 19.15.3.6 (official build)) (from 192.168.0.3:7980) (in query: INSERT INTO default.tbname_local (dt, date, key, type, category, action, message, referer, origin, custom_id, geoip, city, country, sort) VALUES), Stack trace:
  • https://t.me/clickhouse_ru
    @baltazorbest #216059 02:03 PM, 28 Apr 2021
    @BloodJazMan вот такое вижу в логах
  • https://t.me/clickhouse_ru
    эх, спасибо.
  • https://t.me/clickhouse_ru
    тем что они нужны только если у вас запросы в основном "за один день"
    и если данных у вас единицы гигабайт за день СЖАТЫХ данных...
    а иначе создают просто кучу мелких каталогов в которых больше паралельного чтения и хуже компрессия

    ну тогда PARTITION BY toDate(timestamp)
    попробуйте
  • https://t.me/clickhouse_ru
    так и есть, 90% за один день или меньше, поэтому и сделали такие партиции
  • https://t.me/clickhouse_ru
    версии clickhouse одинаковые?
    сеть между узлами clickhouse не флапает?

    19.15 откровенно старая версия снятая с поддержки
  • https://t.me/clickhouse_ru
    одинаковая, не флапает
  • https://t.me/clickhouse_ru
    а откуда тогда timeout, странно...

    iperf запустите посмотрите
  • https://t.me/clickhouse_ru
    @baltazorbest #216066 02:07 PM, 28 Apr 2021
    хорошо, спасибо
  • https://t.me/clickhouse_ru
    @baltazorbest #216067 02:07 PM, 28 Apr 2021
    возможно КХ не успеваем вставлять данные, будем изучать
  • https://t.me/clickhouse_ru
    @mezhekov #216069 03:05 PM, 28 Apr 2021
    Привет, нужна помощь чатика. есть кластер и 2 нод, изначально они запущены были в docker, приняли решение вынести из под докера на хост машину
  • https://t.me/clickhouse_ru
    @mezhekov #216070 03:06 PM, 28 Apr 2021
    после переноса все таблицы которые до этого реплецировались в режиме RO
  • https://t.me/clickhouse_ru
    @mezhekov #216071 03:06 PM, 28 Apr 2021
    <Error> void DB::StorageKafka::threadFunc(size_t): Code: 242, e.displayText() = DB::Exception: Table is in readonly mode (zookeeper path:
  • https://t.me/clickhouse_ru
    @mezhekov #216072 03:07 PM, 28 Apr 2021
    zookeeper в штатном режиме работает
  • https://t.me/clickhouse_ru
    @mezhekov #216073 03:07 PM, 28 Apr 2021
    в какую сторону копать?
  • https://t.me/clickhouse_ru
    @mezhekov #216074 03:12 PM, 28 Apr 2021
    version 21.2.4.6 (official build)
  • проверьте доступность zk
  • https://t.me/clickhouse_ru
    @87558923 #216076 03:20 PM, 28 Apr 2021
    Добрый день. Какой объём данных хранится в ЗК относительно КХ? Например, у меня в КХ в таблице 1 млрд записей занимают примерно 130 ГБ (если просуммировать все шарды), в ЗК примерно 50 ГБ. Это нормальное соотношение?
  • https://t.me/clickhouse_ru
    в system.replicas zookeeper_exception - Code: 999, e.displayText() = Coordination::Exception: No node, path: /clickhouse/tables/table/log (version 21.2.4.6 (official build))
  • https://t.me/clickhouse_ru
    в КХ примерно 2Тб, в ЗК примерно 1.5Гб
    3 хоста, 1 шард, >1000 таблиц
  • https://t.me/clickhouse_ru
    Вот и мне показалось, что у меня многовато. Как понять что там лишнее?
  • в system.zookeeper есть такой путь?
  • https://t.me/clickhouse_ru
    вот так сразу не скажу. над смотреть сколько данных прилетает, много ли мержей и пр.
  • https://t.me/clickhouse_ru
    @ivymike_b #216082 03:32 PM, 28 Apr 2021
    объем этих мержей
  • https://t.me/clickhouse_ru
    @ivymike_b #216083 03:32 PM, 28 Apr 2021
    а может у вас просто логов 45 гигов)))
  • https://t.me/clickhouse_ru
    на другом узле КХ этот путь виден
  • https://t.me/clickhouse_ru
    Каждую секунду прилетает примерно 10000 строк
  • а таблица то есть на всех серверах?
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    @mezhekov #216088 03:38 PM, 28 Apr 2021
    Может такая история произойти из-за изменения имени хоста?
  • https://t.me/clickhouse_ru
    ZK метаданные хранятся
    50Gb это у вас снапшот такой большой .... многовато
    настройки ZK проверьте
    у вас старые логи скорее всего не удаляются
    https://clickhouse.tech/docs/en/operations/tips/#zookeeper
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-zookeeper
    ClickHouse Documentation

    Usage Recommendations CPU Scaling Governor Always use the performance scaling governor. The on-demand scaling governor w

  • https://t.me/clickhouse_ru
    что стоит в секции <zookeeper> в конфигах на обоих хостах?
    zookeeper то где был? его тоже перенесли? или с нуля развернули?
  • https://t.me/clickhouse_ru
    я бы все понял но по путю /clickhouse/tables/ на рабочем хосте с десяток таблиц а на проблемном только 3
  • https://t.me/clickhouse_ru
    зукипер как есть в докере так и останется
  • https://t.me/clickhouse_ru
    вы до него с хостовой машины хотя бы порт пробросили тогда?
  • https://t.me/clickhouse_ru
    system.macros поменялся по сравнению с тем что было в docker?
  • https://t.me/clickhouse_ru
    транспортный уровень нормальный, соединение есть
  • https://t.me/clickhouse_ru
    нет в конфиге остался старый макрос, не меняли и не трогали
  • https://t.me/clickhouse_ru
    а куда тогда ноды делись?
  • https://t.me/clickhouse_ru
    SELECT * FROM system.zookeeper WHERE path='/'
    показывает тоже самое что показывало с clickhouse ?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @BloodJazMan @vvvjhaq спасибо, за помощь, нашел в чем дело. в секции zookeeper на перенесеном хосте отсутвовала секция <root></root>
  • https://t.me/clickhouse_ru
    @mezhekov #216101 03:49 PM, 28 Apr 2021
    все взлетело
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #216099 #216102 04:19 PM, 28 Apr 2021
    Не обманули на счёт оператора для КХ
  • https://t.me/clickhouse_ru
    @solard #216103 04:19 PM, 28 Apr 2021
    после чтения доки с 1ого раза всё взлетело
  • https://t.me/clickhouse_ru
    @solard #216104 04:19 PM, 28 Apr 2021
    Странно что со стендалоном я больше возился :D
  • https://t.me/clickhouse_ru
    @solard #216105 04:20 PM, 28 Apr 2021
    А у зукипера какие-то особые настройки или можно использовать внешнюю инсталяцию например bitnami чарт
  • https://t.me/clickhouse_ru
    @maga_rs #216107 04:21 PM, 28 Apr 2021
    привет! а в чем проблема когда функции хешиования возвращают вот такое ? например select MD5('test')
  • https://t.me/clickhouse_ru
    В клиенте? А если поселектить из командной строки через clickhouse-client?
  • https://t.me/clickhouse_ru
    Попробую. Но могу сказать в dataGrip и dbeaber также криво
  • https://t.me/clickhouse_ru
    @Aleksey_Veselov #216110 05:19 PM, 28 Apr 2021
    Всем привет! Помогите плз, создаю мат вьюху в CH - ниже буквальный код. После создания вьюха не пишет новые данные, хотя похожая вьюха с другим запросом но по сути аналогичным начала писаться нормально и никаких проблем нет! В чем может быть дело ? или может быть все таки что то стоит поменять при создании ?? буду рад если накинете идей куда стоит копать и в чем могут быть причины такого поведения мат вьюх!

    CREATE MATERIALIZED VIEW log.users_data_based_on_income_view
    ENGINE = SummingMergeTree()
    PARTITION BY round(user_id / 1000000)
    ORDER BY user_id
    SETTINGS index_granularity = 8192 POPULATE AS
    SELECT
    session__uid AS user_id,
    install_date,
    uniq(event_date) AS days_in_game,
    max(event_date) AS last_session_date,
    max(event_time) AS last_session_time,
    argMax(event_date - install_date, event_date) AS last_session_days_ago,
    argMax(session__payer_type, event_time) AS payer_type,
    argMax(session__pay, event_time) AS payer,
    argMax(session__league, event_time) AS last_league,
    argMax(session__app, event_time) AS last_app,
    argMax(session__plt, event_time) AS last_plt,
    multiIf(last_plt='vk' AND last_app='1', 'vk',
    last_plt='ok' AND last_app='1', 'ok',
    last_plt='fb' AND last_app='1', 'fb',
    last_app='6', 'android',
    last_app='7', 'ios',
    last_app='2', 'st',
    last_app='12', 'luv',
    last_plt='vk' AND last_app IN ('9','10','11'), 'vk_instant',
    last_plt='ok' AND last_app IN ('9','10','11'), 'ok_instant',
    'other') AS last_platform,
    argMax(session__tag, event_time) AS last_tag,
    argMax(session__rfm, event_time) AS last_rfm,
    count() AS sessions_total,
    countIf(event_date - install_date = 0) AS sessions_0,
    countIf(event_date - install_date = 1) AS sessions_1,
    countIf(event_date - install_date = 3) AS sessions_3,
    countIf(event_date - install_date = 7) AS sessions_7,
    countIf(event_date - install_date = 14) AS sessions_14,
    countIf(event_date - install_date = 30) AS sessions_30,
    countIf(event_date - install_date = 90) AS sessions_90,
    countIf(event_date - install_date <= 1) AS sessions_cum_1,
    countIf(event_date - install_date <= 3) AS sessions_cum_3,
    countIf(event_date - install_date <= 7) AS sessions_cum_7,
    countIf(event_date - install_date <= 14) AS sessions_cum_14,
    countIf(event_date - install_date <= 30) AS sessions_cum_30,
    countIf(event_date - install_date <= 90) AS sessions_cum_90,
    uniqIf(user_id, event_date - install_date = 1) AS R1,
    uniqIf(user_id, event_date - install_date = 3) AS R3,
    uniqIf(user_id, event_date - install_date = 7) AS R7,
    uniqIf(user_id, event_date - install_date = 14) AS R14,
    uniqIf(user_id, event_date - install_date = 30) AS R30,
    uniqIf(user_id, event_date - install_date = 90) AS R90,
    uniqIf(user_id, event_date - install_date >= 1) AS R1_r,
    uniqIf(user_id, event_date - install_date >= 3) AS R3_r,
    uniqIf(user_id, event_date - install_date >= 7) AS R7_r,
    uniqIf(user_id, event_date - install_date >= 14) AS R14_r,
    uniqIf(user_id, event_date - install_date >= 30) AS R30_r,
    uniqIf(user_id, event_date - install_date >= 90) AS R90_r
    FROM log.events ALL INNER JOIN (
    SELECT
    DISTINCT
    event_date AS install_date,
    install__uid AS user_id
    FROM log.events
    WHERE event = 'install'
    ) AS r USING user_id
    WHERE event = 'session'
    GROUP BY
    user_id, install_date
  • https://t.me/clickhouse_ru
    Так правильно - оно возвращает сырые байты.
    Посмотреть можно в клиенте через hex().
    В бобре тоже можно настроить отображение - какой то там native правильно показывает.
  • https://t.me/clickhouse_ru
    Спасибо, посмотрю
  • https://t.me/clickhouse_ru
    ALL INNER JOIN возвращает пустоту справа ?
  • https://t.me/clickhouse_ru
    извините, не совсем понял вопрос, вы имеете ввиду могут ли во внутреннем подзапросе быть такие user_id которых нет во внешнем ? если так то да, могут
  • https://t.me/clickhouse_ru
    а вообще в этом запросе в мат.вью log.events -- это не таблица на диске, это данные вставленные инсертом, вставляете одну строку, в log.events будет та самая одна строка
  • https://t.me/clickhouse_ru
    не совсем вас понял ) я не силен в администрировании CH и кажется не все догоняю )

    log.events это таблица в данном случае, не вьюха. а я пытаюсь сагрегировать из этой таблицы мат вьюху с агрегатными данными

    в этой таблицу log.events у нас лежит буквально все и потому все долго грузится если напрямую оттуда брать данные или еще что-то дополнительно мерджить и потому создаю мат вьюху. В log.events 50 столбцов и на них завязано огромное число ивентов через алиасы
  • https://t.me/clickhouse_ru
    сначала сюда https://youtu.be/1LVJ_WcLgF8?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7597
    https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf
  • https://t.me/clickhouse_ru
    понял, спасибо!)
  • https://t.me/clickhouse_ru
    @kozyrevMikhail #216120 06:55 PM, 28 Apr 2021
    Всем привет
    А можно как то модели Json создать табличку?
  • https://t.me/clickhouse_ru
    нет
  • https://t.me/clickhouse_ru
    @kozyrevMikhail #216122 07:08 PM, 28 Apr 2021
    Жаль, спасибо
  • 29 April 2021 (154 messages)
  • @cyberhuman1 #216124 01:09 AM, 29 Apr 2021
    Здравствуйте! Существует ли какая-нибудь оптимизация для JOIN двух MergeTree таблиц с одинаковым первичным ключом? Пытаюсь объединить две таблицы при помощи ANY LEFT JOIN, но судя по расходу памяти, правая таблица читается в память :-(
  • @cyberhuman1 #216125 01:51 AM, 29 Apr 2021
    Нашёл setting join_algorithm='partial_join' и это помогает с расходом, но если я правильно понимаю, там нет оптимизации для случая, когда ключи одинаковые и уже отсортированы, поэтому работает значительно медленнее.
  • https://t.me/clickhouse_ru
    можно внешнюю инсталяцию

    оператор пока Zookeeper сам не управляет
  • https://t.me/clickhouse_ru
    нету чистого merge join и даже непонятно когда будет
  • https://t.me/clickhouse_ru
    @ztseri #216129 03:30 AM, 29 Apr 2021
    Привет. У меня есть приложение на app metrika, можно ли логи получить его через clickhouse, в интернете подключение только к яндекс метрике
  • https://t.me/clickhouse_ru
    @ztseri #216130 03:31 AM, 29 Apr 2021
    Хотел получить возможность вытягивать неагрегированные данные из app metrica, например по событиям
  • https://t.me/clickhouse_ru
    @ztseri #216131 04:36 AM, 29 Apr 2021
    Отправил запрос на api appmetrica, но не знаю как прикрепить oauth_token, параметром не принимает, помогите плиз)
  • https://t.me/clickhouse_ru
  • @was_av #216133 05:11 AM, 29 Apr 2021
    Доброе утро

    Кто-то пробовал dbt в связке с clickhouse?
    GitHub - silentsokolov/dbt-clickhouse: The Clickhouse plugin for dbt (data build tool)

    The Clickhouse plugin for dbt (data build tool). Contribute to silentsokolov/dbt-clickhouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    Через hex() получилось. Спасибо
  • https://t.me/clickhouse_ru
    @Vladimirelizarov #216137 07:17 AM, 29 Apr 2021
    всем привет. подскажите, в clickhouse есть функции для работы с xml, как с json например? Мне надо извлечь поля из строки, которая является валидным xml, хотелось бы делать это не регуляркой, а каким-то человеческим способом = )
  • https://t.me/clickhouse_ru
    Rewrite extractTextFromHTML function by alexey-milovidov · Pull Request #21292 · ClickHouse/ClickHouse

    Changelog category (leave one): Not for changelog (changelog entry is not required) Prepare #19600 for release.

  • https://t.me/clickhouse_ru
    спасибо, но в моей версии(21.1) нет этой функции = (
  • @SemyonGalichenko #216141 07:42 AM, 29 Apr 2021
    Добрый день, подскажите в чём может быть проблема
    Залил данные через Distributed таблицу на шарды, когда пытаюсь удалить (drop table ... ) пишет DB::Exception: File access error: Invalid cross-device link.
    CH не в докере
  • https://t.me/clickhouse_ru
    @madreyg #216142 07:51 AM, 29 Apr 2021
    Еще раз привет всем. Подскажите, пожалуйста, какие best practice есть для создания "широкой таблицы" в clickhouse. Т.е. когда из kafka из 3-х топиков прилетают данные (в 3 разные таблицы), а дальше нужно эти данные ссджойнить между собой и положить в одну широкую таблицу.
  • https://t.me/clickhouse_ru
    у вас симлинки какие то были?
    а удалить вы пытаетесь что именно? MergeTree Таблицу или Distributed?
    покажите запрос DROP TABLE полностью?
  • https://t.me/clickhouse_ru
    самый лучший best practices это делать все это до кликхауса, все остальное это будут разного рода костыли
  • Симлинков не было. Удалить пробовал и Distributed и ReplicatedMergeTree: DROP table shard.sss_only;
  • https://t.me/clickhouse_ru
    sss_only это Distributed или MergeTree таблица?

    ошибка одинаковая и на то и на другое?

    ls -la /var/lib/clickhouse/
    что показывает?

    полный стектрейс ошики можете из /var/log/clickhouse-server/clickhouse-server.err.log привести?
  • https://t.me/clickhouse_ru
    Спасибо, вы имеете ввиду ставить что-то вроде greenplum/vertica чтобы там джойнить и потом лить в kafka ?
  • https://t.me/clickhouse_ru
    В целом да.

    Но в зависимости от всяческих обстоятельств вида (размер таблиц, кол-во сообщений для каждого топика в секунду) есть варианты делать в кх. но с тремя таблицами это грубо говоря будет 3 пайплайна каждый будет джойнить 3 таблицы, что есть боль
  • sss_only - ReplicatedMergeTree
    Ошибка одинаковая на Distributed и ReplicatedMergeTree

    ага.. оказалось есть симлинк
    store -> /mnt/shard2/.clickhouse/store

    2021.04.29 14:57:09.856855 [ 1115772 ] {1d56cc78-495f-460d-ae42-11ef109e4085} <Error> TCPHandler: Code: 1000, e.displayText() = DB::Exception: File access error: Invalid cross-device link: /var/lib/clickhouse/store/5aa/5aa54f37-a87e-4b29-9387-2abe0240315e/sss_only.sql, Stack trace:

    0. Poco::FileImpl::handleLastErrorImpl(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x12681344 in /usr/bin/clickhouse
    1. Poco::File::renameTo(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x12684d3c in /usr/bin/clickhouse
    2. DB::DatabaseAtomic::dropTable(DB::Context const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool) @ 0xefa5ba5 in /usr/bin/clickhouse
    3. DB::InterpreterDropQuery::executeToTableImpl(DB::ASTDropQuery&, std::__1::shared_ptr<DB::IDatabase>&, StrongTypedef<DB::UInt128, DB::UUIDTag>&) @ 0xf21c9bc in /usr/bin/clickhouse
    4. DB::InterpreterDropQuery::executeToTable(DB::ASTDropQuery&) @ 0xf21aab6 in /usr/bin/clickhouse
    5. DB::InterpreterDropQuery::execute() @ 0xf21a5e5 in /usr/bin/clickhouse
    6. ? @ 0xf7338b2 in /usr/bin/clickhouse
    7. DB::executeQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::Context&, bool, DB::QueryProcessingStage::Enum, bool) @ 0xf7321f3 in /usr/bin/clickhouse
    8. DB::TCPHandler::runImpl() @ 0xfee929d in /usr/bin/clickhouse
    9. DB::TCPHandler::run() @ 0xfefb869 in /usr/bin/clickhouse
    10. Poco::Net::TCPServerConnection::start() @ 0x125b5b0f in /usr/bin/clickhouse
    11. Poco::Net::TCPServerDispatcher::run() @ 0x125b7521 in /usr/bin/clickhouse
    12. Poco::PooledThread::run() @ 0x126edc49 in /usr/bin/clickhouse
    13. ? @ 0x126e9aaa in /usr/bin/clickhouse
    14. start_thread @ 0x814a in /usr/lib64/libpthread-2.28.so
    15. clone @ 0xfcf23 in /usr/lib64/libc-2.28.so
  • https://t.me/clickhouse_ru
    А, если чисто теоретически сделать 3 MV с джойнами (на каждую из таблиц) и лить в ReplaceMergeTree c версией по полю даты. Т.е. самый последний триггер будет иметь самую полную сборку и перезапишет предыдущий row c недостающими данными. Такая схема очень высокую нагрузку даст?
  • https://t.me/clickhouse_ru
    Ну представьте на каждую вставку будет в память подниматься две таблицы и строится хешмапа для них, это дорого и долго
  • https://t.me/clickhouse_ru
    @unamedrus #216152 08:12 AM, 29 Apr 2021
    Using Joins in ClickHouse Materialized Views

    ClickHouse materialized views provide a powerful way to restructure data in ClickHouse. We have discussed their capabilities many times in webinars, blog articles, and conference talks. One of the most common follow-on questions we receive is whether materialized views can support joins. The answer is emphatically yes.

  • https://t.me/clickhouse_ru
    store это Atomic
    на него будут делаться симлинки при создании таблиц из /var/lib/clickhouse/data

    если он ведет на другое устройство
    то вот причина ошибки
  • https://t.me/clickhouse_ru
    Может тогда имеет смысл хранить в одной таблице 3 массива (6 если с именами полей) и использовать array join по необходимости?
  • Спасибо!
  • https://t.me/clickhouse_ru
    но тут не ясно как вы данные в таблицу умудрились вставить =)
  • Вставлял так: cat sss_only | clickhouse-client --query="INSERT INTO default.sss_only FORMAT CSV". default.sss_only - Distributed
  • @SemyonGalichenko #216158 08:25 AM, 29 Apr 2021
    причём раньше drop отрабатывал.. data и store никуда не переносились
  • https://t.me/clickhouse_ru
    Можете объяснить чуть подробнее. Если есть консюмеры, которые льют в 3 таблицы - как из них делать таблицу с 3-мя массивами?
  • https://t.me/clickhouse_ru
    Лить в одну таблицу, но 2 (4) массива будут пустыми на одну запись.
  • https://t.me/clickhouse_ru
    получается такой, немного  event подход. Но как я понял потом довольно дорого работать с массивами, т.к. при select они читаются полностью + жмутся хуже.
  • @archangel37 #216165 08:45 AM, 29 Apr 2021
    /report
  • @fruittut #216169 08:58 AM, 29 Apr 2021
    Подскажите пожалуйста, если используется distributed таблица, как правильно в таком случае добавит в таблицу кластера новый column? Через distributed таблицу получится?
  • вообще, дропаешь дистрибутед, альтеришь локальные таблицы на кластере, пересоздаёшь дистрибутед
  • А нельзя не дропать? Как то обновить. Так же получается простой.
  • https://t.me/clickhouse_ru
    раньше в смысле это была какая то старая версия clickhouse?
    и вы ее обновили и данные заново вставили?
  • теоретически может и можно, но дистрибутед же создаётся на основе локальных таблиц, и в случае ручного альтера дистрибутеда нужно будет следить, что всё совпадает (это мысли вслух). вот есть кусочек из доки: For tables that don’t store data themselves (such as Merge and Distributed), ALTER just changes the table structure, and does not change the structure of subordinate tables. For example, when running ALTER for a Distributed table, you will also need to run ALTER for the tables on all remote servers.
  • https://t.me/clickhouse_ru
    @maga_rs #216174 09:16 AM, 29 Apr 2021
    Привет! Подскажите, а как-то можно hex строку перевести в бинарный вид?
  • версия ClickHouse не менялась 21.4.5.46
    только версия зукипера поменялась.. после этого drop перестал работать. не знаю связано это как-то или нет
  • Спасибо. Ну впринципе можно сделать копию distributed таблицы новую и подменить ее через rename
  • у вас прямо жёстким потоком летят запросы, что пару секунд критично?
  • Ну вот сейчас ещё не так критично, но в обозримом будущем будет чит критично. С учётом того что бывают сервисы которые отправили данные, таблица не доступна и они их не держат в очереди, а уже запишут следующую порцию данных
  • https://t.me/clickhouse_ru
    сначала альтеры на физические таблицы (alter ... on cluster ... add column ... )
    потом альтер на дистрибьютед
  • https://t.me/clickhouse_ru
    unhex(col_name)
  • Да, так было бы не плохо. Вот просто нет понимания что distributed таблица адекватно воспринимает ручной alter table
  • https://t.me/clickhouse_ru
    дистрибьютед - это просто интерфейс, не привязанный а задекларироанный
    т.е. если в шардах есть колонка а в дистрибьютед нету - ничего страшного - инсерт поймет
    а вот наоборот - чуть опаснее - можно очередь отрастить и не заметить (но при этом тож ничего необратимого не должно случиться)
  • https://t.me/clickhouse_ru
    о, спасибо
  • Спасибо, понял. Такой вариант тогда подходит, добавления в поочередно в обе таблицы
  • https://t.me/clickhouse_ru
    @bralbral #216186 09:34 AM, 29 Apr 2021
    Добрый день. Сброс из таблицы буфер в целевую где-то логируется ? В query_log вижу только инсерты в сам буфер.
  • https://t.me/clickhouse_ru
    @solard #216187 09:38 AM, 29 Apr 2021
    А подскажите пожалуйста где почитать про реплицированные таблицы и как их создавать кроме офф доки?
  • https://t.me/clickhouse_ru
    @solard #216188 09:38 AM, 29 Apr 2021
    Есть непонимание некоторых вещей и хотелось бы разобраться
  • https://t.me/clickhouse_ru
    сразу поправка про в "обе"
    лучше привыкните к мысли что каждая "физическая таблица" - это отдельная сущность (несмотря на то что они легко создаются и альтерятся с инструкцией on cluster)
    т.к. в КХ каждый сам-себе мастер
  • https://t.me/clickhouse_ru
    unhex(your_hex_string)
  • https://t.me/clickhouse_ru
    👌
  • https://t.me/clickhouse_ru
    @suxxorz #216194 10:01 AM, 29 Apr 2021
    Всем привет!

    Скажите, плиз, а нет ли какой-нить функции в КХ, чтобы можно было группировать по определенному интервалу (не дата и время), по аналогии с датой и временем

    toStartOfMinute(insert_ts)

    в идеале что-то типа:

    toStartOfTenSecond(8) => 10
    toStartOfTenSecond(11) => 10

    ну или самому задать INTERVAL 10
  • Спасибо 👍
  • https://t.me/clickhouse_ru
    Dates and Times | ClickHouse Documentation

    Functions for Working with Dates and Times Support for time zones. All functions for working with the date and time that

  • https://t.me/clickhouse_ru
    но он требует date or datetime вроде, а у меня float64
  • конкретно кейс с 10 выглядит как какой-то round(<value>, -1)
  • https://t.me/clickhouse_ru
    храни тебя господь))
  • https://t.me/clickhouse_ru
    @suxxorz #216200 10:09 AM, 29 Apr 2021
    работает)
  • https://t.me/clickhouse_ru
    @suxxorz #216201 10:09 AM, 29 Apr 2021
    спасибо)
  • 😁👍
  • https://t.me/clickhouse_ru
    @alexadr_anisimov #216203 10:12 AM, 29 Apr 2021
    Добрый день! Где можно посмотреть кешируемые схемы Avro для Kafka engine и кешируются ли они вообще? Ощущение что да, так как ловил ошибку не правильной схемы, поправил типы - пересоздал все таблицы(Kafka engine, mat view и mergeTree), а ошибка сохраняется, хотя в реестре схем валидная схема
  • https://t.me/clickhouse_ru
    Кешируются
    This
  • https://t.me/clickhouse_ru
    благодарю
  • https://t.me/clickhouse_ru
    ну DROP без ON CLUSTER
    вообще ZK не должен касаться...

    очень странно
    ну то есть у вас реально нету cross device symlink? или все таки есть?

    mount /var/lib/clickhouse
    что показывает?
  • Cross device symlink есть. Просто он и раньше был, но drop отрабатывал. Изменилась только версия зукипера.
    Сейчас будем пробовать без симлинков
  • https://t.me/clickhouse_ru
    @arraysize #216209 10:53 AM, 29 Apr 2021
    Всем добрый день. Столкнулся с довольно странным багом при указании where. В таблице поле типа float, делаю where col >= 12346
    Мне приходят значения 12345
    цифры меньше тех, которые я запрашиваю через >=
  • https://t.me/clickhouse_ru
    @arraysize #216210 10:54 AM, 29 Apr 2021
    С некоторым разбросом
  • https://t.me/clickhouse_ru
    @arraysize #216211 10:55 AM, 29 Apr 2021
    У кого нибудь есть идеи?
  • @softbot_xxl #216212 11:02 AM, 29 Apr 2021
    Coordination::Exception: Zookeeper root doesn't exist. You should create root node <path> before start. (No node) (version 20.12.4.5 (official build)) with status 500
  • @softbot_xxl #216213 11:03 AM, 29 Apr 2021
    Это надо делать вручную? Не работает create table + ReplicatedMergeTree
  • @softbot_xxl #216215 11:14 AM, 29 Apr 2021
    Вижу по конфигу для примера, что да, если прописан root.
  • https://t.me/clickhouse_ru
    Хорошо бы увидеть пример с реальными числами и тогда можно сразу на гитхаб даже идти
  • https://t.me/clickhouse_ru
    сделайте закреп с вашим пдф, как работает MV в кликхаусе, много вопросов отпадет
  • https://t.me/clickhouse_ru
    конкретное значение 12346 ?
    или это от балды вы значение выбрали в чат написали?
  • https://t.me/clickhouse_ru
    float какой? float32 или float64?
  • https://t.me/clickhouse_ru
    @arraysize #216220 11:47 AM, 29 Apr 2021
    я храню timestanp в FLOAT, запрашиваю данные от указанного таймштампа, вот и нашлось такое. сейчас напишу на гитхаб с примером данных и запросом
  • https://t.me/clickhouse_ru
    можно без всяких массивов взять AggregatingMergeTree, ключи по которым вы делаете джоин добавляете в order by, поля из разных таблиц делаете как SimpleAggregateFunction(anyLast, Nullable())
  • https://t.me/clickhouse_ru
    Спасибо, очень интересное решение)
  • https://t.me/clickhouse_ru
    есть два типа float ;) float32 и float64
    ок. присылайте ссылку на github issue
  • https://t.me/clickhouse_ru
    @altlinux #216224 12:15 PM, 29 Apr 2021
    Коллеги, добрый день. Столкнулись с забавной ситуацией при использовании буферных таблиц в VIEW с JOIN. clickhouse 21.3.2.5
    В частности - почему-то без буферных таблиц мы упёрлись в память в запросе, а при использовании буферной таблицы в память не упираемся. WHERE не пробрасывается вглубь VIEW без буферной таблицы.
    Никто с таким не сталкивался ?
    diff для explain этих запросов выглядит так (1.e - с буфером, 2.e - без буфера):
    $ diff -ur 1.e 2.e
    --- 1.e 2021-04-29 15:07:38.467669770 +0300
    +++ 2.e 2021-04-29 15:08:07.536863165 +0300
    @@ -54,12 +54,8 @@
    Expression (Projection)
    CreatingSets (Create sets before main query execution)
    Expression (Before ORDER BY)
    - Filter (WHERE)
    - SettingQuotaAndLimits (Set limits and quota after reading from storage)
    - Union (Unite sources from Buffer table)
    - SettingQuotaAndLimits (Lock destination table for Buffer)
    - ReadFromStorage (MergeTree)
    - ReadFromPreparedSource (Read from buffers of Buffer table)
    + SettingQuotaAndLimits (Set limits and quota after reading from storage)
    + ReadFromStorage (MergeTree)
    CreatingSet (Create set for subquery)
    Expression ((Projection + Before ORDER BY))
    SettingQuotaAndLimits (Set limits and quota after reading from storage)
  • https://t.me/clickhouse_ru
    это все неправда
  • https://t.me/clickhouse_ru
    alter table MergeTreetable add column ...
    alter table Distributedtable add column ...
  • https://t.me/clickhouse_ru
    create .... AS ... это вообще не то что вы подумали. AS создает список полей, его можно и вручную задать.
  • спасибо 🙏
  • https://t.me/clickhouse_ru
    Float32
  • https://t.me/clickhouse_ru
    какая версия КХ ? Что будет если написать
    where col >= cast('12345' as Float32)
    и если where identity(col) >= 12345
  • https://t.me/clickhouse_ru
    в смысле с буфферной таблицей where проталкивается вниз?
  • https://t.me/clickhouse_ru
    да, именно так. с буферной проталкивается, без неё нет
  • https://t.me/clickhouse_ru
    сломали значит что-то в 21.3
  • @av_hello #216234 01:36 PM, 29 Apr 2021
    1. возможно ли в клике обратиться к конкретной партиции?
    2. Стоит ли партиционировать таблицу весом в 350гб? Сколько лучше оставить гб в одной партиции, если необходимо?
    3. Получим ли мы выигрыш при чтении, если сделаем партиции и не будем обращаться к конкретной партиции?
  • https://t.me/clickhouse_ru
    1. ДА. В КХ есть partition elimination/pruning , КХ читает только те ПАРТЫ которые попадают под условие в WHERE
    2. ХЗ
    3. Да
  • https://t.me/clickhouse_ru
    @peter_ll #216236 01:41 PM, 29 Apr 2021
    Ребята
    наткнулся на странные грабли (для меня новые и в чатке тут не нашел)
    create database test_atomic ENGINE=Atomic ;
    create table test_atomic.ttt1 (c1 String) ENGINE ReplicatedMergeTree ORDER BY (c1);
    create table test_atomic.ttt2 (c1 String) ENGINE ReplicatedMergeTree ORDER BY (c1);
    exchange tables test_atomic.ttt1 and test_atomic.ttt2;
    комманда на exchange кидает
    Received exception from server (version 20.12.4):
    Code: 1. DB::Exception: Received from localhost:9000. DB::Exception: System call renameat2() is not supported.
    эт нам кх надо пересобрать? или у меня версия с багой?
    * Connected to ClickHouse server version 20.12.4 revision 54442.
    ** линух вродь свеж - Kernel: Linux 5.10.0-0.bpo.4-amd64
  • https://t.me/clickhouse_ru
    Винда? Докер? ZFS ?
    это уже поправлено.
  • https://t.me/clickhouse_ru
    @den_crane #216239 01:53 PM, 29 Apr 2021
    ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @peter_ll #216240 01:55 PM, 29 Apr 2021
    спасибо
    *zfs
  • https://t.me/clickhouse_ru
    @innopolis #216241 02:04 PM, 29 Apr 2021
    есть разница между database и schema в ch? если есть, то какая?
  • https://t.me/clickhouse_ru
    @tim_bashk #216242 02:14 PM, 29 Apr 2021
    Всем привет. Есть много, очень много данных по страницам книжек в виде json, типа автор, год издания, про что книга, статьи, формулы, таблицы и т.д, много атрибутов, какой движок посоветуете.
  • https://t.me/clickhouse_ru
    @brbrbr #216243 02:24 PM, 29 Apr 2021
    Вопрос вероятно по Кафке, а не по КХ, но мб кто сталкивался и подскажет в какую сторону копать. Кафку перевезли в кубер, пересоздал таблицы с кафка-движком, после чего часть из них перестала читаться - MV вообще не срабатывает, а прямое обращение к кафка-таблице выдаёт ошибку: Connection refused: while fetching schema id = 191: While executing SourceFromInputStream.

    При этом так ведёт себя только часть кафка-таблиц. Остальные (настройки отличаются только названием топика да набором полей) прекрасно работают.

    Что это может быть?
  • https://t.me/clickhouse_ru
    @vbuttermaan #216244 02:26 PM, 29 Apr 2021
    Коллеги, подскажите, как вынести вот такую опцию в конфиг
    SET joined_subquery_requires_alias = 0;
    пробовал - не помогает, не поднимается сервер
    <joined_subquery_requires_alias>0</joined_subquery_requires_alias>
  • https://t.me/clickhouse_ru
    @vdimir ↶ Reply to #216244 #216245 02:39 PM, 29 Apr 2021
    Попробуйте добавить в секцию settings, как connect_timeout здесь

    https://github.com/ClickHouse/ClickHouse/blob/91dfc7d50c8309decb2da6d890eb4ea5b52af595/tests/integration/test_cluster_copier/task_trivial.xml#L8
  • https://t.me/clickhouse_ru
    Зарепортил в гитхаб, сменил тип данных на UInt32, потеря точности после запятой для конкретно моей задачки не критична
  • https://t.me/clickhouse_ru
    понятия schema в КХ нет
  • https://t.me/clickhouse_ru
    в КХ один движок (для хранения) - MergeTree
  • https://t.me/clickhouse_ru
    @tim_bashk #216249 02:47 PM, 29 Apr 2021
    Ок. Спасибо.
  • https://t.me/clickhouse_ru
    cat /etc/clickhouse-server/users.d/z.xml
    <?xml version="1.0"?>
    <yandex>
    <profiles>
    <default>
    <joined_subquery_requires_alias>0</joined_subquery_requires_alias>
    </default>
    </profiles>
    </yandex>

    рестарт не нужен
  • https://t.me/clickhouse_ru
    так это не баг вовсе

    SELECT toFloat32(1619675611)
    ┌─toFloat32(1619675611)─┐
    │ 1619675600 │
    └───────────────────────┘
  • https://t.me/clickhouse_ru
    Спасибо! Работает! ты лучший!
  • https://t.me/clickhouse_ru
    Не работает так. Сервер не валится на конфиге, но опция не срабатывает. @den_crane ниже отписал - должно быть в в profile юзера default
  • https://t.me/clickhouse_ru
    Мдя, надо значит доку перечитать
  • https://t.me/clickhouse_ru
    википедию скорее, та же проблема в любой базе, и в любом языке программирования. Точности float32 недостаточно для таких чисел
  • https://t.me/clickhouse_ru
    А в другой таблице обратная ситуация - WHERE не проталкивается для буферной таблицы:
    $ diff -ur 1.e1 2.e1
    --- 1.e1 2021-04-29 18:24:32.834374174 +0300
    +++ 2.e1 2021-04-29 18:24:57.358548141 +0300
    @@ -17,16 +17,12 @@
    Filter ((WHERE + Projection))
    CreatingSets (Create sets before main query execution)
    Expression (Before ORDER BY)
    - Filter (WHERE)
    - Join (JOIN)
    - Expression (Before JOIN)
    - ArrayJoin (ARRAY JOIN)
    - Expression (Before ARRAY JOIN)
    - SettingQuotaAndLimits (Set limits and quota after reading from storage)
    - Union (Unite sources from Buffer table)
    - SettingQuotaAndLimits (Lock destination table for Buffer)
    - ReadFromStorage (MergeTree)
    - ReadFromPreparedSource (Read from buffers of Buffer table)
    + Join (JOIN)
    + Expression (Before JOIN)
    + ArrayJoin (ARRAY JOIN)
    + Expression (Before ARRAY JOIN)
    + SettingQuotaAndLimits (Set limits and quota after reading from storage)
    + ReadFromStorage (MergeTree)
    CreatingSet (Create set for JOIN)
    Expression ((Projection + Before ORDER BY))
    SettingQuotaAndLimits (Set limits and quota after reading from storage)
  • https://t.me/clickhouse_ru
    ну это все нормально. Там еще 500 мест где push-down не доделан.
  • https://t.me/clickhouse_ru
    нет, тут тоже самое. Это я туплю.
  • https://t.me/clickhouse_ru
    @altlinux #216260 03:30 PM, 29 Apr 2021
    но почему-то из буфера прямо заметно медленнее выборка идёт
  • https://t.me/clickhouse_ru
    @altlinux #216261 03:30 PM, 29 Apr 2021
    раз в 500
  • https://t.me/clickhouse_ru
    @altlinux #216262 03:31 PM, 29 Apr 2021
    1 rows in set. Elapsed: 0.082 sec. Processed 1.97 million rows, 37.31 MB (24.02 million rows/s., 455.53 MB/s.) - без буфера
    1 rows in set. Elapsed: 5.134 sec. Processed 1.97 million rows, 7.65 GB (383.16 thousand rows/s., 1.49 GB/s.) - с буферной таблицей
  • https://t.me/clickhouse_ru
    @altlinux #216263 03:34 PM, 29 Apr 2021
    похоже использовать буферные таблицы было плохой идеей ;)
  • https://t.me/clickhouse_ru
    так можно не использовать их при селектах. Просто сделать 2 разных таблицы Distributed
  • https://t.me/clickhouse_ru
    @altlinux #216265 04:15 PM, 29 Apr 2021
    так и сделали в итоге, но там с pushdown where всё равно странности вылезают в разных местах. По моему ещё с array join с nested структурой была проблема.
    Но это всё равно на порядок лучше чем без него.
  • https://t.me/clickhouse_ru
    @vbuttermaan #216266 04:18 PM, 29 Apr 2021
    И снова здравствуйте! Коллеги, есть вопрос: обновляюсь с 20.1.3.7 на 21.1.7.1,
    смущает при старте вот такая запись в логах ошбок, как ее победить? ругается на все таблицы на сервере
    поставил в конфиге enable_mixed_granularity_parts=0, варнинг все равно есть

    <Warning> shard09.tableXXXX: Table can't create parts with adaptive granularity, but settings min_rows_for_wide_part = 0, min_bytes_for_wide_part = 10485760, min_rows_for_compact_part = 0, min_bytes_for_compact_part = 0. Parts with non-adaptive granularity can be stored only in Wide (default) format. Settings 'min_rows_for_wide_part', 'min_bytes_for_wide_part', 'min_rows_for_compact_part' and 'min_bytes_for_compact_part' will be ignored.
  • https://t.me/clickhouse_ru
    почему 0 ? enable_mixed_granularity_parts=0
    в секции merge_tree эта настройка
  • https://t.me/clickhouse_ru
    Сделал такой доп.конфиг в config.d, новые таблицы создаются со старым типом mrk — не mrk2
    но варнинг есть, так и должно быть? или может где еще какую то опцию упустил?
    <?xml version="1.0"?>
    <yandex>
    <merge_tree>
    <enable_mixed_granularity_parts>0</enable_mixed_granularity_parts>
    </merge_tree>
    </yandex>
  • https://t.me/clickhouse_ru
    @Xapa6apga #216271 05:55 PM, 29 Apr 2021
    всем привет, а подскажите как сделать коммулятив по дням по уникальным пользователям.
    Вот пример данных (по другому чёт я не понял как можно сделать, если подскажите буду благодарен)
    (select d, user_id from (select toDate('2021-01-01') d, array(1, 2, 3) user_id) array join user_id)
    union all
    (select d, user_id from (select toDate('2021-01-02') d, array(2, 3, 5) user_id) array join user_id)
    union all
    (select d, user_id from (select toDate('2021-01-03') d, array(2, 4, 1) user_id) array join user_id)
    union all
    (select d, user_id from (select toDate('2021-01-04') d, array(1, 5, 3) user_id) array join user_id)

    Хочу получить на выходу вот такого рода
    2021-01-01,3
    2021-01-02,4
    2021-01-03,5
    2021-01-04,5
    Не подскажите как можно сделать?
    С суммой вроде как понятно, а вот как с униками такое же проделать?
    Спасибо
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #216272 05:56 PM, 29 Apr 2021
    После обновления ClickHouse c версии 20.4 на 20.8 не стартует с кучей ошибок вида
    2021.04.29 16:05:05.568532 [ 37 ] {} <Error> base.table: Part /var/lib/clickhouse/data/base/table/3_4_14776_11 is broken. Looking for parts to replace it.
    2021.04.29 16:05:05.568554 [ 37 ] {} <Error> base.table: Detaching broken part /var/lib/clickhouse/data/base/table/3_4_14776_11 because it covers less than 2 parts. You need to resolve this manually
    2021.04.29 16:05:05.569975 [ 33 ] {} <Error> DB::MergeTreeData::loadDataParts(bool)::<lambda()>: Code: 33, e.displayText() = DB::Exception: Cannot read all data. Bytes read: 2. Bytes expected: 8., 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) @ 0x18ccf210 in /usr/bin/clickhouse
    1. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0xe62f32d in /usr/bin/clickhouse
    2. DB::ReadBuffer::readStrict(char*, unsigned long) @ 0xe67356f in /usr/bin/clickhouse
    3. DB::DataTypeNumberBase<double>::deserializeBinary(DB::Field&, DB::ReadBuffer&) const @ 0x1562cd71 in /usr/bin/clickhouse
    4. DB::MergeTreePartition::load(DB::MergeTreeData const&, std::__1::shared_ptr<DB::IDisk> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x161f2dce in /usr/bin/clickhouse
    5. DB::IMergeTreeDataPart::loadPartitionAndMinMaxIndex() @ 0x160b0310 in /usr/bin/clickhouse
    6. DB::IMergeTreeDataPart::loadColumnsChecksumsIndexes(bool, bool) @ 0x160b623a in /usr/bin/clickhouse
    7. ? @ 0x160f6aa2 in /usr/bin/clickhouse
    8. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0xe65d697 in /usr/bin/clickhouse
    9. ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()>(void&&, void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()&&...)::'lambda'()::operator()() const @ 0xe65de0a in /usr/bin/clickhouse
    10. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0xe65cba7 in /usr/bin/clickhouse
    11. ? @ 0xe65b093 in /usr/bin/clickhouse
    12. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    13. clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
    (version 20.8.12.2 (official build))
    База оформлена как volume в докере. Те просто сделал другой имадж и запустил на той же папке. Никто не сталкивался с таким повреждением данных?
  • https://t.me/clickhouse_ru
    переделал на numbers для наглядности:
    SELECT
    groupArray(c),
    groupArray(c) AS ar_c,
    arrayCumSum(ar_c)
    FROM
    (
    SELECT number AS c
    FROM numbers(10)
    )

    Query id: 243531d9-5f6a-48ca-b763-437c6c15b4ff

    ┌─groupArray(c)─────────┬─ar_c──────────────────┬─arrayCumSum(groupArray(c))──┐
    │ [0,1,2,3,4,5,6,7,8,9] │ [0,1,2,3,4,5,6,7,8,9] │ [0,1,3,6,10,15,21,28,36,45] │
    └───────────────────────┴───────────────────────┴─────────────────────────────┘
  • https://t.me/clickhouse_ru
    так это коммулятивная СУММА получиться
    а нужно уникальное колво.
    С суммой всё просто
  • https://t.me/clickhouse_ru
    @Sablast #216276 06:06 PM, 29 Apr 2021
    А тогда не уловил, надо кумулятивно уников захватывая предыдущие дни?
  • https://t.me/clickhouse_ru
    ага
  • https://t.me/clickhouse_ru
    @Xapa6apga #216278 06:10 PM, 29 Apr 2021
    еще думал как-то через
    arrayMap + arrayEnumerate, но походу не туда я смотрю
  • https://t.me/clickhouse_ru
    В лоб

    SELECT dt, arrayReduce('uniqExactMerge', arrayFilter((x,y) -> y <= dt, st_ar, dt_ar)) FROM (SELECT groupArray(d) as dt_ar, groupArray(st) as st_ar FROM ( SELECT d, uniqExactState(user_id) as st FROM ((select d, user_id from (select toDate('2021-01-01') d, array(1, 2, 3) user_id) array join user_id) union all (select d, user_id from (select toDate('2021-01-02') d, array(2, 3, 5) user_id) array join user_id) union all (select d, user_id from (select toDate('2021-01-03') d, array(2, 4, 1) user_id) array join user_id) union all (select d, user_id from (select toDate('2021-01-04') d, array(1, 5, 3) user_id) array join user_id)) GROUP BY d)) ARRAY JOIN dt_ar AS dt;
  • https://t.me/clickhouse_ru
    @unamedrus #216280 06:20 PM, 29 Apr 2021
    Красивее наверное через оконки можно
  • https://t.me/clickhouse_ru
    @dbalashov #216281 06:46 PM, 29 Apr 2021
    насколько корректно использовать insert into localTable select * from remote(...) если в remoteTable много данных ?
  • https://t.me/clickhouse_ru
    @dbalashov #216282 06:48 PM, 29 Apr 2021
    (надо однократно перетащить таблицу в сотни миллионов записей между инстансами )
  • https://t.me/clickhouse_ru
    Сотни миллионов это немного
    В гигабайтах сколько
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-data-migration/remote-...-table-function
  • https://t.me/clickhouse_ru
    @dbalashov #216284 06:56 PM, 29 Apr 2021
    в гигабайтах 115
  • https://t.me/clickhouse_ru
    @dbalashov #216285 06:56 PM, 29 Apr 2021
    две локальных hyper-v виртуалки
  • https://t.me/clickhouse_ru
    Ну тогда можно, для пущей надежности можно разбить на несколько запросов по партициям
  • https://t.me/clickhouse_ru
    AggregatingMergeTree+SimpleAggregateFunction(groupUniqArrayArray, Array())+groupUniqArray
  • https://t.me/clickhouse_ru
    Спасибо большое,
    но вот это прям совсем не андерстенд ((
    arrayReduce('uniqExactMerge', arrayFilter((x,y) -> y <= dt, st_ar, dt_ar))
  • @archangel37 #216289 07:18 PM, 29 Apr 2021
    Господа, подскажите пожалуйста - был какой-то оператор вывести данные с прорежением (условно каждый 10й) или что-то вроде, просто ключевое слово - попадалось как-то в офф доке, а забыл
  • https://t.me/clickhouse_ru
    @unamedrus #216290 07:18 PM, 29 Apr 2021
    > arrayReduce применяет агрегатную функцию uniqExactMerge на элементы массива.
    arrayFilter отфильтровывает все те стейты что были позже даты этой строки
  • https://t.me/clickhouse_ru
    SAMPLE
  • https://t.me/clickhouse_ru
    @unamedrus #216292 07:19 PM, 29 Apr 2021
    но для него нужно указать SAMPLE KEY
  • @archangel37 #216293 07:19 PM, 29 Apr 2021
    Спасибо!
  • https://t.me/clickhouse_ru
    where rand()%10=0
  • @archangel37 #216295 07:53 PM, 29 Apr 2021
    оо, спасибо! это даже интереснее - не требует ключа сэмплинга похоже =)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Мерси
  • 30 April 2021 (149 messages)
  • @bigdatov #216302 12:23 AM, 30 Apr 2021
    подскажите почему не пингуется порт 8123 ?
  • https://t.me/clickhouse_ru
    @270358043 #216303 12:25 AM, 30 Apr 2021
    пробуй по ip
  • ip моего сервера нужен?
  • https://t.me/clickhouse_ru
    @270358043 #216305 12:33 AM, 30 Apr 2021
    ну очевидно того куда конектитесь
  • Я так понял clickhouse-server:8123 это какой то яндексовский сервер, и коннект идет через него.
    Если я правильно понял, то у меня нет его ip

    А если понял не верно, и надо ip моего сервера, то выдает все равно такую же ошибку:
    Failed to connect to 159.69.206.16 port 8123: Connection refused
  • https://t.me/clickhouse_ru
    @270358043 #216307 12:39 AM, 30 Apr 2021
    там вообще кликхауз запущен?
  • @bigdatov #216308 12:45 AM, 30 Apr 2021
    неа 😔, почему то не запущен, и еще он и в ручную не запускается
  • Понятно :-( спасибо. Пока перебьёмся partial_join.
  • @bigdatov #216310 12:45 AM, 30 Apr 2021
    как будто вообще не установлен
    Failed to start clickhouse-server.service: Unit clickhouse-server.service not found.
  • https://t.me/clickhouse_ru
    @paragor #216311 01:40 AM, 30 Apr 2021
    Ребят есть у когонибудь в закладах статья или доклад: в каком случае лучше подходит один большой кластер на всю организацию, а в каком случае лучше много маленьких кластерков
  • https://t.me/clickhouse_ru
    понятия schema как в Postgres в clickhouse нет
    тут database, по своим свойствам ближе к MySQL
    то есть можно указывать db.table, и использовать USE db в binary protocol и default_database в HTTP для переключения на заданную db если писать просто table в запросах
  • https://t.me/clickhouse_ru
    сколько весит один JSON в распакованном виде?

    как вариант можно применить схему uber
    когда данные хранятся в одном String поле с ZSTD компрессией
    и потом по мере надобности сериализуются в отдельные поля
    http://eng.uber.com/logging
    Fast and Reliable Schema-Agnostic Log Analytics Platform

    At Uber, we provide a centralized, reliable, and interactive logging platform that empowers engineers to work quickly and confidently at scale. The logs are tag

  • @181568392 #216315 03:38 AM, 30 Apr 2021
    Переходите на Vertica и не партесь с этим ch
  • https://t.me/clickhouse_ru
    типа пятничный наброс? ;)
    а 70 тыщ баксов на второй терабайт вы мне прямо сейчас выпишете?
  • https://t.me/clickhouse_ru
    а че сразу Vertica ;) давайте уж на ExaSOL ;)
  • https://t.me/clickhouse_ru
    А вместо json использовать msgpack он быстрее
  • https://t.me/clickhouse_ru
    в clickhouse интегрирован simdjson
    парсит гигабайты JSON в секунду..
    нет надобности в дополнительной конверации
  • https://t.me/clickhouse_ru
    🧐
  • https://t.me/clickhouse_ru
    @unamedrus #216321 06:50 AM, 30 Apr 2021
    ну тут такое дело, что бы распарсить гигабайты жсон в секунду нужно что бы диски могли их отдавать с такой скоростью.
  • https://t.me/clickhouse_ru
    Да, или память)))))
  • https://t.me/clickhouse_ru
    @ivymike_b #216323 06:54 AM, 30 Apr 2021
    Слушайте, такой вопрос. А может такое быть, что реплицируемая таблица созданная с указанием on cluster, была взята и так просто проёбана на одном из хостов??? Либо вообще не создалась на одном хосте (из трёх)🙄🙄🙄
  • https://t.me/clickhouse_ru
    @unamedrus #216324 06:55 AM, 30 Apr 2021
    В идеальных условиях нет, на практике причин может быть много.

    Кривой remote_servers на сервере который создавал таблицу, или у вас два хоста считают что имеют один и тот же хостнейм
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    404
  • https://t.me/clickhouse_ru
    телега подло точку убирает в конце из урла
  • https://t.me/clickhouse_ru
    Вот мразь🕺
  • https://t.me/clickhouse_ru
    Странно конечно... учитывая, что у нас mdb кх)
  • https://t.me/clickhouse_ru
    @aandrey5 #216336 08:42 AM, 30 Apr 2021
    Всем привет ! изучаю Clickhouse, поставил на тестовый сервер, никак не могу подключиться с другой машины в домене к нему. Поставил запись в config.xml <listen_host>::</listen_host>, рестартанул. Не хочет и все - DBeaver возвращает ошибку коннекта 210, локально клиент работает, curl <сбственный ip>:8123 - Ок. В чем может быть причина? Слышал какой то где то TimeOut можно увеличить с 50ms до 10s, но где - непонятно...
  • https://t.me/clickhouse_ru
    @aandrey5 #216337 08:43 AM, 30 Apr 2021
    ubuntu server 20, поставил в систему(не docker)
  • https://t.me/clickhouse_ru
    @aandrey5 #216338 08:46 AM, 30 Apr 2021
    ss -tl показывает что прослушиваются как я понимаю все ip по 8123 порту..., все фаейрволы у меня выключены, в системе еще крутится postgresql, к нему доступ есть..
  • https://t.me/clickhouse_ru
    @aandrey5 #216339 08:47 AM, 30 Apr 2021
    подключаюсь dbeaver по пользователю default...
  • https://t.me/clickhouse_ru
    Телнет с другой машины до 8123 есть?
  • https://t.me/clickhouse_ru
    попробуйте поменять :: на 0.0.0.0
  • https://t.me/clickhouse_ru
    @aandrey5 #216342 08:48 AM, 30 Apr 2021
    curl <ip>:8123 делал с другой машины в домене - нет
  • https://t.me/clickhouse_ru
    ОК
  • https://t.me/clickhouse_ru
    @ivymike_b #216344 08:48 AM, 30 Apr 2021
    А лучше - поднять в докере
  • https://t.me/clickhouse_ru
    @aandrey5 #216345 08:51 AM, 30 Apr 2021
    поменял на 0.0.0.0, видно что применилось, но подключение все равно нет - time out
  • https://t.me/clickhouse_ru
    @yarlanzey #216346 08:53 AM, 30 Apr 2021
    значит что-то со связностью до сервера
  • https://t.me/clickhouse_ru
    @aandrey5 #216347 08:53 AM, 30 Apr 2021
    Вот такое нашел, где то в java файле CH меняется этот параметр, ранее была проблема, но curl давать должен ответ..
  • https://t.me/clickhouse_ru
    Да, похоже на то. Именно по этому порту почему то. На 5432 (Posgre висит) curl дает пустой ответ
  • https://t.me/clickhouse_ru
    А с локалхоста ок?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @aandrey5 #216351 08:56 AM, 30 Apr 2021
    Оба ip - его
  • @NavaSagi #216353 09:04 AM, 30 Apr 2021
    Всем привет
  • @NavaSagi #216354 09:04 AM, 30 Apr 2021
    Подскажите, в БД хранятся диапазоны чисел в виде start_n и end_n, мне нужно запросить список значений. Я делаю это в виде
    select start_n, end_n from table where (start_n < ${num1} and end_n > ${num1}) or (start_n < ${num2} and end_n > ${num2}) or ...
    При таком запросе, так как БД не возвращает конкретное число, приходится уже локально проверять вхождение числа в диапазон и привязывать. Можно ли как то сделать, чтобы результат запроса содержал значение каждого запрашиваемого числа?
  • @NavaSagi #216355 09:05 AM, 30 Apr 2021
    Ожидаемый результат
    [
    {
    start_n: 1,
    end_n: 3,
    num: 2
    },
    {
    start_n: 2,
    end_n: 5,
    num :2
    },
    ...
    ]
  • https://t.me/clickhouse_ru
    А, ну, это банальная проблема сетевой доступности, ерунда
  • https://t.me/clickhouse_ru
    SELECT
    arrayJoin([1, 5, 10]) as num,
    start_n,
    end_n
    FROM table
    where num between start_n and end_n
  • Спасибо, попробую)
  • https://t.me/clickhouse_ru
    @mikhailberg #216361 09:58 AM, 30 Apr 2021
    Здравствуйте!
    если ли способ при балансировке нагрузки из шарда с 2 репликами выбирать одну и ту же всегда, не завязываяась на кол-во ошибок ?
  • @xsat3 #216363 10:09 AM, 30 Apr 2021
    Привет всем,

    Подскажите как остановить запущенный запрос OPTIMIZE TABLE my_table FINAL ?

    Если я перегружу сервак ничего плохого не случиться ?
  • Settings | ClickHouse Documentation

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

  • @zheka_kolesnik #216365 10:15 AM, 30 Apr 2021
    Settings | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @arraysize #216366 10:24 AM, 30 Apr 2021
    С какой версии добавлена настройка prefer_column_name_to_alias?
  • https://t.me/clickhouse_ru
    спасиб!
  • @xsat3 #216369 10:32 AM, 30 Apr 2021
    Как отменить запущенный запрос OPTIMIZE TABLE my_table FINAL ?
  • https://t.me/clickhouse_ru
    KILL QUERY WHERE query_id=XXX SYNC
    уже запускали?
  • https://t.me/clickhouse_ru
    @BloodJazMan #216371 10:34 AM, 30 Apr 2021
    ну рестарт сервера сделать можно
    в целом прямо крашнуться не должно =)
  • @archangel37 #216372 10:36 AM, 30 Apr 2021
    Всем привет! Подскажите плиз, самплинг на живую таблицу в рантайме можно добавить, если его нет или это из разряда фантастики?
  • @xsat3 ↶ Reply to #216371 #216373 10:41 AM, 30 Apr 2021
    Спасиб
  • https://t.me/clickhouse_ru
    https://clickhouse.tech/docs/en/sql-reference/statements/alter/sample-by/

    можно просто WHERE rand() % 10 = 1 сделать
    SAMPLE BY | ClickHouse Documentation

    Manipulating Sampling-Key Expressions Syntax: ALTER TABLE [db].name [ON CLUSTER cluster] MODIFY SAMPLE BY new_expression

  • https://t.me/clickhouse_ru
    sampling key просто выражение, оно на лету при чтении вычисляется
    выражение sampling key должно вычисляться на основе полей в primary key
    и вычисляется соответсвенно для гранул и позволяет быстро фильтровать data parts при чтении
  • спасибо за хинт!
    вероятностный подход в моём случае не очень хорошо
    условно есть данные, которые заливаются каждую секунду и вероятностный подход будет брать нестабильные промежутки, в то время как самплинг более детерминирован - и условно при коэффициенте 0.1 будет выдавать каждую десятую секунду
  • это прочитал, но возможность самплинга нужно организовывать при создании таблицы... вот и поинтересовался, есть ли возможность в рантайме именно включить эту возможность..
  • https://t.me/clickhouse_ru
    есть, но ограничено полями которые присутствуют в ORDER BY \ PRIMARY KEY
  • @archangel37 #216380 10:52 AM, 30 Apr 2021
    да, спасибо, вчера всё узнал - вечером мне всё подсказали
  • @elmankross #216383 12:05 PM, 30 Apr 2021
    Всем привет. Может кто-нибудь из комьюнити dotnet поделиться опытом взаимодействия с ClickHouse через интерфейс MySql посредством официального коннектора MySql - Connector/Net? Столкнулся с проблемой коробочной магии, которая после подключения к бд выдает такое:
    MySql.Data.MySqlClient.MySqlException (0x80004005): Code: 46, e.displayText() = DB::Exception: Unknown function TIMEDIFF. Maybe you meant: ['dateDiff']: While processing TIMEDIFF(now(), UTC_TIMESTAMP()) (version 21.3.3.14 (official build))
    Может кто сталкивался и решил эту проблему. К сожалению, я нашёл упоминание об этом магическом запросе только тут. Заранее спасибо.
  • https://t.me/clickhouse_ru
    TIMEDIFF(now(), UTC_TIMESTAMP())

    Это часть вашего запроса? или что-то другое?
  • это часть автомагии официального коннектора mysql для .net . Этот запрос автоматически выполняется при первом запросе к базе данных и я на него не могу повлиять, эта штука зашита где-то внутри коннектора
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/18612
    https://github.com/ClickHouse/ClickHouse/issues/17177
    Add support for TIMEDIFF function in MySQL Wire protocol (Mysql.Data .NET driver) · Issue #18612 · ClickHouse/ClickHouse

    Use case Mysql.Data is the default way to connect to mysql DB in .NET. https://dev.mysql.com/doc/connector-net/en/connector-net-versions.html Currently it's not possible to connect due to d...

  • https://t.me/clickhouse_ru
    а зачем из .net через mysql работать, если есть нормальный клиент для CH который работает адово быстро
  • https://t.me/clickhouse_ru
    @dbalashov #216388 01:06 PM, 30 Apr 2021
    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
  • который поверх ado.net? У нас пока нет цели запрашивать данные с помощью спеуифично написанных ручных запросов. Хочется сначала использовать удобные инструменты в виде linq to db и дальше уже развиваться в сторону оптимизаций
  • https://t.me/clickhouse_ru
    он не так чтобы поверх, он просто реализует IDbConnection и IDbCommand, что позволяет с помощью Dapper (или Linq2db видимо тоже) работать с CH
  • https://t.me/clickhouse_ru
    @ilyshka_fox #216392 01:08 PM, 30 Apr 2021
    Добрый день. Не подскажите что делать с этой ошибкой?
    DB::Exception: Function trimBoth has no information about its monotonicity. (version 21.3.2.5 (official build))
  • @salionov #216393 01:09 PM, 30 Apr 2021
    доброго времени суток

    я ж правильно понимаю, что «красивого» способа апдейтнуть датасет с изменением поля с json не существует?

    относить партиции в сторону, изменять (удалять лишние поля) и подключать измененные партиции обратно в датасет?
  • https://t.me/clickhouse_ru
    @AnKochem #216394 01:10 PM, 30 Apr 2021
    Всем привет.
    Фиксирует ли insert into select * данные на момент выполнения запроса?

    Очень много данных, запрос выполняется несколько дней. Новые данные, которые поступают в исходную таблицу будут перелиты?
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #216394 #216395 01:23 PM, 30 Apr 2021
    А очень много это сколько если не секрет?
  • https://t.me/clickhouse_ru
    @solard #216396 01:23 PM, 30 Apr 2021
    Какой обьём?
  • https://t.me/clickhouse_ru
    @AnKochem #216397 01:27 PM, 30 Apr 2021
    Ну на шарде 400 Гб
  • https://t.me/clickhouse_ru
    Крайне маловероятно.. Даже в SQL такого нету :)
    Так штаа лучше всего направить запись в новое место, а потом медленно и печально выполнить insert into select *
  • https://t.me/clickhouse_ru
    @dikovalex #216399 01:43 PM, 30 Apr 2021
    Подскажите пож. функцию, которая заменяет row_number() over (order by time))
  • https://t.me/clickhouse_ru
    в 21.3 есть оконки
  • https://t.me/clickhouse_ru
    @dikovalex #216401 01:45 PM, 30 Apr 2021
    А вот я не могу апдейтнуться т.к. наш админ боится, что все сломается(((
  • https://t.me/clickhouse_ru
    Имхо фиксирует, но точно не помню
  • https://t.me/clickhouse_ru
    @dikovalex #216403 01:50 PM, 30 Apr 2021
    Неужели нет функции ранга по дате
  • https://t.me/clickhouse_ru
    кликхаус реализует MySQL протокол, но не реализует MySQL SQL диалект
  • https://t.me/clickhouse_ru
    нет, новые данные не будут перелиты в этот SELECT
    селект на начальном этапе довольно быстро определяет список партов и список партиций по которым будет идти вычитка
    новые парты в этот список не попадат
  • У меня близкая потребность.
    На эту тему есть Issue: https://github.com/ClickHouse/ClickHouse/issues/23682
    Create functions queryID and initialQueryID · Issue #23682 · ClickHouse/ClickHouse

    Goal is to find out (initial_)query_id of INSERT query that triggered this (current) Materialized View execution, in order to register this initial_query_id in statistics table. Why? It would enric...

  • https://t.me/clickhouse_ru
    Просто интересно, а в случае alter delete или че-то такого, все равно вычитает из "старых" партов?
  • https://t.me/clickhouse_ru
    а покажите запрос?

    и структуру таблиц?
  • https://t.me/clickhouse_ru
    alter delete
    это условие которое будет переменено для фильтрации при операции background merge
    посмотрите system.mutations Там есть parts_to_do
  • Спасибо за информацию. 👌🏻
  • да да, по ссылкам в сообщении Дмитрия уже понял, что официальные коннекторы mysql - тупиковая ветвь развития архитектуры приложения, к сожалению
  • @elmankross #216412 02:09 PM, 30 Apr 2021
    Спасибо за быстрый ответ. Крутое комьюнити, всегда бы так
  • https://t.me/clickhouse_ru
    Могу дать только в виде примера.
    create table default.TABLE
    (
    id Int64,
    ...
    name String,
    sign Int8,
    version UInt64
    )
    engine = VersionedCollapsingMergeTree(sign, version)
    PARTITION BY name
    ORDER BY (id);

    select trimBoth(t.name) as name
    from default.TABLE as t
    where name in ('Строка1', 'Строка2')
  • https://t.me/clickhouse_ru
    и такой простой запрос выдает такую ошибку?
  • https://t.me/clickhouse_ru
    @ilyshka_fox #216415 02:35 PM, 30 Apr 2021
    да
  • https://t.me/clickhouse_ru
    @ilyshka_fox #216416 02:36 PM, 30 Apr 2021
    Если данные нет. то запрос отрабатывает. Если есть в таблице данные то ошибка.
  • Добрый день. Ошибка в документации:
  • @1063161973 #216420 02:52 PM, 30 Apr 2021
    формат %g в результате возвращает две цифры столетия, а не года
  • https://t.me/clickhouse_ru
    @simonovdaniel #216421 02:59 PM, 30 Apr 2021
    Всем привет! А может кто-нибудь подсказать, есть ли возможность транспонирования в кликхаусе? Что-нибудь вроде PIVOT
  • https://t.me/clickhouse_ru
    а вас не затруднит сделать pull request?
    там в целом ничего сложного
    просто нажмите edit в http://github.com/ClickHouse/ClickHouse/tree/master/docs/ru/
    в нужном файле
    ClickHouse/docs/ru at master · ClickHouse/ClickHouse

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

  • Раньше не пользовался, попробую. %g использовался при формирования ключа для удаления документов перед загрузкой новой версии, полдня разбирался - почему документы за 20й год сдваиваются, а за 21й пропадают 😀
  • https://t.me/clickhouse_ru
    У вас же %g дал 21 год, т.е всё вроде ок или нет?
  • @chamaeleon_rex #216425 03:31 PM, 30 Apr 2021
    Привет! Подскажите, пожалуйста, как лучше поступить в ситуации, когда нужно поднять рядом с прод сервером (с большим количеством данных) его реплику. На время репликации запросов, я так понимаю, возможна ситуация, когда распределённый запрос будет приходить на эту реплику и отдавать пользователю неполные данные. Пока что рабочая версия просто закрывать на сервере-реплике порты 8123 и 9000 и ждать когда он стянет все актуальные данные, затем открыть порты. Есть ли иные способы, более правильные? :)
  • Так реплика просто спишет данные с прода, если вы туда не будете пускать запросы пользователей, то все будет нормально, если вы будете отправлять запросы только на прод - все будет ок.
  • @chamaeleon_rex #216427 03:51 PM, 30 Apr 2021
    Я про запрет запросов. Распределённые запросы же ходят на любую из доступных реплик, поэтому хотелось узнать нормальный способ не пускать их туда
  • ваш прод содержит уже реплицируемые таблицы?
    Replicateg*?
  • @chamaeleon_rex #216429 03:52 PM, 30 Apr 2021
    Именно
  • @chamaeleon_rex #216430 03:52 PM, 30 Apr 2021
    я про distributed таблицы пишу)
  • https://t.me/clickhouse_ru
    похоже дело в PARTITION BY name

    зачем вам такое частое партицирование?
    сколько уникальных значений у вас в name?
  • https://t.me/clickhouse_ru
    @ilyshka_fox #216433 04:21 PM, 30 Apr 2021
    около 20. оно у нас как описание enum внешней системы.
    Но я не исключаю что в оригинальной таблице могут неправильно записать строку, сделать погрешность в виде пробела в конце.
    А PARTITION BY добавил т к значений не много, а в запросах часто используется.
  • %g дал 20й год, это %y дал 21год - правильно
  • Сделал еще тесты. Дело не в документации, поведение вообще непонятное, запрос:

    SELECT
    (
    formatDateTime(toDate('2018-01-01'),'%g%m%d'),
    formatDateTime(toDate('2019-01-01'),'%g%m%d'),
    formatDateTime(toDate('2020-01-01'),'%g%m%d'),
    formatDateTime(toDate('2021-01-01'),'%g%m%d'),
    formatDateTime(toDate('2022-01-01'),'%g%m%d')
    )

    возвращает:
    ('180101','190101','200101','200101','210101')
    Т.е. для дат '2020-01-01' и '2021-01-01' одно и то же значение в результате: '200101'
  • @1063161973 #216436 05:39 PM, 30 Apr 2021
    SELECT
    (
    formatDateTime(toDate('2018-01-01'),'%g%m%d'),
    formatDateTime(toDate('2019-01-01'),'%g%m%d'),
    formatDateTime(toDate('2020-01-01'),'%g%m%d'),
    formatDateTime(toDate('2021-01-01'),'%g%m%d'),
    formatDateTime(toDate('2022-01-01'),'%g%m%d'),
    formatDateTime(toDate('2023-01-01'),'%g%m%d'),
    formatDateTime(toDate('2024-01-01'),'%g%m%d'),
    formatDateTime(toDate('2025-01-01'),'%g%m%d')
    )

    Результат:
    ('180101','190101','200101','200101','210101','220101','240101','250101')

    Для 21, 22, 23 года результаты странные.
  • https://t.me/clickhouse_ru
    ну баг это
  • https://t.me/clickhouse_ru
    ну в общем непонятно, такое ощущение что комбинация PARTITION BY name + trimBoth в запросе дает ошибку
    возможно это ожидаемое поведение (в смысле ошибка)
  • @dj_mixer #216439 06:04 PM, 30 Apr 2021
    как поменять ДДЛ в ЗК? КХ не стартует потому что колонка использует словарь Т.Т
    кто то поменял, надо починить взад...
  • @dj_mixer #216440 06:04 PM, 30 Apr 2021
    другая реплика стоит, пока не рестартил, но тоже упадет после рестарта
  • https://t.me/clickhouse_ru
    zkCli.sh или https://github.com/go-zkcli/zkcli
    в помощь
    GitHub - go-zkcli/zkcli: Simple, lightweight, dependable CLI for ZooKeeper

    Simple, lightweight, dependable CLI for ZooKeeper. Contribute to go-zkcli/zkcli development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    или
    https://github.com/let-us-go/zkcli
    он свежее
    GitHub - let-us-go/zkcli: A interactive Zookeeper client.

    A interactive Zookeeper client. Contribute to let-us-go/zkcli development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    выглядело как буд-то правильно работает только в високосные года, но расширил диапазон, а зависимости нет :)
  • а если альтер на другой реплике сделать? не поможет? у каждой реплики свои данные
  • https://t.me/clickhouse_ru
    ну можно KILL QUERY попробовать сделать там же видимо кто то ON CLUSTER Запустил с alter ?
  • да, ДДЛ то прошел...
    все хосты обновили.
    на рестарте не поднимается
  • https://t.me/clickhouse_ru
    а стоп, а DDL прошел для чего? Для MV какого то или что?
  • https://t.me/clickhouse_ru
    не поднимается то что? ATTACH ?
    ну можно metadata просто наверное поправить если понимаете как
  • есть реплицированная таблица.
    в нее добавили виртуальную колонку с лукапом в словаре
    все добавилось.
    на старте КХ все упало так как таблицы грузятся до словарей (аттач)
  • @dj_mixer #216450 06:12 PM, 30 Apr 2021
    метадату поправил, тогда уже ругается на ЗК
  • https://t.me/clickhouse_ru
    а, ну типа словаря нет?
    тогда тупо переносим .sql для падающей таблицы из metadata в /tmp
    стартуем сервер
    и сразу после старта clickhouse-client < /tmp/table.sql

    кстати это вроде после 20.8 в 21.3 должно было починиться
  • https://t.me/clickhouse_ru
    @BloodJazMan #216452 06:14 PM, 30 Apr 2021
    метадату в зад вернуть чтобы ZK не ругался
  • https://t.me/clickhouse_ru
    @BloodJazMan #216453 06:15 PM, 30 Apr 2021
    в ZK никакую метадату править не стоит
  • да точно, спасибо
  • https://t.me/clickhouse_ru
    @tratatataass #216455 06:16 PM, 30 Apr 2021
    Привет!
    А можно как-то чекнуть, видит ли КХ всех ЗК?
  • >>DB::Exception: Directory for table data data/ааа exists

    убрал папку.

    Replica /clickhouse/xxx/replicas/10.10.5.41 already exists.
    удалять что ли
  • @dj_mixer #216457 06:21 PM, 30 Apr 2021
    так и форс рестором можно было наверно...
  • @dj_mixer #216459 06:23 PM, 30 Apr 2021
    Блин должно же быть проще все вот это (
  • >кстати это вроде после 20.8 в 21.3 должно было починиться

    помню тут мелькало, но не помню чтобы оно чинилось. поменяли порядок загрузки? тикет есть?
  • https://t.me/clickhouse_ru
    optimize нельзя отменить kill query.
    если не replicated , то system stop merges табл
    если replicated надо в ZK удалять и system restart replica табли
  • https://t.me/clickhouse_ru
    sampling очень сложная тема. Надо ее планировать до создания таблицы. Проблема даже не в том какой индекс уже задан, проблема вообще понять какой индекс возможен чтобы и семплинг работал.
  • https://t.me/clickhouse_ru
    @den_crane #216464 11:02 PM, 30 Apr 2021
    Sampling Example

    Clickhouse table sampling example

  • https://t.me/clickhouse_ru
    фиксирует. SELECT запоминает активные парты до начала выполнения и увеличивает у них ref_cnt +1 , поэтому до конца селекта они будут существовать.
  • https://t.me/clickhouse_ru
    SELECT запоминает активные парты до начала выполнения и увеличивает у них ref_cnt +1 , поэтому до конца селекта они будут существовать.
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    Distributed таблица умеет не ходить в отстающие реплики

    SELECT *
    FROM system.settings
    WHERE name = 'max_replica_delay_for_distributed_queries'

    ┌─name──────────────────────────────────────┬─value─┬─changed─┬─description──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─min──┬─max──┬─readonly─┬─type───┐
    │ max_replica_delay_for_distributed_queries │ 300 │ 0 │ If set, distributed queries of Replicated tables will choose servers with replication delay in seconds less than the specified value (not inclusive). Zero means do not take delay into account. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    └───────────────────────────────────────────┴───────┴─────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────┴──────┴──────────┴────────┘