• 18 August 2021 (152 messages)
  • а просто селект работает?
    SELECT * FROM postgresql()
  • работает
  • https://t.me/clickhouse_ru
    Обсудили лично, если кратко, то да, нельзя указывать один и тот же набор хостов как дефолтный и для отдельных таблиц. То есть, дефолтный он и есть дефолтный, и указание точно такого же роутинга для отдельных таблиц kittenhouse считает как ошибку конфигурации, потому что эта строка получается по сути лишняя
  • https://t.me/clickhouse_ru
    @embargo2710 #231141 10:46 AM, 18 Aug 2021
    Добры день, ищу возможность хранить произвольный массив (привет, PHP, это хэшмап) произвольной размерности в поле. Map не подходит, Array не подходит, есть ли стандартная возмодность?
  • https://t.me/clickhouse_ru
    Хранить как строку в формате JSON и использовать функции для работы с JSON для обращения к ним разве что?
  • https://t.me/clickhouse_ru
    @yourock88 #231143 10:47 AM, 18 Aug 2021
    (тип колонки получается тогда String)
  • https://t.me/clickhouse_ru
    Вполне подойдёт, мне даже работать с данными не надо, считай, что лог в поле
  • значит в постгресе у вас лежит null в колонке phone, а в КХ у вас тип String, который не позволяет вставить null. Можно к пустой строке приводить телефон если позволяет бизнес логика или поменять тип колонки phone в КХ на Nullable(String)
  • @1803285152 #231146 10:50 AM, 18 Aug 2021
    Nullable(String) тогда лучше
  • с точки зрения производительности это будет хуже
  • @githubreleases_bot #231148 b o t 10:57 AM, 18 Aug 2021
    ClickHouse/ClickHouse tagged: v21.8.4.51-lts
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.8.4.51-lts
    Release notes:
    v21.8.4.51-lts
    Release v21.8.4.51-lts · ClickHouse/ClickHouse

    ClickHouse lts release v21.8.4.51-lts

  • @capsolo #231151 11:40 AM, 18 Aug 2021
    Добрый день, коллеги! Нид хэлп! Заапдейтился до 21.8, пытаюсь создать реплику Постгреса. При создании ругается DB::Exception: MaterializedPostgreSQL is an experimental database engine. Enable allow_experimental_database_postgresql_replica to use it. (version 21.8.3.44 (official build)), а если засунуть ключик в users.xml на старте ругается, что не знает такого ключа. Проверил - ключ в xml введен правильно, без ошибок...
  • @githubreleases_bot #231152 b o t 11:47 AM, 18 Aug 2021
    ClickHouse/ClickHouse tagged: v21.7.8.58-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.7.8.58-stable
    Release notes:
    v21.7.8.58-stable
    Release v21.7.8.58-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.7.8.58-stable

  • там опечатка в имени настройки в ошибке, надо выставить allow_experimental_database_materialized_postgresql
  • благодарю, уже поиском по чату и по коду нашел! В эксепшне надо бы поправить....
  • https://t.me/clickhouse_ru
    @freedomwarri0r #231157 12:45 PM, 18 Aug 2021
    Всем привет.
    Пытаюсь записать данные из кафки, но в логах така вот ошибка:
    2021.08.18 12:43:57.292385 [ 53451 ] {} <Error> void DB::StorageKafka::threadFunc(size_t): Code: 434, e.displayText() = DB::Exception: Cannot parse './flow.proto' file, found an error at line -1, column 0, Backslashes, consecutive slashes, ".", or ".." are not allowed in the virtual path, Stack trace (when copying this message, always include the lines below):
  • https://t.me/clickhouse_ru
    @freedomwarri0r #231158 12:46 PM, 18 Aug 2021
    Это если что goflow -> kafka -> clickhouse
  • https://t.me/clickhouse_ru
    @ExplosiveJam #231159 12:51 PM, 18 Aug 2021
    Ты схему клал в format_schemas? Попробуй в конфиге убрать ./.
  • https://t.me/clickhouse_ru
    да
    без . пробовал, получаю такое:
    2021.08.18 12:55:49.898125 [ 53445 ] {} <Error> void DB::StorageKafka::threadFunc(size_t): Code: 444, e.displayText() = DB::Exception: Protobuf messages are corrupted or don't match the provided schema. Please note that Protobuf stream is length-delimited: every message is prefixed by its length in varint.: while parsing Kafka message (topic: flows, partition: 0, offset: 0)', Stack trace (when copying this message, always include the lines below):
  • https://t.me/clickhouse_ru
    @aleksey1302 #231161 01:05 PM, 18 Aug 2021
    Всем привет. Хочу использовать ReplacingMergeTree с дополнительным параметром ver. Только мне нужно, чтобы, чем меньше был ver, то его и оставлял движок, а остальное в утиль. Есть идеи как сделать?
  • https://t.me/clickhouse_ru
    сделать ver * -1
  • https://t.me/clickhouse_ru
    @nyoroon #231163 01:11 PM, 18 Aug 2021
    отдельную колонку с таким выражением
  • https://t.me/clickhouse_ru
    @ExplosiveJam #231164 01:12 PM, 18 Aug 2021
    возможно вычисляемую
  • @maksspaceworld #231165 01:15 PM, 18 Aug 2021
    Всем привет. Подскажите пожалуйста, как узнать сколько занимает индекс в RAM? Я правильно понимаю если гранулярность 8192, то это количество = (кол-во строк / 8192) * сумма размеров колонок в индексе?
  • https://t.me/clickhouse_ru
    @qoega ↶ Reply to #231165 #231167 01:20 PM, 18 Aug 2021
    AFAIR вместо суммы колонок= размер колонки сортировки + пара 64 битных размеров указателей(типа начало сжатого куска + размер внутри разжатого) для каждой колонки.
    Тип колонок остальных на размер вроде не влияет
  • https://t.me/clickhouse_ru
    @nshumshurova #231168 01:39 PM, 18 Aug 2021
    есть вопрос, для словарей определенных в файле как обратиться к их именам, в какое пространство они попадают? <yandex>
    <dictionary>
    <name>ext-dict</name>
    <source>
    <file>
    <path>/etc/clickhouse-server/dict_clickhouse.csv</path>
    <format>CSV</format>
    </file>
    </source>
    <layout>
    <flat />
    </layout>
    <structure>
    <id>
    <name>value_dict</name>
    <type>String</type>
    </id>
    <attribute>
    <name>key_dict</name>
    <type>String</type>
    <null_value></null_value>
    </attribute>
    </structure>
    <lifetime>0</lifetime>
    </dictionary>
    </yandex>
    так определен словарь, SELECT dictGet('ext-dict', value_dict, key_dict) as value_dict, key_dict
    :-] FROM system.dictionaries limit 20; не работает, есть какая-то возможность проверить куда создался словарь?
  • обычно xml словари попадают в корень, проверьте в select * from system.dictionaries, возможно он не загрузился
  • https://t.me/clickhouse_ru
    они так и должны работать, без всякого префикса. ошибка какая?
  • https://t.me/clickhouse_ru
    Code: 47. DB::Exception: Received from localhost:9000. DB::Exception: Missing columns: 'value_dict' 'key_dict' while processing query: 'SELECT dictGet('ext-dict', value_dict, key_dict) AS value_dict, key_dict FROM system.dictionaries LIMIT 20', required columns: 'key_dict' 'value_dict'.
  • https://t.me/clickhouse_ru
    у вас там колонки как аргументы dictGet, это правда то что хотите?
  • https://t.me/clickhouse_ru
    да
  • обычно вторым аргументом строка передаётся
  • https://t.me/clickhouse_ru
    @nshumshurova #231175 01:43 PM, 18 Aug 2021
    в систем директори пусто
  • https://t.me/clickhouse_ru
    @nshumshurova #231176 01:43 PM, 18 Aug 2021
    словарь не создался
  • @simpl1g #231177 01:44 PM, 18 Aug 2021
    у вас запрос не валидный, словарь тут не причём
  • @1542923331 #231178 01:50 PM, 18 Aug 2021
    Здравствуйте.
    Буду очень благодарен за помощь.

    Есть выборка:

    date | version | count
  • @1542923331 #231180 01:50 PM, 18 Aug 2021
    Количество версий для каждой даты одинакова, но заранее неизвестно сколько и какие версии будут.
    Каким образом выдать результат в следующем виде: date | version_1 | version_2 | ...
  • https://t.me/clickhouse_ru
    не загрузился словарь, есть какие-то методы отладки?
  • https://t.me/clickhouse_ru
    @nshumshurova #231184 01:59 PM, 18 Aug 2021
    SELECT *
    FROM system.dictionaries

    Query id: a75d8e0f-5770-4793-b686-5332d3f71f06

    Ok.

    0 rows in set. Elapsed: 0.005 se
  • https://t.me/clickhouse_ru
    Спасибо. Создал дополнительное поле

    position_ver MATERIALIZED position*-1,

    + ReplacingMergeTree(position_ver)

    и все заработало, как надо
  • SYSTEM RELOAD DICTIONARY делали после добавления? Почему не через SQL создаеёте словарь? так проще будет управлять ими
  • https://t.me/clickhouse_ru
    нет, спасибо за подсказку
  • https://t.me/clickhouse_ru
    @dkhru #231190 02:47 PM, 18 Aug 2021
    Приветствую, подскажите пожалуйста куда копать?
    запрос к дистрибутивному представлению упирается в память

    select * from (SELECT max(order.current_dt) as current_dt,
    order_guid,
    argMax(broker, order.current_dt) as broker,
    argMax(account_guid, order.current_dt) as account_guid,
    argMax(contract_symbol, order.current_dt) as contract_symbol,
    argMax(order_type, order.current_dt) as order_type,
    argMax(price, order.current_dt) as price,
    argMax(side, order.current_dt) as side,
    argMax(quantity, order.current_dt) as quantity,
    argMax(exec_inst, order.current_dt) as exec_inst,
    argMax(time_in_force, order.current_dt) as time_in_force,
    argMax(expire_dt, order.current_dt) as expire_dt,
    argMax(filled_quantity, order.current_dt) as filled_quantity,
    argMax(status, order.current_dt) as status,
    argMax(status_description, order.current_dt) as status_description,
    argMax(created_dt, order.current_dt) as created_dt,
    argMax(is_opened, order.current_dt) as is_opened,
    argMax(is_fixed, order.current_dt) as is_fixed,
    argMax(central_time, order.current_dt) as central_time
    FROM order_state as order
    GROUP BY order_guid)
    WHERE status in ('ORDERSTATUS_NEW','ORDERSTATUS_PARTIAL')
    and contract_symbol = 'BTCUSDZZ';

    представление живет в двух шардах в каждом из которых две реплики
  • https://t.me/clickhouse_ru
    а если внутренний запрос переписать на limit 1 by order_guid ?
  • https://t.me/clickhouse_ru
    вы из binance? =))
  • https://t.me/clickhouse_ru
  • @subotic0 #231194 03:03 PM, 18 Aug 2021
    Привет, подскажите что лучше всего использовать в качестве версии для VersionedCollapsingMergeTree, если непосредственно саму версию приложение не сохраняет? Смотрю в сторону хэша строки, может есть какие-то варианты что лучше использовать?
  • https://t.me/clickhouse_ru
    дату?
  • Для начала нужно отменить старое состояние, для этого нужно "помнить" версию для отмены, а приложение ничего не сохраняет, в том числе дату
  • https://t.me/clickhouse_ru
    Это да
  • https://t.me/clickhouse_ru
    поправил
  • https://t.me/clickhouse_ru
    @dkhru ↶ Reply to #231192 #231199 03:15 PM, 18 Aug 2021
    нет
  • https://t.me/clickhouse_ru
    а поч так много argMax? пихните все поля в кортеж
  • https://t.me/clickhouse_ru
    @dkhru #231201 03:17 PM, 18 Aug 2021
    скор тежем будет меньше жрать?
  • https://t.me/clickhouse_ru
    я бы попробовал, но вдруг поможет
  • https://t.me/clickhouse_ru
    @dkhru #231203 03:20 PM, 18 Aug 2021
    из приведенной ссылки понятно, что жрет память group by
    очевидно надо групировать после выборки по условию
  • https://t.me/clickhouse_ru
    так результат другой будет
  • https://t.me/clickhouse_ru
    @dkhru #231205 03:25 PM, 18 Aug 2021
    ну да, точно
  • https://t.me/clickhouse_ru
    @dkhru #231206 03:28 PM, 18 Aug 2021
    ну хотя бы в group by выбрать только ключи, а по ним все остальное
  • https://t.me/clickhouse_ru
    а как-то можно сделать чтобы PRIMARY KEY был строкой для словаря?
  • https://t.me/clickhouse_ru
    @nshumshurova #231208 03:31 PM, 18 Aug 2021
    просто я определила словарь через запрос и получилось что primiry key переопределился на ['key_value'] │ ['UInt64']
  • @1803285152 #231209 03:33 PM, 18 Aug 2021
    Подскажите как по дате получить день недели?
  • Функции для работы с датами и временем | Документация ClickHouse

    Функции для работы с датами и временем Поддержка часовых поясов Все функции по работе с датой и временем, для которых эт

  • Спасибо
  • https://t.me/clickhouse_ru
    DateTIme долго INSERTится/SELECTится из-за таймзон в питоне. Они медленные. В доке вот что написано: https://clickhouse-driver.readthedocs.io/en/latest/types.html#datetime-timezone-datetime64-timezone

    Integers are interpreted as seconds without timezone (UNIX timestamps). Integers can be used when insertion of datetime column is a bottleneck.
  • ClickHouse поддерживает следующие виды ключей:

    Числовой ключ. UInt64. Описывается в теге <id> или ключевым словом PRIMARY KEY.
    Составной ключ. Набор значений разного типа

    https://clickhouse.tech/docs/ru/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-structure/
    Ключ и поля словаря | Документация ClickHouse

    Ключ и поля словаря Секция <structure> описывает ключ словаря и поля, доступные для запросов. Описание в формате XML: <d

  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #231190 #231214 03:51 PM, 18 Aug 2021
    - как тут уже писали, попробуйте выкинуть эти argMax/group by, заменив их на order by current_dt desc limit 1 by order_guid Похоже у limit 1 by какие-то иные оптимизации при выборе баланса скорость/память
    - или укажите явно - max_bytes_before_external_group_by='40G' & max_threads=1
    - если у записей есть уникальный ID, и логика запроса позволяет, то вычислите эти ID подзапросом с опорой на status, и только потом читайте все остальные столбцы с условием id in IDs - так вы сможете правильно перенести условие до group by
    - and last but not least - прочитайте про having. То что вы хотели сказать подзапросом обычно пишут при помощи having. Скорости/памяти это скорее всего сейчас не прибавит, но выглядеть будет приличнее, и есть шанс что оптимизатор запросов где-то когда-то этим сможет воспользоваться.
  • https://t.me/clickhouse_ru
    условие WHERE нужно перенести в подзапрос иначе вы сначала всю базу достаёте и группируете, а потом уже фильтруете. но до фильтрации уже не доходит, потому что всё падает ещё на стадии группировки всей базы
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #231215 #231216 03:53 PM, 18 Aug 2021
    просто так его не перенесешь, но копать несомненно надо именно в эту сторону.
  • Почему Nullable(Int32) данные в null записывает, когда в основной таблице PG значение 225.0?
  • https://t.me/clickhouse_ru
    если таблица отсротирована по order_guid, можно включить использование primary key для group by , память не будет использоваться
  • https://t.me/clickhouse_ru
    какой тип в PG и какой в CH ?
  • PG - integer
    CH - Nullable(Int32)
  • https://t.me/clickhouse_ru
    @mrpavelk #231221 04:11 PM, 18 Aug 2021
    Всем привет. Коллеги, запрос вылетает на max over partition by. Это все ещё не реализовано в КХ?
  • https://t.me/clickhouse_ru
    @dkhru ↶ Reply to #231218 #231222 04:14 PM, 18 Aug 2021
    да, по не му и отсортирована, а как вкл использование pk для group by
  • https://t.me/clickhouse_ru
    --optimize_aggregation_in_order arg Enable GROUP BY optimization for aggregating data in corresponding order in MergeTree tables.
  • https://t.me/clickhouse_ru
    реализовано давно, УМВР
  • @g0k4_ez #231225 04:16 PM, 18 Aug 2021
    Всем привет, кто-нибудь знает как в клике ограничить доступ к системным таблицам?
  • https://t.me/clickhouse_ru
    а почему decimal тогда ? 225.0 ?
  • Есть null в PG у этой таблице
  • https://t.me/clickhouse_ru
    About access restricting to system database . It's kinda cumbersome. · Issue #24887 · ClickHouse/ClickHouse

    create user foo identified by '123'; revoke all on *.* from foo; create role RO; CREATE ROW POLICY ro_query_log_filter ON system.query_log USING 1 AS RESTRICTIVE TO RO; CREATE ROW P...

  • https://t.me/clickhouse_ru
    какой null ? я про .0 спросил? почему 225.0
  • https://t.me/clickhouse_ru
    @bralbral #231230 04:19 PM, 18 Aug 2021
    Добрый вечер. Есть ли у кликхауса возможность буферизовать ответ на стороне сервера - имею ввиду: результат запроса куда-то сохраняется, а потом клиент может получить его по какому-то идентификатору ?
  • благодарю
  • В pg Admin так отображается. В dll integer
  • https://t.me/clickhouse_ru
    нет.
    Советую скалдывать в ENGINE=Log таблицу с рандомным именем.
    но есть проблема потом надо кверять тот же самый сервер
  • https://t.me/clickhouse_ru
    Благодарю. На уровне приложения придумывать.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @mrpavelk #231236 04:27 PM, 18 Aug 2021
    Но не работает. Syntax error сразу на over кидает
  • https://t.me/clickhouse_ru
    что выдает

    SELECT
    x,
    sum(x) OVER ( ORDER BY x ASC)
    FROM
    (
    SELECT arrayJoin(range(10)) AS x
    )
  • https://t.me/clickhouse_ru
    я сервере приложений в CSV сохраняю, потом можно прыгать, limit offset
  • https://t.me/clickhouse_ru
    Вы имеете ввиду движок file?
  • https://t.me/clickhouse_ru
    я имею ввиду это решено вне КХ
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    select version();
  • https://t.me/clickhouse_ru
    @mrpavelk #231245 04:32 PM, 18 Aug 2021
    SELECT
    x,
    sum(x) OVER ( ORDER BY x ASC)
    FROM
    (
    SELECT arrayJoin(range(10)) AS x
    )

    Эта штука тоже syntax выдала
  • @simpl1g #231246 04:32 PM, 18 Aug 2021
    так там версия 20.3
  • @simpl1g #231247 04:32 PM, 18 Aug 2021
    обновлять надо
  • https://t.me/clickhouse_ru
    это dbgrip синстаксис не понимает, до КХ не доходит запрос
  • https://t.me/clickhouse_ru
    Ага, 20.3
  • с 21.3 появилось
  • @IvanPerelomov #231251 04:34 PM, 18 Aug 2021
    Привет. Я использую кликхаус через clickhouse-bulk, запись данных черех пхп клиент ClickHouseDB.
    При подключении с опцией
    'auth_method' => \ClickHouseDB\Transport\Http::AUTH_METHOD_QUERY_STRING,
    все работает нормально, но если ставлю опцию
    'auth_method' => \ClickHouseDB\Transport\Http::AUTH_METHOD_HEADER,
    то авторизация не проходит, остальные параметры не меняю.
    Подскажите нужны какие-то доп настройки для авторизации через хедеры в запросе?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    а версия КХ ?
    в современных КХ 21.7 21.8 работает
  • https://t.me/clickhouse_ru
    Понял, спасибо )
  • Последняя
  • https://t.me/clickhouse_ru
    @nshumshurova #231256 04:46 PM, 18 Aug 2021
    есть еще один вопрос, как выполнить селект только если if отработал корректно, есть какой-то пример?
  • https://t.me/clickhouse_ru
    @StadnikD #231257 04:58 PM, 18 Aug 2021
    Есть возможность разворачивать массивы - это ARRAY JOIN, а как свернуть в массив обратно ?
  • https://t.me/clickhouse_ru
    groupArray
  • https://t.me/clickhouse_ru
    благодарю
  • version 21.8.3 revision 54449.
    Без Nullable не работает
  • https://t.me/clickhouse_ru
    @pgregory #231263 05:42 PM, 18 Aug 2021
    всем привет! правильно ли я понимаю, что любая агрегатная функция, если встречается несколько раз в запросе, будет вычислена только один раз? например

    SELECT sum(a) AS r1, sum(a) AS r2

    или более сложное, типа

    SELECT quantilesTDigestMerge(0.99, 0.999)(a)[1] AS r1, quantilesTDigestMerge(0.99, 0.999)(a)[2] AS r2

    ?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #231263 #231266 07:22 PM, 18 Aug 2021
    так это же легко проверить - select sum(number) as n1, sum(number) as n2 from numbers(10000000) - и смотрите на время. У меня видно, что разницы с одним и двумя нет.
    Но все равно стоит написать красивее:
    with quantilesTDigestMerge(0.99, 0.999)(a) as digest
    select digest[1] as r1, digest[2] as r2 from .....
  • @528711291 #231268 07:24 PM, 18 Aug 2021
    Привет всем. Такой вопрос: а есть ли какой-то хороший солюшен для алертинга по данным в КХ? Думаем логи перенести из эластика в КХ но пока вот эта фича останавливает
  • https://t.me/clickhouse_ru
    В ес смотрите через anomaly detection?
  • @528711291 #231270 07:29 PM, 18 Aug 2021
    Не только, opendistro for elastic или последний opensearch позволяют алертить по разным параметрам. В том числе и по anomaly detection
  • https://t.me/clickhouse_ru
    понял. в своё время искали в кх, оптимальной идей оказалось отводить общий трафик через матвью в сторонние таблицы ( в том числе и аггрегационные) по определенным параметрам и опрос с определенным интервалом. для нашего потока 30+ккк евентов в день, оказалось оптимальным. Если данных меньше, возможно можно и напрямую в основные таблицы запрашивать. Готового решения, как такового, не оказалось.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #231268 #231272 07:32 PM, 18 Aug 2021
    наверное можно сделать таблицу с Engine = URL и инсертить туда через MV по каким-то условиям. На сервер придет POST запрос, который можно как-то отработать.
  • @528711291 #231273 07:33 PM, 18 Aug 2021
    Ок. Спасибо. Будем думать/искать дальше
  • https://t.me/clickhouse_ru
    спасибо! "красиво" не делаю, потому что гошная библиотека ругается, что массив digest не вычитывается
  • https://t.me/clickhouse_ru
    да, любое выражение, не только агрегатная функция
    даже rand() и sleep()
  • https://t.me/clickhouse_ru
    даже аналога кибаны нет кажется, нечем смотреть
    только cLoki
  • https://t.me/clickhouse_ru
    алиасы можно пихать в любое место

    select ( quantilesTDigestMerge(0.99, 0.999)(a) as digest )[1] as r1, digest[2] as r2 from .....
  • https://t.me/clickhouse_ru
    спасибо, попробую
  • https://t.me/clickhouse_ru
    @datamanager #231280 08:44 PM, 18 Aug 2021
    Коллеги, добрый вечер!
  • https://t.me/clickhouse_ru
    @datamanager #231281 08:47 PM, 18 Aug 2021
    Аз есмь чайник, прошу помощи. Поставил clickhouse на ЦентОС 7.5. Что и как поправить в конфиге, что бы можно было curl обратиться к серверу, где он стоит по http. Через localhost:8123 получается, с другой машины - нет. Машины друг друга видят, другие сервисы запускаются.
  • вам надо поправить вот эту настройку
    https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server_configuration_parameters-listen_host
    Server Settings | ClickHouse Documentation

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

  • 19 August 2021 (274 messages)
  • https://t.me/clickhouse_ru
    @JohnHaret #231285 01:55 AM, 19 Aug 2021
    доброго времени суток. возникло несколько вопросов:
    1) при попытке удаленно стянуть данны через clickhouse-backup на удаленном сервере сохранились только метаданные, а shadow не приехали - это так и должно быть? можно ли удаленно бекапить сервер
    2) на боевом сервере папка shadow не пуста (я так понимаю ее создал удаленный запрос описанный выше). можно ли ее очистить, и не повредит ли это работе сервера (везде пишут, что эти данные можно не хранить, но я с этой базой работаю 1й раз)
    3) тупое копирование данных на удаленный сервер поставило в тупик du -ha показало 300 гб, при копировании с ext4 на ext4 через cp-r оно заняло более 350гб и не влезло.. это нормально, или ошибка где-то?
    спасибо
  • https://t.me/clickhouse_ru
    в shadow создаются хардлинки. Они места не занимают.

    1) не надо так делать. Надо локально запустить clickhouse-backup и научить его аплоадить куда надо, он умеет.
    2) можно удалять, это хардлинки
    3) это нормально, но du -sh shadow должен показать настоящий размер, du sh * в каталоге КХ не настоящий.
  • При перегоне колонки местами поменялись почему. Явно указал в select и все пошло
  • @1063161973 #231290 07:39 AM, 19 Aug 2021
    Добрый день.
    Сегодня с сервером КХ какие-то чудеса.
    Коннект начал пропадать время от времени.
    Перезагрузил убунту, теперь даже со сброшенным
    в user.xml паролем ( <password></password> )
    не входит. Что это может быть, как победить ?
  • @1063161973 #231291 07:42 AM, 19 Aug 2021
    sudo service clickhouse-server restart
    не помогает
  • https://t.me/clickhouse_ru
    connection refused это обычно ответ операционки. фаервола линксового, когда никто не слушает порт
  • @1063161973 #231293 07:44 AM, 19 Aug 2021
    ... кажется нашел. ssd отвалился (
  • https://t.me/clickhouse_ru
    @Stofeles #231294 07:44 AM, 19 Aug 2021
    у вас или фаервол или кликхаус покругу рестартуется
  • @1063161973 #231295 07:49 AM, 19 Aug 2021
    Диск примонтировали, всё ОК. Но даже клиент КХ не пускал (
  • https://t.me/clickhouse_ru
    @S_Dimitry #231296 08:41 AM, 19 Aug 2021
    День добрый. А подскажите, пожалуйста, есть ли готовое решение при бэкапе методом фриза партиций. Проверить, что в этот момент не идет вставка в партицию? Проверять processlist на предмет Insert и system.replication_queue'?
  • https://t.me/clickhouse_ru
    rm -rfv /var/log/clickhouse-server/*
    systemctl restart clickhouse-server
    less /var/log/clickhouse-server/*.err.log
  • https://t.me/clickhouse_ru
    а зачем вам проверять что идет вставка в партицию?
    freeze создает hardlink только на вставленные парты в партиции
    на момент старта freeze

    все что попадет позже просто не войдет в бекап...

    чего именно вы хотите добиться такой проверкой?
  • https://t.me/clickhouse_ru
    у нас есть большая таблица Insert Only с партами по неделе и раз в неделю хочется ее бэкапить и быть уверенным, что бэкап будет консистентным и не делался в момент, когда эту партицию перенаполняли из источника или был большой лаг на реплике или другие непредвиденные сценарии.
  • https://t.me/clickhouse_ru
    Вы не можете перенаполнять эту партицию в другую таблицу и потом просто делать ALTER TABLE REPLACE PARTITION ?
  • https://t.me/clickhouse_ru
    в таком случае не нужно бэкапить текущую исходную таблицу. А в скрипте хочется все предусмотреть и если партиция "занята", то отложить выполнение, например, на сутки
  • https://t.me/clickhouse_ru
    по вашему сообщению не очень понятно
    вы различаете парты и партиции?

    чтобы избежать большого лага по реплике, в clickhouse-backup делается для Replicated таблиц SYSTEM SYNC REPLICA
    с настраиваемым timeout

    ну и вы никак не можете избежать ситуации когда в эту эту таблицу будет вставка после начала FREEZE ...
    поэтому непонятно все таки чего именно вы пытаетесь избежать

    понятие "консистентности" в clickhouse eventually (консистеность при отсутвии вставок когда нибудь будет достигнута)
    транзакций нет... только "атомарные" вставки и "аторманые" мержи в бекграунде...
  • https://t.me/clickhouse_ru
    @kozyrevMikhail #231303 09:09 AM, 19 Aug 2021
    Добрый день.
    Подскажите есть ли что то похожее на хранимые процедуры в клике?
    может какой то аналог?
    хотелось бы иметь функцию обработки данных и дергать ее из запросов чтобы не писать вручную каждый раз
  • https://t.me/clickhouse_ru
    @dsv_ringostat #231304 09:11 AM, 19 Aug 2021
    Добрый день!

    Подскажите в чем может быть причина?

    ServerErrorHandler: Code: 210, e.displayText() = DB::NetException: Connection reset by peer, while reading from socket (:37770), 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) @ 0x8f9557a in /usr/bin/clickhouse
    1. DB::ReadBufferFromPocoSocket::nextImpl() @ 0x10063e1e in /usr/bin/clickhouse
    2. DB::TCPHandler::runImpl() @ 0x10fcd104 in /usr/bin/clickhouse
    3. DB::TCPHandler::run() @ 0x10fe06d9 in /usr/bin/clickhouse
    4. Poco::Net::TCPServerConnection::start() @ 0x13b5730f in /usr/bin/clickhouse
    5. Poco::Net::TCPServerDispatcher::run() @ 0x13b58d9a in /usr/bin/clickhouse
    6. Poco::PooledThread::run() @ 0x13c8bc19 in /usr/bin/clickhouse
    7. Poco::ThreadImpl::runnableEntry(void*) @ 0x13c87eaa in /usr/bin/clickhouse
    8. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
    9. clone @ 0xfe9fd in /usr/lib64/libc-2.17.so
    (version 21.8.4.51 (official build))

    Увеличил значение
    connect_timeout_with_failover_ms>1000</connect_timeout_with_failover_ms

    Но проблема осталась
  • Прям процедур нет, но что-то похожее можно сделать через словарь с источником executable/executable_pool.

    https://clickhouse.tech/docs/ru/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-sources/#dicts-external_dicts_dict_sources-executable
    Источники внешних словарей | Документация ClickHouse

    Источники внешних словарей Внешний словарь можно подключить из множества источников. Общий вид XML-конфигурации: <yandex

  • https://t.me/clickhouse_ru
    Спасибо, посмотрю
  • https://t.me/clickhouse_ru
    кто-то открывает TCP соединение и 9000 порт
    и обрывает его не послав запрос

    у вас никаких проб нету в мониторинге?
  • https://t.me/clickhouse_ru
    @embargo2710 #231309 09:22 AM, 19 Aug 2021
    Ребят, использую ReplacingMergeTree для удаления дублирующих записей, запрос OPTIMIZE TABLE верно их чистит. Но запрос по ID сам по себе не возвращает последнюю запись. Правильно ли, что мне всегда нужно указывать сортировку по полю версии и LIMIT 1? Или каждый раз дополнять FINAL?
  • https://t.me/clickhouse_ru
    Всмысле проб?
  • А как вы проверили что optimize table верно почистил данные?
  • https://t.me/clickhouse_ru
    Вот у меня на 9000 порту

    lsof -i :9000
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    clickhous 730 clickhouse 174u IPv4 11378742 0t0 TCP chn11:cslistener (LISTEN)
    clickhous 730 clickhouse 181u IPv4 11391383 0t0 TCP chn11:cslistener->chr1:37826 (ESTABLISHED)
  • https://t.me/clickhouse_ru
    Выполнил его руками для таблицы, глазами проверил
  • ну вы же какой-то запрос сделали чтобы глаза увидели)
  • https://t.me/clickhouse_ru
    Через плагин IDE посмотрел все элементы, я же не буду перед каждым запросом optimize выполнять
  • https://t.me/clickhouse_ru
    @embargo2710 #231317 09:36 AM, 19 Aug 2021
    Я не смог из документации понять: в движке ReplacingMergeTree, пока записи не удалились сами в фоне, я сам должен выбирать последнюю актуальную запись или он как-то может это сделать?
  • https://t.me/clickhouse_ru
  • надо всегда убирать дубликаты
  • @simpl1g #231320 09:37 AM, 19 Aug 2021
    по ссылке выше все способы это сделать
  • https://t.me/clickhouse_ru
    Спасибо, стало ясно, что я должен это делать
  • А кто-то может подсказать по этой проблеме?
  • https://t.me/clickhouse_ru
    @nyatmeat #231327 10:33 AM, 19 Aug 2021
    Добрый день. Почитал документацию, но пока не нашел ничего похожего как в mysql
    (3,2,1,4) ORDER BY FIELD(id,3,2,1,4)
    Есть ли такое в клике, и если есть, то куда копать?
  • https://t.me/clickhouse_ru
    А что это значит?
  • https://t.me/clickhouse_ru
    @nyatmeat #231329 10:43 AM, 19 Aug 2021
    Выборка данных в определенном порядке. Например я указал в in 1,2,3 и хочу чтобы записи вернулись в таком порядке
  • https://t.me/clickhouse_ru
    Можно использовать функцию transform, в одном массиве указать список ид, во втором циферку очерёдности
  • https://t.me/clickhouse_ru
    @nyoroon #231331 10:50 AM, 19 Aug 2021
    Или arrayEnumerate
  • https://t.me/clickhouse_ru
    @cassej #231332 11:01 AM, 19 Aug 2021
    всем привет, скажите, это бага или фича?
    делаю выборку по 5000 первичных ключей в цикле (всего 100к ключей) по таблице с 10млн записей, не находит около 4к записей
    сокращаю выборку до 500 за раз, уже не находит только 300+ ключей
    сокращаю выборку до 50 за раз, в этот раз не нашел только 12 ключей
    проверяю по одному каждый ключ, все есть в базе
  • https://t.me/clickhouse_ru
    нет, пробы это имеется ввиду мониторинг какой то внешний который мониторит что 9000й порт открыт
  • https://t.me/clickhouse_ru
    Та нет ничего такого.
  • https://t.me/clickhouse_ru
    или ещё проще:
    WITH [5, 8, 3, 6] AS ids
    SELECT number
    FROM
    (
    SELECT number
    FROM system.numbers
    LIMIT 10
    )
    WHERE number IN (ids)
    ORDER BY indexOf(ids, number) ASC

    5
    8
    3
    6
  • https://t.me/clickhouse_ru
    А вот это мне кажется круто. Спасибо
  • https://t.me/clickhouse_ru
    @JohnHaret #231337 11:14 AM, 19 Aug 2021
    при выполнении clickhouse-backup restore <last backup> получаю code: 57, при том, что в файле sql этой таблицы поправил ALTER на CREATE. что нужно сделать ?
  • https://t.me/clickhouse_ru
    @yuriy_kuchits #231338 11:19 AM, 19 Aug 2021
    Добрый день! Пытаемся подключить ms sql по odbc к clickhouse. Но русские буквы отображаются некорректно. Есть какая-то настройка или особенность?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @vanyasvl #231342 11:23 AM, 19 Aug 2021
    Всем привет. А подскажите по оптимизации kafka консьюмера. Есть топик на 8 партиций, и таблица в кликхаусе, на 8 консьюмеров с kafka_thread_per_consumer = 1. Процессор на 8 ядер. При потоке сообщений дольше 900k/s кликхаус не успевает вычитывать их из кафки, при этом грузит в 100% только пару-тройку ядер, вместо ожидаемых 8
  • ODBC unicode?
  • https://t.me/clickhouse_ru
    Пробовали оба драйвера ODBC unicode и ODBC ANSI
  • https://t.me/clickhouse_ru/207640
    проверьте так
    【D】【J】 in ClickHouse не тормозит

    windows нормальных не юникод клиентов не знаю odbctest есть но он кривой. Поэтому можете так попробовать: PS C:\Users\dj> $connectstring = "DSN=chDsn" PS C:\Users\dj> $sql = @' >> select * from testStr >> '@ PS C:\Users\dj> $conn = New-Object System.Data.Odbc.OdbcConnection($connectstring) PS C:\Users\dj> $conn.open() PS C:\Users\dj> $cmd = New-Object system.Data.Odbc.OdbcCommand($sql,$conn) PS C:\Users\dj> $da = New-Object system.Data.Odbc.OdbcDataAdapter($cmd) PS C:\Users\dj> $dt = New-Object system.Data.datatable PS C:\Users\dj> $null = $da.fill($dt) PS C:\Users\dj> $conn.close() PS C:\Users\dj> $dt A len_A - ----- вйцвцйв 14 value 5 если использовать анси драйвер вернется это. A len_A - ----- вйцвцйв 14 value 5 проверьте, может вы просто не тот драйвер пользуете...

  • ну и повторюсь, удачи...
    https://t.me/clickhouse_ru/207643
    【D】【J】 in ClickHouse не тормозит

    там 4 варианта ansi app-unicode driver unicode app - unicode driver ansi app - ansi driver unicode app - ansi driver поэтому удачи =)

  • https://t.me/clickhouse_ru
    @Makasinov #231347 11:31 AM, 19 Aug 2021
    Привет всем! Подскажите можно ли как то использовать фильтр по LIKE + IN для множества регекспов. Что-то в духе refdom LIKE IN ('%.com','%.ru')
  • @registiy #231348 11:32 AM, 19 Aug 2021
    всем привет

    создал словарь через DDL
    CREATE DICTIONARY mydict (
    id Int32,
    name String,
    )
    PRIMARY KEY id
    LAYOUT(HASHED(PREALLOCATE 0))
    SOURCE(…)
    LIFETIME(3600)

    но при использовании словаря приходится все равно ключ приводить к UInt64
    select dictGet('mydict', 'name’, toUInt64(1) );

    можно ли как-то сделать без обязательного приведения?
  • только на complex_key_hashed/complex_key***
  • @registiy #231351 11:38 AM, 19 Aug 2021
    насколько это правильно если используются небольшие словари (до тысяч записей пока что)?
  • https://t.me/clickhouse_ru
    @infatum #231352 11:39 AM, 19 Aug 2021
    Гайз, а че нормального дилита в кликхаус не завезли?
  • пользуйте UInt64
  • Ключ
    ClickHouse поддерживает следующие виды ключей:

    Числовой ключ. UInt64. Описывается в теге <id> или ключевым словом PRIMARY KEY.
    Составной ключ. Набор значений разного типа. Описывается в теге <key> или ключевым словом PRIMARY KEY.
  • Ключ и поля словаря | Документация ClickHouse

    Ключ и поля словаря Секция <structure> описывает ключ словаря и поля, доступные для запросов. Описание в формате XML: <d

  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #231347 #231356 11:39 AM, 19 Aug 2021
    % - ни разу не регексп. Надо использовать multiMatchAny
  • опишите "нормальный".
  • если delete from xxx where - то нет
  • https://t.me/clickhouse_ru
    @hostadminonline #231361 11:56 AM, 19 Aug 2021
    подскажите плз ни как не могу найти как из tuple перевести в String с разделителем
    у меня tuple выходит из выражения dictGet('dict_users', ('fioF','fioO'), a.userId) as userName,
    а мне по сути надо concat(fioF, ' ', fioO)
  • https://t.me/clickhouse_ru
    @hostadminonline #231362 12:01 PM, 19 Aug 2021
    попробовал через arrayStringConcat говорит что у меня не массив
  • в tuple через точку можно обращаться, попробуйте

    dictGet('dict_users', ('fioF','fioO'), a.userId) as fio, concat(fio.1, ' ', fio.2) AS userName
  • https://t.me/clickhouse_ru
    @hostadminonline #231364 12:08 PM, 19 Aug 2021
    оООО ... спасибо
  • а как вы создавали словарь что можете сразу несколько значений достать? что-то у меня не получается
  • https://t.me/clickhouse_ru
    @hostadminonline #231366 12:09 PM, 19 Aug 2021
    запросом )
  • https://t.me/clickhouse_ru
    @hostadminonline #231367 12:09 PM, 19 Aug 2021
    ща поищу 5 сек
  • https://t.me/clickhouse_ru
    @hostadminonline #231368 12:10 PM, 19 Aug 2021
    ну вот для примера

    CREATE DICTIONARY dict_PPSources ON CLUSTER c9q930o5i86rsdloqlc9 (
    id UInt64,
    sourceName String,
    out boolean,
    parser boolean
    )
    PRIMARY KEY id
    LAYOUT(HASHED())
    SOURCE (MYSQL(
    ))
    LIFETIME ( MIN 3600 MAX 28800)
  • спасибо, видимо у вас версия новее, на 21.3 ругается
    DB::Exception: Illegal type Tuple(String, String) of second argument of function dictGet, expected a const string
  • https://t.me/clickhouse_ru
    @hostadminonline #231370 12:14 PM, 19 Aug 2021
    вот так делаете ?
    dictGet('dict_users', ('fioF', 'fioI', 'fioO'), a.userId)
  • да
  • https://t.me/clickhouse_ru
    @hostadminonline #231372 12:15 PM, 19 Aug 2021
    у нас 21.6.8.62
  • https://t.me/clickhouse_ru
    получение нескольких атрибутов одним вызовом возможно только с 21.4
  • понял, спасибо
  • https://t.me/clickhouse_ru
    какой именно .sql файл имеется ввиду?

    зачем его править
    можете поделиться результатам
    LOG_LEVEL=debug clickhouse-backup restore <last_backup> ?
  • https://t.me/clickhouse_ru
    Есть еще идеи почему появляется такая ошибка? Причем это не на все запросы
  • https://t.me/clickhouse_ru
    ошибка когда? Пользователи видят эту ошибку ? или вы видите ее в логах и вас это напряхает?
  • https://t.me/clickhouse_ru
    правильно
  • https://t.me/clickhouse_ru
    версия КХ ? это похоже на один починенный баг
  • https://t.me/clickhouse_ru
    @cassej ↶ Reply to #231380 #231381 12:30 PM, 19 Aug 2021
    20.7.2.30
  • https://t.me/clickhouse_ru
    проверьте с 20.8.19.4
  • https://t.me/clickhouse_ru
    @ExplosiveJam #231383 12:34 PM, 19 Aug 2021
    Подскажите пожалуйста, если у нас now() используется в большом запросе с подзапросами, он может в подзапросах возвращать разные значения?
  • https://t.me/clickhouse_ru
    да
    с клиента наверное лучше передавать и не использовать now()
  • https://t.me/clickhouse_ru
    @den_crane #231386 12:37 PM, 19 Aug 2021
    каждый подзапрос в КХ это отдельный запрос, который выполняется неконсистентно с другими (пока транзакций нет)
  • https://t.me/clickhouse_ru
    @den_crane #231387 12:37 PM, 19 Aug 2021
    каждый поздапрос видит свой набор партов и свое now()
  • https://t.me/clickhouse_ru
    всегда так было - никто не жаловался
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    😔
  • @vmakulov
    @dj_mixer
    @simpl1g

    Привет!
    Благодарен за ответы

    Причина, по которой кластер переходил в r-o - лимит файловых дескрипторов. Поскольку с репликами тусуются апки которые юзают соединение по веб-сокету, нашего лимита, который мы юзали везде, и который как нам казалось завышен, - оказалось мало)

    Думаю, вам полезно будет узнать 😉
  • https://t.me/clickhouse_ru
    Может быть такая ошибка когда что-то не корректно в запросе?

    И еще важно то что когда запрос выплняю с роутера то запрос не выполняется (ошибка) И в логе то что писал выше. А когда выполняю на любой из нод то все работает как надо
  • https://t.me/clickhouse_ru
    Запрос вида CREATE TEMPORARY TABLE IF NOT EXISTS tm ENGINE = Memory AS SELECT toDateTime и дальше.....
  • https://t.me/clickhouse_ru
    @dsv_ringostat #231397 01:11 PM, 19 Aug 2021
    Received exception from server (version 21.8.4):
    Code: 10. DB::Exception: Received from :9000. DB::Exception: Not found column multiIf(in(if(equals

    И ошибка
  • https://t.me/clickhouse_ru
    что такое роутер и какой программой вы выполняете запрос на роутере и какой на любой из нод?
  • https://t.me/clickhouse_ru
    Есть кластер у которого есть роутер с дистрибьютед базой и 2 шарда по 2 ноды
  • https://t.me/clickhouse_ru
    @dsv_ringostat #231400 01:15 PM, 19 Aug 2021
    Так вот на люой из нод запрос отрабатывает корректно а вот там где дистрибьютед база - нет
  • https://t.me/clickhouse_ru
    Выполняю через clickhouse-client
  • https://t.me/clickhouse_ru
    Пипец у вас терминология. Это называется нода инициатор с дистрибьютид таблицами.
    Зачем вам понадобилась такая схема?

    КХ одинаковой версии на всех? Видимо проблема в том что без локальных таблиц неправльно выводятся типы.
  • https://t.me/clickhouse_ru
    Одинаковой версии ClickHouse client version 21.8.4.51
  • https://t.me/clickhouse_ru
    Такая схема была изначально. Не я придумал. А чем она плоха?
  • https://t.me/clickhouse_ru
    @dsv_ringostat #231405 01:25 PM, 19 Aug 2021
    У меня старый кластер с такойже конфигурацией и точно с такими же данными только версии 20.1.2.4 и там все работает
  • https://t.me/clickhouse_ru
    она плоха тем что ее используют .001% пользоватей и там есть баги которые видят только они
  • https://t.me/clickhouse_ru
    @den_crane #231407 01:27 PM, 19 Aug 2021
    в реальности эти .001% пользоватей делают такую схему потому что они пихают в инициатор 2ТБ ОЗУ, а в шарды например по 128ГБ ОЗУ.
    Т.е. они экономят бабло на ОЗУ
  • https://t.me/clickhouse_ru
    @den_crane #231408 01:28 PM, 19 Aug 2021
    потому что им например нужны финальные группировки и джойны которые можно сделать только на тачках с огромным кол-вом памяти.
  • https://t.me/clickhouse_ru
    То что нужно спасибо
  • https://t.me/clickhouse_ru
    да, все так. Вам в гитхаб и там вы будете долго и нудно рассказывать как у вас все устроено чтобы это можно было воспроизвести и починить
  • https://t.me/clickhouse_ru
    @olikakraskova #231412 01:30 PM, 19 Aug 2021
    Всем привет, подскажите как обновить драйвер на dbeaver?
  • https://t.me/clickhouse_ru
    Database/Driver manager/Clickhouse/edit -> Download (Update)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    мм, у вас китайская подделка clickhouse-native
  • https://t.me/clickhouse_ru
    @olikakraskova #231416 01:35 PM, 19 Aug 2021
    по не китайской тоже самое
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Makasinov #231418 01:37 PM, 19 Aug 2021
    Подскажите можно ли как то ежедневно собирать count() всей базы и складывать её в агрегаты? Есть таблица с установками приложений, нужно в другую таблицу складывать total подписчиков каждый день аля в 00 по utc?
  • https://t.me/clickhouse_ru
    через что CH запускаете?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    а если 0.2.6 выбрать как драйвер, тоже не работает?
  • https://t.me/clickhouse_ru
    в кнопке пуск
  • https://t.me/clickhouse_ru
    @olikakraskova #231423 01:40 PM, 19 Aug 2021
    тоже
  • https://t.me/clickhouse_ru
    😒
  • https://t.me/clickhouse_ru
    встроенных шедулеров нету
  • https://t.me/clickhouse_ru
    а полностью ошибку?
    я не верю, что у вас все версии одинаковые в кластере
  • https://t.me/clickhouse_ru
    @salttan #231427 02:03 PM, 19 Aug 2021
    legacy_column_name_of_tuple_literal doesn't always work · Issue #26782 · ClickHouse/ClickHouse

    With legacy_column_name_of_tuple_literal enabled I get an exception in some queries to LOCAL tables: Not found column in(...) in block. There are only columns: ..., in(..., tuple(...)) :) select co...

  • @ivanovdns #231430 02:50 PM, 19 Aug 2021
    Добрый день! Подскажите, пожалуйста, при создании таблицы с engine = Kafka() и указанием ON CLUSTER будет ли синхронизация оффсетов между запускаемыми инстансами kafka consumer-ов?
  • https://t.me/clickhouse_ru
    @106936600 #231433 03:41 PM, 19 Aug 2021
    Всем привет, есть задача
    Таблица A с 4151822634 строк
    Таблица B с 218028 строк
    Мне нужно вывести все совпадения где A.Data = B.Data, но это жрет при JOIN слишком много памяти и я получаю DB::Exception: Memory limit (for query) exceeded
    Есть ли возможность как либо вносить так, что бы данная задача была решена при меньшем количестве памяти.
    MATERIALIZED VIEW идея не подходит
    DATA - FixedString(24)
  • https://t.me/clickhouse_ru
    SELECT * FROM A WHERE Data IN (SELECT Data FROM B)
  • https://t.me/clickhouse_ru
    +1
  • https://t.me/clickhouse_ru
    kafka engine это обычный консьмер и commit offset-ы хранятся в самой кафке (в смысле используется фича кафки про транзакции и офсеты) . kafka engine не хранит офсет и не знает про другие сервера и другие kafka engine
  • https://t.me/clickhouse_ru
    @106936600 #231438 03:53 PM, 19 Aug 2021
    И ещё вопрос, если данные только внесены, то SELECT всегда выдает Code: 40. DB::Exception: Received from localhost:9000. DB::Exception: Checksum doesn't match: corrupted data. Reference: 1684eadeca07d1b886b1e452038b99a6. Actual: 85aff8915004a9b490093c682ec73788. Size of compressed block: 131596: (while reading column Hash): (while reading from part /mnt/data/sys/clickhouse/store/c5b/c5b0687d-3d4e-46db-85b0-687d3d4e66db/all_935_1097_3/ from mark 10008 with max_rows_to_read = 57344): While executing MergeTreeThread.
    Можете подсказать из за чего это может происходить и в какую сторону копать?
    Clickhouse 21.8.3.44
  • https://t.me/clickhouse_ru
    вы хотите сказать что вы вставляете строки в таблицу и если сразу делаете select то получаете ошибку DB::Exception: Checksum doesn't match: corrupted data
    а если потом сделать запрос через некоторое время то ошибки нет?
  • https://t.me/clickhouse_ru
    @den_crane #231443 05:04 PM, 19 Aug 2021
    >(while reading column Hash)
    какой тип данных и какие кодеки у Hash? skip indexes? projections?
  • https://t.me/clickhouse_ru
    @den_crane #231444 05:05 PM, 19 Aug 2021
    это конечно баг, который надо воспроизвести и исправить.
  • https://t.me/clickhouse_ru
    @den_crane #231445 05:05 PM, 19 Aug 2021
    Скорее всего его можно обойти и в вашем сетапе
  • https://t.me/clickhouse_ru
    Тут странное поведение, делаю SELECT FORMAT Null и первая ошибка:
    Reference: d6a0142d0d8415116386a28f421b15b6. Actual: 1ccc354bc20110ef5e02c0dd25949892.
    Вторая ошибка:
    Reference: d6a0142d0d8415116386a28f421b15b6. Actual: b206ac11013609e11096a6950a741fac.
    У HASH явно ничего неуказано только Hash FixedString(16),
  • https://t.me/clickhouse_ru
    @106936600 #231447 05:06 PM, 19 Aug 2021
    Память и HDD проверял, вроде все тесты прошли ок, хотя я в этом не специалист
  • https://t.me/clickhouse_ru
    не надо показывать обрезки и пересказывать своими словами.
    показывайте всю ошибку и запрос и лучше сразу в гитхабе.
    и вы не ответили на мой вопрос https://t.me/clickhouse_ru/231442
    Denny Crane [Junior support specialist at Altinity (NB,Canada)] in ClickHouse не тормозит

    вы хотите сказать что вы вставляете строки в таблицу и если сразу делаете select то получаете ошибку DB::Exception: Checksum doesn't match: corrupted data а если потом сделать запрос через некоторое время то ошибки нет?

  • https://t.me/clickhouse_ru
    Нет, ошибка сохраняется всегда, но через какое то время Actual hash меняется
    Data Skipping Indexes - нету
    Projections - нету
    DESCRIBE TABLE выводит информацию о Hash:
    {
    "name": "Hash",
    "type": "FixedString(16)",
    "default_type": "",
    "default_expression": "",
    "comment": "",
    "codec_expression": "",
    "ttl_expression": ""
    }
    Создам issue чуть позже
    default_compression_codec.txt - CODEC(LZ4)
  • https://t.me/clickhouse_ru
    @106936600 #231450 05:13 PM, 19 Aug 2021
    Я попытаюсь сейчас перезаполнить базу и найти offset при какой информации данная ошибка возникает
  • https://t.me/clickhouse_ru
    @graid2030 #231451 05:31 PM, 19 Aug 2021
    Подскажите есть ли способ оптимизировать join
    Есть запрос вида

    SELECT ...
    FROM log r
    LEFT JOIN log AS origin ON r.typeId = 5 AND r.messageId = origin.messageId AND origin.typeId = 1

    В r всего несколько записей с typeId равной 5, но при этом судя по времени выполнения джойнится пытаются все записи. Есть какой-то способ это обойти?
  • https://t.me/clickhouse_ru
    маленькая таблица должна быть справа
  • https://t.me/clickhouse_ru
    @nyoroon #231453 05:39 PM, 19 Aug 2021
    при джойне вся правая таблица загружается в память
  • https://t.me/clickhouse_ru
    @vchernyshev #231454 05:39 PM, 19 Aug 2021
    Тут одна таблица сама с собой джоинится.
  • https://t.me/clickhouse_ru
    @nyoroon #231455 05:39 PM, 19 Aug 2021
    тут похоже что и справа, и слева одна и та же таблица
  • https://t.me/clickhouse_ru
    вот это условие зачем в секции джойна? r.typeId = 5
  • https://t.me/clickhouse_ru
    @Sablast #231457 05:40 PM, 19 Aug 2021
    уберите в where/prewhere
  • https://t.me/clickhouse_ru
    @graid2030 #231458 05:52 PM, 19 Aug 2021
    +-----------+--------+--------+
    | messageId | typeId | InstId |
    +-----------+--------+--------+
    | 1 | 1 | 1 |
    | 1 | 2 | 1 |
    | 1 | 3 | 1 |
    | 2 | 1 | 1 |
    | 2 | 5 | NULL |
    | 3 | 1 | 1 |
    +-----------+--------+--------+
  • https://t.me/clickhouse_ru
    @graid2030 #231459 05:53 PM, 19 Aug 2021
    Мне нужно получить InstId для messageId 2 c typeId 5
  • https://t.me/clickhouse_ru
    @graid2030 #231460 05:54 PM, 19 Aug 2021
    И посичтать стату в разрезе instId
  • https://t.me/clickhouse_ru
    @graid2030 #231461 05:55 PM, 19 Aug 2021
    Получить instId пытаюсь через join на этот же messageId
  • https://t.me/clickhouse_ru
    @1695040889 #231462 05:55 PM, 19 Aug 2021
    Подскажите, селест из Distributed поверх ReplicatedMergeTree на кластере 3 шарда по 2 реплики читает только из 3 источников? (21.8.3.44)
  • да
  • https://t.me/clickhouse_ru
    А почему не из 6?
  • @simpl1g #231465 05:58 PM, 19 Aug 2021
    тогда будут дублированные данные
  • https://t.me/clickhouse_ru
    Мне нужна общая стата и данные нужно добрать только когда r.typeId = 5
  • https://t.me/clickhouse_ru
    Т.е. clusterAllReplicas не поможет?
  • запрос читает из 3 шардов, но выбирает реплику 1 из 2 рандомно
  • а что вам надо сделать? clusterAllReplicas будет читать со всех реплик
  • https://t.me/clickhouse_ru
    @1695040889 #231470 06:01 PM, 19 Aug 2021
    Надо железо более плотно использовать :) Пусть и виртуальное.
    Чтение с 6 нод быстрее, чем с трех.
  • вы хотите чтобы пол запроса ходило на 1 реплику а вторая на другую?
  • https://t.me/clickhouse_ru
    @1695040889 #231472 06:03 PM, 19 Aug 2021
    Наверное, я с КХ недавно.
  • https://t.me/clickhouse_ru
    надо SAMPLE на таблице + SET max_parallel_replicas=2
  • кажется надо хорошо дружить с КХ, чтобы всё медленнее не стало так)
  • https://t.me/clickhouse_ru
    @nyoroon #231475 06:13 PM, 19 Aug 2021
    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
    @nyoroon #231478 06:18 PM, 19 Aug 2021
    можно ещё use_hedged_requests=1 чтобы ttfb уменьшить
  • https://t.me/clickhouse_ru
    @1695040889 #231479 06:20 PM, 19 Aug 2021
    Не, в смысле "на то". sampling - это же не уменьшение дюрабилити? :)
  • https://t.me/clickhouse_ru
    не делайте так. Это замедлит запросы.
  • https://t.me/clickhouse_ru
    Пашему?
  • https://t.me/clickhouse_ru
    @den_crane #231482 06:22 PM, 19 Aug 2021
    max_parallel_replicas не работает ни у кого, оно не может работать если реплик меньше 10.
  • @simpl1g #231483 06:22 PM, 19 Aug 2021
    я и не собираюсь) сэмплинг слишком сложный
  • https://t.me/clickhouse_ru
    потому что это была кривая идея изначально.
  • https://t.me/clickhouse_ru
    А можно подробнее? Интересно же.
  • https://t.me/clickhouse_ru
    sampling 0.5 не дает ускорения в 99.999% случаев.
    Максимальный sampling который имеет хоть какой-то смысл это 0.1
  • https://t.me/clickhouse_ru
    @den_crane #231487 06:25 PM, 19 Aug 2021
    вот так будет работать https://github.com/ClickHouse/ClickHouse/issues/26748
    Parallel processing on replicas, reworked. · Issue #26748 · ClickHouse/ClickHouse

    We want to parallelize data processing using multiple replicas of single shard. Every replica should process some split of data. There are the following considerations that makes the task non-trivi...

  • https://t.me/clickhouse_ru
    @den_crane #231488 06:25 PM, 19 Aug 2021
    и sampling для #26748 не нужен
  • https://t.me/clickhouse_ru
    вот это прикольно
  • https://t.me/clickhouse_ru
    @1695040889 #231490 06:27 PM, 19 Aug 2021
    И когда это будет?
  • https://t.me/clickhouse_ru
    @1695040889 #231491 06:28 PM, 19 Aug 2021
    И да, насколько это будет стабильно? 🙈
  • https://t.me/clickhouse_ru
    А с 10 сможет? Это же оверхед дичайший!
  • https://t.me/clickhouse_ru
    может никогда, может через неделю
  • https://t.me/clickhouse_ru
    "потому что это была кривая идея изначально."
  • https://t.me/clickhouse_ru
    @den_crane #231495 06:33 PM, 19 Aug 2021
    никто не пользуется max_parallel_replicas, ее Алексей порывался выпилить раза 3 уже
  • https://t.me/clickhouse_ru
    @1695040889 #231496 06:33 PM, 19 Aug 2021
    Ок, т.е. реплика на данный момент - это отказоустойчивость и ни в коем случае не ускорение. Я прав?
  • https://t.me/clickhouse_ru
    это ускорение. У нормальных людей 100-1000 запросов на кластере выполняется одновременно, загружены все 3 реплики (все 100-300 нод) равномерно
  • https://t.me/clickhouse_ru
    @1695040889 #231498 06:37 PM, 19 Aug 2021
    Ну вот мы не нормальные, нам нужно дофига писать/читать, чтение непредсказуемо, запись +/- постоянный поток.
    Как лучше распределить БД на 100ТБ данных и 64/128 процов 1ТБ оперативы?
  • https://t.me/clickhouse_ru
    @1695040889 #231499 06:41 PM, 19 Aug 2021
    Сейчас это 6 нод - 3 шарда по 2 реплики, по 32 цпу, 256ГБ
  • https://t.me/clickhouse_ru
    @1695040889 #231500 06:42 PM, 19 Aug 2021
    имеет смысл их поделить на более мелкие ноды?
  • https://t.me/clickhouse_ru
    одна железка?
  • https://t.me/clickhouse_ru
    Нет, конторская vCloud
  • https://t.me/clickhouse_ru
    ну сколько есть железных нод столько и делайте КХ
  • https://t.me/clickhouse_ru
    Эээ, кто ж мне даст столько :)
    Вопрос - имеет смысл разделить на более мелкие ноды или укрупнить?
  • https://t.me/clickhouse_ru
    @1695040889 #231505 06:58 PM, 19 Aug 2021
    укрупнять
  • https://t.me/clickhouse_ru
    тут скорее надо понять как устроена дисковая система, по цпу и памяти кол-во мало влияет.
    у вас 3 шарда, если вы сделаете 6 и при этом суммарный i/o throughput увеличится потому что они попадут на разные железные серваки то это имеет смысл.
  • https://t.me/clickhouse_ru
    можете сделать аналог circle replication.
    чтобы реплики шарили cpu с основными инстансами
    прописать load_balancing чтобы запросы выполнялись prefferred на основных
  • https://t.me/clickhouse_ru
    Да, увеличится, iops рассчитываются по объему диска. Т.е. 6/12 будут читать с 6 датастор, а 3/6 с 3. Ок, понятно.
  • https://t.me/clickhouse_ru
    @den_crane #231509 07:06 PM, 19 Aug 2021
    можно реплики задушить по cpu и memory
  • https://t.me/clickhouse_ru
    @den_crane #231510 07:06 PM, 19 Aug 2021
    если реплики вообще имеют смысл (нужны)
  • https://t.me/clickhouse_ru
    Это же вЕсами решается, вроде?
  • https://t.me/clickhouse_ru
    с чего вы взяли
  • https://t.me/clickhouse_ru
    @1695040889 #231513 07:07 PM, 19 Aug 2021
    реплики нужны, 99,9 нужно гарантировать
  • https://t.me/clickhouse_ru
    Эээ, мы может быть о разном? Я про добаление новых мелких нод с удаление старых толстыз.
  • https://t.me/clickhouse_ru
    да я вообще не об этом. Я про то как заставить работать все процессоры даже для одного запроса
  • https://t.me/clickhouse_ru
    а, это вопрос отдельный, пока нет понимания о распределении нагрузки нормальном
    да и нагрузки нет толком :)
    вопрос отдельный - про чтение с дисков
  • https://t.me/clickhouse_ru
    @1695040889 #231517 07:14 PM, 19 Aug 2021
    в пг - через сайтус получалось интересное, но их мс купил, хз чего ждать
    в кх, вроде, не нужно параллельные ноды на одном серваке пускать? :)
  • https://t.me/clickhouse_ru
    тут просто надо понять от чего защищаемся, все зависит от вашего vcloud. Может там выпадание железки вообще не приводит к нарушению работы.

    я говорю про например такой вариант

    железка1 железка3 железка3
    -------------------------------------------------------------------
    КХ1 шард1 реплика1 КХ2 шард2 реплика1 КХ3 шард3 реплика1
    10 cpu / 200GB RAM 10 cpu / 200GB RAM 10 cpu / 200GB RAM
    -------------------------------------------------------------------
    КХ4 шард3 реплика2 КХ5 шард1 реплика2 КХ6 шард2 реплика2
    3 cpu / 30GB RAM 3 cpu / 30GB RAM 3 cpu / 30GB RAM

    load_balancing посылает запросы на реплика1
  • https://t.me/clickhouse_ru
    @1695040889 #231519 07:23 PM, 19 Aug 2021
    с чего бы вдруг на р1?
  • https://t.me/clickhouse_ru
    это неожиданный вопрос, я не знаю что ответить
  • https://t.me/clickhouse_ru
    @1695040889 #231521 07:25 PM, 19 Aug 2021
    ммм, сорри
  • https://t.me/clickhouse_ru
    @den_crane #231522 07:25 PM, 19 Aug 2021
    мы видимо совсем про разное говорим
  • https://t.me/clickhouse_ru
    @1695040889 #231523 07:25 PM, 19 Aug 2021
    --send_logs_level=trace
  • https://t.me/clickhouse_ru
    @1695040889 #231524 07:25 PM, 19 Aug 2021
    я видел и вторую реплику
  • https://t.me/clickhouse_ru
    @1695040889 #231525 07:25 PM, 19 Aug 2021
    не знаю, чем вызвано
  • https://t.me/clickhouse_ru
    я говорю про setting КХ load_balancing который позволяет накрутить любые извращения
  • https://t.me/clickhouse_ru
    @den_crane #231527 07:26 PM, 19 Aug 2021
    например у меня 3 датацента и в датацентрах разные реплики
  • https://t.me/clickhouse_ru
    @den_crane #231528 07:27 PM, 19 Aug 2021
    и запросы выполняются внутри датацентра (шардированный запрос не ходит в др. датацетр)
  • https://t.me/clickhouse_ru
    @den_crane #231529 07:27 PM, 19 Aug 2021
    потому что load_balancing = nearest_hostname
  • https://t.me/clickhouse_ru
    @1695040889 #231530 07:27 PM, 19 Aug 2021
    а можно для новичков поподробнее?
  • https://t.me/clickhouse_ru
    это лекция на 4 часа, мой час стоит $800
  • https://t.me/clickhouse_ru
    @pxlvgg #231532 07:28 PM, 19 Aug 2021
    для новичков, можно как-то сделать эффективную выборку данных по дате, если первичный ключ другой? (данных 400 млн)
  • https://t.me/clickhouse_ru
    @1695040889 #231533 07:28 PM, 19 Aug 2021
    неплохо, мой меньше, но я в России
  • https://t.me/clickhouse_ru
    @pxlvgg ↶ Reply to #231532 #231534 07:31 PM, 19 Aug 2021
    а то доставать общую стату за последний час около 6 сек (за всё время 9 сек), не прикольно как-то
  • на ум приходит только партиционирование
  • https://t.me/clickhouse_ru
    Вот, кстати, хороший вопрос, КХ индексы создает по сериал данным, он понимает дату?
  • https://t.me/clickhouse_ru
    @pxlvgg ↶ Reply to #231535 #231537 07:33 PM, 19 Aug 2021
    🤔
  • но по часам это не вариант, смотрите индексы
  • https://t.me/clickhouse_ru
    а индексы вторичные по каким критериям создаются?
  • https://t.me/clickhouse_ru
    можно создать projection (select поля_первиного_ключа order by data), дальше очевидно
  • https://t.me/clickhouse_ru
    @pxlvgg #231541 07:35 PM, 19 Aug 2021
    ok, попробую
  • на сколько стабильны уже projections? в прод можно катить?
  • https://t.me/clickhouse_ru
    @pxlvgg #231543 07:36 PM, 19 Aug 2021
    а таблицы пересоздавать придётся, да?
  • https://t.me/clickhouse_ru
    на 99%
  • https://t.me/clickhouse_ru
    нет
  • а что, прямо в реальном времени считать надо? если нет, то ведь можно рассчитывать статистику раз в N минут/секунд и хранить результаты в другой таблице, откуда выборка уже мгновенная
  • https://t.me/clickhouse_ru
    @pxlvgg ↶ Reply to #231546 #231547 07:36 PM, 19 Aug 2021
    нет, по команде
  • https://t.me/clickhouse_ru
    Т.е. сломается по закону мерфи
  • https://t.me/clickhouse_ru
    ну кстати если надо какие-то статистики то тогда еще проще, можно прямо aggregating projection и там стату посчитать.
  • @dnzhirnov #231550 07:37 PM, 19 Aug 2021
    Коллеги, доброй ночи. Работаю в redash. На графиках нет возможности сделать референсные линии, поэтому пришла идея сделать отдельную серию с данными для референсной линии. Вопрос, как вставить строки в запрос, которые не существуют в БД?
  • https://t.me/clickhouse_ru
    ээ, вы не понимаете, там есть corner cases, которые еще не нашли, вы либо наступите прямо в testing либо никогда
  • https://t.me/clickhouse_ru
    Хорошая антиреклама redash
  • Redash отличная вещь. Но везде есть свои проблемы
  • если я вас правильно понял то ORDER BY WITH FILL

    https://clickhouse.tech/docs/en/sql-reference/statements/select/order-by/#orderby-with-fill
    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
    Поскольку все эти законы эмпирические, вероятность в них ступить не отличается от н[оу]ля, поэтому "обязательно" в проде.
  • https://t.me/clickhouse_ru
    вот в этом чате есть несколько человек которые поставили 21.8 - в прод и нашли проблемы. Вот это ПРОСТОПИПЕЦПРОСТОПИПЕЦШЕСТЬРАЗ безумие ехать в прод со свежим КХ. А прожекшины в прод это фигня.
  • https://t.me/clickhouse_ru
    @den_crane #231557 07:44 PM, 19 Aug 2021
    я запланировал переход на 21.8 на февраль и начал тестировать
  • https://t.me/clickhouse_ru
    Ага, я сам в аххх
  • https://t.me/clickhouse_ru
    @1695040889 #231559 07:44 PM, 19 Aug 2021
    clickhouse-client -nm -q "select version();"
    21.8.3.44
  • https://t.me/clickhouse_ru
    @1695040889 #231560 07:45 PM, 19 Aug 2021
    автоапдейтер поставил
  • Спасибо, завтра попробую. Если я правильно понял, то в принципе можно сделать запрос из последовательности чисел, например ...from number (10)
  • https://t.me/clickhouse_ru
    @1695040889 #231562 07:45 PM, 19 Aug 2021
    кто же мог ожидать такой падлюки от образа от ИТ
  • https://t.me/clickhouse_ru
    ну тогда вам про прожекшины уже не стоит переживать
  • https://t.me/clickhouse_ru
    @unamedrus #231564 07:46 PM, 19 Aug 2021
    Проекции так то дропнуть можно в один запрос,
    Даунгрейднутся это совершенно другая история
  • https://t.me/clickhouse_ru
    @1695040889 #231565 07:46 PM, 19 Aug 2021
    ну да, серваку уже пара лет, я там месяц
  • https://t.me/clickhouse_ru
    А что за история с Projection? Я и не переживал, может, стоило?
  • https://t.me/clickhouse_ru
    нет никакой истории. Projection-ы у их автора работают в кластере из тысяч нод КХ с марта в проде. А 21.8 только вышел ничего толком непонятно.
  • https://t.me/clickhouse_ru
    @den_crane #231568 07:55 PM, 19 Aug 2021
    Я тестировал Projection-ы и "продал" их кучке клиентов в Альтинити, они тестируют и тоже не находят проблем
  • https://t.me/clickhouse_ru
    "Я тестировал Projection-ы и "продал" их кучке клиентов в Альтинити, они тестируют и тоже не находят проблем" - Вы серьезно? А они знают, что тестируют?
  • https://t.me/clickhouse_ru
    в чем проблема. Я нашел и завел в гитхабе КХ багов больше чем вы найдете за 400 лет. Если я не нашел багов в Projection, то я считаю что там все неплохо и production ready
  • https://t.me/clickhouse_ru
    oui bien sur seigneur
  • https://t.me/clickhouse_ru
    я не знаю что вам ответить. Да я с автором обсуждал прожекшины еще до реализации, я почитал их код, потестировал, завел в гитхабе несколько ишью про них. Я думаю немного разбираюсь.
  • https://t.me/clickhouse_ru
    Вы странно отреагировали на мой вопрос, я не вижу проблем. Меряться письками на гитхабе? Зачем?
  • https://t.me/clickhouse_ru
    ну это странный вопрос "Вы серьезно? А они знают, что тестируют?"
    они все тестируют. Тут грабли в любом месте ровно рассыпаны. Нужно все тестировать.

    вот например

    select toInt32('-2147483648')
    ┌─toInt32('-2147483648')─┐
    │ -2147483648 │
    └────────────────────────┘

    select toInt32OrNull('-2147483648') ;
    ┌─toInt32OrNull('-2147483648')─┐
    │ ᴺᵁᴸᴸ │
    └──────────────────────────────┘
  • https://t.me/clickhouse_ru
    @1695040889 #231576 08:20 PM, 19 Aug 2021
    Ой, да ладно, пг:
    2e31 "2e31";
    2e31
    ══════════════════════════════════
    20000000000000000000000000000000
    select pow(2,31);
    pow
    ════════════
    2147483648
  • https://t.me/clickhouse_ru
    это как раз так и задумано.
    как и select toDate('xaxa-01-01');
    и это не будут исправлять
  • https://t.me/clickhouse_ru
    У нашей конторы тоже три датацентра, расположенных географически близко друг к другу. Мы на тестовом кластере, который растянут на все три ДЦ, сделали как раз через https://clickhouse.tech/docs/en/operations/settings/settings/#load_balancing-nearest_hostname балансировку.

    Идея вообще очень простая. Если IP/hostname по уму выставить, то реплика в локальном датацентре будет считаться "ближе", чем в удалённом, и запросы на неё пойдут. Там в документации пример есть.
    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
    Ооо, ─equals(toDate('xfxb-01-01'), toDate('xhxb-01-01'))─┐
    │ 1 │
    └────────────────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    @1695040889 #231581 08:34 PM, 19 Aug 2021
    select toDate('xfxb-01-01') = toDate('xhxb-01-01');
  • https://t.me/clickhouse_ru
    @1695040889 #231582 09:07 PM, 19 Aug 2021
    Очешуеть
  • https://t.me/clickhouse_ru
    @1695040889 #231583 09:07 PM, 19 Aug 2021
    select toDate('0100-08-19') = toDate('0201-08-19');

    SELECT toDate('0100-08-19') = toDate('0201-08-19')

    Query id: 197e2654-c006-444e-9cdd-051cad35b12a

    ┌─equals(toDate('0100-08-19'), toDate('0201-08-19'))─┐
    │ 1 │
    └────────────────────────────────────────────────────┘

    1 rows in set. Elapsed: 0.002 sec.
  • https://t.me/clickhouse_ru
    @dream_of_silence #231584 09:20 PM, 19 Aug 2021
    Здравствуйте, товарищи, у меня тупой вопросик, на ночь глядя, завелся: кликхаус умеет создавать json схемы своих таблиц?
  • https://t.me/clickhouse_ru
    КХ поддерживает даты в диапазоне от 1970 до 2103 и для некоректных дат делается либо сброс в 0 либо overflow

    select toDate('2021-02-38');
    ┌─toDate('2021-02-38')─┐
    │ 1970-01-01 │
    └──────────────────────┘

    select toDate('2021-02-31');
    ┌─toDate('2021-02-31')─┐
    │ 2021-03-03 │
    └──────────────────────┘
  • @simpl1g #231586 09:58 PM, 19 Aug 2021
    Подскажите, как можно дебажить таблицы с кафкой, добавил Kafka таблицу, данные не читаются через select * from hs_init_log_queue limit 1, в логах только
    <Warning> StorageKafka (hs_init_log_queue): Parsing of message (topic: hs_init_log, partition: 4, offset: 2375) return no rows

    Через kafcakat всё ок, есть много других таблиц с кафкой и там всё ок, версия 21.3
  • 20 August 2021 (155 messages)
  • @dnzhirnov #231588 05:35 AM, 20 Aug 2021
    Коллеги, добрый день! Прошу помощи. При Union all возникает ошибка Error running query: Code: 386, e.displayText() = DB::Exception: There is no supertype for types String, Float32 because some of them are String/FixedString and some of them are not (version 21.4.3.21 (official build))
    При этом все типы совпадают, указывал преобразование типов через CAST, не помогло
  • https://t.me/clickhouse_ru
    Сообщение конкретное, что-то не досмотрели
  • как я понял, ругается на то, что в объединяемых таблицах разные типы данных?
  • https://t.me/clickhouse_ru
    Да, посмотрите toTypeName() на колонках
  • @dnzhirnov #231592 05:47 AM, 20 Aug 2021
    Вторую таблицу преобразовываю в float32 И string
  • https://t.me/clickhouse_ru
    @hoha_ftf #231593 05:51 AM, 20 Aug 2021
    Покажите уже запрос:)
  • @dnzhirnov #231595 05:52 AM, 20 Aug 2021
    SELECT
    parameter as parameter,
    grouping_var as grouping_var,
    sum(perc) OVER (
    PARTITION BY (grouping_var)
    ORDER BY
    parameter ROWS BETWEEN CURRENT ROW
    AND UNBOUNDED FOLLOWING
    ) as total_perc
    from
    (
    SELECT
    l.parameter as parameter,
    l.grouping_var as grouping_var,
    l.parameter_count as parameter_count,
    r.total,
    (l.parameter_count) / r.total * 100 as perc
    from
    (
    select
    tupleElement(parameter, {{ Показатель }}) as parameter,
    tupleElement(grouping_var, {{ grouping_list }}) as grouping_var,
    count(parameter) as parameter_count
    from(
    SELECT
    tuple(PM, rulon_mark) as grouping_var,
    tuple(
    SCT_index,
    SCT_var,
    SCT_value,
    CMT_index,
    CMT_var,
    CMT_value,
    BST_index,
    BST_var,
    BST_value,
    Strength,
    Cobb,
    rulon_massa_avg,
    rulon_razber_g,
    rulon_razber_perc,
    Hum,
    Hum_razbeg
    ) as parameter
    from
    default.PhizMex
    where
    tambur_date between '{{ ВременнойИнтервал.start }}'
    and '{{ ВременнойИнтервал.end }}'
    and (
    is_reject == 0
    or is_reject IS NULL
    )
    AND rulon_mark IN ({{ СписокМарок }})
    and rulon_massa IN ({{ Граммаж }})
    and PM in ({{ БДМ }})
    )
    group by
    parameter,
    grouping_var
    ) as l
    LEFT JOIN (
    SELECT
    grouping_var,
    count(parameter) as total
    FROM
    (
    SELECT
    tupleElement(grouping_var, {{ grouping_list }}) as grouping_var,
    tupleElement(parameter, {{ Показатель }}) as parameter --tupleElement(parameter,{{ Показатель }})) as total
    --rulon_mark,
    --PM
    from
    (
    select
    --rulon_mark,
    --count(SCT_index) as total,
    tuple(PM, rulon_mark) as grouping_var,
    tuple(
    SCT_index,
    SCT_var,
    SCT_value,
    CMT_index,
    CMT_var,
    CMT_value,
    BST_index,
    BST_var,
    BST_value,
    Strength,
    Cobb,
    rulon_massa_avg,
    rulon_razber_g,
    rulon_razber_perc,
    Hum,
    Hum_razbeg
    ) as parameter --PM
    from
    default.PhizMex
    where
    tambur_date between '{{ ВременнойИнтервал.start }}'
    and '{{ ВременнойИнтервал.end }}'
    and (
    is_reject == 0
    or is_reject IS NULL
    )
    AND rulon_mark IN ({{ СписокМарок }})
    and rulon_massa IN ({{ Граммаж }})
    and PM in ({{ БДМ }})
    )
    )
    group by
    grouping_var
    ) as r using (grouping_var) --order by
    --PM,
    --rulon_mark,
    --SCT_index
    )
    UNION ALL
    Select
    CAST(number, 'Float32') as total_perc,
    CAST({{ Норма }}, 'Float32') as parameter,
    CAST('Норма', 'String') as grouping_var
    from
    numbers(100)
  • @dnzhirnov #231596 06:06 AM, 20 Aug 2021
    Есть у кого нибудь идеи?
  • @dnzhirnov #231597 06:12 AM, 20 Aug 2021
    проблема именно с колонкой String, ее убираешь из запроса и все соединяет
  • https://t.me/clickhouse_ru
    Порядок колонок сделайте одинаковым в обоих запросах
  • Спасибо! Реально помогло.
  • https://t.me/clickhouse_ru
    @datamanager #231600 06:42 AM, 20 Aug 2021
    Коллеги, помогите еще раз чайнику плиз. Пытаюсь заставить clickhouse отвечать на запросы с другого сервера. Все строго по инструкции. Итак, clickhouse слушает порт
  • https://t.me/clickhouse_ru
    @datamanager #231601 06:43 AM, 20 Aug 2021
    8123, что проверяем по lsof -i:8123
  • https://t.me/clickhouse_ru
    @datamanager #231602 06:44 AM, 20 Aug 2021
    Все ок. Теперь раскрываем строку где указывается сервер для обращения наружи. Т.е. вводим строку
  • https://t.me/clickhouse_ru
    @datamanager #231603 06:47 AM, 20 Aug 2021
    <listen_host>::.</listen_host>
  • https://t.me/clickhouse_ru
    @datamanager #231604 06:48 AM, 20 Aug 2021
    "Вводим" - это снимаем комментарии.
  • https://t.me/clickhouse_ru
    @datamanager #231605 06:49 AM, 20 Aug 2021
    Результат после перестартовки сервера - он вообще перестает слушать порт 8123. Т.е. проблемв в нарушении синтаксиса конфига скорее всего. Но в чем?
  • https://t.me/clickhouse_ru
    @datamanager #231606 06:50 AM, 20 Aug 2021
    Вроде и ошибиться тут негде. Вернул комменты на место - снова стало все слушаться
  • https://t.me/clickhouse_ru
    Вообще не редактируйте конфиг
  • https://t.me/clickhouse_ru
    @datamanager #231608 06:51 AM, 20 Aug 2021
    А как же добавить внешние сервера?
  • https://t.me/clickhouse_ru
    Если с другой тачки пинг к 8123 отвечает Ок, то всё в порядке
  • https://t.me/clickhouse_ru
    @datamanager #231610 06:53 AM, 20 Aug 2021
    Curl по адресу и порту 8123 не достукивается
  • https://t.me/clickhouse_ru
    @datamanager #231611 06:54 AM, 20 Aug 2021
    Но остальные сервисы этой машины вполне доступны
  • https://t.me/clickhouse_ru
    Ищите в сетевой доступности проблему
  • https://t.me/clickhouse_ru
    @datamanager #231613 06:56 AM, 20 Aug 2021
    Все доступно.
  • https://t.me/clickhouse_ru
    @datamanager #231614 06:56 AM, 20 Aug 2021
    Кроме сервиса clickhouse
  • Разве это не ipv6 слушать? Попробуйте указать там просто 0.0.0.0
  • @subotic0 #231616 07:06 AM, 20 Aug 2021
    Привет, подскажите пожалуйста почему
    select a,
    argMaxIf(c, b, d = 510),
    argMinIf(c, b, d = 510)
    from (select 2 as a, 3 as b, 51 as c, 510 as d
    union all
    select 2 as a, 3 as b, 55 as c, 510 as d)
    group by a

    выдает одинаковый результат для обоих arg функций? По логике 51,55 результат должен быть
    v.21.3.3.14
  • Глянул в доку. Да :: слушать все. Но для ipv4 достаточно по идее 0.0.0.0
    Для теста можете проверить.
  • https://t.me/clickhouse_ru
    Результат фантастический. Стала пускать с другой машины но перестало слушать ipv6
  • https://t.me/clickhouse_ru
    Добавьте ещё строку для v6
  • Ну все сходится. Чтобы слушать ipv6 в том числе судя по доке надо <listen_host>::</listen_host>
    Точка вроде как лишняя
  • https://t.me/clickhouse_ru
    @datamanager #231621 07:15 AM, 20 Aug 2021
    Вообще перестала слушать все порты
  • https://t.me/clickhouse_ru
    @datamanager #231622 07:17 AM, 20 Aug 2021
    О блин. В доке точка это конец предложения.
  • argMax берёт не максимальное значение c, а сначала берёт максимальное b, и потом возвращает c которое с ним в одной строке. Так как в вашем случае b одинаковый, оно для min/max берёт первое значение с. Поменяйте b чтобы увидеть разницу
  • https://t.me/clickhouse_ru
    @datamanager #231624 07:20 AM, 20 Aug 2021
    А вообще дока велит такое все выносить в пользовательские конфиги. В users.d. сделал файл root.xml - вообще асе сломал
  • https://t.me/clickhouse_ru
    Не то она велит
  • https://t.me/clickhouse_ru
    Какую-то вы хрень мутите
  • https://t.me/clickhouse_ru
    Вы же не users.xml правите, а config.xml
  • https://t.me/clickhouse_ru
    @datamanager #231629 07:41 AM, 20 Aug 2021
    В общем одну строку listen_host конфиг допускает. Две нет. Но теперь с другой машины пускает
  • https://t.me/clickhouse_ru
    @dmitry_fomin #231630 07:50 AM, 20 Aug 2021
    всем привет! я новенький в КХ, поэтому сильно не пинайте за нубские вопросы:) Скажите в КХ есть вьюшки подобные тем что есть в postgres или oracle, по которым можно определить какие запросы чего ждут (IO, CPU, какие-то внутренние локи и тд) во время выполнения, сколько запрос прочитал и записал. Или ест какой-то другой подход в определении основных источников нагрузки в пиковые периоды?
  • https://t.me/clickhouse_ru
    system.processes
    system.query_log

    Последний включать надо в конфигах
  • https://t.me/clickhouse_ru
    Есть ещё. Смотрите доку
  • https://t.me/clickhouse_ru
    спасибо! system.processes это мгновенное состояние системы в момент обращения к ней, или это запросы туда попадают только по завершению?
  • https://t.me/clickhouse_ru
    Это текущие.
    Вся история в query_log
  • https://t.me/clickhouse_ru
    К чему это гадание на кофейной гуще. Смотрите ошибку в логах.
  • https://t.me/clickhouse_ru
    @datamanager #231636 08:15 AM, 20 Aug 2021
    А как это сделать? Я не умею. Помогите плиз
  • https://t.me/clickhouse_ru
    грепайте /var/log/clickhouse-server/clickhouse-server.log
    (как один из вариантов)
  • https://t.me/clickhouse_ru
    Для начала попробуйте использовать кнопку "ответить" и писать одну мысль в одном сообщении, а не в 10. Читайте документацию по кликхаусу. Используйте поиск по чату. Для этого не требуется особых умений. Только немного внимательности и всё.
  • https://t.me/clickhouse_ru
    @MagiaGroz #231639 08:45 AM, 20 Aug 2021
    Всем привет, хочу добавить индекс ngrambf для строковых колонок со значениями в 2-3 символа,
    какие оптимальные значения поставить для этого индекса учитывая 44млн записей?
  • https://t.me/clickhouse_ru
    @mgn200 #231640 08:53 AM, 20 Aug 2021
    Добрый день. Подскажите пожалуйста по такой проблеме.
    Пытаюсь вставить/перелить данные из постгреса в кликхаус. В табличке постгреса есть timestamp поле.
    created_at timestamp(0) without time zone NOT NULL
    В табличке кликхауса это
    created_at DateTime

    Делаю
    INSERT INTO таблица_в_кх SELECT created_at FROM PostgreSQL(подключение_к_пг)
    Выдает ошибку
    DB::Exception: Cannot parse datetime: Cannot parse DateTime from String: while converting source column mode to destination column created_at: while executing 'FUNCTION CAST(mode :: 9, DateTime :: 12) -> CAST(mode, DateTime) DateTime : 11'.

    Если попробовать просто выбрать какую-нибудь одну запись из пг, то в created_at вроде валидные данные - 2021-08-20 11:09:15. Если эту же запись попробовать вставить, то выдается ошибка.
  • а колонка mode у вас есть? возможно стоит указать колонку в которую вставляет для надёжности INSERT INTO таблица_в_кх (created_at) SELECT timestamp AS created_at
  • https://t.me/clickhouse_ru
    @mgn200 ↶ Reply to #231641 #231642 08:59 AM, 20 Aug 2021
    Да, там несколько столбцов еще, в том числе mode, решил опустить для удобства. Прямое указание колонок помогло, спасибо.
  • https://t.me/clickhouse_ru
    @S_Dimitry #231643 09:14 AM, 20 Aug 2021
    День добрый. а как лучше добавить колонку к 2 Тб таблице и заполнить ее значением по join с другой таблицей?
  • https://t.me/clickhouse_ru
    @MagiaGroz #231644 09:53 AM, 20 Aug 2021
    как оптимизировать nullable(string) поля, их ведь нельзя включать в индексы
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #231644 #231646 10:14 AM, 20 Aug 2021
    не использовать nullable без особой на то надобности. Оно точно-точно нужно? Никак без него не выходит?
  • @ivanovdns #231647 10:15 AM, 20 Aug 2021
    Добрый день. А кто-ниб сталкивался с сообщением
    2021.08.20 09:39:28.447039 [ 130 ] {} <Warning> StorageKafka (kafka_nested_json): Parsing of message (topic: <topic_name>, partition: 2, offset: 50533186191) return no rows.
    Это говорит о потере данных в момент импорта Kafka-Engine-ом?
    В репо есть 1 тест (правда там не JSONEachRow как у меня, а JsonAsString формат) https://github.com/ClickHouse/ClickHouse/blob/b33391f4ec8162e9f17c5e861a18937265833d03/tests/integration/test_storage_kerberized_kafka/test.py и такое сообщение в логе как раз про ту строку, что пустая. В моем случае из топика приходит 100% непустое сообщение.
    ClickHouse/test.py at b33391f4ec8162e9f17c5e861a18937265833d03 · ClickHouse/ClickHouse

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

  • У меня такое, вчера спрашивал, но никто не ответил) Пока есть подозрение что какая-то колонка кривая. Пересоздал кафка таблицу с 2 простыми колонками и стало нормально консьюмить, сейчас вот пересоздаю с большим числом колонок и перепроверяю
  • Спасибо!
  • https://t.me/clickhouse_ru
    @BSolovyev #231651 10:34 AM, 20 Aug 2021
    Привет, появилась нужда в таблице поле переделать с Int64 на UUID, думал переименовать старую таблицу, создать новую с таким же именем но уже с полем UUID и со старой перегнать данные. Нормально? Или есть способ лучше?
  • https://t.me/clickhouse_ru
    @BSolovyev #231652 10:49 AM, 20 Aug 2021
    Какой есть хороший способ скопировать здоровую таблицу в другую с возможность изменения значения в поле?
    100+ гиговую таблицу нужно скопировать в новую и одно поле заполнить сгенеренными UUID
  • https://t.me/clickhouse_ru
    Просто dml командами?
  • https://t.me/clickhouse_ru
    Попробую, спасибо
  • https://t.me/clickhouse_ru
    @S_Dimitry #231657 11:15 AM, 20 Aug 2021
    а у кого-то было так, что запрос вечно висит к system.mutations и из-за этого Оператор Клика выедает все коннекты к бд.?рестарт не помогает
  • https://t.me/clickhouse_ru
    @mrpavelk #231658 11:28 AM, 20 Aug 2021
    Всем привет. Подскажите DB::Exception: Indices in strings are 1-based что значит?
  • https://t.me/clickhouse_ru
    В массивах и строках 1-индексация, но передали индекс 0
  • https://t.me/clickhouse_ru
    Спасибо, действительно в substring 0 указал
  • @subotic0 #231661 11:42 AM, 20 Aug 2021
    Подскажите по поводу JSONExtract
    запускаю кверю
    with '{"string_value":null}' as json
    select JSONExtract(json, 'string_value', 'Nullable(String)');
    на v.21.7.7.47 - результат налл
    на v.21.8.3.44 - результат строка 'null'
    что изменилось между версиями? в чейндж логе ничего касаемо стрингов не вижу
  • https://t.me/clickhouse_ru
    если null c большой буквы то нормально работает

    WITH '{"string_value":Null}' AS json
    SELECT JSONExtract(json, 'string_value', 'Nullable(String)')

    Query id: dc5fdae7-050e-4919-b1b8-0bb13e846edf

    ┌─JSONExtract(json, 'string_value', 'Nullable(String)')─┐
    │ ᴺᵁᴸᴸ │
    └───────────────────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    @unamedrus #231663 11:46 AM, 20 Aug 2021
    если null это ок в JSON то пишите багу на гитхаб
  • "Null" это не валидный JSON
  • https://t.me/clickhouse_ru
    пишите багу тогда
  • @dj_mixer #231667 12:04 PM, 20 Aug 2021
    никто не в курсе когда поддержка decimal уже по человечески начнет двигаться вперед? а то в comp-decimal Не особо движется + есть ещё в кубышке тикеты для него.
    а то Float64 как-то не хватает...
  • https://t.me/clickhouse_ru
    проще добавить новую колонку с полем uuid, а потом удалить существующую и переименовать новую в старую. тогда на диск будет записываться инфа только о новой колонке, а не все 100 гигов
  • https://t.me/clickhouse_ru
    там могут получится не уникальные записи
  • https://t.me/clickhouse_ru
    @BSolovyev #231670 12:17 PM, 20 Aug 2021
    если убрать id
  • https://t.me/clickhouse_ru
    так у вас же к этому моменту будет новый id на основе uuid
  • https://t.me/clickhouse_ru
    А, тоесть добавить поле uuid, заполнить и потом уже заменить поле id&
  • https://t.me/clickhouse_ru
    ну да, можно по идее даже при создании его заполнить сразу написав DEFAULT generateUUIDv4()
  • https://t.me/clickhouse_ru
    у меня ORM infi.clickhouse и это в проекте джанго всё, вот думаю как миграцию теперь сделать, чтобы она сработала потом на разных платформах, где будут её делать
  • https://t.me/clickhouse_ru
    @BSolovyev #231675 12:36 PM, 20 Aug 2021
    но за идею спасибо
  • https://t.me/clickhouse_ru
    @BSolovyev #231676 12:36 PM, 20 Aug 2021
    попробу.
  • https://t.me/clickhouse_ru
    3 sql запроса, что там думать то :)
  • https://t.me/clickhouse_ru
    Да в принципе да, наверное ты прав
  • https://t.me/clickhouse_ru
    не получится если id входит в PK
    DEFAULT generateUUIDv4() -- будет генерится в момент селекта (надо записать default на диск мутацией)
    зачем нужен uuid ? int64 меньше места на диске занимает и вдвое быстрее
  • https://t.me/clickhouse_ru
    у нас появляются дубли при генерации id такого типа
  • https://t.me/clickhouse_ru
    как генерите-то?
  • https://t.me/clickhouse_ru
    рандом завязанный на времени и ещё кое что, думали прокатит
  • https://t.me/clickhouse_ru
    @BSolovyev #231684 12:44 PM, 20 Aug 2021
    и оно канало, пока воркеров не стало 1к+
  • https://t.me/clickhouse_ru
    @BSolovyev #231685 12:45 PM, 20 Aug 2021
    решили попробовать на uuid4 переехать, там шансы поидее такие маленькие, что должно работать
  • https://t.me/clickhouse_ru
    ну так велосипедисты. facebook snowflake, sony sonyflake
  • https://t.me/clickhouse_ru
    @den_crane #231687 12:45 PM, 20 Aug 2021
    GitHub - sony/sonyflake: A distributed unique ID generator inspired by Twitter's Snowflake

    A distributed unique ID generator inspired by Twitter's Snowflake - GitHub - sony/sonyflake: A distributed unique ID generator inspired by Twitter's Snowflake

  • https://t.me/clickhouse_ru
    @BSolovyev #231688 12:45 PM, 20 Aug 2021
    ну да, мне в наследство досталось
  • https://t.me/clickhouse_ru
    @den_crane #231689 12:46 PM, 20 Aug 2021
    GitHub - twitter-archive/snowflake: Snowflake is a network service for generating unique ID numbers at high scale with some simple guarantees.

    Snowflake is a network service for generating unique ID numbers at high scale with some simple guarantees. - GitHub - twitter-archive/snowflake: Snowflake is a network service for generating unique...

  • а в кх ничего встроенного не планируется для генерации snowflake id?
  • https://t.me/clickhouse_ru
    @BSolovyev #231691 12:47 PM, 20 Aug 2021
    не хочется вязаться на внешнее чтото
  • https://t.me/clickhouse_ru
    @BSolovyev #231692 12:47 PM, 20 Aug 2021
    я бы так и из редиса мог получать id из последовательности
  • https://t.me/clickhouse_ru
    ээээ зачем? Оно нужно для дистрибьютид клиентов
  • https://t.me/clickhouse_ru
    ??????

    это не внешнее, это алогритм, кусок кода на 100 строк
  • https://t.me/clickhouse_ru
    feat: add conversions between snowflake id and dateTime(dateTime64) by jasine · Pull Request #27704 · 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
    @nyoroon #231696 12:48 PM, 20 Aug 2021
    уже замержили похоже
  • https://t.me/clickhouse_ru
    это в другую сторону, это не генерация
  • https://t.me/clickhouse_ru
    лучше редис тогда, сделать и забыть. иначе генерация uuid на уровне кликхауса не гарантирует, что у вас не будет конфликтов, хотя она точно лучше чем ваш велосипед
  • https://t.me/clickhouse_ru
    там есть dateTime64ToSnowflake, а значит можно dateTime64ToSnowflake(now64())
  • https://t.me/clickhouse_ru
    А что лучше sonyflake или uuid4?
  • https://t.me/clickhouse_ru
    @nyoroon #231701 12:49 PM, 20 Aug 2021
    хотя для последовательности не понятно как будет работать
  • https://t.me/clickhouse_ru
    это было бы очень странно
  • https://t.me/clickhouse_ru
    это конвертация формата, а в качестве генератора текущая дата - так себе уникальный генератор :)
  • https://t.me/clickhouse_ru
    sonyflake 64бита и монотонный
  • https://t.me/clickhouse_ru
    понял, спасибо, пойду изучать
  • https://t.me/clickhouse_ru
    @BSolovyev #231706 12:50 PM, 20 Aug 2021
    может это то что нужно
  • https://t.me/clickhouse_ru
    причем now64() одинаковый в рамках запроса
  • https://t.me/clickhouse_ru
    @nyoroon #231708 12:53 PM, 20 Aug 2021
    да, там никакого сиквенса и ид хоста нет, просто конвертится дата в нужный формат
  • https://t.me/clickhouse_ru
    @nyoroon #231709 12:53 PM, 20 Aug 2021
    или я криво прочитал
  • @simpl1g #231710 12:54 PM, 20 Aug 2021
    да, только первая часть id генерится
  • https://t.me/clickhouse_ru
    @pilyugina_a #231711 01:14 PM, 20 Aug 2021
    Всем привет!
    Есть таблица (фото приложила), в столбце value некоторые значения идут через запятую
    Подскажите, пожалуйста, какой функцией воспользоваться, чтобы этот массив разделить и преобразовать в Integer?
    т.е. из одной строки
    Подсолнечное | brand | 100104821,141376535,138876675,137859685
    должно получиться 4 строки
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    splitByChar или splitByRegexp потом arrayJoin
  • https://t.me/clickhouse_ru
    можно использовать splitByChar + arrayMap

    но проще всего cast ( [|| ||] , 'Array(Int64)') -- и кстати это быстрее работает
  • https://t.me/clickhouse_ru
    👍🏻👍🏻
  • https://t.me/clickhouse_ru
    @dmitriynvkv #231716 01:23 PM, 20 Aug 2021
    круто
  • https://t.me/clickhouse_ru
    @pilyugina_a #231717 01:27 PM, 20 Aug 2021
    Спасибо!
  • @SonFire #231722 03:20 PM, 20 Aug 2021
    Подскажите как t начать с 02:00:00?
    SELECT toStartOfInterval(c_date_create, INTERVAL 3 HOUR) as t, c_date_create, id_type_source, c_status, count()
    FROM ta_orders
    WHERE c_date_create >= '2019-12-30 02:00:00'
    GROUP BY c_date_create, id_type_source, c_status
    ORDER BY c_date_create, id_type_source, c_status
  • https://t.me/clickhouse_ru
    ? t >= '2019-12-30 02:00:00'
  • Обрежет до 2019-12-30 03:00:00
  • https://t.me/clickhouse_ru
    t >= toDateTime('2019-12-30 02:00:00', 'UTC')
  • Неа) Все равно до 2019-12-30 03:00:00 режет
  • https://t.me/clickhouse_ru
    ?
    t >= toDateTime('2019-12-30 02:00:00', 'Europe/Moscow')

    а данные вообще есть?
  • Есть. И время все в UTC
  • https://t.me/clickhouse_ru
    ааа.... в смысле это вывод JDBC, это не кх клиент. Вот я слепой.
    Это java конвертит в TZ вашего десктопа.

    вот так

    SELECT toString(toStartOfInterval(c_date_create, INTERVAL 3 HOUR) as t), c_date_create, id_type_source, c_status, count()
    FROM ta_orders
    WHERE c_date_create >= '2019-12-30 02:00:00'
    GROUP BY c_date_create, id_type_source, c_status
    ORDER BY c_date_create, id_type_source, c_status
  • Так же выводит и клиент CH тоже самое выдает...
  • https://t.me/clickhouse_ru
    select timezone()
  • https://t.me/clickhouse_ru
    без toStartOfInterval тоже так?
  • Вывод идет нормально, от 2019-12-30 02:00:00
  • https://t.me/clickhouse_ru
    @pxlvgg #231737 05:18 PM, 20 Aug 2021
    Какой тип индекса юзать, чтобы доставать данные за последний час к примеру (unix-time)?
  • https://t.me/clickhouse_ru
    А есть варианты?
  • https://t.me/clickhouse_ru
  • Костыль
    date_add(HOUR, 2, toStartOfInterval(mn.c_date_create, INTERVAL 3 HOUR))
  • https://t.me/clickhouse_ru
    @papabooo #231741 06:25 PM, 20 Aug 2021
    #вакансия #удаленка
    Вакансия: DBA ClickHouse
    Компания: РА Selecty
    Город: Москва
    Формат работы: remote
    Занятость: full time
    Компенсация: 150000 - 200000 net., без учета премий

    Всем привет! Мы находится в поисках Старшего Администратора СУБД ClickHouse в одну из крупнейших ритейл компаний РФ.

    🔸Задачи:
    - Администрирование СУБД ClickHouse (single instance, Cluster);
    - Автоматизация задач по сопровождению СУБД по средствам Ansible;
    - Мониторинг СУБД на базе Zabbix;
    - Решение инцидентов, запросов пользователей в части БД как 3 линия поддержки;
    🔸Пожелания к кандидату:
    - Знание СУБД ClickHouse в части DBA;
    - Навыки проведения Backup/Recovery для СУБД ClickHouse;
    - Уверенные знания SQL;
    - Знания Shell, python, ansible - как преимущество;
    - Знания Linux, на уровне администратора, необходимые для поддержки СУБД ClickHouse;
    - Навыки работы с Git - будут плюсом.
    🔸Условия:
    - Гибридный график работы (офис/дом);
    - ДМС со стоматологией;
    - Оформление по ТК РФ.

    🔸Если заинтересует, я здесь 24/7 @papabooo
    или на почту andrey.boyko@selecty.ru
  • @milovidov_an #231742 07:02 PM, 20 Aug 2021
    Доклад про хэш-таблицы: https://habr.com/en/company/yandex/blog/572588/
    C++ zero-cost abstractions на примере хеш-таблиц в ClickHouse. Доклад Яндекса

    Хеш-таблицы — это королевы структур данных. Нигде не сломано так много копий, как на оптимизации хеш-таблиц. В докладе я рассказал ещё об одной хеш-таблице, которая используется в ClickHouse. Вы...

  • None
  • https://t.me/clickhouse_ru
    Поменял nullable на string с дефолт значением через alter, кк сказал ок но при селектах выдает еррор что не может закастовать нуллабл в стринг
  • https://t.me/clickhouse_ru
    kill mutation. Меняете назад. alter update x = '' where x is null. потом снова alter
  • https://t.me/clickhouse_ru
    Да как написал сразу понял как делать) , если в дальнейшем буду делать индексы лучше какое нибудь дефолтное значение делать или пустую строку оставлять?
  • https://t.me/clickhouse_ru
    при чем индексы?
    alter не умеет nullable в not nullable конвертить, ему пофиг на дефолты
  • https://t.me/clickhouse_ru
    Я не про это, а то что пустая строка в будущем для индекса ngram будет пропускатся
  • https://t.me/clickhouse_ru
    @nyoroon #231749 07:34 PM, 20 Aug 2021
    а есть untuple, но только для массивов?
  • https://t.me/clickhouse_ru
    @nyoroon #231750 07:35 PM, 20 Aug 2021
    условно хочу сделать quantiles() и разложить по колонкам
  • https://t.me/clickhouse_ru
    @nyoroon #231751 07:36 PM, 20 Aug 2021
    можно с подзапросом, но так не интересно
  • @ilukyano #231752 07:38 PM, 20 Aug 2021
  • https://t.me/clickhouse_ru
    нет. Количество, имена и типы колонок в SQL известны до выполнения запроса.
  • https://t.me/clickhouse_ru
    @nyoroon #231754 07:46 PM, 20 Aug 2021
    размер массивов quantiles тоже известно до выполнения запроса :(
  • https://t.me/clickhouse_ru
    Fuse some aggregate functions, part 2. · Issue #25961 · ClickHouse/ClickHouse

    Continuation of #20091 If query has multiple quantile aggregate functions with the same arguments but different level parameter: SELECT quantile(0.5)(x), quantile(0.9)(x), quantile(0.95)(x) FROM .....

  • https://t.me/clickhouse_ru
    @nyoroon #231756 07:47 PM, 20 Aug 2021
    ничоси, клёво
  • 21 August 2021 (1 messages)
  • https://t.me/clickhouse_ru
    вот нафига это постить? привлечь внимание? камингаут, как это сейчас модно?
  • 22 August 2021 (4 messages)
  • https://t.me/clickhouse_ru
    Да вы зануда
  • 😂😂😂 честно говоря, не постил, наверное мой телефон живёт своей жизнью
  • Это потому что на телефоне не установлен clickhouse)
  • В точку😂
  • 23 August 2021 (117 messages)
  • @dobpilot #231790 05:28 AM, 23 Aug 2021
    Всем привет, столкнулся с проблемой экранирование символов. Есть таблица в ней поле содержащие Json , так вот при вставке \” потом селектом возвращается « что ломает структуру json
  • https://t.me/clickhouse_ru
    visitParamExtractString
  • Не годится мне надо из всей структуры
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @353222455 #231794 07:02 AM, 23 Aug 2021
    Перед отправкой принять изменения
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    😳
  • @vmihailenco #231797 07:43 AM, 23 Aug 2021
    Что можно сделать если CH 21.8.4 умирает периодически (несколько раз в час) с такой ошибкой? 21.7 то же самое. Других логов нет.

    <Fatal> Application: Child process was terminated by signal 11.
  • @vmihailenco #231798 07:48 AM, 23 Aug 2021
    используется Linux 5.4.0-1049-aws x86_64 без Docker или чего-то подобного
  • https://t.me/clickhouse_ru
    Signal 11, or officially know as "segmentation fault", means that the program accessed a memory location that was not assigned. That's usually a bug in the program. So if you're writing your own program, that's the most likely cause. However, this FAQ will concentrate on the possibilities besides that.

    смотри в dmesg, ООМа там нет?
  • https://t.me/clickhouse_ru
    @Caside #231800 08:04 AM, 23 Aug 2021
    А что указать в DDL для ENGINE=URL (таблица из CSV), чтобы исключить 1-ю строку с заголовками?
  • в syslog ничего нет, а dmesg не знаю как смотреть - есть какая-то команда? он вроде boot logs показывает и ничего больше
  • https://t.me/clickhouse_ru
    dmesg -T | grep 'kill'

    ООМ тоже показывает
  • пусто
    OOM в syslog видно обычно
    памяти вроде достаточно + есть earlyoom - все нормально
  • https://t.me/clickhouse_ru
  • я так понимаю может быть все что угодно :)
    судя по тому что у других работает - пробелема в моем конфиге или КХ клиенте...
  • https://t.me/clickhouse_ru
    или в железе
  • формат CSVWithNames
  • https://t.me/clickhouse_ru
    @qoega ↶ Reply to #231797 #231810 08:36 AM, 23 Aug 2021
    лучше всего 1) поставить пакет с дебажными символами clickhouse-common-static-dbg 2) посмотреть pid процесса ClickHouse например через pidof clickhouse
    3) запустить gdb(вероятнее всего sudo -u clickhouse gdb чтобы были права)
    4) Настроить чтобы лишнее не останавливало
    handle SIGPIPE nostop
    handle SIGHUP nostop
    handle SIGUSR1 nostop
    handle SIGUSR2 nostop
    set pagination off
    5) сделать attach <pid> потом continue
    6) когда появится ошибка сделать thread apply all bt full
    И потом нести в issues
  • спасибо, буду пробовать
  • https://t.me/clickhouse_ru
    @hatedabamboo #231813 09:23 AM, 23 Aug 2021
    Привет. Подскажите, пожалуйста, как в настройках секции ldap указать, чтобы при подключении юзера его sAMAccountname мапился к CN?
  • @worldbug #231816 09:53 AM, 23 Aug 2021
    Парни всем привет.
    Кто сталкивался с clickhouse driver bad connection
    Дестанейшон правильный, с хоста до базы достучаться могу, захожу все ок, креды тоже правильные.
    Но по таймауту при попытке подключения из когда конект валится.
    Может было у кого?
    ——
    Вопрос в гоконфу задавал, но там не ответили, может кто отсюда посоветует что нибудь
  • https://t.me/clickhouse_ru
    @Gulshan5k #231817 09:54 AM, 23 Aug 2021
    Добрый день, подскажите пожалуйста как можно получить в КХ из вот этого
    name state dt
    A X 0
    A X 1
    A X 2
    A Y 3
    A Y 4
    A X 5
    A X 6

    вот это:

    name state dt
    A X 0
    A Y 3
    A X 5
  • https://t.me/clickhouse_ru
    ну тут поможет сдвиг на единицу вниз

    A X 0 A X 1
    A X 1 A X 2
    A X 2 A Y 3 if(A Y != A X, 1, 0)
    A Y 3 A Y 4
    A Y 4 0

    потом просто where = 1
  • https://t.me/clickhouse_ru
    @MagiaGroz #231821 10:14 AM, 23 Aug 2021
    Добрый день, много таймаутов от кк и цпу иногда загружен на 100% (не постоянно) как решали? Это изза слияния кусков данных в фоне? Думаю возможно это изза того что вставляю пачками по 1к строк(или 1 минута) и этого мало, и он делает процесс слияния много раз, по сколько строк за раз оптимально вставлять?
  • https://t.me/clickhouse_ru
    а через что посоветуете сдвиги реализовать?
  • https://t.me/clickhouse_ru
    если новая версия то https://clickhouse.tech/docs/en/sql-reference/window-functions/

    если старая то neighbor
    Window Functions | ClickHouse Documentation

    [experimental] Window Functions ClickHouse supports the standard grammar for defining windows and window functions. The

  • https://t.me/clickhouse_ru
    ясно, спасибо!
  • https://t.me/clickhouse_ru
    @ivolake #231826 10:29 AM, 23 Aug 2021
    Здравствуйте
    Подскажите пожалуйста, как проверить, что значение столбца содержится в каком-то множестве?
    как питоновское if el in [el1, el2, el3, ...]: ... else:..."
  • https://t.me/clickhouse_ru
    при where=1 получается результат вот такой
    A X 2
    A Y 4
    A X 7
  • https://t.me/clickhouse_ru
    @konnectrl #231828 10:39 AM, 23 Aug 2021
    Что делать с этим ?
  • https://t.me/clickhouse_ru
    @konnectrl #231829 10:41 AM, 23 Aug 2021
    sequenceCount('(?1)(?t<20000)(?2)(?t<20000)(?3)')
  • https://t.me/clickhouse_ru
    ммм, where if(A Y != A X, 1, 0) = 1
  • https://t.me/clickhouse_ru
    @cybice #231833 11:12 AM, 23 Aug 2021
    clickhouse в интервале с 18-20 августа перестал работать на google cloud run, никто не сталкивался?
  • https://t.me/clickhouse_ru
    @cybice #231834 11:13 AM, 23 Aug 2021
    что то гугл у себя поменяли никак не оповестив как обычно
  • @mobydi #231835 11:30 AM, 23 Aug 2021
    Привет. У нас time series данные лежат в кликхаусе хочу сделать anomaly detection по верх. Подскажите куда копать и что посмотреть? Может у кого то был похожий кейс?
  • А каким образом перестал, какие ошибки?
  • https://t.me/clickhouse_ru
    @dbqpoo ↶ Reply to #231835 #231837 11:34 AM, 23 Aug 2021
    https://stackoverflow.com/a/22640362
    Я думаю это подойдёт
  • https://t.me/clickhouse_ru
    @cybice ↶ Reply to #231836 #231838 11:37 AM, 23 Aug 2021
    Из того что вижу
    <Error> auto DB::IBackgroundJobExecutor::jobExecutingTask()::(anonymous class)::operator()() const: Code: 236, e.displayText() = DB::Exception: Cancelled merging parts, Stack trace (when copying this message, always include the lines below):
    Default
    2021-08-23 13:19:00.109 MSK
    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x8b5b17a in /usr/bin/clickhouse

    И затем всегда стало
    <Error> Application: DB::ErrnoException: Cannot read from file /proc/self/statm, errno: 29, strerror: Illegal seek
  • https://t.me/clickhouse_ru
    @cybice #231839 11:41 AM, 23 Aug 2021
    Версия стояла 21.3.10.1 на последних голых вижу уже другое
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @cybice #231841 11:43 AM, 23 Aug 2021
    похоже они убрали minivm sandbox и это что то с gvisor Container Sandbox: Unsupported syscall renameat2(0xffffff9c,0x3ea665ca40b0,0xffffff9c,0x3ea665ca3ff0,0x1,0x3ea680039558). It is very likely that you can safely ignore this message and that this is not the cause of any error you might be troubleshooting. Please, refer to https://gvisor.dev/c/linux/amd64/renameat2 for more information.
  • https://t.me/clickhouse_ru
    @cybice #231842 11:45 AM, 23 Aug 2021
    но может быть что угодно
  • https://t.me/clickhouse_ru
    @cybice #231843 11:50 AM, 23 Aug 2021
    не то чтоб критично, поднимали только для тестов, но вдруг кто то уже нашел как обойти
  • https://t.me/clickhouse_ru
    create table test.tmp (name String,state String,dt UInt8)Engine=Memory() ;
    insert into test.tmp values
    ('A','X',0)
    ('A','X',1)
    ('A','X',2)
    ('A','Y',3)
    ('A','Y',4)
    ('A','X',5)
    ('A','X',6)
    ('A','X',7);

    select
    name,
    (arrayJoin(tuple_ll) as ll).1 state,
    ll.3 next_state,
    ll.5 change_dt,
    ll.4 next_change_dt,
    if(state <> next_state, 1,0) flag
    from
    (
    select
    name, arrayMap( a, b, c, d, e -> (a, b, c, d, e),
    groupArray(state) as im,
    groupArray(dt) as dts,
    arrayPopFront(arrayPushBack(im, 'M')),
    arrayPopFront(arrayPushBack(dts, 100)),
    dts) tuple_ll from(
    select *
    from
    test.tmp
    order by
    name, dt) a
    group by
    name ) where flag=1;
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @cybice ↶ Reply to #231843 #231846 12:05 PM, 23 Aug 2021
    Нашел run.googleapis.com/execution-environment: gen2 в альфе фиксит
  • https://t.me/clickhouse_ru
    @cybice #231847 12:06 PM, 23 Aug 2021
    --execution-environment=gen2
  • renameat2 не обязателен.
    А вот невозможность прочитать /proc/self/statm более важна.
    А что такое execution-environment: gen2? Я в этом не разбираюсь...
  • https://t.me/clickhouse_ru
    Есть какие-нибудь новости? Может откопали что-нибудь?
  • https://t.me/clickhouse_ru
    @cybice ↶ Reply to #231848 #231850 12:23 PM, 23 Aug 2021
    Они крутят контейнера в песочнице https://github.com/google/gvisor и в ней реально какие то вещи нереализованы. С год назад они стали тестировать новые песочницы типа minivm (даже не знаю что это) но какие то проблемы что мы имели с gvisor даже в ноде приложениях ушли. Так как это альфа то предполагаю что они просто переназвали новую песочницу ка gen2 и поменяли параметр был sandbox=minivm стал execution-environment=gen2 поэтому у нас все слетело.
    А тот же clourun очень удобен для PR деплоев, тестов и тп.
    GitHub - google/gvisor: Application Kernel for Containers

    Application Kernel for Containers. Contribute to google/gvisor development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    Сложновато, через neighber проще должно было быть
  • Ещё проверьте, может быть в версии 21.8 нет такой проблемы? Дело в том, что там файл читается с помощью pread, а не lseek + read.
  • https://t.me/clickhouse_ru
    @cybice ↶ Reply to #231852 #231853 12:27 PM, 23 Aug 2021
    Спасибо проверю
  • https://t.me/clickhouse_ru
    @konnectrl #231854 12:28 PM, 23 Aug 2021
    sequenceCount('(?1)(?t<20000)(?2)(?t<20000)(?3)')
    выдает такую ошибку
    Pattern application proves too difficult, exceeding max iterations (1000000): While executing ConvertingAggregatedToChunksSource
    При попытки его обработать например, через sum, или having
  • https://t.me/clickhouse_ru
    @ivolake #231855 12:38 PM, 23 Aug 2021
    Здравствуйте
    Подскажите, есть ли возможность дать колонке два алиаса одновременно?
    Например: SELECT sum(col) AS sumcol AS s
  • https://t.me/clickhouse_ru
    SELECT (sum(col) AS sumcol) AS s
  • https://t.me/clickhouse_ru
    @ivolake #231857 12:56 PM, 23 Aug 2021
    супер, спасибо
  • https://t.me/clickhouse_ru
    @sibbarb #231858 02:06 PM, 23 Aug 2021
    А зачем ? Если не секрет
  • https://t.me/clickhouse_ru
    чтобы использовать промежуточное значение дважды, например в двух разных колонках
  • А почему нельзя его же использовать?
  • https://t.me/clickhouse_ru
    потому что промежуточное значение может быть выражением без алиаса. например:
    select ((sum(a)+sum(b)) as s)*2 as sX2, s*3 as sX3
  • https://t.me/clickhouse_ru
    Но это не этот случай кмк
  • https://t.me/clickhouse_ru
    @S_Dimitry #231863 02:51 PM, 23 Aug 2021
    А кто как поднимает QPS на запросах с малой выборкой данных? query_log , granularity, max_threads испробовано. Получили 166 QPS
  • https://t.me/clickhouse_ru
    uncompressed_cache

    вы статью clickhouse in the storm читали?
  • https://t.me/clickhouse_ru
    вот последний момент из той статьи сейчас пробуем
  • https://t.me/clickhouse_ru
    увеличение до 186 QPS. Есть что поэффективнее?)
  • https://t.me/clickhouse_ru
    Ну что за таблица, что за запросы,
    сколько строк они читают
  • https://t.me/clickhouse_ru
    @S_Dimitry #231868 03:08 PM, 23 Aug 2021
    Таблица узкая 10 столбцов, запрос возвращает 1 агрегированную строку (сумму). Гранулярность 128. Прочитывает порядка 256 строк
  • https://t.me/clickhouse_ru
    @unamedrus #231869 03:09 PM, 23 Aug 2021
    Большая таблица?
  • https://t.me/clickhouse_ru
    буквально 200 Мб
  • https://t.me/clickhouse_ru
    @unamedrus #231871 03:10 PM, 23 Aug 2021
    Какая версия кх?
  • https://t.me/clickhouse_ru
    @S_Dimitry #231872 03:10 PM, 23 Aug 2021
    21.5
  • https://t.me/clickhouse_ru
    @unamedrus #231873 03:10 PM, 23 Aug 2021
    И кол-во строк в таблице
  • https://t.me/clickhouse_ru
    @kizimenko #231874 03:11 PM, 23 Aug 2021
    сейчас запросы стали почему то оочень медленно выполняться, то что раньше улетало за секунду сейчас не может и за 30 выполниться, причем даже на маленькой выборке, причем пару дней назад все было ок с теми же запросами. Куда порекомендуете посмотреть ?
  • https://t.me/clickhouse_ru
    Кх нужно читать блок сжатия, что есть примерно 65к байт
    те для UInt64 это будет примерно гранул 70

    Можно попробовать отключить сжатие
  • https://t.me/clickhouse_ru
    14 650 000
  • https://t.me/clickhouse_ru
    хорошо, откулючение сжатие на таблице и еще что можно предпринять?
  • https://t.me/clickhouse_ru
    SELECT * FROM system.query_log WHERE query ILIKE 'alter%';
  • https://t.me/clickhouse_ru
    версия 20.3.7.46 там не было еще этой таблицы видимо
  • https://t.me/clickhouse_ru
    @zulgabis #231880 03:33 PM, 23 Aug 2021
    железо и ОС уже смотрели на предмет ботлнеков?
  • https://t.me/clickhouse_ru
    диск был забит на 97% освободил немного места, расширю на днях. А так пока даже нет идей куда залезть посмотреть еще
  • https://t.me/clickhouse_ru
    @zulgabis #231882 03:38 PM, 23 Aug 2021
    Linux Performance Checklists for SREs

    Linux Perf Analysis in 60s (https://netflixtechblog.com/linux-performance-analysis-in-60-000-milliseconds-accc10403c55)

    1. uptime ⟶ load averages
    2. dmesg -T | tail ⟶ kernel errors
    3. vmstat 1 ⟶ overall stats by time
    4. mpstat -P ALL 1 ⟶ CPU balance
    5. pidstat 1 ⟶ process usage
    6. iostat -xz 1 ⟶ disk I/O
    7. free -m ⟶ memory usage
    8. sar -n DEV 1 ⟶ network I/O
    9. sar -n TCP,ETCP 1 ⟶ TCP stats
    10. top ⟶ check overview

    Linux Disk Checklist

    1. iostat -xz 1 ⟶ any disk I/O? if not, stop looking
    2. vmstat 1 ⟶ is this swapping? or, high sys time?
    3. df -h ⟶ are file systems nearly full?
    4. ext4slower 10 ⟶ (zfs*, xfs*, etc.) slow file system I/O?
    5. bioslower 10 ⟶ if so, check disks
    6. ext4dist 1 ⟶ check distribution and rate
    7. biolatency 1 ⟶ if interesting, check disks
    8. cat /sys/devices/…/ioerr_cnt ⟶ (if available) errors
    9. smartctl -l error /dev/sda1 ⟶ (if available) errors

    * Another short checklist. Won't solve everything. ext4slower/dist, bioslower/latency, are from bcc/BPF tools.

    Linux Network Checklist

    1. sar -n DEV,EDEV 1 ⟶ at interface limits? or use nicstat
    2. sar -n TCP,ETCP 1 ⟶ active/passive load, retransmit rate
    3. cat /etc/resolv.conf ⟶ it's always DNS
    4. mpstat -P ALL 1 ⟶ high kernel time? single hot CPU?
    5. tcpretrans ⟶ what are the retransmits? state?
    6. tcpconnect ⟶ connecting to anything unexpected?
    7. tcpaccept ⟶ unexpected workload?
    8. netstat -rnv ⟶ any inefficient routes?
    9. check firewall config ⟶ anything blocking/throttling?
    10. netstat -s ⟶ play 252 metric pickup

    * tcp*, are from bcc/BPF tools.

    Linux CPU Checklist

    1. uptime ⟶ load averages
    2. vmstat 1 ⟶ system-wide utilization, run q length
    3. mpstat -P ALL 1 ⟶ CPU balance
    4. pidstat 1 ⟶ per-process CPU
    5. CPU flame graph ⟶ CPU profiling
    6. CPU subsecond offset heat map ⟶ look for gaps
    7. perf stat -a -- sleep 10 ⟶ IPC, LLC hit ratio

    * htop can do 1-4. I'm tempted to add execsnoop for short-lived processes (it's in perf-tools or bcc/BPF tools).

    https://www.brendangregg.com/blog/2016-05-04/srecon2016-perf-checklists-for-sres.html
  • https://t.me/clickhouse_ru
    @kizimenko #231883 03:39 PM, 23 Aug 2021
    оо спасибо
  • https://t.me/clickhouse_ru
    @mezhekov #231884 03:47 PM, 23 Aug 2021
    Привет! CS 21.3.12. Подскажите пожалуйста, при создании MATERIALIZED есть ли ограничение на количество MATERIALIZED к одной таблице, INSERT идет в source таблицу в нее смотрит порядка 15 MATERIALIZED, может быть в этом месте потери данных?
  • имеете в виду матвью или materialized колонки?
  • https://t.me/clickhouse_ru
    @mezhekov #231886 03:50 PM, 23 Aug 2021
    MATERIALIZED VIEW
  • у нас есть таблицы, на которые смотрит >20 матвью
    все норм работает, потерь нет
  • https://t.me/clickhouse_ru
    Спасибо.
  • https://t.me/clickhouse_ru
    @mezhekov #231889 03:52 PM, 23 Aug 2021
    А какой обьем данных у вас?
  • https://t.me/clickhouse_ru
    @mezhekov #231890 03:53 PM, 23 Aug 2021
    и таблица на которую смотрит вьюшка реплицируется?
  • https://t.me/clickhouse_ru
    @mrpavelk #231891 03:59 PM, 23 Aug 2021
    Всем привет. Подскажите пожалуйста что не так с now()

    CREATE TABLE history.cdr_test ( ficdr_id UInt64, fiproduct_id UInt32, facontext_create DateTime('UTC'), ) ENGINE = ReplicatedReplacingMergeTree();

    INSERT INTO history.cdr_test VALUES (1, 20, now('UTC'));

    SQL Error [62]: ClickHouse exception, code: 62, host: 10.60.61.175, port: 8123; Code: 62, e.displayText() = DB::Exception: Cannot parse expression of type DateTime('UTC') here: now('UTC')) (version 20.3.19.4 (official build))
  • https://t.me/clickhouse_ru
    Если вы используете DateTIme UTC то и now('UTC') используйте
  • https://t.me/clickhouse_ru
    Так я и использовал.. тока вот ошибка
  • https://t.me/clickhouse_ru
    На 21.9 ваш пример нормально сработал

    CREATE TABLE history.cdr_test
    (
    `ficdr_id` UInt64,
    `fiproduct_id` UInt32,
    `facontext_create` DateTime('UTC')
    )
    ENGINE = ReplacingMergeTree
    ORDER BY ficdr_id

    Query id: 4774d928-a7c9-4428-a244-cde2ee200016

    Ok.

    0 rows in set. Elapsed: 0.012 sec.

    INSERT INTO history.cdr_test VALUES

    Query id: 14cb254f-a926-42f6-88ba-ee0b38b5a905

    Ok.

    1 rows in set. Elapsed: 0.017 sec.
  • https://t.me/clickhouse_ru
    раньше не было аргументов у now
  • https://t.me/clickhouse_ru
    @den_crane #231897 05:51 PM, 23 Aug 2021
    v20.10.3.30, 2020-10-28
    The function now allows an argument with timezone. This closes 15264. #15285 (flynn).
  • https://t.me/clickhouse_ru
    Clickhouse maximum amount of materialized views per base table

    Is there any limits or recommendation for maximum amount of materialized views per base table? I aim to generate several statistics reports from a table containing raw data (which contains up to 1B

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

    "select 1" сколько QPS ?

    есть такая утилита , ей померяйте свой запрос прямо на сервере КХ

    clickhouse-benchmark -c 50 <<< 'select 1'
    localhost:9000, queries 12806, QPS: 12866.100, RPS: 12866.100, MiB/s: 0.012, result RPS: 12866.100, result MiB/s: 0.012.

    clickhouse-benchmark -c 50 <<< 'select avg(number) from numbers(1000000)'
    localhost:9000, queries 7117, QPS: 7145.613, RPS: 7489174572.842, MiB/s: 57137.868, result RPS: 7145.613, result MiB/s: 0.055.
  • https://t.me/clickhouse_ru
    Завтра попробую бенчи прогнать
  • https://t.me/clickhouse_ru
    @tmarket_support #231903 06:29 PM, 23 Aug 2021
    Добрый вечер, кто деплоит через clickhouse-operator, можете пожалуйста поделиться знанием.
    При деплое прокидываю LoadBalancer, что бы ходить со внешки, но получаю рефьюз либо таймаут

    ямл с кликом
    ...
    users:
    dev/password: 1234
    dev/networks/ip:
    - "::/0"
    ...
    clickhouse стартует, но в логах отдает
    2021.08.23 17:46:31.379553 [ 53 ] {} <Warning> Application: Listen [0.0.0.0]:8123 failed: Poco::Exception. Code: 1000, e.code() = 98, e.displayText() = Net Exception: Address already in use: 0.0.0.0:8123 (version 21.7.8.58 (official build)). If it is an IPv6 or IPv4 address and your host has disabled IPv6 or IPv4, then consider to specify not disabled IPv4 or IPv6 address to listen in <listen_host> element of configuration file. Example for disabled IPv6: <listen_host>0.0.0.0</listen_host> . Example for disabled IPv4: <listen_host>::</listen_host>
    смотрю на ноде netstat -ntulp порты не заняты
    кто может плз подсказать в какую сторону думать, буду очень признателен

    upd:
    хм, теперь телнет на 8123 и 9000 не рефьюзит, но говорит следующее
    2021.08.23 18:30:24.973642 [ 58 ] {} <Error> Access(user directories): dev: Authentication failed: Code: 195, e.displayText() = DB::Exception: Connections from ::ffff:1.2.3.4 are not allowed, Stack trace (when copying this message, always include the lines below):
  • https://t.me/clickhouse_ru
    это вообще не та настройка.
    dev/networks/ip: --- это с какого адреса пускать пользователя dev (access restriction)

    >Listen [0.0.0.0]:8123 failed: Poco::Exception
    это listen_host -- какой адрес слушать, вообще другой конфиг
  • https://t.me/clickhouse_ru
    @den_crane #231905 06:49 PM, 23 Aug 2021
    clickhouse-operator/clickhouse-operator-install.yaml at master · Altinity/clickhouse-operator

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

  • https://t.me/clickhouse_ru
    сорян, поставил user/networkds/ip: "::/0"
    все прокнуло
    благодарю за инфу
  • а это на каком железе вы меряли?
  • https://t.me/clickhouse_ru
    слабенький тестовый AMD Ryzen 7 3700X 8-Core Processor
  • https://t.me/clickhouse_ru
    @den_crane #231909 06:51 PM, 23 Aug 2021
    сейчас нормальный найду
  • https://t.me/clickhouse_ru
    @den_crane #231910 06:56 PM, 23 Aug 2021
    хотя небольшая разница

    model name : Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz
    clickhouse-benchmark -c 50 <<< 'select 1'
    localhost:9000, queries 15780, QPS: 15847.346, RPS: 15847.346, MiB/s: 0.015, result RPS: 15847.346, result MiB/s: 0.015.

    clickhouse-benchmark -c 50 <<< 'select avg(number) from numbers(1000000)'
    localhost:9000, queries 8026, QPS: 8066.815, RPS: 8454667658.731, MiB/s: 64503.995, result RPS: 8066.815, result MiB/s: 0.062.
  • @softbot_xxl #231912 06:59 PM, 23 Aug 2021
    Было бы интересно повторить ClickHouse in the storm на более менее современном железе.
  • Такой результат для 2xXeon(R) Gold 5220 CPU @ 2.20GHz выглядит слабовато?

    -c 50 <<< 'select 1'
    0.0.0.0:9000, queries 72837, QPS: 20246.914, RPS: 20246.914, MiB/s: 0.019, result RPS: 20246.914, result MiB/s: 0.019.

    -c 50 <<< 'select avg(number) from numbers(1000000)'
    0.0.0.0:9000, queries 66016, QPS: 16684.659, RPS: 17486857380.115, MiB/s: 133414.134, result RPS: 16684.659, result MiB/s: 0.127.
  • https://t.me/clickhouse_ru
    нормально.
    топикстартер жаловался на "Получили 166 QPS"
    я подозреваю он померял скорость клиента или сети или чего-то такого
  • https://t.me/clickhouse_ru
    @den_crane #231915 07:02 PM, 23 Aug 2021
    тут давеча ментейнер JDBC драйвера например добавил мегатормоза в JDBC, такие что JDBC некоторые запросы дольше в 10 раз обрабатывает чем КХ.
  • @1818334388 #231916 07:28 PM, 23 Aug 2021
    Hi, new to clickhouse.
    MinMax index does not seem to be working.

    Index: INDEX destAddrIdx destAddr TYPE minmax GRANULARITY 1

    query: select * from DeliveryReport where destAddr = 917598341783;
    logs: MinMax index condition: unknown | ru
  • @1818334388 #231917 07:28 PM, 23 Aug 2021
    Translated from en - English to ru - Russian

    Привет, новичок в Clickhouse.
    Индекс MinMax не работает.

    Индекс: ИНДЕКС destAddrIdx destAddr TYPE minmax GRANULARITY 1

    запрос: выберите * из DeliveryReport, где destAddr = 917598341783;
    журналы: MinMax index условие: неизвестно

    Translated with ❤️ by @lang_translate_bot
  • https://t.me/clickhouse_ru
    ClickHouse

    ClickHouse DBMS discuss and help

  • @1818334388 #231919 07:56 PM, 23 Aug 2021
    @den_crane thanks
  • 24 August 2021 (112 messages)
  • https://t.me/clickhouse_ru
    queries 28695, QPS: 642.262, RPS: 642.262, MiB/s: 0.001, result RPS: 642.262, result MiB/s: 0.001 b иqueries 42447, QPS: 604.464, RPS: 633527009.535, MiB/s: 4833.428, result RPS: 604.464, result MiB/s: 0.005 соответственно. 2 проца 12 гигов оперативы, в вашем операторе в кубе в облаке Гугла.
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @Randomazer #231925 08:35 AM, 24 Aug 2021
    всем привет
  • https://t.me/clickhouse_ru
    @Randomazer #231926 08:35 AM, 24 Aug 2021
    по какой причине TRUNCATE может зависать на небольших таблицах и приводить к лагу репликации?
  • https://t.me/clickhouse_ru
    @Randomazer #231927 08:36 AM, 24 Aug 2021
    Есть ли какие-нибудь методы решения этой проблемы?
  • https://t.me/clickhouse_ru
    @Randomazer #231928 08:37 AM, 24 Aug 2021
    что означает [ON CLUSTER cluster] в параметрах команды TRUNCATE он в документации не описан
  • https://t.me/clickhouse_ru
    @ein_krebs #231930 08:45 AM, 24 Aug 2021
    Думаю, то же, что и везде: https://clickhouse.tech/docs/ru/sql-reference/distributed-ddl/. Странно, что TRUNCATE здесь не указан.
    Распределенные DDL запросы | Документация ClickHouse

    Распределенные DDL запросы (секция ON CLUSTER) Запросы CREATE, DROP, ALTER, RENAME поддерживают возможность распределенн

  • https://t.me/clickhouse_ru
    @AnKochem #231931 08:52 AM, 24 Aug 2021
    Всем привет. Подскажите, пожалуйста, куда копать. Таблица перешла в readonly.
    SYSTEM RESTART REPLICA ... виснет и уходит в бэкграунд

    Достал ошибки репликации:

    select * from system.replication_queue where table = '...' and lower(last_exception) != '' order by create_time desc limit 50 format Vertical

    Много ошибок вида Part 0abfb0bf7739c91f2426b4124148ad81_20919_20944_3_20945 is covered by 0abfb0bf7739c91f2426b4124148ad81_20919_21005_10_21007 but should be merged into 0abfb0bf7739c91f2426b4124148ad81_20878_20949_4_20945. This shouldn't happen often.

    есть такие
    Not executing log entry queue-0010600298 of type MERGE_PARTS for part d7319f096c4228ac6cc7eb97dbd1f45f_13720_13773_4_13771 because part d7319f096c4228ac6cc7eb97dbd1f45f_13770_13770_0_13771 is not ready yet (log entry for that part is being processed).
  • https://t.me/clickhouse_ru
    truncate и без указания on cluster чистит таблицу на всех репликах
  • https://t.me/clickhouse_ru
    @datamanager #231933 08:56 AM, 24 Aug 2021
    Коллеги, помогите с непоняткой. Есть необходимость видеть сервер clickhоuse c другой машины. Убираю в конфиге комментарии со стрки < listen_ port》0.0.0.0 《/listen_port》. Доступ с наружи появляется. Но отваливается клиент на той машине, где сервер. Пишет code 210. DB::NetExeption: connection refused (localhost:9000). Восстанавливаю комменты - клиент снова работает. Как дать доступ снаружи и не сломать клиента?
  • @softbot_xxl #231934 08:57 AM, 24 Aug 2021
    Где общаются разработчики/контрибуторы КХ? Есть ли какой-нибудь чат, mailing list, etc?
  • ON Cluster это про шарды, к репликам не относится
  • https://t.me/clickhouse_ru
    @lenasmarsa #231938 09:10 AM, 24 Aug 2021
    Ребят, около 5 минут назад упал кликхаус с ошибкой:
    Clique *ch_public is not running; actual state = orphaned
    Сейчас вроде восстановился, но отрабатывает запросы медленнее. Это что-то плановое было?..
  • https://t.me/clickhouse_ru
    вы про яндекс клауд?
  • https://t.me/clickhouse_ru
    Что? 😅
    Падали запросы с ошибкой, при этом параллельный YQL запрос остался жив.
  • https://t.me/clickhouse_ru
    вы тут своих админов ищите чтоли?) это такой общий чатик не только для тех кто в яндексе работает)
  • https://t.me/clickhouse_ru
    @lenasmarsa #231942 09:17 AM, 24 Aug 2021
    my bad!
  • https://t.me/clickhouse_ru
    @critskiy #231943 09:18 AM, 24 Aug 2021
    Всем привет, у меня немного тормозной вопрос: а где можно почитать или посмотреть про перфоманс кликхауса в случае включенного swap (ковыряние сырцов, кажется, для меня не принесло результатов D:)? Конечно понимаю, что swap отключать необходимо, но хотелось бы расширить знания относительно этого в разрезе clickhouse
  • Просто несколько цифр к разговору (benchmark запускается с другого хоста)

    1. Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz (32 cores inside the container)

    -c 100 <<< 'select 1'
    QPS: 28541.165, RPS: 28541.165, MiB/s: 0.027, result RPS: 28541.165, result MiB/s: 0.027.

    -c 100 <<< 'select avg(number) from numbers(1000000)'
    QPS: 8337.994, RPS: 8738884837.366, MiB/s: 66672.400, result RPS: 8337.994, result MiB/s: 0.064.

    2. Intel(R) Xeon(R) Silver 4214 CPU @ 2.20GHz (48 cores inside the container)

    -c 50 <<< 'select 1'
    QPS: 31402.416, RPS: 31402.416, MiB/s: 0.030, result RPS: 31402.416, result MiB/s: 0.030.

    -c 50 <<< 'select avg(number) from numbers(1000000)'
    QPS: 13614.469, RPS: 14269052290.986, MiB/s: 108864.230, result RPS: 13614.469, result MiB/s: 0.104.
  • https://t.me/clickhouse_ru
    меня бы эти цифры устроили.Но пока копаем дальше
  • @ilyas_pro #231946 10:01 AM, 24 Aug 2021
    Подскажите можно ли заставить такой запрос выдавать пустой результат?

    SELECT 0 AS c, sum(a)
    FROM (SELECT arrayJoin([1, 2]) AS a)
    WHERE 1 = 0
    GROUP BY c

    ┌─c─┬─sum(a)─┐
    │ 0 │ 0 │
    └───┴────────┘

    Я тут пытаюсь благодаря 1=0 сделать так чтобы результат был всегда пустой, но получаю одну строку с нулями

    Без группировки работает как ожидается:

    SELECT 0 AS c, a
    FROM (SELECT arrayJoin([1, 2]) AS a)
    WHERE 1 = 0

    Ok.
    0 rows in set. Elapsed: 0.005 sec.

    Суть - один столбец с константой, второй с агрегатом. Этот запрос потом куда-то ещё джойнится, такой трюк с 1=0 хотелось использовать чтобы не переписывать весь запрос, а выкидывать его части вот таким вот способом с невыполнимым условием
  • https://t.me/clickhouse_ru
    @lex_zen #231947 10:40 AM, 24 Aug 2021
    Коллеги, у меня задача нужно через clickhouse построить simpleLinearRegression на данных, где х - DateTime объект, y - Float. Напрямую это сделать нельзя, подскажите какую-нибудь эвристику, как это реализовать? преобразование вида toUInt64(timestamp) не подходит, числа разного масштаба получаются
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #231946 #231948 10:41 AM, 24 Aug 2021
    если в группировке есть группа - в выдаче будет и строка. Не нужна строка в выдаче - фильтруйте константу или сформируйте список нужных вам констант. Да хоть бы и по having, если данных немного.
    выкидывать можно и попроще - where 0, а ещё лучше через кастом переменные - https://kb.altinity.com/altinity-kb-queries-and-syntax/altinity-kb-parameterized-views
  • https://t.me/clickhouse_ru
    для этого существует стандартизация, как вариант можно взять некую дату за 0, и расчитать дельту
  • https://t.me/clickhouse_ru
    @datamanager #231951 11:09 AM, 24 Aug 2021
    В общем так. Добился методом научного тыка работы и clickhouse клиента и доступа снаружи. Решение - расскоментаривание строки 《listen_host》::《/listen_host》
  • https://t.me/clickhouse_ru
    вроде особо не общаются. только на гитхабе разве что
  • https://t.me/clickhouse_ru
    @datamanager #231953 11:11 AM, 24 Aug 2021
    Теперь слушает только на ipv6 но доступ снаружи есть и клиент тоже работает. Правда достигнутого результата я не понимаю
  • https://t.me/clickhouse_ru
    если бы вы коннектились не на localhost, а на 127.0.0.1, то и правило 0.0.0.0 бы сработало и вопросов бы не возникало
  • https://t.me/clickhouse_ru
    @datamanager #231956 11:22 AM, 24 Aug 2021
    Я снаружи пытался цепляться курлом. Не по локалхосту а по реальному адресу
  • https://t.me/clickhouse_ru
    2Cpu и 12 ram тут любые цифры могут быть, можно не смотреть в чем проблема. У меня тестовый сервер это 32 ядра и 128 озу.
  • https://t.me/clickhouse_ru
    Делаем новые ноды на более производительных CPU отключили сжатие на интересующей нас таблице, т.к 235 Мб превратилось в всего в 1.9 гб
  • https://t.me/clickhouse_ru
    Truncate может блокировать мутация или мерж
  • https://t.me/clickhouse_ru
    >Но отваливается клиент на той машине, где сервер. Пишет code 210. DB::NetExeption: connection refused (localhost:9000).
    чат всё помнит, куда вы коннектились, но не получалось
  • https://t.me/clickhouse_ru
    Но только на текущем шарде. On cluster запускает truncate на одной реплике каждого шарда
  • https://t.me/clickhouse_ru
    Потому что у вас ipv6 есть. Кх клиент ломится по ipv6 а вы его отключили. Вам либо надо :: сделать либо .:: и 0.0.0.0
  • https://t.me/clickhouse_ru
    Github и чаты ( Clickhouse developers public)
  • https://t.me/clickhouse_ru
    @datamanager #231965 11:44 AM, 24 Aug 2021
    Делал. И то и то. Клиент дает ошибку.
  • А чат где? Тоже на гитхабе?
  • https://t.me/clickhouse_ru
    используйте функцию "ответить", а то ваши сообщения вклиниваются ни к месту, у можно глаза сламать пытаяс понять о чём вы вообще
  • https://t.me/clickhouse_ru
  • Спасибо!
  • Не подскажешь права, которые должны быть у пользователя постгреса для репликации? меня ПГ культурно посылает с permission denied for database
  • https://t.me/clickhouse_ru
    ну покажите как у вас при :: ошибка

    <listen_host>::</listen_host>
  • https://t.me/clickhouse_ru
    Если только listen host :: то все работает. Если их два listen host :: и listen host 0.0.0.0 то локальный клиент дает ошибку и не запускается
  • https://t.me/clickhouse_ru
    @apilipenko83 #231974 12:11 PM, 24 Aug 2021
    Привет, подскажите как правильно сделать внешнюю таблицу, смотрящую на таблицу в другом кластере
    что-то типа как для словарей чтобы работало

    https://clickhouse.tech/docs/ru/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-sources/#dicts-external_dicts_dict_sources-clickhouse
    Источники внешних словарей | Документация ClickHouse

    Источники внешних словарей Внешний словарь можно подключить из множества источников. Общий вид XML-конфигурации: <yandex

  • https://t.me/clickhouse_ru
    нельзя ТАКИХ два,
    listen host :: и listen host 0.0.0.0, в :: уже входит 0000
    что тут непонятного, у вас client ломится по ipv6 у клиента можно либо указать куда ходить -h либо в конфиге клиента поставить
  • https://t.me/clickhouse_ru
    ни тут
    https://clickhouse.tech/docs/ru/engines/table-engines/integrations/
    ни тут
    https://clickhouse.tech/docs/ru/engines/database-engines/

    ничего похожего не нашел
    Движки таблиц для интеграции | Документация ClickHouse

    Движки таблиц для интеграции Для интеграции с внешними системами ClickHouse предоставляет различные средства, включая дв

  • https://t.me/clickhouse_ru
    к сожалению, понятия не имею
  • https://t.me/clickhouse_ru
    Ничего себе. Не знал. Спасибо!
  • https://t.me/clickhouse_ru
    create table ... as remote
  • https://t.me/clickhouse_ru
    Хм, вот не могу найти в доке ничего похожего - максимум это табличная функция, но мне надо именно таблица чтобы была.
    И отдельный кластер - это физически отдельный кластер, а не шарда (шард группа ) в рамках общего кластера
  • https://t.me/clickhouse_ru
    Можете просто описать свой отдельный кластер в <remote_servers> текущего
    и Engine=Distributed(кластер,'database','table')
  • https://t.me/clickhouse_ru
    самое важно понять, что никакого кластера в КХ не существует.

    у вас 38 вариантов, в зависимости от того что вы хотите,
    самый прямой путь описать в remote_servers еще один кластер с теми другими серверами и создать Distributed таблицы
  • https://t.me/clickhouse_ru
    Эх, а если у меня КХ в православном ЯО и доступа в файлову систему нет....
    Есть варианты ка кто это через sql вкатить?
  • https://t.me/clickhouse_ru
    create table another as remote('host1|host2,host3|host4,host5|host6',db,table,'user','password');
  • https://t.me/clickhouse_ru
    @den_crane #231985 12:24 PM, 24 Aug 2021
    | -- реплики
    , -- шарды
  • https://t.me/clickhouse_ru
    @den_crane #231986 12:25 PM, 24 Aug 2021
    host1|host2 -- две реплики первого шарда,
    host3|host4 --две реплики второго шарда,
  • @dj_mixer #231988 12:33 PM, 24 Aug 2021
    добрый день. можно ли как нибудь КХ заставить части UNION-ALL обрабатывать последовательно (непараллельно)?

    по одному подзапросы нормально влезают в память, но когда происходит UNION ALL там начинается спиллы из-за max_bytes_before_external_group_by в самих подзапросах.

    структура запроса (если поможет) https://controlc.com/ccc0b543
    SELECT making.methane_NYLON AS "NYLON" , round(making.paste,0).. - ccc0b543

    SELECT making.methane_NYLON AS "NYLON" , round(making.paste,0) AS "Moderni - ccc0b543

  • https://t.me/clickhouse_ru
    спасибо за вариант, пока выхватываю DB::NetException: Unexpected packet from server буду пытать саппорт
  • @mobydi #231990 12:59 PM, 24 Aug 2021
    Привет. Сделал kafka engine, читаю данные и в лога переодически мелькает

    Cannot parse JSON string: expected opening quote{}: (while reading the value of key HttpPlayerPlaybackEndEvent.sessionEndCode): While executing SourceFromInputStream

    При этом в кафке абсолютно нормальный и валидный json

    Как понять в чем проблема?
  • Сам спросил сам отвечаю. В текущей версии КХ опция MaterializedPostgreSQL работает только если пользователю ПГ дать Superuser и Replication права. Иначе нихрена не получается
  • @capsolo #231992 01:04 PM, 24 Aug 2021
    и обязательно проверить что во всех таблицах есть PK, ну это и в документации написано
  • https://t.me/clickhouse_ru
    искать по чату "kafka" - такие вопросы каждый день. менять kafka_format с JsonAsString на JSONEachRow или наоборот или на другой формат, который найдёте в этом чате. если ничё не помогло показываете dll и может кто-нибудь что-нибудь подскажет.
  • @capsolo #231994 01:16 PM, 24 Aug 2021
    база выкачалас в КХ, но вот репликация не работает....."Настройка wal_level должна иметь значение logical, параметр max_replication_slots должен быть равен по меньшей мере 2 в конфигурационном файле в PostgreSQL." - это сделал. В чем может быть затык? function pg_replication_slot_advance does not exist
  • @capsolo #231996 01:42 PM, 24 Aug 2021
    И опять же сам отвечу, что постгрес должен быть не старше 11-го, ибо pg_replication_slot_advance есть только с 11 версии. Может кому пригодится, кто пойдет моим путем, а так неплохо бы добавить в доки: 1 - пользователь PG должен обладать Superuser, Replication, 2- PG должен быть не старше 11 версии. Можно кстати сразу проверять версию ПГ и посылать со старой версией. Теперь мне надо как-то обосновывать переезд 2 продов, 2 пг реплик, дева, стэйджинга и дров всех клиентов на 11....а щастье было так близко...
  • https://t.me/clickhouse_ru
    Так может по старинке CDC (Debezium) + Kafka
  • https://t.me/clickhouse_ru
    @S_Dimitry #231998 01:51 PM, 24 Aug 2021
    Подскажите такой момент. 32 Приложение PHP подключается к КХ по http протоколу, но по факту я вижу только 4-5 коннектов. Насколько это нормальное поведение КХ? в логах приложений ошибок нет
  • ну я уже настроился КХ все же погонять, он красавчик. Первичная репликация все-таки прошла, я тесты погонял - это реально такая скорость, какую хочется иметь. Остался последний шаг, но на 10 пг не получится никак, разве что кафку посередине сУвать, но это как-то некрасиво
  • @capsolo #232000 01:55 PM, 24 Aug 2021
    из серии "гори все конем, мы железом зальем"
  • https://t.me/clickhouse_ru
    Ну CDC (Debezium) + Kafka > clickhouse это уже опробовано на практике
  • https://t.me/clickhouse_ru
    @unamedrus #232002 01:56 PM, 24 Aug 2021
    А с MaterializedPostgresql пока такого опыта нет, могут быть всякие особенности
  • с этим согласен. Отлавливать можно долго эти "особенности". Действительно надо подумать...ПГ на продах обновлять, драйвера у клиентов могут отвалиться....
  • https://t.me/clickhouse_ru
    Изменение нод, добавление процов и памяти подняло QPS до 1150 для select 1
  • есть где почитать о настройке такой связки или RTFM? Много ручной работы? Проектировать БД понадобится? Тут-то раз-раз и в дамки.
  • https://t.me/clickhouse_ru
    @lesikv #232006 02:44 PM, 24 Aug 2021
    Привет! подскажите плиз можно ли добавить семпл в таблицу без ее удаления?
  • @N0tNu11 #232007 02:49 PM, 24 Aug 2021
    Привет! Подскажите, пожалуйста, нормально ли использовать после из SimpleAggregateFunction() в partition by для AggregatingMergeTree и не будет ли проблем с этим.
    Пример:
    CREATE TABLE IF NOT EXISTS table
    (
    month SimpleAggregateFunction(any, UInt32),
    a FixedString(10),
    b String,
    c SimpleAggregateFunction(max, UInt16)
    )
    ENGINE = AggregatingMergeTree()
    PARTITION BY (month)
    ORDER BY (a, b);

    month используется для PARTITION BY
  • https://t.me/clickhouse_ru
    из php по http соединения не держатся. запрос отработал. соединение закрылось
  • https://t.me/clickhouse_ru
    безсмысленно и безпощадно. лучше так не делать
  • а чем чревато? Оно вроде работает) Ну т.е. каунты совпадают после optimize final
  • https://t.me/clickhouse_ru
    записи не будут схлопываться, потому что в разных партициях. но при этом ddl говорит о том что они как бы должны. человек, который будет поддерживать это после вас полдня будет ходить в недоумении зачем так надо было делать
  • https://t.me/clickhouse_ru
    @p_tarasov #232012 02:57 PM, 24 Aug 2021
    Добрый вечер!
    Обновление словаря на отдельной ноде укладывается в миллисекунды (SYSTEM RELOAD DICTIONARY db.table), а обновление словаря на кластере (SYSTEM RELOAD DICTIONARY ON CLUSTER ch_cluster db.table) длится более 15 минут.

    Насколько в целом такое поведение корректно, с чем оно связано, и можно ли как-то ускорить обновление словарей в рамках кластера?
  • ну вот я тестирую и вижу, что схлопывается. Подскажете может как краевой кейс найти?
  • https://t.me/clickhouse_ru
    данные за разные месяцы не схлопнуться после оптимайза, но если в селекте добавить FINAL, то схлопнуться.
  • но ведь в разные патриции не разлетятся данные с одинаковым month?
  • https://t.me/clickhouse_ru
    нет. но при SELECT FINAL данные не будут разбиты по месяцам, они будут за весь период
  • https://t.me/clickhouse_ru
    Но по факту они должны открыть 32 коннекта, а не 3-4
  • я скорее оперирую данными помесячно. Т.е. фильтрую месяц конкретный. И до этого делаю opmimize final на соотвествюущую партицию
  • https://t.me/clickhouse_ru
    тогда тем более не надо делать такой костыль, чтобы потом не выстрелить себе в ногу в совершенно неожиданном месте
  • я вставляю данные на ежедневной основе. А optimize делаю в конце месяца. Как сделать партиции по-другому?
  • https://t.me/clickhouse_ru
    ну их может и открыло 32, а активных одновременно - только 3-4, а остальные закрылись
  • https://t.me/clickhouse_ru
    month SimpleAggregateFunction(any, UInt32) -> month UInt32,
  • но каждый день будет вставляться строка с однаковым month. C этим проблем не будет?
  • https://t.me/clickhouse_ru
    если вставите month в order by, то не будет. у вас же вставляются вставляться строки с одинаковым a и b, но с этим же проблем нету.
  • да, я что-то уже затуннелился. Спасибо!
  • Up
  • https://t.me/clickhouse_ru
    @Fullherdi #232029 04:11 PM, 24 Aug 2021
    Всем привет, подскажите, ошибка "Coordination::Exception: Connection loss." в system.replication_queue лечится как-то, кроме рестарта нод?
  • @milovidov_an #232033 04:39 PM, 24 Aug 2021
    Статья Testing the Performance of ClickHouse
    https://clickhouse.tech/blog/en/2021/performance-test-1/
    Testing the Performance of ClickHouse

    One of the main selling points of ClickHouse is that it's very fast, in many cases utilizing the hardware up to the theo

  • None
  • https://t.me/clickhouse_ru
    @irina_zakharovaa #232035 04:43 PM, 24 Aug 2021
    Подскажите, пожалуйста, как посмотреть как формируется view в кх?
  • https://t.me/clickhouse_ru
  • Show create ...
  • https://t.me/clickhouse_ru
    спасибо)
  • https://t.me/clickhouse_ru
    Ничоси
  • https://t.me/clickhouse_ru
    @graid2030 #232044 10:54 PM, 24 Aug 2021
    Всем привет!
    Как понял если в M View делать join таблици на саму себя, по факту он делается только на вставляемый батч, есть ли способ обойти это поведение?
  • https://t.me/clickhouse_ru
    join в MV это верный путь к суициду
  • https://t.me/clickhouse_ru
    @nyoroon #232046 11:39 PM, 24 Aug 2021
    при джойне в кх в память загружается вся правая таблица
  • https://t.me/clickhouse_ru
    @nyoroon #232047 11:39 PM, 24 Aug 2021
    и если вы это будете делать на каждый инсерт, то память кончится очень быстро
  • https://t.me/clickhouse_ru
    Если вставка редкая, то и так сойдёт :)
  • https://t.me/clickhouse_ru
    Да, насколько понял это правильно через AggregateFunction было делать, но завтра демо прототипа, а у меня вставки как надо не работают(
  • https://t.me/clickhouse_ru
    Возможно если создать вьюху и заджойнить её вместо самой таблицы, то всё будет гуд
  • https://t.me/clickhouse_ru
    Спасибо, попробую завтра как временное решение
  • https://t.me/clickhouse_ru
    слева всегда будет только вставляемый буфер, а не таблица
  • 25 August 2021 (117 messages)
  • https://t.me/clickhouse_ru
    Даже со вью как советуют выше?
  • https://t.me/clickhouse_ru
    MAtView следит за таблицей, за инсертами в эту таблицу. И получает буфер от инсерта. Первое упоминание во FROM это та самая таблица, тот самый буфер.

    Если первое упоминание во FROM это какая-то хрень, то MAtView будет следить за инсертами в эту хрень, если вставок туда нет, то MAtView не будет триггерится.
  • https://t.me/clickhouse_ru
    @graid2030 #232055 12:09 AM, 25 Aug 2021
    Вставка в таблицу идет. В моем случае получается примерно так:
    CREATE MAT VIEW ...
    SELECT .. FROM log (буфер от инсерта)
    LEFT JOIN log (буфер от инсерта)
    Мне же нужно:
    CREATE MAT VIEW ...
    SELECT .. FROM log (буфер от инсерта)
    LEFT JOIN log (оригинальная таблица)
  • https://t.me/clickhouse_ru
    Matview не работает с таблицей он работает с инсерт блоками

    Какое у вас условие join?
    Если что в clickhouse все join только equal

    Если в одном блоке инсерт нет записей которые join между собой
    То можео пробовать делать второй mat view куда складывать данные из таблицы
    Которые потом надо join в первом матвью
  • https://t.me/clickhouse_ru
    @konnectrl #232058 06:06 AM, 25 Aug 2021
    Привествую, с помощью чего можно посчитать время между ивентами в кликхаусе ?
  • https://t.me/clickhouse_ru
    Оконные функции?
  • https://t.me/clickhouse_ru
    Можете код как это выглядит
  • @ngkam ↶ Reply to #232058 #232061 06:27 AM, 25 Aug 2021
    В таком кейсе юзали массивы. Загоняли все event_datetime и event_name в arrayZIP и дальше двигали первую часть массива через arrayPopBack , arrayPushfront
  • https://t.me/clickhouse_ru
    @datamanager #232062 06:33 AM, 25 Aug 2021
    Наладил доступ к clickhouse по rest. Работает! Прикольно.
  • https://t.me/clickhouse_ru
    Я тоже начал делать через массивы, я сделал груп бай по сессии. И я не понимаю как подсчитать несколько вхождений ивентов в одной сессии
  • @ngkam #232065 06:36 AM, 25 Aug 2021
    Group by session_id, appmetrica_device_id, event_name
  • https://t.me/clickhouse_ru
    @boklazhenko #232066 06:38 AM, 25 Aug 2021
    Ребята, всем привет. подскажите пожалуйста правильный путь, когда нужно у таблицы изменить партицирование и ключ сортировки, чтобы были затронуты также все старые данные. заранее большое спасибо
  • https://t.me/clickhouse_ru
  • @ngkam ↶ Reply to #232066 #232068 06:41 AM, 25 Aug 2021
    Как вариант: tmp таблица -> переливка в нее данных ->дроп старой -> создание аналога старой с тем же именем но новой структурой -> переливка данных из tmp в аналог -> дроп tmp
  • https://t.me/clickhouse_ru
    Спасибо, попробую, но пока без понятие что с этим делать :)
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #232070 06:45 AM, 25 Aug 2021
    Не пропустите онлайн ClickHouse митап сегодня поздно вечером по Москве . Будет два доклада, включая первое публичное обсуждение замены Зукипера — ClickHouse Keeper. https://www.meetup.com/San-Francisco-Bay-Area-ClickHouse-Meetup/events/279109379/
    ClickHouse August [Virtual] Meetup

    Wed, Aug 25, 2021, 12:00 PM: Hello ClickHouse Fans,Welcome to the August 2021 ClickHouse Meetup! We have the following great talks lined up.* Building an observability platform with Clickhouse as stor

  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #232070 #232071 06:47 AM, 25 Aug 2021
    Спасибо!
  • https://t.me/clickhouse_ru
    да спасибо, сейчас примерно таким путем и смотрим идти. а переливку простым запросом можно выполнять или есть какие то другие возможности?
  • @ngkam ↶ Reply to #232069 #232073 06:47 AM, 25 Aug 2021
    Так группировать все, далее в массив groupArray(event_datetime) m1, arrayPushfront (arrayPopBack (m1))) m2, arrayZip(m1,m2)
  • @ngkam ↶ Reply to #232072 #232074 06:48 AM, 25 Aug 2021
    Проще чем insert into select * кажется нет д
  • https://t.me/clickhouse_ru
    @zzhanabek #232075 07:17 AM, 25 Aug 2021
    Привет, всем.
    ПОднял кластер зукипера, прописал конфиг зукипера, но таблицы system.zookeeper нет в клике. Зукипер-узлы доступны, в логах зукипера и кликхауса записей по обращениям к зукиперу не нашел. Гугл молчит, куда копать?

    Делал всё по гайду https://docs.altinity.com/operationsguide/clickhouse-zookeeper/zookeeper-installation/ и приложенным внутри ссылкам
    ZooKeeper Installation and Configuration

    How to configure Zookeeper to work best with ClickHouse

  • @gvitalik #232076 07:18 AM, 25 Aug 2021
    Подскажите в чем может быть проблема,
    поставил на поиграться Clickhouse из последнего docker образа, папку /var/lib/clickhouse/store/ подключил, как внешний том. Все работает отлично, но SQL запрос вида
    drop table db1.table1
    выдает следующую ошибку:
    SQL Error [1002]: ClickHouse exception, code: 1002, host: ..., port: ...; std::exception. Code: 1001, type: std::__1::__fs::filesystem::filesystem_error, e.what() = filesystem error: in rename: Invalid cross-device link [/var/lib/clickhouse/store/96d/96d35dca-a864-4e3f-96d3-5dcaa8643e3f/table1.sql] [/var/lib/clickhouse/metadata_dropped/db1.table1.0d4bc422-30a2-446a-8d4b-c42230a2546a.sql]
    Cannot print extra info for Poco::Exception (version 21.8.4.51 (official build))
    запросы на создание/изменение таблиц работает, а с удалением не пойму что не так. Подскажите в чем может быть проблема?
  • https://t.me/clickhouse_ru
    Неактуально. Таблица появилась после создания replicatedmergetree таблицы
  • https://t.me/clickhouse_ru
    @irishman59 #232078 07:31 AM, 25 Aug 2021
    Привет!

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

    Есть одиночный сервер с базой Clickhouse, в которую интенсивно летят данные от сервисов. Сервер достаточно высоко нагружен (помимо Clickhouse на нем же крутятся сами сервисы), и свободных вычислительных ресурсов на нём практически нет.

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

    ТЗ:
    * в копию таблицы должны поступать актуальные данные из исходной таблицы, но при этом небольшое отставание (вплоть до нескольких минут) - допустимо
    * у копии таблицы должны отличаться параметры ORDER BY (по иным колонкам, чем на исходной таблице) и SETTINGS index_granularity (более разреженный, чем на исходной таблице)
    * в копии таблицы данные должны храниться меньше, чем в исходной таблице (2 суток в копии, против нескольких недель в исходной таблице)

    Вопрос: вот это вот всё можно реализовать, используя нативную репликацию Clickhouse (ReplicatedMergeTree, и т.п.)?

    Или с таким ТЗ репликация - это вообще не то что нужно, и проще/надежнее будет сделать просто обычную таблицу на втором сервере, и просто переливать в нее данные из основной таблицы "руками" (в смысле - скриптом/приложением/SQL запросами)?
  • https://t.me/clickhouse_ru
    @MakeReady #232079 07:36 AM, 25 Aug 2021
    Привет! Есть ли сбособ выгрузить команды создания всех таблиц и представлений?
  • https://t.me/clickhouse_ru
    Мне кажется проще сделать скрипт который сначала возьмет show tables
    а потом сделает show create table %tablename%
  • https://t.me/clickhouse_ru
    @MakeReady #232081 07:38 AM, 25 Aug 2021
    ну выборка из словаря проще скрипта обыно )
  • https://t.me/clickhouse_ru
    select * from system.tables
  • https://t.me/clickhouse_ru
    спасибо!
  • https://t.me/clickhouse_ru
    @mrpavelk #232085 08:16 AM, 25 Aug 2021
    Всем привет. Что-то не получается подключится к свежей установке кх, все listen_host указаны

    <listen_host>::</listen_host> <listen_host>::1</listen_host> <listen_host>127.0.0.1</listen_host>

    Выдаёт:
    clickhouse-client --host=127.0.0.1 --user default --password default
    ClickHouse client version 21.8.4.51 (official build). Connecting to 127.0.0.1:9000 as user default. Code: 210. DB::NetException: Connection refused (127.0.0.1:9000)

    Подскажите пожалуйста в чем может быть проблема?
  • https://t.me/clickhouse_ru
    @freedomwarri0r #232086 08:18 AM, 25 Aug 2021
    Всем привет.
    Ребят, а кто складывает sflow в CH, можете подсказать правильный селект что бы посчитать трафик по определенному SrcAddr ?
    Пробую таким вот запросом сделать график, но у меня почему то вместо потока в 0.5 Gbps на графике показывает 3 Gbps
    SELECT
    toUInt64(toStartOfMinute(TimeFlowStart))*1000 as t,
    sum(Bytes*SamplingRate) as sumbytes
    FROM default.flows_raw
    WHERE Date >= toDate(1629875189) AND Date <= toDate(1629878789) AND TimeFlowStart >= toDateTime(1629875189) AND TimeFlowStart <= toDateTime(1629878789) AND IPv4NumToString(reinterpretAsUInt32(substring(reverse(SrcAddr), 13,4))) LIKE '1.1.1.1'
    GROUP BY t
    ORDER BY t
  • @ngkam ↶ Reply to #232078 #232087 08:20 AM, 25 Aug 2021
    Юзаем replicatedmergetree с заливкой через buffer - нормально работает. По условиям ТЗ я бы наверно через materialized view делал.
  • https://t.me/clickhouse_ru
    @agkucherov #232089 08:43 AM, 25 Aug 2021
    ребят, подскажите есть ли какая нибудь возможность в CH 20.8.2.3 эмулировать работу функции аналитического каунта?
  • https://t.me/clickhouse_ru
    @AnKochem #232090 08:48 AM, 25 Aug 2021
    Подскажите, как можно искусственно перевести таблицу в readonly ? )
  • https://t.me/clickhouse_ru
    @mrpavelk #232091 09:18 AM, 25 Aug 2021
    Странно что кликхаус из коробки не заводится, сначала два юзера default с паролем и без, теперь это

    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x8f9557a in /usr/bin/clickhouse 1. DB::MergeTreeDataMergerMutator::mergePartsToTemporaryPart(DB::FutureMergedMutatedPart const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, DB::BackgroundProcessListEntry<DB::MergeL> 2. DB::StorageMergeTree::mergeSelectedParts(std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, bool, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::all> 3. ? @ 0x10ed5bd7 in /usr/bin/clickhouse 4. ? @ 0x10c1c9f7 in /usr/bin/clickhouse 5. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0x8fd8f18 in /usr/bin/clickhouse 6. ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda0'()>(void&&, voi> 7. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x8fd61ff in /usr/bin/clickhouse 8. ? @ 0x8fd9ae3 in /usr/bin/clickhouse 9. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so 10. __clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so (version 21.8.4.51 (official build)) 2021.08.25 11:56:33.008272 [ 52622 ] {} <Error> Application: DB::Exception: Listen [::1]:8123 failed: Poco::Exception. Code: 1000, e.code() = 98, e.displayText() = Net Exception: Address already in use:> 2021.08.25 11:57:04.466303 [ 52768 ] {} <Error> Application: DB::Exception: Listen [::1]:8123 failed: Poco::Exception. Code: 1000, e.code() = 98, e.displayText() = Net Exception: Address already in use:> 2021.08.25 11:57:35.964704 [ 52915 ] {} <Error> Application: DB::Exception: Listen [::1]:8123 failed: Poco::Exception. Code: 1000, e.code() = 98, e.displayText() = Net Exception: Address already in use:>
  • у вас порт занят
  • https://t.me/clickhouse_ru
    @zzhanabek #232094 09:30 AM, 25 Aug 2021
    Привет еще раз!
    Как безопасно удалить реплику из system.replicas?

    C зукипера удалил
  • https://t.me/clickhouse_ru
    sudo lsof -i :8123 ничего не показывает
  • https://t.me/clickhouse_ru
    @whsv26 #232097 09:32 AM, 25 Aug 2021
    Где тут агрегация вообще? Почему такая ошибка может возникать, есть в параметр подставить '00000000-0000-0000-0000-000000000000'?

    Как в КХ опциональные фильтры правильно делать?
  • https://t.me/clickhouse_ru
    А если заменить 8123 на 8124 то и он занят будет. Удивительно, что конфиг стабильной версии не даёт запустит КХ
  • https://t.me/clickhouse_ru
    @kbespalov #232099 10:17 AM, 25 Aug 2021
    Привет.

    А есть какие либо best practice что делать с ON CLUSTER DDL во время maintaince части реплик в кластере?
    Все такие запросы будут валиться с timeout покуда есть хоть 1 недоступная нода
  • https://t.me/clickhouse_ru
    кажется что страдатб и ждатб
  • https://t.me/clickhouse_ru
    Есть Replicated движок баз данных, но он пока экспериментальный
    https://clickhouse.tech/docs/en/engines/database-engines/replicated/
    Replicated | ClickHouse Documentation

    [experimental] Replicated The engine is based on the Atomic engine. It supports replication of metadata via DDL log bein

  • https://t.me/clickhouse_ru
    @kbespalov #232102 10:19 AM, 25 Aug 2021
    ReplicationMergeTree != Replicated ?
  • https://t.me/clickhouse_ru
    ReplicatedMergeTree - это движок таблицы
    А Replicated - движок базы 🙂
  • https://t.me/clickhouse_ru
    @kbespalov #232104 10:19 AM, 25 Aug 2021
    Ого сколько всего появилось, пойду читать, спасибо!
  • @softbot_xxl #232105 10:24 AM, 25 Aug 2021
    Интересно, как это будет совмещаться с заменой ЗК. Должен быть строго один ЗК ансамбль (или его замена) на весь кластер.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232078 #232106 10:26 AM, 25 Aug 2021
    я бы подключил новый сервер как шард (<remote_servers>, remote() table function, etc), сделал на старом сервере remote таблицу смотряющую на новую таблицу, и через MV писал в нее все что хочется видеть, может быть даже с какой-то обработкой .
  • @aovlexus_2 #232108 10:43 AM, 25 Aug 2021
    Здравствуйте. Помогите с такой проблемой:

    Есть следующий сетап ролей, пользователй и прав:

    user <- common_role <- specific_role <- GRANT INSERT, ALTER UPDATE, ALTER DELETE, CREATE
    TABLE, CREATE VIEW, DROP TABLE, DROP VIEW ON db.* TO specific_role;

    Добавляю новую роль по типу specific_role на другую базу данных. И от юзера пытаюсь созадть вью в этой базе - говорит что нету привелегий. Но если подождать полчаса - час, то начинает срабатывать. Возможно кто-то что то делат с инстансем в это время, не ввсегда могу сказать т.к. много людей с ним работают.

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

    Версия: 21.6.5.37
  • https://t.me/clickhouse_ru
    - попробуйте поиск по чату например по #listen_host или по тексту вашей ошибки, чтобы найти сообщения от новичков и ответы как пофиксить
    - посмотрите в конфиге порты в секции tcp_port и http_port, а потом с помощью команды netstat -tulpn посмотрите не заняты ли эти порты
  • https://t.me/clickhouse_ru
    @kotpeter #232110 11:38 AM, 25 Aug 2021
    Всем привет! Могу ли я быть уверенным, что функция extract(haystack, pattern) сработает по строке слева направо? т.е. вернёт первое попавшееся значение, начиная с начала строки
  • @capricornusx #232111 11:41 AM, 25 Aug 2021
    Добрый день)
    Кто-нибудь собирает метрики через Prometheus (v2.29.1)?

    После обновления до 21.8.4.51, Prometheus ругается:
    invalid metric type "e65499e54eb6 gauge"

    Эндпоинт отдаёт такое:

    # TYPE ClickHouseAsyncMetrics_NetworkSendDrop_br-e65499e54eb6
    gauge
    ClickHouseAsyncMetrics_NetworkSendDrop_br-e65499e54eb6 0
  • https://t.me/clickhouse_ru
    @nyoroon #232112 11:42 AM, 25 Aug 2021
    известная проблема
    https://github.com/ClickHouse/ClickHouse/issues/27799
    AsyncMetrics are not in Prometheus format · Issue #27799 · ClickHouse/ClickHouse

    Describe the issue We've updated from 21.3.4.25 to 21.8.3.44 and Prometheus metrics are broken now. According to official Prometheus documentation, The metric name specifies the general fea...

  • оу, спасибо
  • https://t.me/clickhouse_ru
    Спасибо, нашел! Действительно оставить надо было только <listen_host>::</listen_host>
  • https://t.me/clickhouse_ru
    @folknik07 #232117 01:04 PM, 25 Aug 2021
    Подскажите пожалуйста, правильно ли делаю с точки зрения архитекторы. Есть кластер из двух машин и таблица с движком ReplicatedMergeeTree. Предполагается большое количество инсертов в эту таблицу. Для этого хотел создать буферную таблицу перед реплицированной. Но вопрос как правильно это сделать с точки зрения кластера?
    Пока есть только мысль создать по одной буферной таблице на каждой ноде кластера. Правильно ли я делаю?
    Две буферные таблицы на разных нодах не будут никак связаны друг с другом. Если одна нода Клика падает, то я лишь теряю данные, хранящиеся в памяти одной буферной таблицы и продолжаю лить данные в буферную таблицу другой ноды
  • https://clickhouse.tech/docs/ru/engines/table-engines/special/buffer/, там есть момент

    Если таблица назначения является реплицируемой, то при записи в таблицу Buffer будут потеряны некоторые ожидаемые свойства реплицируемых таблиц. Из-за произвольного изменения порядка строк и размеров блоков данных, перестаёт работать дедупликация данных, в результате чего исчезает возможность надёжной exactly once записи в реплицируемые таблицы.
    Buffer | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @399999446 #232119 01:20 PM, 25 Aug 2021
    Всем привет
    Как законвертить след строку в число?
    select
    '9.56898105924598E+017' as s,
    toUInt64(s)
    --toUInt64(replace(s,'.',','))

    DB::Exception: Cannot parse string '9.56898105924598E+017' as UInt64: syntax error at position 1 (parsed just '9').
  • https://t.me/clickhouse_ru
    Ну так оно же не UInt
    это же toDecimal128 как минимум

    select
    '9.56898105924598E+017' as s,
    toDecimal128(s,1)

    проссто E+017 это не мало =)
  • https://t.me/clickhouse_ru
    drop table надо было сделать
  • @irusin #232122 01:44 PM, 25 Aug 2021
    Привет! А есть какая-либо рабочая конфигурация для компиляции последних версий ClickHouse с отключенными инструкциями SSE 4.2?

    Сейчас возникает ошибка при сборке версии v21.9.1.7770-prestable :

    [1207/9714] Building CXX object contrib/libmetrohash/CMakeFiles/metrohash.dir/src/metrohash128crc.cpp.o
    FAILED: contrib/libmetrohash/CMakeFiles/metrohash.dir/src/metrohash128crc.cpp.o
    prlimit --as=10000000000 --data=5000000000 --cpu=600 /usr/bin/ccache /usr/bin/clang++-11 -DSTD_EXCEPTION_HAS_STACK_TRACE=1 -I../contrib/sentry-native/include -I../contrib/libmetrohash/src -I../base/glibc-compatibility/memcpy -isystem ../contrib/libcxx/include -isystem ../contrib/libcxxabi/include -isystem ../contrib/libunwind/include -isystem ../contrib/libc-headers/x86_64-linux-gnu -isystem ../contrib/libc-headers -g -O2 -fdebug-prefix-map=/build/ClickHouse=. -specs=/usr/share/dpkg/no-pie-compile.specs -Wdate-time -fdiagnostics-color=always -fsized-deallocation -gdwarf-aranges -pipe -fasynchronous-unwind-tables -falign-functions=32 -Wall -Wno-unused-command-line-argument -fdiagnostics-absolute-paths -fexperimental-new-pass-manager -Werror -w -O2 -g -DNDEBUG -O3 -flto=thin -fno-pie -D OS_LINUX -nostdinc++ -std=gnu++2a -MD -MT contrib/libmetrohash/CMakeFiles/metrohash.dir/src/metrohash128crc.cpp.o -MF contrib/libmetrohash/CMakeFiles/metrohash.dir/src/metrohash128crc.cpp.o.d -o contrib/libmetrohash/CMakeFiles/metrohash.dir/src/metrohash128crc.cpp.o -c ../contrib/libmetrohash/src/metrohash128crc.cpp
    /build/ClickHouse/contrib/libmetrohash/src/metrohash128crc.cpp:46:21: error: always_inline function '\''_mm_crc32_u64'\'' requires target feature '\''sse4.2'\'', but would be inlined into function '\''metrohash128crc_1'\'' that is compiled without support for '\''sse4.2'\''
    v[0] ^= _mm_crc32_u64(v[0], read_u64(ptr)); ptr += 8;

    Пробовал с clang-11, clang-10. Пока пробую последовательно понижать версию clang, но может есть известный работающий способ?
  • https://t.me/clickhouse_ru
    😂 спасибо
  • https://t.me/clickhouse_ru
    @Anastasiya_Gerasimova #232124 02:08 PM, 25 Aug 2021
    Здравствуйте. Подскажите пожалуйста как в логе может встречаться таблица, которой фактически нет (она была переименована и обращений по старому имени нет) ?
  • https://t.me/clickhouse_ru
    может быть , путь в Зукипере ?
  • https://t.me/clickhouse_ru
    проверила, нет к сожалению
  • https://t.me/clickhouse_ru
    какой лог имеется ввиду?
    clickhouse-server.log?

    покажите сообщение? в каком контексте упоминается таблица?

    если у вас Atomic database engine
    то там таблица не сразу удаляется надо удалять через DROP TABLE db.table_name SYNC
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    это не баг, это фича
  • https://t.me/clickhouse_ru
    я тут имени таблицы даже не вижу =)
  • https://t.me/clickhouse_ru
    @Anastasiya_Gerasimova #232131 02:19 PM, 25 Aug 2021
    это и не надо, так как схему тоже не видно
  • https://t.me/clickhouse_ru
    @evgeny_relap #232132 02:20 PM, 25 Aug 2021
    у меня тут начал жутко тормозить clickhouse-client, запускался долго долго, запросы не выполнял нормально, подвисая даже на desc table; я долго искал, и нашел что история запросов кх в файлике в хомяке выросла до 187мб.... если у кого такие проблемы, возьмите на заметку
  • https://t.me/clickhouse_ru
    но если бы таблица не удалилась, то она должна быть видна в списке таблиц, а ее нет . Или я ошибаюсь?
  • https://t.me/clickhouse_ru
    Спасибо, принял
  • https://t.me/clickhouse_ru
    Спасибо, услышал.

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

    Поэтому задача в том числе без вмешательства в работу старого сервера это сделать.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232078 #232138 02:36 PM, 25 Aug 2021
    так вы и не будете вмешиваться в него особо. можно создать указанную remote таблицу и MV в отдельной базе данных - это немного абстрагирует и может кого-то успокоит.
    Если же есть жесткое требование делать чисто на клиенте, без MV, то придется поллить исходную таблицу раз в минуту, сохранять позицию (например какой-то таймстемп), и писать добытые данные на новый сервер. Нагрузка чуть выше, работает чуть медленнее, зато не трогает легаси.
  • https://t.me/clickhouse_ru
    Спасибо еще раз за идеи, обдумаем...

    Нет, требование не жесткое, тут скорее "а вот как бы нам проще/лучше сделать, не городя огород из ненужных костылей", чтобы это было просто обслуживать, поддерживать.

    Поэтому и пришел спросить тут, кто как подобное бы реализовал из опыта.
  • https://t.me/clickhouse_ru
    Atomic расчитан на то, что вы когда удаляете таблицу через DROP TABLE
    еще могут идти какие то SELECT
    и соответсвенно чтобы не блокировать удаление или не отменять SELECT
    поступают хитро
    данные на диске физически еще 480 секунд живут...
    и соответсвенно если были какие то SELECT то они завершаются без всяких ошибок...
    а в system.tables таблицы уже нет

    покажите результат запроса
    SELECT name, engine FROM system.databases?
  • https://t.me/clickhouse_ru
    default,Ordinary
  • https://t.me/clickhouse_ru
    @ikushmantsev #232143 02:59 PM, 25 Aug 2021
    Доброго дня! Подскажите пожалуйста как объяснить такое поведение функции decrypt:

    CREATE TABLE t (
    xxxx Nullable(String),
    iviv Nullable(String)
    ) ENGINE = MergeTree() ORDER BY tuple();

    INSERT INTO t VALUES (null, null);

    запросы работаеют как ожидается:

    SELECT decrypt('aes-256-gcm', NULL, '12345678901234567890123456789012', NULL) FROM t;
    SELECT decrypt('aes-256-gcm', xxxx, '12345678901234567890123456789012', NULL) FROM t;
    SELECT decrypt('aes-256-gcm', NULL, '12345678901234567890123456789012', iviv) FROM t;

    а такой падает:

    SELECT decrypt('aes-256-gcm', xxxx, '12345678901234567890123456789012', iviv) FROM t;

    DB::Exception: Encrypted data is smaller than the size of additional data for AEAD mode, cannot decrypt.: while executing 'FUNCTION decrypt('aes-256-gcm' :: 2, xxxx :: 0, '12345678901234567890123456789012' :: 3, iviv :: 1) -> decrypt('aes-256-gcm', xxxx, '12345678901234567890123456789012', iviv) String : 4’.

    Версия сервера 21.3.15
  • https://t.me/clickhouse_ru
    Каннот он систем енджин
  • https://t.me/clickhouse_ru
    replicatedMergeTree удалять надо, а не system.replicas
  • https://t.me/clickhouse_ru
    Не создалось ничего
  • https://t.me/clickhouse_ru
    @zzhanabek #232147 03:07 PM, 25 Aug 2021
    Я хотел создать таблицу, началась активность с зукипером, но упало таймаутом. Таблицы нет, а запись о реплике естт
  • https://t.me/clickhouse_ru
    тогда в двойне странно =)

    но на скриншоте я вообще никакой таблицы не видел там какие то куски того что кто-то какой то запрос запускает...
  • https://t.me/clickhouse_ru
    таблица не была удалена, она была переименована
  • https://t.me/clickhouse_ru
    а есть где-то дока про это?
  • https://t.me/clickhouse_ru
    @salttan #232151 03:12 PM, 25 Aug 2021
    некоторые потоки продолжают писать в лог старое имя, так всегда было
  • https://t.me/clickhouse_ru
    @Anastasiya_Gerasimova #232152 03:12 PM, 25 Aug 2021
    я сначала подумала что это шутка, про не баг, а фича
  • https://t.me/clickhouse_ru
    @Anastasiya_Gerasimova #232153 03:13 PM, 25 Aug 2021
    спасибо всем большое!
  • https://t.me/clickhouse_ru
    про многопоточную запись в логи? ну, надо понять как файловый ввод вывод работает.... и что такое треды =)
  • https://t.me/clickhouse_ru
    @Anastasiya_Gerasimova #232155 03:14 PM, 25 Aug 2021
    нет, про то что переименовал таблицу, а в логах она далеко не 10 минут будет со старым именем
  • https://t.me/clickhouse_ru
    до следующего рестарта
  • https://t.me/clickhouse_ru
    @salttan #232157 03:14 PM, 25 Aug 2021
    или можно сделать detach/attach table
  • https://t.me/clickhouse_ru
    благодарю)
  • https://t.me/clickhouse_ru
    смайлика не было 🙂
  • https://t.me/clickhouse_ru
    всю папку надо /var/lib/clickhouse
    store это не то что вы подумали
  • https://t.me/clickhouse_ru
    пароля нет. --password не нужен

    >Connection refused
    CH не запущен (не запустился) service clickhouse-server status
  • https://t.me/clickhouse_ru
    8 бит в байте ? на 8 надо поделить?
  • https://t.me/clickhouse_ru
    да, на массивах
  • https://t.me/clickhouse_ru
    Есть какой-нибудь пример? Буду признателен :)
  • https://t.me/clickhouse_ru
    ради теста? в смысле для CI ?
  • https://t.me/clickhouse_ru
    числа от 0 до 9, разбиты на 3 группы

    select number x, number%3 g from numbers(10);
    ┌─x─┬─g─┐
    │ 0 │ 0 │
    │ 1 │ 1 │
    │ 2 │ 2 │
    │ 3 │ 0 │
    │ 4 │ 1 │
    │ 5 │ 2 │
    │ 6 │ 0 │
    │ 7 │ 1 │
    │ 8 │ 2 │
    │ 9 │ 0 │
    └───┴───┘
  • https://t.me/clickhouse_ru
    @den_crane #232170 06:29 PM, 25 Aug 2021
    посчитаем count в группе
    select g, arrayJoin(gx) x, cnt from (select g, groupArray(x) gx, count() cnt from (select number x, number%3 g from numbers(10)) group by g) ;
    ┌─g─┬─x─┬─cnt─┐
    │ 0 │ 0 │ 4 │
    │ 0 │ 3 │ 4 │
    │ 0 │ 6 │ 4 │
    │ 0 │ 9 │ 4 │
    │ 1 │ 1 │ 3 │
    │ 1 │ 4 │ 3 │
    │ 1 │ 7 │ 3 │
    │ 2 │ 2 │ 3 │
    │ 2 │ 5 │ 3 │
    │ 2 │ 8 │ 3 │
    └───┴───┴─────┘
  • https://t.me/clickhouse_ru
    @agkucherov #232171 06:30 PM, 25 Aug 2021
    Спасибо большое❤️
  • https://t.me/clickhouse_ru
    @den_crane #232172 06:30 PM, 25 Aug 2021
    вот так, более похоже на исходную сортировку
    select arrayJoin(gx) x,g , cnt from (select g, groupArray(x) gx, count() cnt from (select number x, number%3 g from numbers(10)) group by g) order by x ;
    ┌─x─┬─g─┬─cnt─┐
    │ 0 │ 0 │ 4 │
    │ 1 │ 1 │ 3 │
    │ 2 │ 2 │ 3 │
    │ 3 │ 0 │ 4 │
    │ 4 │ 1 │ 3 │
    │ 5 │ 2 │ 3 │
    │ 6 │ 0 │ 4 │
    │ 7 │ 1 │ 3 │
    │ 8 │ 2 │ 3 │
    │ 9 │ 0 │ 4 │
    └───┴───┴─────┘
  • https://t.me/clickhouse_ru
    Мониторинг проверить
  • https://t.me/clickhouse_ru
    attach table none(A Int64) Engine=ReplicatedMergeTree('/sdfsdfsdfdsfd', '1') order by tuple();

    select is_readonly from system.replicas where table = 'none';
    ┌─is_readonly─┐
    │ 1 │
    └─────────────┘
  • https://t.me/clickhouse_ru
    @den_crane #232175 06:46 PM, 25 Aug 2021
    drop table none;
  • https://t.me/clickhouse_ru
    @AnKochem #232176 06:51 PM, 25 Aug 2021
    Спасибо!
  • https://t.me/clickhouse_ru
    ничего не сделать, есть несколько FR в гитхабе чтобы не падать если N нод недоступно, но НЕ имплементированы и Яндекс команда не хочет такого
  • https://t.me/clickhouse_ru
    на самом деле один ЗК и будет.
    У 25% пользователей КХ таблицы дименшины реплицированы на все ноды (один шард). Поэтому нельзя сделать по keeper-у на шард.
    мы в Альтинити тоже всем клиентам впариваем такой патерн.
  • Можно запускать кипер как сайд-кар контейнер, и таким образом иметь по “ансамблю” на шард, если не использовать ON CLUSTER и т.п.
  • https://t.me/clickhouse_ru
    я же говорю у части таблиц один шард на всех нодах
  • @softbot_xxl #232182 07:09 PM, 25 Aug 2021
    В нашем деплойменте мы используем по два ЗК на региональный кластер, чтобы не создавать узких мест. Логическое развитие, это иметь консенсус в пределах шарда.
  • @softbot_xxl #232183 07:09 PM, 25 Aug 2021
    Я понимаю.
  • https://t.me/clickhouse_ru
    @nyatmeat #232185 07:51 PM, 25 Aug 2021
    Доброй ночи. Вопрос про первичные ключи. Есть таблица ReplicatedMT. В ней задан ключ сортировки по которому данные будут заменяться.
    Наиболее частые поиски идут по полю вне ключа сортировки.
    Я так понимаю первичный ключ должен включать в себя все поля сортировки, но если я укажу это поле в конце первичного ключа, то оптимизации поиска не будет?
  • https://t.me/clickhouse_ru
    ReplicatedMT? Replacing имелось в виду?
    У вас особого выхода нет, если вы включите их в ключ то заменятся-то не будут.
  • 26 August 2021 (121 messages)
  • https://t.me/clickhouse_ru
    @vendroid #232195 06:59 AM, 26 Aug 2021
    Добрый день!

    Столкнулись с дилеммой во время разработки.
    Есть некоторые сущности, для которых можно:
    1) создавать отдельно для каждой таблицу, писать в эту таблицу данные, делать по ним выборку и удалять данные путем простого дропа таблицы;
    2) создать одну таблицу для всех этих сущностей, где будут хранится данные относящиеся к версиям этих сущностей.

    Основная проблема это место на диске и быстрая выборка данных.
    Дело в том, что сущностей может быть много > 500, и, насколько я понимаю из докладов на митапах, это не самое лучшее решение, так как будет деградировать вставка, а вставка тоже должна быть достаточно быстрой.
    Если же делать все в одной таблице, то тогда данные будут весьма быстро "устаревать" в смысле бизнес логики -- старые версии сущностей ни коим образом уже не влияют на дальнейшую обработку данных; в итоге получается такая разряженная в смысле "полезных" и "бесполезнах" данных таблица из которой трудно удалять по TTL. Партиции делать на версии тоже как-то не совсем выгодно так как их будет слишком много.

    Резюмирая выше описанное: делать много таблиц на каждый тип сущности или делать одну "прореженную" таблицу протухшими данными. Как остаться в рамках идиомы "кликхаус не тормозит"?
  • https://t.me/clickhouse_ru
    @vendroid #232196 06:59 AM, 26 Aug 2021
    Важное уточнение: в таблицы пишется много данных с каким-то своими уникальными ключами

    Здесь и далее key_time представлен лишь для того, чтобы было понятно, что по нему будет идти выборка

    Приведу для наглядности примеры схем:
    1) Одна большая табличка. В ней версия будет устаревать и соотвественно данные тоже протухать, но версия устаривает не в смысле времени, а в смысле логики приложения. Стоит добавить что никаких серьезных тяжелых данных таблица не хранит.

    CREATE TABLE IF NOT EXISTS AllEntities
    (
    key_time Int32,

    entity_version_id UUID -- (не больше 10к),
    -- + еще несколько других колонок
    ) ENGINE = MergeTree()
    ORDER BY(entity_version_id, key_time)
    ;

    Ну и примерно такая же схема для каждой сущности. Да они легко удаляются, но таких таблиц будет очень много.

    CREATE TABLE IF NOT EXISTS EntityTable#EntityID
    (
    key_time Int32,
    -- + еще несколько других колонок
    ) ENGINE = MergeTree()
    ORDER BY(key_time)
    ;
  • @pavel_maksimow #232198 07:16 AM, 26 Aug 2021
    Добрый день. КХ стал медленно работать, очень медленно, большие запросы от несколько десятков минут до нескольких часов отрабатывают.
    Версия 20.12.4.5
    Ошибок в логах нет. Рестарт не помогает. Есть вот такой непрекращающийся бесконечный поток логов.
    Подскажите пожалуйста в чем проблема?
  • https://t.me/clickhouse_ru
    @innopolis #232202 07:25 AM, 26 Aug 2021
    SELECT toDateTime(now()) AS column, toTypeName(column) AS x
    возвращает
    2021-08-26 07:17:24', 'DateTime(''Europe/Moscow'')

    Но когда прогоняю на локальной БД
    SELECT created_at, toTypeName(created_at) AS x FROM testbd.testtable
    Возвращается
    2021-08-26 07:17:24', 'DateTime

    --
    Какая таймзона используется в локальной БД? Можно как-то явно получить ее название?
  • SELECT timezone()
  • https://t.me/clickhouse_ru
    @innopolis #232204 07:53 AM, 26 Aug 2021
    Т е если при создании таблицы не указано DateTime(TZ), а DateTime просто, то он берет серверную?
  • да
  • https://t.me/clickhouse_ru
    🤝
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232195 #232207 08:10 AM, 26 Aug 2021
    Не очень понятно при чем тут КХ. Я правильно понял, что у вас 500-1000 уникальных объектов, каждый из которых порождает фактически одну строку (без учета дубликатов)? Но вобще такая задача решается примерно так:
    CREATE TABLE IF NOT EXISTS AllEntities
    (
    ts DateTime,
    entity_id UInt64,
    entity_version UInt16
    data String -- JSON
    ) ENGINE = ReplacingMergeTree(entity_version)
    ORDER BY entity_id;
    будет схлопываться по уникальному entity_id, с учетом версии. Не забывайте правильно апгрейдить номер версии при вставках.
  • https://t.me/clickhouse_ru
    @S_Dimitry #232215 08:28 AM, 26 Aug 2021
    Коллеги, а можно принудительно заставить КХ отдать память оперативную после выполнения запроса, а то он отдает ее не сразу.
  • https://t.me/clickhouse_ru
    Спасибо за ответ!

    Май бэд, не очень доступно объяснил, что данных в таблице будет очень много по версии сущности, они все уникальны и схлопывать их не стоит.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232195 #232218 08:40 AM, 26 Aug 2021
    тогда вам стоит описать более четко критерии автоматической чистки данных. Вы сказали, что TTL не подходит, тогда что? Если делать руками, то можно через alter/delete, которая сделает полную перезапись всех данных таблицы или партиции, что может быть в вашем случае допустимо, а может быть и нет.
  • https://t.me/clickhouse_ru
    Используй SYSTEM DROP <cahe type> CACHE для очистки памяти после запроса
  • https://t.me/clickhouse_ru
    @zzhanabek #232220 09:16 AM, 26 Aug 2021
    как clickhouse-copier передать креды пользователя?
    Я пытался в xml кинуть <user> но нет
  • https://t.me/clickhouse_ru
    Помогло
    <replica>
    <host>your-clickhouse-server.com</host>
    <port>port</port>
    <user>your-user</user>
    <password>password</password>
    <secure>1</secure>
    </replica>
  • https://t.me/clickhouse_ru
    @badcoder #232222 09:37 AM, 26 Aug 2021
    Доброго дня. Подскажите пожалуйста. Обновились с 21.3LTS до 21.8LTS и отвалились запросы где в джойнах есть сравнение с не колонкой. вида:

    SELECT
    A.value1,
    B.value2
    FROM
    aTable A
    JOIN bTable B
    ON B.column1 = A.column1 AND B.column2 = 'qwerty'

    вот на последнее условие получаю эксепшн
    Not equi-join ON expression: iB.column2 = 'qwerty'. No columns in one of equality side.: While processing B.column2 = 'qwerty'

    есть ли способ вернуть старую логику не переписывая кучу запросов.
  • https://t.me/clickhouse_ru
    @zzhanabek #232224 09:57 AM, 26 Aug 2021
    Разве халяльно юзать join?
  • https://t.me/clickhouse_ru
    @EKbfh ↶ Reply to #232112 #232225 09:59 AM, 26 Aug 2021
    спасибо
  • https://t.me/clickhouse_ru
    @zzhanabek #232226 10:20 AM, 26 Aug 2021
    https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/replication/#creating-replicated-tables

    other_parameters — что православно использовать в качестве параметра для ReplicatedMergeTree?
    Репликация данных | Документация ClickHouse

    Репликация данных Репликация поддерживается только для таблиц семейства MergeTree: ReplicatedMergeTree ReplicatedSumming

  • https://t.me/clickhouse_ru
    @zzhanabek #232227 10:20 AM, 26 Aug 2021
    модераторы чата и редакторы документации мониторят чат для дополнения документации?
  • в ReplicatedMergeTree ничего не передаётся, это для Replacing например, где можно версию задать
  • https://t.me/clickhouse_ru
    В зависимости от типа MergeTree, например, в SummingMergeTree можгл указать columns — колонки, в которых будут суммироваться данные
  • https://t.me/clickhouse_ru
    тут врядли кому-то платят за это. Разве что кто-то (например Вы) на добрых началах дополнит документацию )
  • https://t.me/clickhouse_ru
    Если ничего не передавать, репликация ломается
  • эээ, вы что-то значит делаете не так
  • речь идёт только о other_parameters если что
  • https://t.me/clickhouse_ru
    Я тоже об этом
  • https://t.me/clickhouse_ru
    третий параметр нужен был для clickhouse-copier
    DB::Exception: Expected at least 3 arguments in ENGINE
  • у нас все таблицы так созданы
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/db.table_name', '{replica}')
  • https://t.me/clickhouse_ru
    Скорее, не репликация ломается, а копирование не начинается.

    https://altinity.com/blog/2018/8/22/clickhouse-copier-in-practice
    Use Case #2: Extending a single node server to a multiple nodes cluster
    Clickhouse-copier in practice

    Clickhouse-copier is a tool designed to copy data from one ClickHouse environment to another. The tool is a part of standard ClickHouse server distribution. It can work in a fully parallel mode and distribute the data in the most efficient way. In this article, we review a few typical examples when clickhouse-copier can be used.

  • https://t.me/clickhouse_ru
    без третьего параметра приступлю скоро по этой инструкции https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/replication/#preobrazovanie-iz-mergetree-v-replicatedmergetree
    Репликация данных | Документация ClickHouse

    Репликация данных Репликация поддерживается только для таблиц семейства MergeTree: ReplicatedMergeTree ReplicatedSumming

  • https://t.me/clickhouse_ru
    @zzhanabek #232239 10:53 AM, 26 Aug 2021
    Читать доку в гитхабе намного приятнее для глаз, оказывается. Буст к восприятию текста

    https://github.com/ClickHouse/ClickHouse/blob/master/docs/ru/engines/table-engines/mergetree-family/replication.md

    Хоть и содержание такое же
    ClickHouse/replication.md at master · ClickHouse/ClickHouse

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

  • @user93 #232242 11:39 AM, 26 Aug 2021
    Странная ситуация, MV отрабатывает через раз.

    В таблицу table1 вставляются данные пачками по 10000 строк, обнаружилось, что для некоторых строк (закономерность пока не могу найти), данные в таблице table1 есть (те по select final они видны), а вот в MV этих данных нету

    Если повторно руками вставить данные в исходную таблицу, то они появляются в MV

    Как такое дебажить? куда смотреть?

    CREATE TABLE table1
    (
    `item` String,
    `event_source_hi` Int8 DEFAULT -1,
    `event_source_lo` Int8 DEFAULT -1,
    `event_state` Int8 DEFAULT -1,
    `event_last_seen` UInt32 DEFAULT 0
    )
    ENGINE = ReplacingMergeTree(event_last_seen)
    PRIMARY KEY item
    ORDER BY (item, event_source_hi, event_source_lo, event_state)

    к ней приделана MV таблица

    CREATE MATERIALIZED VIEW table1_mv
    ENGINE = AggregatingMergeTree
    PRIMARY KEY item
    ORDER BY item
    TTL toDateTime(last_seen, 0, 'UTC') + toIntervalMonth(13)
    SETTINGS index_granularity = 8192 AS
    SELECT
    item,
    maxSimpleStateIf(event_last_seen, (event_source_hi = 0) AND (event_source_lo = 0) AND (event_state = 1)) AS a1_last_seen,
    maxSimpleStateIf(event_last_seen, (event_source_hi = 0) AND (event_source_lo = 1) AND (event_state = 1)) AS a2_last_seen,
    ... (куча похожих полей)
    maxSimpleState(event_last_seen) AS last_seen
    FROM table1
    GROUP BY item
    SETTINGS optimize_aggregation_in_order = 1
  • https://t.me/clickhouse_ru
    @konnectrl #232243 11:54 AM, 26 Aug 2021
    Хай, как можно pivot сделать ?
  • https://t.me/clickhouse_ru
    @evgeny_relap #232244 01:05 PM, 26 Aug 2021
    Коллеги, я пытаюсь удалить строки из большой таблицы, а в логах вот что:
    Max size depends not only on available space, but also on settings 'number_of_free_entries_in_pool_to_execute_mutation' and 'background_pool_size'

    просить админов подкрутить какие-то параметры?
  • https://t.me/clickhouse_ru
    @yuranevermore #232245 01:09 PM, 26 Aug 2021
    всем привет! А в движках типа summingMergeTree можно ли использовать несколько Primary Keys?
  • https://t.me/clickhouse_ru
    Через case разве что
  • https://t.me/clickhouse_ru
    @mib32 #232247 01:38 PM, 26 Aug 2021
    Есть ли причина по которой клик может переставать сам по себе схлопывать записи по ReplacingMergeTree? У меня периодически так происходит
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    лучше просто подождать
    прогресс есть?
  • https://t.me/clickhouse_ru
    неа, он ничего не делает
  • https://t.me/clickhouse_ru
    много партов осталось?
  • https://t.me/clickhouse_ru
    там очень много данных
  • https://t.me/clickhouse_ru
    @evgeny_relap #232254 02:10 PM, 26 Aug 2021
    партиции по дню
  • https://t.me/clickhouse_ru
    @evgeny_relap #232255 02:10 PM, 26 Aug 2021
    мне кажется ему чего-то не хватает в настройках )
  • https://t.me/clickhouse_ru
    почему вам так кажется?
  • https://t.me/clickhouse_ru
    7.090124 [ 946 ] {} <Debug> relap_logs.promo_stat_collector: Current max source part size for mutation is 0 but part size 80309. Will not mutate part 202107_3_3_0. Max size depends not
    only on available space, but also on settings 'number_of_free_entries_in_pool_to_execute_mutation' and 'background_pool_size'
  • https://t.me/clickhouse_ru
    а почему вы считаете, что он ничего не делает?
  • https://t.me/clickhouse_ru
    @brbrbr #232259 02:25 PM, 26 Aug 2021
    Всем привет.

    Нужно мониторить много железок. Сейчас надо собирать порядка 50 метрик, но их количество и набор точно будет меняться. У разных метрик могут быть разные типы данных, плюс разные метрики собираются с разным интервалом (например, загрузка процессора - Float32 и собирается раз в минуту, потребляемая память - Int32 и собирается раз в 5 минут, статус железки - String и собирается раз в час).

    Хотим сделать под это дело таблицу, в которой данные одного типа будут лежать +- рядом и отсортированы по времени, вида
    create table MetricsStorage(
    MetricID Int32,
    Ts Int32,
    ValueInt32 Int32,
    ValueFloat32 Float32,
    ValueString String
    )
    engine = MergeTree()
    order by (MetricID, Ts)
    ;

    Ну и служебную таблицу, на основании которой софтина будет понимать в какое из полей писать значение метрики, вида
    create table Metrics(
    ID Int32,
    Name String,
    DataType String
    )
    engine = MergeTree()
    order by (ID)
    ;

    Это нормальное решение? Или есть какие-то более правильные\общепринятые варианты?
  • https://t.me/clickhouse_ru
    количествао записей не поменялось, там странная проблема "я делаю вот так ALTER TABLE adroom_stat_collector DELETE WHERE adroom_id in (select id from a2b);"
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @evgeny_relap #232262 02:29 PM, 26 Aug 2021
    и там и там колонки uint32 но мутация падает
  • https://t.me/clickhouse_ru
    посмотрите в system.mutations
  • https://t.me/clickhouse_ru
    там и смотрим, мутация упала
  • https://t.me/clickhouse_ru
    если она падает, никакие параметры ей не помогут
    убивайте и переписывайте, чтобы не падала 🙂
  • https://t.me/clickhouse_ru
    кого убивать?) я мирный
  • https://t.me/clickhouse_ru
    @salttan #232267 02:31 PM, 26 Aug 2021
    мутацию
  • https://t.me/clickhouse_ru
    так она сдохла уже давно сама
  • https://t.me/clickhouse_ru
    @evgeny_relap #232269 02:31 PM, 26 Aug 2021
    разве нет?
  • https://t.me/clickhouse_ru
    @salttan #232270 02:31 PM, 26 Aug 2021
    is_done=0
  • https://t.me/clickhouse_ru
    @salttan #232271 02:31 PM, 26 Aug 2021
    мутации сами не умирают
  • https://t.me/clickhouse_ru
    ничоси, щас попробуем)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232249 #232274 02:35 PM, 26 Aug 2021
    а где можно почитать про замечательный синтаксис выражений с именем колонки в [ ] , который делает массив ? select sumMap([category], [quantity]) from sales;
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @evgeny_relap #232276 02:35 PM, 26 Aug 2021
    заработало)
  • https://t.me/clickhouse_ru
    Syntax | ClickHouse Documentation

    Syntax There are two types of parsers in the system: the full SQL parser (a recursive descent parser), and the data form

  • @612200930 #232279 02:39 PM, 26 Aug 2021
    Всем добра!

    Подскажите как заставить кликхауз оповестить когото/чегото о том что в таблице появились новые данные?
    Триггер?
  • https://t.me/clickhouse_ru
    можно построить MaterializedView, которое будет хранить timestamp последней вставленной записи
  • @612200930 #232281 02:41 PM, 26 Aug 2021
    но её нужно будет сканировать чемто?
  • можно писать в кафку/дёргать url
  • https://t.me/clickhouse_ru
    Yes
  • @612200930 #232284 02:44 PM, 26 Aug 2021
    т.ё. исходно фичи уведомления нет?
  • @simpl1g #232285 02:44 PM, 26 Aug 2021
    https://clickhouse.tech/docs/ru/engines/table-engines/special/url/

    можно повесить mat view на url в теории, сам так не делал)
    URL | Документация ClickHouse

    URL(URL, Format) Управляет данными на удаленном HTTP/HTTPS сервере. Данный движок похож на движок File. Использование дв

  • https://t.me/clickhouse_ru
    можно попробовать на Live views сделать
  • это фича кликхауз?
  • https://t.me/clickhouse_ru
    Представление | Документация ClickHouse

    CREATE VIEW Создаёт представление. Представления бывают двух видов - обычные и материализованные (MATERIALIZED). Обычные

  • @612200930 #232290 02:47 PM, 26 Aug 2021
    Благодарю за заданный вектор, пошел изучать мануалы
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232278 #232291 02:49 PM, 26 Aug 2021
    там описан самый простой вариант - [1, 2, 3] - просто массив.
    Смотрим на магию:
    sumMap - требует два массива
    select [category], [quantity] from sales; - дает две колонки, где в строках массивы единичной длинны
    select sumMap([category], [quantity]) from sales; - работает отлично, как будто конструкция [category] собирает один массив из всей колонки по аналогии с groupArray. Но заменить тут [] на groupArray не получится - Aggregate function groupArray(category) is found inside another aggregate function in query
  • https://t.me/clickhouse_ru
    Ну все правильно,
    Вы же массивы агрегируете.
    Так что пусть они будут единичной длины, нам это не мешает
  • https://t.me/clickhouse_ru
    @unamedrus #232294 03:03 PM, 26 Aug 2021
    https://kb.altinity.com/altinity-kb-functions/resample-vs-if-vs-map-vs-subquery

    По поводу агрегации между категориями
    -Resample vs -If vs -Map vs Subquery

    5 categories SELECTsumResample(0,5,1)(number,number%5)ASsumFROMnumbers_mt(1000000000) ┌─sum ───────────────────────────────────────────────────────────────────────────────────────────┐│[99999999500000000,99999999700000000,99999999900000000,100000000100000000,100000000300000000] │└───────────────────────────────────────────────────────────────────────────────────────────────┘1rowsinset.Elapsed:1.010sec.Processed1.00billionrows,8.00GB(990.20millionrows/s.,7.92GB/s.)SELECTsumMap([number%5],[number])ASsumFROMnumbers_mt(1000000000) ┌─sum ─────────────────────────────────────────────────────────────────────────────────────────────────────────┐│([0,1,2,3,4],[99999999500000000,99999999700000000,99999999900000000,100000000100000000,100000000300000000]) │└─────────────────────────────────────────────────────────────────────────────────────────────────────────────┘1rowsinset.Elapsed:5.730sec.Processed1.00billionrows,8.00GB(174.51millionrows/s.,1.40GB/s.)SELECTsumIf(number,(number%5)=0)ASsum_0,sumIf(number,(number%5)=1)ASsum_1…

  • а не подскажите как tuple из sumMap разбить на колонки как в примере с sumIf?
  • @simpl1g #232297 03:30 PM, 26 Aug 2021
    просто в ручную select (sum.2)[1], (sum.2)[2], (sum.2)[3] … или есть более простой способ
  • https://t.me/clickhouse_ru
    Вручную.

    Плюс надо понимать, что в случае sumMap категории могут съехать
  • всмысле что сортировка может быть разная?
  • https://t.me/clickhouse_ru
    В смысле, что вдруг в том запросе что вы делаете не окажется category = 1

    И и первая категория будет = 2
  • @simpl1g #232301 03:33 PM, 26 Aug 2021
    ну это само собой
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232296 #232302 03:39 PM, 26 Aug 2021
    в примере про pivot они через cast превращают тупл в мап, а потом уже обращаются по индексам - map['AA']
  • 👍
  • @simpl1g #232304 04:01 PM, 26 Aug 2021
    Подскажите, делаем вставку в Distributed таблицу с рандомным ключом шардирования, настройка insert_distributed_sync включена, но при этом данные появляются не сразу, приходится делать sleep минуту. Надо что-то ещё подкрутить чтобы не надеяться на sleep? Увеличение insert_distributed_timeout может помочь?
  • https://t.me/clickhouse_ru
    А зачем вам ждать?
  • перед тем как начать читать, данные появляются только частично, если подождать немного то данные полностью появляются
  • https://t.me/clickhouse_ru
    Вам нужно прочитать только что вставленные данные зачем?

    1. Убедиться, что они вставились.

    2. Вернуть какую то посчитанную метрику
  • https://t.me/clickhouse_ru
    @boklazhenko #232308 04:06 PM, 26 Aug 2021
    товарищи, прошу помоч, кто знает
    есть materialized_view c агрегатным полем, как я понимаю типа AggregateFunction(max, DateTime)
    как для пользователя для меня это просто DateTime
    и я хотел бы по этому полю фильтровать
    как возможно это делать?
  • https://t.me/clickhouse_ru
    Использовать SimpleAggregateFunction

    Но по этому полю строго говоря нельзя фильтровать, сначала нужно до агрегировать все данные с помощью GROUP BY и только потом фильтровать
  • проверяем что данные валидные чтобы дальше перелить в следующую таблицу.
  • https://t.me/clickhouse_ru
    спасибо. но если мне придется самому потом в запросе доагрегировать, и известно что в материалайд вью не поступит большая пачка, которая предварительно аггригируется, возможно смысла в материалайз вью нет?
  • https://t.me/clickhouse_ru
    Репликация асинхронная, вполне возможно что ваши данные до второй реплики не доехали. а Distributed запрос пришел на вторую реплику.

    https://clickhouse.tech/docs/en/sql-reference/statements/system/#query_language-system-sync-replica

    https://clickhouse.tech/docs/en/operations/settings/settings/#settings-max_replica_delay_for_distributed_queries
    SYSTEM | ClickHouse Documentation

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

  • спасибо, похоже на это
  • https://t.me/clickhouse_ru
    @nyoroon #232314 04:14 PM, 26 Aug 2021
    подскажите, insert_deduplicate работает на уровне шарда или на уровне кластера?
  • https://t.me/clickhouse_ru
    @madreyg #232315 04:21 PM, 26 Aug 2021
    Добрый вечер. Подскажите, пожалуйста. Упала нода clickhouse. После поднятия полились массово ошибки:

    2021.08.26 16:15:18.046991 [ 197463 ] {} <Error> DDLWorker: ZooKeeper error: Code: 999, e.displayText() = Coordination::Exception: No node, Stack trace (when copying this message, always include the lines below):

    0. Coordination::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Coordination::Error, int) @ 0xf87ee03 in /usr/bin/clickhouse
    1. Coordination::Exception::Exception(Coordination::Error) @ 0xf87f2ce in /usr/bin/clickhouse
    2. DB::DDLWorker::createStatusDirs(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr<zkutil::ZooKeeper> const&) @ 0xe88509e in /usr/bin/clickhouse
    3. DB::DDLWorker::processTask(DB::DDLTask&) @ 0xe88afd7 in /usr/bin/clickhouse
    4. DB::DDLWorker::enqueueTask(std::__1::unique_ptr<DB::DDLTask, std::__1::default_delete<DB::DDLTask> >) @ 0xe88a20d in /usr/bin/clickhouse
    5. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0x8505178 in /usr/bin/clickhouse
    6. 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()() @ 0x850712f in /usr/bin/clickhouse
    7. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x850274f in /usr/bin/clickhouse
    8. ? @ 0x85061e3 in /usr/bin/clickhouse
    9. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
    10. __clone @ 0xfe8dd in /usr/lib64/libc-2.17.so
    (version 21.2.10.48 (official build))

    zookeeper тоже жив. Подскажите, пожалуйста, в чем может быть проблема?
  • а если усложнить кейс, пишем напрямую в шарды в tmp таблицы и по завершению записи делаем replace partition on cluster. Может ли реплейс пройти без синхронизации репликации? Раньше никаких проблем не было, но сейчас раз в неделю бывает что не хватает части данных
  • https://t.me/clickhouse_ru
    @yuranevermore #232320 07:04 PM, 26 Aug 2021
    Cannot write to ostream at offset: While executing JSONRowOutputFormat

    кто-нибудь знает почему запрос падает с такой ошибкой? Взял из логов
  • https://t.me/clickhouse_ru
    @yuranevermore #232321 07:05 PM, 26 Aug 2021
    это может быть из-за read timeout? или из-за того, что все ресурс CPU закончились на кластере?
  • https://t.me/clickhouse_ru
    @nyoroon #232322 08:18 PM, 26 Aug 2021
    есть какие-нибудь оптимизации для оконных функций если префиккс over (partition by) частично совпадает с primary key/order by таблицы?
  • https://t.me/clickhouse_ru
    нет и не планируется. Оконные функции работают сильно позже.
  • https://t.me/clickhouse_ru
    ошибка где? это клиент такое увидел?
  • https://t.me/clickhouse_ru
    на уровне инсерта, в replicated таблицу
  • https://t.me/clickhouse_ru
    В system.query_logs
  • https://t.me/clickhouse_ru
    это просто клиент ушел, и результат было некому принять
  • https://t.me/clickhouse_ru
    ага, если я поретраю в другую реплику, то будет дедупликация?
  • https://t.me/clickhouse_ru
    да

    контрольная сумма в зукипере, все реплики ее проверяют
  • https://t.me/clickhouse_ru
    @yuranevermore #232332 09:12 PM, 26 Aug 2021
    Хм, спасибо
  • https://t.me/clickhouse_ru
    @yuranevermore #232333 09:12 PM, 26 Aug 2021
    А я если клиент видит read timeout
  • https://t.me/clickhouse_ru
    @yuranevermore #232334 09:12 PM, 26 Aug 2021
    То какой это exception в логах?
  • https://t.me/clickhouse_ru
    это по разному.

    например возможно такое, начинается запрос и долго выполняется.
    Клиент ждет 30 сек. и бросает read timeout и уходит. Сервер через 10 минут выполнив запрос пытается его передать клиенту, а клиента уже нет, и сервер пишет Cannot write to ostream at offset

    а бывает что это баг в КХ, и например сервер через секунду пишет в лог Cannot write to ostream at offset, и обламывает все, а клиент через N секунд не дождавшись сервера пишет read timeout
  • https://t.me/clickhouse_ru
    @yuranevermore #232336 09:16 PM, 26 Aug 2021
    Вот оно как! Теперь понятно
  • https://t.me/clickhouse_ru
    @yuranevermore #232337 09:17 PM, 26 Aug 2021
    Спасибо еще раз
  • https://t.me/clickhouse_ru
    кажется это нормально, если это в течении пары минут такое.
    При старте начинается чистка старых DDDL заданий, и получается что несколько серверов пытаются удалить одно и тоже, и последние обламываются.
  • https://t.me/clickhouse_ru
    есть функция finalizeAggregation
  • https://t.me/clickhouse_ru
    кстати я пропустил фичу

    https://clickhouse.tech/docs/en/operations/settings/settings/#distributed_ddl_output_mode
    Settings | ClickHouse Documentation

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

  • 27 August 2021 (162 messages)
  • https://t.me/clickhouse_ru
    Проблема в том, что это не прекращается. Когда рестартанула нода, то ЗК переключил её на свою другую ноду. При повторном рестарте ноды КХ проблема продолжается.
  • сделал
    revoke common_role from user;
    GRANT common_role TO user;

    Начало заработало(
  • @aovlexus_2 #232351 07:08 AM, 27 Aug 2021
    получается что ползьовватель получает не получает новые права, которые дали роли после того как ползователю ее дали
  • @imozger #232352 07:26 AM, 27 Aug 2021
    Добрый, а подскажите плиз можно ли avgWeightedIf изпользовать и если да как написать запрос?
  • https://t.me/clickhouse_ru
    @Andreev_Alexey_V #232353 07:35 AM, 27 Aug 2021
    Добрый день.

    Структура таблицы
    -----------------
    DESCRIBE TABLE counterparty_report
    id String ID
    moment Date DEFAULT now() Дата остатка
    counterparty String Контрагент
    firstDemandDate DateTime Дата первой продажи
    lastDemandDate DateTime Дата последней продажи
    demandsCount Int32 Количество продаж
    demandsSum Float32 Сумма продаж
    averageReceipt Float32 Средний чек
    returnsCount Int32 Количество возвратов
    returnsSum Float32 Сумма возвратов
    discountsSum Float32 Сумма скидок
    balance Float32 Баланс
    bonusBalance Float32 Баллы
    profit Float32 Прибыль
    lastEventDate DateTime Дата последнего события
    lastEventText String Текст последнего события
    updated DateTime Момент последнего изменения контрагента
    counterparty_id String id контрагента
    counterparty_externalCode String Внешний код контрагента

    Запрос
    -----------------
    INSERT INTO counterparty_report
    (id,moment,counterparty,firstDemandDate,lastDemandDate,demandsCount,demandsSum,averageReceipt,returnsCount,returnsSum,discountsSum,balance,bonusBalance,profit,lastEventDate,lastEventText,updated,counterparty_id,counterparty_externalCode)
    VALUES
    ('ed335f61-82e0-4365-b9d3-95332b431137','2021-08-27','test1','','','0','0','0','0','0','0','1722000','0','0','','','2017-07-06 06:07:03','2f676bc3-61f8-11e7-7a31-d0fd00010e3e','J-3T6SS9iMWPKwr7qa1xP3'),
    ('575b32d6-9e91-4e39-83b5-5f8ae3c36420','2021-08-27','test2','2021-08-24 06:12:00','2021-08-24 06:12:00','1','14930','14930','0','0','0','389500','0','7480','','','2021-08-26 06:08:56','d34faf3d-cd78-11e9-912f-f3d40026c10c','pqpPpov2hVwaoVZiF38rI1'),
    ('3ae1b499-3d84-4dd3-9f02-441d70db6a56','2021-08-27','test3','2021-05-17 09:21:00','2021-07-31 06:36:00','15','3291530','219435.33333333','0','0','339370','405350','0','1888330','','','2021-08-26 06:09:26','e08d54e7-8db1-11e9-9109-f8fc001dd749','xtzAGXVgjJEP3on1w68B33')

    Ошибка:
    -----------------
    [0] => Code: 62, e.displayText() = DB::Exception: Cannot parse expression of type Float32 here: 'J-3T6SS9iMWPKwr7qa1xP3'),
    [1] => ('575b32d6-9e91-4e39-83b5-5f8ae3c36420','2021-08-27','test2','2021-08-24 06:12:00','2021-08-24 06:12:00','1','1493 (version 21.7.7.47 (official build))
    *************
    Какую строку и почему он пытается распарсить как Float32 ?
  • Похоже что это то что нужно, но настораживает вот это:
    "Важно

    Представления LIVE VIEW являются экспериментальной возможностью. Их использование может повлечь потерю совместимости в будущих версиях."

    На сколько можно использовать эту фичу в продакшене? Планируется ли её поддержка а дальнейшем?
  • @lexa_work #232356 07:49 AM, 27 Aug 2021
    Коллеги, имеем неработающую механику TTL для колонки.
    ClickHouse server version 21.2.8 revision 54447
    DDL таблицы
    CREATE TABLE d1.t1
    (
    `event_timestamp` DateTime('UTC') CODEC(DoubleDelta, LZ4),
    `c1` UInt64,
    `c2` UInt64,
    `c3` LowCardinality(String),
    `c4` LowCardinality(String),
    `proto_fields` String TTL toDate(event_timestamp) + toIntervalDay(1)
    )
    ENGINE = ReplicatedMergeTree('/clickhouse/{installation}/{cluster}/tables/{shard}/xdraymon/map_local', '{replica}')
    PARTITION BY toYYYYMMDD(event_timestamp)
    ORDER BY (toStartOfInterval(event_timestamp, toIntervalMinute(15)), c3, c4, c1, c2)
    TTL toDate(event_timestamp) + toIntervalDay(21)
    SETTINGS index_granularity = 8192, ttl_only_drop_parts = 1

    TTL на таблицу работает как и ожидалось, а вот на колонку proto_fields не работает.
    Данные остаются и не удаляются.
    Ручной CLEAR COLUMN очищает данные в партициях колонки как положено.

    Из особенностей можно еще сказать то, что TTL на колонку proto_fields вешался через ALTER.
  • https://t.me/clickhouse_ru
    @critskiy #232359 08:22 AM, 27 Aug 2021
    Всем здрасьте, у меня тут по прогрессу просмотра образовался вопрос по Clickhouse Keeper, который будет заменой ZK. На данном слайде:
    https://youtu.be/IfgtdU1Mrm0?t=4178
    Видно, что CH переходит на новую схему репликации (насколько и если правильно я успела понять), но тогда каким образом clickhouse-keeper выбирает лидера (мастера)? Тип по конфигурации?
    Upd.: кажется, найден ответ, но надо проверять...
    August ClickHouse Bay Area Meetup -- SigNoz and Nukeeper (Zookeeper Replacement)

    Join us for this session on latest #ClickHouse news. We have presentations on SigNoz and Zookeeper replacement in ClickHouse (Yay!). See the meetup invite for more information: https://www.meetup.com/San-Francisco-Bay-Area-ClickHouse-Meetup/events/279109379/ #DataWarehouse #Meetup ----------------- Check out more ClickHouse resources here: https://altinity.com/resources/​ Join Reddit community: https://www.reddit.com/r/Clickhouse/​ ----------------- Learn more about Altinity! Site: https://www.altinity.com​ LinkedIn: https://www.linkedin.com/company/alti...​ Twitter: https://twitter.com/AltinityDB

  • https://t.me/clickhouse_ru
    а каким образом можно синхронизировать DDDL вручную? т.к. ошибка не пропадает вот уже несколько часов... и не понятно из-за чего такое поведение
  • @7699150 #232363 09:37 AM, 27 Aug 2021
    Ребят, привет!
    Подскажите пожалуйста такой момент.
    Если я в запросе для Матвью сделаю подзапрос, в котором обращаюсь к этой же таблице, на которую смотрит матвью, то откуда в результате данные будут браться в этом подзапросе? Из вставляемых данных или из данных на диске?
  • @subotic0 #232365 09:49 AM, 27 Aug 2021
    Привет, в кх есть способы хранения даты до 1970 года? Кроме datetime64
  • https://t.me/clickhouse_ru
    Date32
  • https://t.me/clickhouse_ru
    @nyoroon #232367 09:56 AM, 27 Aug 2021
    добрый день! подскажите пожалуйста, можно ли как-то оптимизировать такой запрос?
    SELECT *
    FROM (
    SELECT
    timestamp,
    rid,
    bs,
    h,
    count() OVER w AS cnt,
    row_number() OVER w AS rn
    FROM table
    WHERE
    timestamp BETWEEN '2021-08-25 00:00:00' AND '2021-08-25 23:59:59'
    AND component != 'ec'
    AND notEmpty(rid)
    AND tt = 'u'
    WINDOW w AS (PARTITION BY timestamp, rid, c, cr)
    )
    WHERE cnt > 1
    Сейчас работает более-менее ок (жрёт 20 гб памяти), но при добавлении более тяжёлых колонок выжирает всю память.
  • из вставляемых данных
  • https://t.me/clickhouse_ru
    таблица отсортирована по timestamp, хочу найти дубликаты по timestamp, rid, c, cr
  • Подскажите плс с какой версии появилась? В доке тип нашел, но
    Unknown function toDate32
    смотрю на версии 21.7.3.14
  • https://t.me/clickhouse_ru
    @DimaVS #232371 10:09 AM, 27 Aug 2021
    Всем привет!
    Товарищи, помогите плиз разобраться с проблемой.

    Есть dag в Airflow. Его задача — инкрементальное обновление витрины. Во время его выполнения он падает вот с такой вот ошибкой.

    - File "clickhouse_driver/varint.pyx", line 40, in clickhouse_driver.varint.read_varint
    INFO - File "clickhouse_driver/bufferedreader.pyx", line 55, in clickhouse_driver.bufferedreader.BufferedReader.read_one
    INFO - File "clickhouse_driver/bufferedreader.pyx", line 188, in clickhouse_driver.bufferedreader.BufferedSocketReader.read_into_buffer
    INFO - socket.timeout: timed out
    INFO - Command exited with return code 1

    скрипт то работает 5 мин, то 3 часа, но в какой-то момент стабильно падает в таймаут. пробовали использовать

    import socket

    socket.setdefaulttimeout(20000)
    не помогло
  • https://t.me/clickhouse_ru
    похоже что только в 21.9 попало
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232367 #232373 10:21 AM, 27 Aug 2021
    а чем вам обычный group by не угодил?
    SELECT timestamp, rid, c, cr, any(bs), any(h)
    FROM (
    SELECT
    timestamp, rid, c, cr
    bs,
    h
    FROM table
    WHERE
    timestamp BETWEEN '2021-08-25 00:00:00' AND '2021-08-25 23:59:59'
    AND component != 'ec'
    AND notEmpty(rid)
    AND tt = 'u'
    )
    group by timestamp, rid, c, cr
    WHERE count() > 1
    Не очень понятно чего вы ожидаете от bs & h но если нужны все значения, то можно сделать groupArray/arrayJoin
  • https://t.me/clickhouse_ru
    в память не влезает практически моментально
  • https://t.me/clickhouse_ru
    @nyoroon #232375 10:21 AM, 27 Aug 2021
    очень высокая кардинальность
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232367 #232376 10:22 AM, 27 Aug 2021
    set distributed_aggregation_memory_efficient=1 (default from 21.3)
    set max_bytes_before_external_group_by='40G'
    max_threads=1
  • https://t.me/clickhouse_ru
    @nyoroon #232377 10:23 AM, 27 Aug 2021
    колонка rid весит на диске несколько терабайт и практически каждое значение уникальное
  • https://t.me/clickhouse_ru
    @nyoroon #232378 10:27 AM, 27 Aug 2021
    ну и max_bytes_before_external_group_by точно не будет быстрее оконной функции, которая в память всё-таки влезает
  • https://t.me/clickhouse_ru
    @dtulendiyev #232380 10:54 AM, 27 Aug 2021
    vsem privet, podskazhite pleasee
    u menia cmake 3.21.2

    no kogda build delayu s
    CMake Error at contrib/xz/CMakeLists.txt:50 (cmake_minimum_required):
    CMake 3.13 or higher is required. You are running version 3.12.1
  • https://t.me/clickhouse_ru
    @dtulendiyev #232381 10:54 AM, 27 Aug 2021
    u menia macos
  • @infoss_cto #232382 10:55 AM, 27 Aug 2021
    Всем привет! После обновлния на 21.8.4.51 перестала работать конструкция (%(stores)s is null or store_n in %(stores)s) для PREWHERE, ошибка Column store_n is not under aggregate function and not in GROUP BY: While processing ((isNull(NULL) OR (store_n IN (NULL)))
    Ранее все работало, в переменную можно было передать или null или список значений.
  • @infoss_cto #232383 10:57 AM, 27 Aug 2021
    Есть ли какие-то альтернативные варианты передачи параметра в PREWHERE, который может быть или пустым, или списком?
  • @softbot_xxl #232384 11:07 AM, 27 Aug 2021
    Вопрос по дедупликации блоков для ReplicatedMergeTree. Насколько я понимаю, чтобы поддержать exactly once семантику для записи нужно делать две вещи:
    1. Каждый блок данных, который идет в таблицу, должен иметь уникальный компонент (допустим специальную колонку), чтобы даже при наличии идентичных данных отличаться от предыдущих (чексумма должна быть уникальной).
    2. Все retry должны идти в тот-же шард, что и первые, чтобы найти повторы в ЗК.

    Возник вопрос по поводу пункта 1, вместо уникальной колонки, есть ли возможноть просто блоку назначить уникальный ID, чтобы он присутствовал в метаданных и читался при дедупликации, а не занимал колонку (которую надо еще чистить).
  • @softbot_xxl #232385 11:15 AM, 27 Aug 2021
    Ну и правильно ли я понимаю, как оно работает.
  • https://t.me/clickhouse_ru
    @madreyg #232386 11:40 AM, 27 Aug 2021
    А как можно убить таски из ```system.distributed_ddl_queue``` ?
  • https://t.me/clickhouse_ru
    @nyoroon #232388 11:54 AM, 27 Aug 2021
    Можно дропнуть в зукипере
  • https://t.me/clickhouse_ru
    @madreyg #232389 12:10 PM, 27 Aug 2021
    Еще вопрос, Сейчас нода спамит ошибками по таске query-0000001413. Но ее нигде нет, ни в ZK ни в /clickhouse/task_queue/ddl , ни в system.distributed_ddl_queue. Можно ли еще где-то поискать ?
  • https://t.me/clickhouse_ru
    значит это другая проблема. Других проблем нет? Только ругань в логах? У вас ЗК вообще в ансамбле ?
  • https://t.me/clickhouse_ru
    какая версия КХ ? Пользователь user реконектится к БД?
  • https://t.me/clickhouse_ru
    поиск проблемы делается как и с любым другим софтом. смотрите во что упирается программа, в диск, проц, память, сеть и т.д.
  • https://t.me/clickhouse_ru
    mv работает как часы, швейцарские. у вас где-то косяк в ttl или агрегации.
  • https://t.me/clickhouse_ru
    @yelrik #232394 12:48 PM, 27 Aug 2021
    приветы, в Клике должна работать конструкция?

    WITH t2 AS (SELECT col1, col2 FROM t1)
    SELECT * FROM t2
  • https://t.me/clickhouse_ru
    нет, да и смысла тоже нет, да и то как бы даже названию противоречит.
  • https://t.me/clickhouse_ru
    мат вью обычно используется для того чтобы делать агрегции данных, которые занимают меньше места и быстрее работают или для подготовки данных, чтобы потом при селекте всё работало быстрее. просто делать мат вью для того чтобы было - нет смысла
  • https://t.me/clickhouse_ru
    Комбинаторы агрегатных функций | Документация ClickHouse

    Комбинаторы агрегатных функций К имени агрегатной функции может быть приписан некоторый суффикс. При этом, работа агрега

  • https://t.me/clickhouse_ru
    используйте докер
  • https://t.me/clickhouse_ru
    увы, не знаю, 3 ноды. Если я правильно понял вопрос (про ansible?) то нет (clickhouse - да). Нашли еще, что есть таски, которые не выполняются в system.distributed_ddl_queue. Еще в логах видим ошибку связанную с таской query-0000001413. Но нигде ее найти не можем, ни файла, ни записи в таблицах. (system.zookeeper / system.distributed_ddl_queue). Ситуация была примерно такая: нода кх упала по памяти, после растарта ЗК решил переключить ее на свою другую ноду и посыпались ошибки как я указывал выше.
  • @subotic0 #232400 01:01 PM, 27 Aug 2021
    В кх есть возможность достать из mysql (select .. from mysql(..)) дату до 1970года? Как datetime64 например, пытаюсь сразу в селект из mysql юзать toDateTime64, но выводит ерунду
  • https://t.me/clickhouse_ru
    Читайте доку. Там всё есть.
    https://clickhouse.tech/docs/ru/sql-reference/statements/select/with/
    WITH | Документация ClickHouse

    Секция WITH Clickhouse поддерживает Общие табличные выражения, то есть позволяет использовать результаты выражений из се

  • https://t.me/clickhouse_ru
    ЗК ничего не решает. Просто КХ решил подключится к другой ноде.
    Кластер в ЗК называется ансамбль (ensemble)
    проверьте статус на всех ЗК

    echo stat | nc ip_zk 2181
    надо иметь один лидер и 2 фоловера
  • https://t.me/clickhouse_ru
    @yelrik #232403 01:04 PM, 27 Aug 2021
    коллеги, продублирую вопрос. У меня не работает конструкция с with в 2х вариациях:

    WITH t2 AS (SELECT col1, col2 FROM t1)
    SELECT * FROM t2

    WITH (SELECT col1, col2 FROM t1) AS t2
    SELECT * FROM t2

    Пишет, что таблица t2 не существует. В чем проблема?
  • https://t.me/clickhouse_ru
    @bvt123 #232404 01:05 PM, 27 Aug 2021
    версия какая? оно появилось примерно с 21.6
  • https://t.me/clickhouse_ru
    @yelrik #232405 01:06 PM, 27 Aug 2021
    20.12
  • https://t.me/clickhouse_ru
    @yelrik #232406 01:07 PM, 27 Aug 2021
    теперь понятно, почему не работает :)
  • https://t.me/clickhouse_ru
    @yelrik #232407 01:07 PM, 27 Aug 2021
    спасибо
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/26331
    Пользуйтесь CLEAR COLUMN, не будете горя знать
    ttl_only_drop_parts affects TTL for columns in a strange way · Issue #26331 · ClickHouse/ClickHouse

    I enabled TTL for several columns, and I used different TTL expressions with different TTL periods. I also enabled ttl_only_drop_parts because I didn't want ClickHouse to re-merge older par...

  • https://t.me/clickhouse_ru
    # echo stat | nc localhost 2181
    stat is not executed because it is not in the whitelist.

    поэтому так:
    echo mntr | nc localhost 2181 | grep 'leader'
    zk_server_state leader
    zk_leader_uptime 37520695236

    echo mntr | nc localhost 2181 | grep 'follow'
    zk_synced_followers 2
    zk_synced_non_voting_followers 0
    zk_avg_follower_sync_time 22.0
    zk_min_follower_sync_time 22
    zk_max_follower_sync_time 22
    zk_cnt_follower_sync_time 1
    zk_sum_follower_sync_time 22

    похоже на правду
  • https://t.me/clickhouse_ru
    Посмотрите по логу, что пытался сделать поток, который получил ошибку No node
  • https://t.me/clickhouse_ru
    @salttan #232411 01:14 PM, 27 Aug 2021
    Потом поищите это в system.zookeeper
  • Печаль. Будем думать. Спасибо.
  • https://t.me/clickhouse_ru
    есть запись только:
    97158 197463 ? 03:36:30 DDLWorkerExec

    и в логах вижу сообщение только от одного этого потока и больше ничего
    /var/log/clickhouse-server/clickhouse-server.log

    message
    2021.08.27 13:24:02.649745 [ 197463 ] {} <Error> DDLWorker: ZooKeeper error: Code: 999, e.displayText() = Coordination::Exception: No node, Stack trace (when copying this message, always include the lines below):

    0. Coordination::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Coordination::Error, int) @ 0xf87ee03 in /usr/bin/clickhouse
    1. Coordination::Exception::Exception(Coordination::Error) @ 0xf87f2ce in /usr/bin/clickhouse
    2. DB::DDLWorker::createStatusDirs(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr<zkutil::ZooKeeper> const&) @ 0xe88509e in /usr/bin/clickhouse
    3. DB::DDLWorker::processTask(DB::DDLTask&) @ 0xe88afd7 in /usr/bin/clickhouse
    4. DB::DDLWorker::enqueueTask(std::__1::unique_ptr<DB::DDLTask, std::__1::default_delete<DB::DDLTask> >) @ 0xe88a20d in /usr/bin/clickhouse
    5. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0x8505178 in /usr/bin/clickhouse
    6. 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()() @ 0x850712f in /usr/bin/clickhouse
    7. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x850274f in /usr/bin/clickhouse
    8. ? @ 0x85061e3 in /usr/bin/clickhouse
    9. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
    10. __clone @ 0xfe8dd in /usr/lib64/libc-2.17.so
    (version 21.2.10.48 (official build))

    В содержимом tcp пакета постоянно ловим:

    13:22:27.614459 IP 172.* > 172.*: Flags [P.], seq 679570:679789, ack 169641, win 8192, length 219
    E...0D@.@..l...n....K .....D.'.MP. ..G.......U.e................2/clickhouse/task_queue/ddl/query-0000001413/active................world....anyone................4/clickhouse/task_queue/ddl/query-0000001413/finished................world....anyone.............
    13:22:27.614906 IP 172.* > 172.* Flags [P.], seq 679789:679915, ack 169696, win 8192, length 126
    E...0E@.@......n....K .......'..P. ..?.....z.U.f.......K/clickhouse/task_queue/ddl/query-0000001413/active/nl%2Dzia%2Einternal:9000................world....anyone....

    в логах нашли запись по этой таске:

    SELECT query FROM system.query_log WHERE query LIKE ‘%query-0000001413%’ ORDER BY event_time DESC ;
    ┌─query──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │ /* ddl_entry=query-0000001413 */ CREATE TABLE IF NOT EXISTS shard.kafka_geo_groups_with_dates_events UUID ‘8338c429-c58a-4286-a0d7-5bb067368989’ (`data` String) ENGINE = Kafka SETTINGS kafka_broker_list = ‘kafka0.*:9092, kafka1.*:9092, kafka2.*:9092, kafka3.*:9092, kafka4.*:9092’, kafka_topic_list = ‘panel_table_changed_v1’, kafka_group_name = ‘clickhouse_kafka_geo_groups_with_dates_events_final’, kafka_format = ‘JSONAsString’, kafka_num_consumers = 1 │
    │ /* ddl_entry=query-0000001413 */ CREATE TABLE IF NOT EXISTS shard.kafka_geo_groups_with_dates_events UUID ‘8338c429-c58a-4286-a0d7-5bb067368989’ (`data` String) ENGINE = Kafka SETTINGS kafka_broker_list = ‘kafka0.*:9092, kafka1.*:9092, kafka2.*:9092, kafka3.*:9092, kafka4.*:9092’, kafka_topic_list = ‘panel_table_changed_v1’, kafka_group_name = ‘clickhouse_kafka_geo_groups_with_dates_events_final’, kafka_format = ‘JSONAsString’, kafka_num_consumers = 1 │
  • https://t.me/clickhouse_ru
    У вас какой level в clickhouse-server.log?
    Вот это запустите
    select * from system.zookeeper where path=‘clickhouse/task_queue/ddl/query-0000001413/‘
  • https://t.me/clickhouse_ru
    вот этот номер в логе ищите [ 197463 ]
  • https://t.me/clickhouse_ru
    @DimaVS ↶ Reply to #232371 #232417 01:51 PM, 27 Aug 2021
    Up
  • https://t.me/clickhouse_ru
    select * from system.zookeeper where path='clickhouse/task_queue/ddl/query-0000001413/'

    SELECT *
    FROM system.zookeeper
    WHERE path = 'clickhouse/task_queue/ddl/query-0000001413/'

    Query id: 84544fba-5500-4948-bc1f-4bed8d2ba876

    0 rows in set. Elapsed: 0.004 sec.

    Received exception from server (version 21.2.10):
    Code: 999. DB::Exception: Received from localhost:9000. DB::Exception: No node, path: /clickhouse/task_queue/ddl/query-0000001413.
  • @214612813 #232419 01:55 PM, 27 Aug 2021
    Всех приветствую! Есть таблица ReplacingMergeTree, в которой парты доросли до ограничения по max_bytes_to_merge_at_max_space_in_pool и перестали сливаться. В таблицу ведется непрерывная запись с большим количеством дублей. Есть какой-то best practice что в таких случаях делать? OPTIMIZE FINAL как-то не очень хочется, так как получу парт ~1.5тб. Есть идея детачить парт и вручную проверять на наличие дублей переливая уникальные данные назад. Может есть более элегантное решение?
  • https://t.me/clickhouse_ru
    а что если
    WHERE path = '/clickhouse/task_queue/ddl/query-0000001413/'
  • https://t.me/clickhouse_ru
    то же самое
  • https://t.me/clickhouse_ru
    а вообще есть что-нибудь в /clickhouse/task_queue/ddl ?
    WHERE path = '/clickhouse/task_queue/ddl'
  • Реконнетк не помогает, а вот после ревока и гранта не надо делать реконнект все начинает работать
  • https://t.me/clickhouse_ru
    какая версия КХ ? select version()
  • @aovlexus_2 #232425 02:02 PM, 27 Aug 2021
    Версия: 21.6.5.37
  • send_receive_timeout пробовали менять в библиотеке? https://clickhouse-driver.readthedocs.io/en/latest/api.html#connection
  • https://t.me/clickhouse_ru
    38 записей
  • https://t.me/clickhouse_ru
    # grep '197463' /var/log/clickhouse-server/clickhouse-server.err.log | tail -5
    2021.08.27 13:56:08.024543 [ 197463 ] {} <Error> DDLWorker: ZooKeeper error: Code: 999, e.displayText() = Coordination::Exception: No node, Stack trace (when copying this message, always include the lines below)
  • Ап (пардон). Просто хочу понять, правильно ли я понимаю процесс.
  • https://t.me/clickhouse_ru
    полный трейс
    2021.08.27 14:16:26.831184 [ 197463 ] {} <Error> DDLWorker: ZooKeeper error: Code: 999, e.displayText() = Coordination::Exception: No node, Stack trace (when copying this message, always include the lines below):

    0. Coordination::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Coordination::Error, int) @ 0xf87ee03 in /usr/bin/clickhouse
    1. Coordination::Exception::Exception(Coordination::Error) @ 0xf87f2ce in /usr/bin/clickhouse
    2. DB::DDLWorker::createStatusDirs(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr<zkutil::ZooKeeper> const&) @ 0xe88509e in /usr/bin/clickhouse
    3. DB::DDLWorker::processTask(DB::DDLTask&) @ 0xe88afd7 in /usr/bin/clickhouse
    4. DB::DDLWorker::enqueueTask(std::__1::unique_ptr<DB::DDLTask, std::__1::default_delete<DB::DDLTask> >) @ 0xe88a20d in /usr/bin/clickhouse
    5. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0x8505178 in /usr/bin/clickhouse
    6. 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()() @ 0x850712f in /usr/bin/clickhouse
    7. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x850274f in /usr/bin/clickhouse
    8. ? @ 0x85061e3 in /usr/bin/clickhouse
    9. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
    10. __clone @ 0xfe8dd in /usr/lib64/libc-2.17.so
    (version 21.2.10.48 (official build))
  • https://t.me/clickhouse_ru
    Какой последний номер?
  • https://t.me/clickhouse_ru
    последний query-0000001493
    первый query-0000001438
  • https://t.me/clickhouse_ru
    Вообще все неправильно понимаете. Давайте в гитхаб это не телефонный разговор.
  • В смысле в сорцы? 🙂
  • https://t.me/clickhouse_ru
    Чудеса. А после рестрта на другой ругается? При рестарте кх пишет дофига про это. Нужен лог в режиме трейс при рестарте
  • https://t.me/clickhouse_ru
    Issue/question
    Тут писать 2 часа ответ. И потом этот ответ навсегда будет похоронен в чате
  • Ок, я сделаю вопрос в discussions, спасибо
  • Exactly-once write semantics · Discussion #28270 · ClickHouse/ClickHouse

    Hi Team, I'd like to understand the proper way to ensure exactly-once ingestion into a sharded deployment of ClickHouse (multiple shards, with the same ReplicatedMergeTree tables configured...

  • https://t.me/clickhouse_ru
    @Oleksandr_Kostiuk_Apex #232440 02:35 PM, 27 Aug 2021
    привет, подскажите, пожалуйста, у кого был опыт с функцией anyLast(). Как именно она работает. Хочу использовать ее для извлечения значения последний записи из колонки по которой делаю group by. Смущает то, что в документации написанно, что она недетерминированная
  • https://t.me/clickhouse_ru
    т.е. вы хотите сунуть агрегатную функцию в group by?
  • https://t.me/clickhouse_ru
    а зачем? кликхаус сам в фоне это сделает максимально эффективно. или у вас в новом непрерывном потоке идут уже только уникальные строки, которые никак не пересекаются со старыми данными и вам хочется и старые данные привести в консистентное состояние? иначе если новые данные продолжают пересекаться со старыми, то в консистентном состоянии после оптимайза оно у вас проживёт максимум минуту.
  • фоновые мержи прекращаются если суммарный размер кусков для слияния больше чем max_bytes_to_merge_at_max_space_in_pool получается со временем на старых партах мержи прекращаются совсем и к ним добавляются всё новые и новые
  • https://t.me/clickhouse_ru
    @madreyg #232445 03:07 PM, 27 Aug 2021
    @den_crane @salttan Вообщем полечилось. Не знаю как но. При изменении level'а лого решили перезагрузить ОБЕ ноды clickhouse. И после ребута все пришло в норму. Пока, не понимаем в чем была причина - будем дальше копать. Спасибо вам огромное за помощь.
  • https://t.me/clickhouse_ru
    @DimaVS ↶ Reply to #232426 #232446 03:24 PM, 27 Aug 2021
    Неа
    Спасибо за совет!
  • https://t.me/clickhouse_ru
    @chAlx314 #232447 03:27 PM, 27 Aug 2021
    Я правильно понимаю, что для округления есть 9 встроенных функций, из которых две реализуют бухгалтерское округление (round и roundBankers) и ни одна не реализует простое 2.5 ->3?

    select round(1.05, 1), round(1.15, 1), round(1.25, 1), round(1.35, 1), round(1.45, 1), round(1.55, 1) format TSV;
    1 1.2 1.2 1.4 1.4 1.6
  • https://t.me/clickhouse_ru
    ceil(x[, N])?
  • https://t.me/clickhouse_ru
    типа как в школе округляли? используйте банковское, оно в случае пятёрки округляет до чётного, а не всегда в верхнюю сторону, благодаря чему накопленная ошибка растёт меньше. взрослый инструмент - взрослое округление :)
  • https://t.me/clickhouse_ru
    @konnectrl #232450 04:26 PM, 27 Aug 2021
    Приветствую, что можно сделать с тем, что superset не видит столбец с типом DateTime64, как временной ряд в датасете ?
  • https://t.me/clickhouse_ru
    хотя конечно функция roundMath не была бы лишней, чтобы например цифры с постгресом сверить или типа того
  • https://t.me/clickhouse_ru
    обновиться?
  • https://t.me/clickhouse_ru
    Дак только что все установил
  • https://t.me/clickhouse_ru
    навскидку саппорт DateTime64 уже давно добавили. возможно ваш кейс не покрыт
    https://github.com/apache/superset/search?q=DateTime64&type=issues
    Search · DateTime64 · apache/superset

    Apache Superset is a Data Visualization and Data Exploration Platform - Search · DateTime64 · apache/superset

  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @konnectrl #232456 04:34 PM, 27 Aug 2021
    DateTime64
  • https://t.me/clickhouse_ru
    и что у вас за версия суперсета?
  • https://t.me/clickhouse_ru
    @konnectrl #232458 04:35 PM, 27 Aug 2021
    git clone и docker-compose
  • https://t.me/clickhouse_ru
    Но почему то показывает 00000
  • https://t.me/clickhouse_ru
    тогда нужно заводить тикет на гитхабе
  • https://t.me/clickhouse_ru
    На этом и встрял: сверял суммы, посчитанные то ли другой базой, то ли бэкендом. Естественно, там везде классическое округление (и достаточное количество запасных знаков после запятой, чтобы оно не портило результат).
  • https://t.me/clickhouse_ru
    На мой взгляд, надеяться на ReplacingMT в таких больших таблицах - архитектурная ошибка.
    Все время придется перемерживать те 1.5 терабайта, мало кто этого хочет.
    Побейте на партиции может?
  • Спасибо, Татьяна. Не бьется к сожалению разумно ( Буду костылить.
  • @214612813 #232466 05:39 PM, 27 Aug 2021
    Похожая архитектруа с иммутабельными сегментами в ElasticSearch, но там есть счётчик удалений, как только он перваливает за определенный процент сегмент идет на мерж. Понятно что тут такое не возможно.
  • https://t.me/clickhouse_ru
    так взять хеш % 20 от какого нибудь ключа из ORDER BY
  • неплохой совет 👍, проблема что чтение по всей таблице, но попробую...
  • @214612813 #232469 05:57 PM, 27 Aug 2021
    пользуясь затишьем, планируется ли в ClickHouse arrays реализовать (или уже есть) функции бинарнного поиска, ну то есть has() по отсортированному массиву?
  • https://t.me/clickhouse_ru
    @unamedrus #232470 06:00 PM, 27 Aug 2021
    Кто то просил, но думаю это не особо интересно вот и не делают.

    Вообще можно тогда в сторону битмапов посмотреть они должны быть быстрее на поиск элементов в них.
  • @214612813 #232471 06:01 PM, 27 Aug 2021
    спасибо за наводку
  • https://t.me/clickhouse_ru
    А что, большие массивы?

    Можно просто транспонировать массив в таблицу в памяти, накинуть на неё индекс и искать :)
  • @simpl1g #232473 06:21 PM, 27 Aug 2021
    А есть что-то почитать из серии bitmap + clickhouse не на китайском? Пробовал отсюда https://kb.altinity.com/altinity-kb-queries-and-syntax/roaring-bitmaps-for-calculating-retention поиграть с нашими данными, если использовать UInt64 в битмапе получается в разы медленее чем просто uniqExact
  • нет, 200млн маленьких по 100 элементов :)
  • https://t.me/clickhouse_ru
    чем uniqExact медленнее будет это факт.

    Но скорее всего быстрее чем массивы на некоторых вариантах запросов
  • https://t.me/clickhouse_ru
    пыщь
  • жаль, думал ускорить расчёт ретеншена за счёт этого
  • https://t.me/clickhouse_ru
    А версия какая?
  • https://t.me/clickhouse_ru
    21.3 последняя
  • https://t.me/clickhouse_ru
    @unamedrus #232481 06:32 PM, 27 Aug 2021
    SELECT
    timestamp,
    rid,
    bs,
    h,
    count() AS cnt,
    groupArray(something)
    FROM table
    WHERE
    timestamp BETWEEN '2021-08-25 00:00:00' AND '2021-08-25 23:59:59'
    GROUP BY timestamp, rid, c, cr
    HAVING cnt > 1

    https://clickhouse.tech/docs/en/operations/settings/settings/#optimize_aggregation_in_order
    Settings | ClickHouse Documentation

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

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

    ORDER BY (timestamp)

    То optimize_aggregation_in_order=1 не будет жрать память
  • https://t.me/clickhouse_ru
    @nyoroon #232485 06:34 PM, 27 Aug 2021
    хм, попробую, спасибо
  • ну я так понял это они и завезли битмапы в КХ и было бы интересно подробнее узнать как они с ними работают
  • https://t.me/clickhouse_ru
    @YevgeniyGolovko #232488 06:56 PM, 27 Aug 2021
    Здравствуйте, есть-ли возможность использовать iam roles в операторе?
  • https://t.me/clickhouse_ru
    DB::Exception: Memory limit (total) exceeded: would use 72.00 GiB (attempt to allocate chunk of 4718592 bytes), maximum: 72.00 GiB: While executing AggregatingTransform.
  • https://t.me/clickhouse_ru
    SHOW CREATE TABLE xxx;
  • https://t.me/clickhouse_ru
    @nyoroon #232491 07:11 PM, 27 Aug 2021
    у меня distributed, показать на что она ссылается?
  • https://t.me/clickhouse_ru
    Д
  • https://t.me/clickhouse_ru
    CREATE TABLE table_lr( `timestamp` DateTime CODEC(DoubleDelta, LZ4), - 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
    @nyoroon #232494 07:16 PM, 27 Aug 2021
    чёт паста слова timestamp заглавными сделала, они там строчные
  • https://t.me/clickhouse_ru
    А если на локальной выполнить?
  • https://t.me/clickhouse_ru
    то же самое
  • https://t.me/clickhouse_ru
    @unamedrus #232497 07:28 PM, 27 Aug 2021
    https://github.com/ClickHouse/ClickHouse/issues/18384

    Думал, что aggregation in order по частичному ключу работает, а оказывается что нет.

    А много комбинаций rid, c, cr

    Для каждого timestamp набирается?
    Apply optimize_aggregation_in_order even if group by matches the sort key partially · Issue #18384 · ClickHouse/ClickHouse

    Use case Given some table with a sort key (k1, k2, k3): CREATE TABLE test (k1 Int32, k2 Int32, k3 Int32) ENGINE = MergeTree() ORDER BY (k1, k2, k3); It's possible to use the group by optimi...

  • https://t.me/clickhouse_ru
    @unamedrus #232498 07:29 PM, 27 Aug 2021
    SELECT
    timestamp,
    groupUniqArray((rid,
    bs,
    h)) as uniq,
    count() AS cnt
    FROM table
    WHERE
    timestamp BETWEEN '2021-08-25 00:00:00' AND '2021-08-25 23:59:59'
    GROUP BY timestamp
    HAVING cnt > lenght(uniq)
  • https://t.me/clickhouse_ru
    @nyoroon #232499 07:31 PM, 27 Aug 2021
    groupUniqArray я делать не буду, просто uniqExact
  • https://t.me/clickhouse_ru
    @unamedrus #232500 07:31 PM, 27 Aug 2021
    Ок
  • https://t.me/clickhouse_ru
    @387452444 #232501 07:31 PM, 27 Aug 2021
    а подскажите плиз где смотреть идет ли материализация projection.. а то alter table materialize projection выполняется сразу... видимо мне надо было с mutations_sync=1 выполнять? чтобы синхронно было
  • https://t.me/clickhouse_ru
    SELECT
    database,
    table,
    partition_id,
    sum(parent_rows),
    sum(bytes_on_disk),
    sum(rows),
    sum(bytes_on_disk)
    FROM system.projection_parts
    WHERE active
    GROUP BY
    database,
    table,
    partition_id
    ORDER BY
    database ASC,
    table ASC,
    partition_id ASC
  • https://t.me/clickhouse_ru
    ага, выдает.. Спасибо!
  • https://t.me/clickhouse_ru
    именно uniq((rid, bs, h)) или всё-таки uniq((rid, c, cr))?
  • https://t.me/clickhouse_ru
    uniqExact(rid, c, cr)

    Мы не ожидаем, что там будем много набираться
  • https://t.me/clickhouse_ru
    ┌───────────timestamp─┬───uniq─┬─────cnt─┐
    │ 2021-08-25 12:00:00 │ 970890 │ 1131512 │
    │ 2021-08-25 12:00:01 │ 970113 │ 1132375 │
    │ 2021-08-25 12:00:02 │ 971406 │ 1135308 │
    │ 2021-08-25 12:00:03 │ 971706 │ 1137377 │
    │ 2021-08-25 12:00:04 │ 977098 │ 1145807 │
    │ 2021-08-25 12:00:05 │ 974785 │ 1143080 │
    │ 2021-08-25 12:00:06 │ 988491 │ 1159750 │
    │ 2021-08-25 12:00:07 │ 986928 │ 1159493 │
    │ 2021-08-25 12:00:08 │ 983425 │ 1155304 │
    │ 2021-08-25 12:00:09 │ 982310 │ 1153173 │
    │ 2021-08-25 12:00:10 │ 975732 │ 1141407 │
    │ 2021-08-25 12:00:11 │ 984582 │ 1151035 │
    │ 2021-08-25 12:00:12 │ 980825 │ 1145363 │
    │ 2021-08-25 12:00:13 │ 981126 │ 1144012 │
    │ 2021-08-25 12:00:14 │ 984385 │ 1145369 │
    │ 2021-08-25 12:00:15 │ 978781 │ 1138315 │
    │ 2021-08-25 12:00:16 │ 988682 │ 1153108 │
    │ 2021-08-25 12:00:17 │ 983832 │ 1149268 │
    │ 2021-08-25 12:00:18 │ 984239 │ 1151361 │
    │ 2021-08-25 12:00:19 │ 981598 │ 1146698 │
    │ 2021-08-25 12:00:20 │ 977277 │ 1141136 │
    │ 2021-08-25 12:00:21 │ 990555 │ 1158971 │
    │ 2021-08-25 12:00:22 │ 985416 │ 1156019 │
    │ 2021-08-25 12:00:23 │ 984909 │ 1158693 │
    │ 2021-08-25 12:00:24 │ 979217 │ 1152676 │
    │ 2021-08-25 12:00:25 │ 974209 │ 1144848 │
    │ 2021-08-25 12:00:26 │ 985303 │ 1157579 │
    │ 2021-08-25 12:00:27 │ 982138 │ 1153044 │
    │ 2021-08-25 12:00:28 │ 977297 │ 1146061 │
    │ 2021-08-25 12:00:29 │ 975132 │ 1141497 │
    │ 2021-08-25 12:00:30 │ 971803 │ 1134991 │
    └─────────────────────┴────────┴─────────┘
  • https://t.me/clickhouse_ru
    Ну хм, а сколько памяти использует?
  • https://t.me/clickhouse_ru
    @nyoroon #232508 07:43 PM, 27 Aug 2021
    за 30 секунд выборки 2 гб
  • https://t.me/clickhouse_ru
    @nyoroon #232509 07:43 PM, 27 Aug 2021
    за целый день слишком много строчек
  • https://t.me/clickhouse_ru
    @unamedrus #232510 07:44 PM, 27 Aug 2021
    а с aggregation_in_order выполнилось?

    Если нет то можно попробовать уменьшить max_block_size или max_threads;
  • https://t.me/clickhouse_ru
    а каким параметром можно увеличить количество тредов для материализации проекции? а то background_pool_size вроде 16 стоит, а ядро одно грузит только
  • https://t.me/clickhouse_ru
    Думаю никаким
  • https://t.me/clickhouse_ru
    ставил max_threads = 1 и max_block_size = 100...1M, падает. всё это с optimize_aggregation_in_order = 1
  • https://t.me/clickhouse_ru
    @unamedrus #232514 07:50 PM, 27 Aug 2021
    Так, а если send_logs_level='trace';

    Merging partially aggregated blocks (bucket = -1).

    Merged partially aggregated blocks. 65505 rows, 1.25 MiB. in 0.0070238 sec. (9326148.239 rows/sec., 177.88 MiB/sec.)

    Такое в логах видно?
  • https://t.me/clickhouse_ru
    @nyoroon #232515 07:51 PM, 27 Aug 2021
    такое: <Trace> AggregatingInOrderTransform: Aggregating in order
  • https://t.me/clickhouse_ru
    @unamedrus #232516 07:53 PM, 27 Aug 2021
    Не похоже что бы optimize_aggregation_in_order работало.

    У меня логи так выглядят

    Aggregator: Merged partially aggregated blocks. 100 rows, 1.95 KiB. in 1.49e-05 sec. (6711409.396 rows/sec., 128.01 MiB/sec.)
    Aggregator: Merging partially aggregated blocks (bucket = -1).
    Aggregator: Merged partially aggregated blocks. 100 rows, 1.95 KiB. in 1.59e-05 sec. (6289308.176 rows/sec., 119.96 MiB/sec.)
    Aggregator: Merging partially aggregated blocks (bucket = -1).
    Aggregator: Merged partially aggregated blocks. 100 rows, 1.95 KiB. in 1.53e-05 sec. (6535947.712 rows/sec., 124.66 MiB/sec.)
    Aggregator: Merging partially aggregated blocks (bucket = -1).
    Aggregator: Merged partially aggregated blocks. 100 rows, 1.95 KiB. in 2.46e-05 sec. (4065040.650 rows/sec., 77.53 MiB/sec.)
    Aggregator: Merging partially aggregated blocks (bucket = -1).
    Aggregator: Merged partially aggregated blocks. 100 rows, 1.95 KiB. in 1.57e-05 sec. (6369426.752 rows/sec., 121.49 MiB/sec.)
    Aggregator: Merging partially aggregated blocks (bucket = -1).
    Aggregator: Merged partially aggregated blocks. 100 rows, 1.95 KiB. in 3.03e-05 sec. (3300330.033 rows/sec., 62.95 MiB/sec.)
    Aggregator: Merging partially aggregated blocks (bucket = -1).
    Aggregator: Merged partially aggregated blocks. 100 rows, 1.95 KiB. in 2.22e-05 sec. (4504504.505 rows/sec., 85.92 MiB/sec.)
  • https://t.me/clickhouse_ru
    @nyoroon #232517 07:55 PM, 27 Aug 2021
    я так понимаю что у меня до мержа не доходит
  • https://t.me/clickhouse_ru
    это, потом это: <Debug> MemoryTracker: Current memory usage (for query): 36.00 GiB.
    и потом падает
  • https://t.me/clickhouse_ru
    А если с обычным uniq? то в логах это есть?
  • https://t.me/clickhouse_ru
    @nyoroon #232520 08:00 PM, 27 Aug 2021
    есть такое: <Trace> AggregatingInOrderTransform: Aggregated. 159458483 to 22316 rows (from 5.41 GiB)
    но вроде почти отработало
  • https://t.me/clickhouse_ru
    @nyoroon #232521 08:02 PM, 27 Aug 2021
    и такое есть: <Information> executeQuery: Read 807449568 rows, 27.42 GiB in 217.876861703 sec., 3705990 rows/sec., 128.85 MiB/sec.
  • https://t.me/clickhouse_ru
    @nyoroon #232522 08:02 PM, 27 Aug 2021
    о, в конце запроса появилось <Trace> Aggregator: Merging partially aggregated blocks (bucket = -1).
  • https://t.me/clickhouse_ru
    @nyoroon #232523 08:04 PM, 27 Aug 2021
    но запрос нормально отработал
  • https://t.me/clickhouse_ru
    @nyoroon #232524 08:05 PM, 27 Aug 2021
    MemoryTracker: Peak memory usage (for query): 21.56 GiB.
  • 28 August 2021 (23 messages)
  • @simpl1g #232528 10:53 AM, 28 Aug 2021
    Подскажите, можно как-то проверить что КХ упирается в background_pool_size, кроме как создания metric_log таблицы.

    Периодически стали падать ошибки DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000619929 is executing longer than distributed_ddl_task_timeout (=180) seconds. В запросах типа ALTER TABLE table ON CLUSTER cluster DROP PARTITION 20210827. Хочу понять поможет ли увеличение pool size в таком случае
  • https://t.me/clickhouse_ru
    @dmitriynvkv #232529 11:02 AM, 28 Aug 2021
    Всем привет, кто то может посоветовать что то почитать касаемо cpu и векторных вычислений, как происходят на уровне ядра эти вычисления? Что это в целом значит...
  • https://t.me/clickhouse_ru
    Тут рассказывает про оптимизацию в кликхаусе и об них тоже https://www.youtube.com/watch?v=MJJfWoWJq0o&ab_channel=fwdays
    Оптимизация агрегатной функции в ClickHouse [ru] / Алексей Миловидов

    Видео с онлайн-конференции Highload fwdays'20, которая прошла 17 октября 2020 года. Описание доклада: Что может быть проще на следующий запрос для подсчета среднего значения одного столбца? SELECT key, avg (value) FROM table GROUP BY key Но вопрос в том, будет ли этот запрос эффективным? Какой код мог бы достичь максимального быстродействия на широком "железе"? Страница доклада: https://fwdays.com/event/highload-fwdays-2020/review/lets-optimize-one-aggregate-function-in-clickhouse Больше докладов и видео по теме конференции: https://fwdays.com/event/highload-fwdays-2020 Fwdays более 10 лет занимается организацией масштабных конференций для разработчиков таких направлений: JavaScript, .Net, Python, Data Science, PHP, QA, Highload, Architecture, DevOps, Databases. Больше информации про актуальные события: https://fwdays.com/events Подписывайтесь, чтобы первыми узнавать про старт продаж билетов по самой выгодной цене: Facebook: https://www.facebook.com/fwdays Twitter: https://twitter.com/hlfwdaysconf Telegram:…

  • https://t.me/clickhouse_ru
    @387452444 #232535 02:27 PM, 28 Aug 2021
    я вот решил на досуге поковырять data skipping indexes. вот есть у меня колонка 'domain' у которой могут быть значения от 0 до 100. и решил я добавить на нее индекс 'set(100)' и материализовал индекс потом. и в итоге получился запрос where domain=X стал выполняться в полтора раза медленнее. Это потому что разброс по значению такой что все равно во всех партах почти встречается X и из-за дополнительного лукапа по индексу стало еще медленнее? потому что сканирует все данные все равно да
  • https://t.me/clickhouse_ru
    да.
    Но теперь можно сделать прожекшин https://t.me/clickhouse_en/36650 отсортированный по domain и включить туда нужные поля, или сразу посчитать агрегаты и создать group by domain прожекшин
  • https://t.me/clickhouse_ru
    ага, да про прожекшены знаю - красивое.. и даже работает
  • https://t.me/clickhouse_ru
    Spasibo
  • https://t.me/clickhouse_ru
    @nyoroon #232542 04:30 PM, 28 Aug 2021
    проджекшн это как встроеная матвьюха?
  • @214612813 #232543 04:34 PM, 28 Aug 2021
    Вот тут вся соль от создателя: https://www.youtube.com/watch?v=jJ5VuLr2k5k
    Amos Bird - kuaishou.com - Projections in ClickHouse - Percona Live 2021

    Projections are collections of table columns with different physical layout to speed up queries. They are the main constructs of Vertica. Comment 💬, Share 🔗, Like 👍, and Subscribe ✅ to our channel 📺, and turn on the 🔔 to be alerted to new videos about #OpenSource #Databases... and many other things! https://percona.tv/subscribe At kuaishou.com we have implemented PROJECTIONs support for ClickHouse. It boosts our OLAP analytic capabilities by an order of magnitude. This talk will highlight the design considerations, some implementation details, how it is integrated into #ClickHouse design. Examples and demo of the feature will be shown. You can find more information about #OpenSource #Databases and Percona Database Events in these links 👇👇👇 Watch Percona Live 2021 Talks ⏩ https://percona.tv/PerconaLive2021 Percona Services ⏩ https://per.co.na/Q8eykw Monitor your Database For Free ⏩ https://percona.tv/pmm-yt Kubernetes Operator for Databases ⏩https://per.co.na/kubernetes-operators Connect With us on our…

  • @sklepych #232544 04:41 PM, 28 Aug 2021
    Ну вобщем да, в вертике это очень полезный инструмент. Но кмк в клике он не вот нужен был
  • Нам очень зашло, самое классное это консистентность данных в рамках парта. Правда отложили до лучших времен, потому как падал materialize на больших партах (
  • https://t.me/clickhouse_ru
    @387452444 #232546 04:51 PM, 28 Aug 2021
    ну главные фичи, что при mutation тоже обновляется, и не надо менять имя таблицы.....
  • https://t.me/clickhouse_ru
    @NataVolkova92 #232547 06:20 PM, 28 Aug 2021
    Привет) Подскажите, при загрузке из csv выдается ошибка , если поле даты пустое : Column 22, name: WORK_DAY, type: Date, ERROR: text ";0;0;2;2;0" is not like Date
    разделитель при вставке указан --format_csv_delimiter=";"
    Что нужно сделать?
  • А поле work_day в формате yyyy-MM-dd?
  • https://t.me/clickhouse_ru
    @NataVolkova92 #232549 06:57 PM, 28 Aug 2021
    Да
  • https://t.me/clickhouse_ru
    Версия кх? Там есть парметр empty... default в современном кх он по умолчанию стоит.
  • https://t.me/clickhouse_ru
    @399999446 #232551 08:47 PM, 28 Aug 2021
    Всем привет
    Вопрос по поводу как dataframe заинсертить в базу
    DDL

    create table test(
    id1 String,
    id2 String,
    id3 String
    )Engine = MergeTree() order by id1

    Pandas

    df = pd.DataFrame({'id1':[1,2,3],'id2':[10,20,30],'id3':[100,200,300]})

    --**************************
    clickhouse.insert_dataframe('insert into dn140692tdi.test(id1,id2,id3) values', df)

    TypeError: Unsupported column type: <class 'numpy.ndarray'>. list or tuple is expected.

    Что я неверное передаю?
  • https://t.me/clickhouse_ru
    Какая библиотек? Ответ в трейсе весьма очевидный, ваша либа не поддерживает numpy.array
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @dmitriynvkv #232554 08:58 PM, 28 Aug 2021
    Ого че интересное там появилось. Может попробовать обновить numpy?
  • https://t.me/clickhouse_ru
    numpy==1.21.1
  • https://t.me/clickhouse_ru
    Как клиент создан покажите
  • https://t.me/clickhouse_ru
    @wXhexo #232557 11:54 PM, 28 Aug 2021
    Подскажите по серваку для кх, сейчас юзаю старый ПК, 4 cores,16gb ram, hdd 160gb - полудохлый.

    Упёрся в io, уже даже подобрал сжатие максимальное - все равно, + места маловато.
    В день ~5-10gb пишется при активной работе (чтение естественно в огромных количествах)

    Вижу 3 решения:
    1) докупить ссд на 1 tb
    2) докупить пару hdd по 1tb, в raid 0
    3) арендовать что-то аналогичное

    Вопросы:
    1) подводные с raid + кх?
    2) стоимость аналогичного vps/vds? кто где арендует?

    Пока склоняюсь к паре hdd, дешевле, места прилично
  • 29 August 2021 (47 messages)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232557 #232559 05:56 AM, 29 Aug 2021
    Ваше время скорее всего дороже чем этот мусорный "типа-сервер". Лучше запланировать и купить новый. Если же есть желание чего-то в нем проапгрейдить (до тех пор пока не появится настоящий сервер), то поставьте больше памяти (сколько влезет в этот ПК).
    КХ сам умеет распределять iops по нескольким дискам без всяких рейдов, а про множественные HDD лучше и не думайте - современный способ добычи iops - это SSD. HDD сегодня имеет смысл только если он 16Tb, и используется для какого-то долговременного хранения типа бекапов.
    Арендовать в облаке - хорошая идея, только облачное хранилище на 1Tb стоит весьма прилично. Посмотрите на hetzner - там вроде было дешевле среднего, при достаточно вменяемом сервисе.
  • https://t.me/clickhouse_ru
    @wXhexo #232560 06:11 AM, 29 Aug 2021
    В него и 64ram без проблем лезет и зеон какой-нибудь, но для поиграться и пощупать этого пока хватало.

    Спасибо за информацию, наверное возьму ssd, практичнее будет
  • @nizovtsevnv #232561 06:13 AM, 29 Aug 2021
    в документации кликхаус вполне четко рекомендации написаны с указанием причин
  • @nizovtsevnv #232562 06:14 AM, 29 Aug 2021
    - надо оперативку
    - надо ссд
    - надо вставки делать пакетно не чаще раза в секунду
  • https://t.me/clickhouse_ru
    @wXhexo #232563 06:17 AM, 29 Aug 2021
    Я скорее неправильно обрисовал вопрос, bottleneck на чтение.

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

    Выделять средства на сервер для кх желания нету, так как это песочница для меня, которая денег не принесет, что-то требовательное кроме кх не планируется, поэтому и спросил best practice
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232560 #232564 06:18 AM, 29 Aug 2021
    поиграться можно и в облаке. Все дают бесплатный кредит за знакомство: яндекс - 4000р, хетзнер 20 eur, гугл какие-то сотни долларов, амазон не помню.
  • перечисленное в документации и есть бэстпрактис ) а на селекты логично реплики добавлять и их мучать
  • @nizovtsevnv #232568 06:22 AM, 29 Aug 2021
    но это уже добавочное железо все равно
  • @nizovtsevnv #232569 06:22 AM, 29 Aug 2021
    кх изначально не позиционировался под скорострельный олтп, он для олап нужд идеален
  • @nizovtsevnv #232570 06:27 AM, 29 Aug 2021
    попробуйте для песочницы второй гарбэдж-бокс по кладовкам поискать, будет с чем поиграть в горизонтальном масштабировании, это интереснее будет для экспериментов
  • https://t.me/clickhouse_ru
    По сути только 2 бюджетных варианта. Взять виртуалку в хецнере. Либо взять самый дешёвый сервак там же. Если юзаете в проде и нет админов, то лучше виртуалку. К тому же там можно примонтировать внешний динамический диск и расширять его при необходимости, а не платить сразу за терабайт.
  • https://t.me/clickhouse_ru
    Админы, добавьте уже @ProtectronBot . Это не сложно.
  • https://t.me/clickhouse_ru
    я в своё время просто нашёл тюториал в инете по mmx/sse/sse2: https://www.tommesani.com/Docs.html . вообще поиском например по MMX instructions example или sse2 tutorial можно найти очень много лекций

    а дальше читал в википедии опиcание новых инструкций, благо что их немного: https://en.wikipedia.org/wiki/X86_instruction_listings#SIMD_instructions

    когда ты понял систему, описание конкретных инструкций удобно смотреть в intel intrinsic guide. если есть конкретные вопросы - можешь спросить у меня
  • https://t.me/clickhouse_ru
    @zzhanabek #232577 11:47 AM, 29 Aug 2021
    Привет, всем. У меня вопрос, чтобы резюмировать свои познания в clickhouse.

    1 шард, 3 ноды, 1 таблица ReplicatedMergeTree. Балансировка нагрузки и балансировка SELECT запросов будет работать?

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

    max_parallel_replicas не работает ни у кого, оно не может работать если реплик меньше 10.

  • https://t.me/clickhouse_ru
    А эксперименты с distributed таблицами?
  • https://t.me/clickhouse_ru
    а они нужны когда шардов несколько
  • https://t.me/clickhouse_ru
    @zzhanabek #232581 12:04 PM, 29 Aug 2021
    Спасибо.
    Вариант не подходит.
    Но правильно ли я понял, что я просто буду на рандомной ноде дергать запрос и получать консистентные данные?
  • https://t.me/clickhouse_ru
    инсерты на реплики eventually докатываются, но в остальном да
    обычно быстро, если никаких проблем нет
  • https://t.me/clickhouse_ru
    @zzhanabek #232583 12:07 PM, 29 Aug 2021
    Последний вопрос, драйвера clickhouse хорошо дружат с TCP-балансерами?
  • https://t.me/clickhouse_ru
    @Yuri_Velgosha #232584 03:06 PM, 29 Aug 2021
    Недавно тестировал Netscaler в качестве балансировщика для инсертов. Вышло медленнее, чем при инсерте через одну ноду
  • https://t.me/clickhouse_ru
    @azilber #232585 03:30 PM, 29 Aug 2021
    Всем доброго вечера. Подскажите, проводятся ли какие-нибудь курсы по кликхаусу, а то в инете что-то не нахожу?
  • https://t.me/clickhouse_ru
    алтинити тренинги проводит в компаниях
  • https://t.me/clickhouse_ru
    там серьезный уровень или пересказ доки?
  • https://t.me/clickhouse_ru
    серьёзнее некуда :) здесь в чате есть консультанты из алтинити, можете прям их спросить
  • @simpl1g #232589 03:35 PM, 29 Aug 2021
    Там вроде начальный уровень
  • https://t.me/clickhouse_ru
    >Независимо от того, являетесь ли вы новичком или опытным пользователем, обучение Altinity ClickHouse превратит вашу команду в экспертов ClickHouse.
    >Продолжительность - 8 часов (четыре 2-часовых занятия в течение двух недель)
    https://altinity.com/clickhouse-training/
    ClickHouse Training Built For Your Use Case — Altinity

    Design high-performance analytic apps, optimize SQL queries, set up secure ClickHouse clusters, replicate data with Altinity’s ClickHouse training series. Lab exercises included!

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

    Разве что у вас резкое пополнение и нужно обучить молодежь.
  • ну там дальше список тем есть, если есть минимальный опыт работы с КХ в кластере, то наврятли поможет
  • https://t.me/clickhouse_ru
    @unamedrus #232593 03:47 PM, 29 Aug 2021
    А дальше можно:

    Прочитать всю нашу кб https://kb.altinity.com/ и блоги https://altinity.com/blog/
    Посмотреть все видео от яндекса по внутреннему устройству кх
    Купить наш саппорт :) тогда мы будем рассказывать уже всякие особенности КХ применимые к конкретно вашим данным.
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #232593 #232594 03:51 PM, 29 Aug 2021
    А по стоимости типовых программ саппорта можете сориентировать? Не чтобы оферта, но чтобы можно было хотя бы примерно понять стоимость, скажем, 10 часов консультаций в месяц.
  • https://t.me/clickhouse_ru
    Мы не продаем консультации по часам.
    У нас оплата за сервера в год, по конкретным ценам к сожалению не смогу сориентировать. (но вы можете написать @AurimasJ )
  • https://t.me/clickhouse_ru
    уровень как у наших ответов в чате. Но все же это ДЛЯ тех кто еще только начинает пользоваться КХ и по верхам. 8 часов это мало.
    Нормальные курсы которые я слушал у Оракла или HP это неделя - две по 7 часов в день, т.е. где-то 70 часов. И они охватывали какой-то узкий раздел. У КХ будет так же.
  • @214612813 #232597 04:51 PM, 29 Aug 2021
    Планируются курсы такого уровня? Или вы о необходимом времени для изучения?
  • https://t.me/clickhouse_ru
    скорее нет, не планируется таких курсов.
  • https://t.me/clickhouse_ru
    А для селектов есть решения? А то уже каша в голове за последние недели изучения
  • https://t.me/clickhouse_ru
    @526143964 #232601 07:34 PM, 29 Aug 2021
    Подскажите, пожалуйста, что нужно изменить в кофигурационном файле, чтобы подсоединиться к кликхаусу на удаленной машине?
    Использую для этого командную строку:
    ➜ bin ./clickhouse client --host=<IP>--port=9000 --user=<NAME> --password=<PASS> -d somedb
    ClickHouse client version 21.10.1.7910 (official build).
    Connecting to database userdb at <IP>:9000 as user tableau.
    Code: 209. DB::NetException: Timeout: connect timed out: <IP>:9000 (<IP>:9000). (SOCKET_TIMEOUT)
    --------------
    Встречал такой совет: добавить listen host в config:
    <listen_host>::1</listen_host>
    <listen_host>0.0.0.0</listen_host>
    Не помогает. Всегда 209 ошибка. Через какой-либо клиент, например, IDEA соединяюсь. Но в таком случае используется порт 8123. А как использовать 9000 через командную строку?
    Спасибо
  • @214612813 #232602 07:55 PM, 29 Aug 2021
    sudo netstat -nlpt | grep clickhouse на сервере что показывает
  • @214612813 #232604 08:00 PM, 29 Aug 2021
    и ещё с локального nc -zv YOUR_SERVER_IP 9000
  • https://t.me/clickhouse_ru
    @526143964 #232605 08:05 PM, 29 Aug 2021
    sudo netstat -nlpt | grep clickhouse
    tcp 0 0 0.0.0.0:9009 0.0.0.0:* LISTEN 637102/clickhouse-s
    tcp 0 0 0.0.0.0:8123 0.0.0.0:* LISTEN 637102/clickhouse-s
    tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 637102/clickhouse-s
    tcp 0 0 0.0.0.0:9004 0.0.0.0:* LISTEN 637102/clickhouse-s
  • https://t.me/clickhouse_ru
    @zzhanabek #232606 08:06 PM, 29 Aug 2021
    Firewall
  • https://t.me/clickhouse_ru
    @526143964 #232607 08:07 PM, 29 Aug 2021
    nc -zv <IP> 9000
    nc: connectx to <IP> port 9000 (tcp) failed: Operation timed out
  • https://t.me/clickhouse_ru
    на локальной машине?
  • @214612813 #232609 08:07 PM, 29 Aug 2021
    ищите проблему в firewall
  • https://t.me/clickhouse_ru
    Где сервер клика
  • @214612813 #232611 08:08 PM, 29 Aug 2021
    можно и там и там посмотреть
  • https://t.me/clickhouse_ru
    @526143964 #232612 08:08 PM, 29 Aug 2021
    хорошо, спасибо большое
  • 30 August 2021 (116 messages)
  • https://t.me/clickhouse_ru
    Судя по коду https://github.com/ClickHouse/ClickHouse/blob/98eb619b4b1fc5e9f82790c4810be4e0cbed3fcf/src/Columns/ColumnNullable.h#L65 если значение колонки null, то функции decrypt передается не null, а некоторое специальное значение. Поэтому и возникает ошибка. Проверять на null предварительно я тоже не могу, т.к. IF в моей версии КХ вычисляется нелениво. Какие существуют best practise для хранения зашифрованных данных, если эти данные могут отсутствовать? Шифровать пустую строку кажется неэффективным, с учетом, что ключи часто будут разными.
    ClickHouse/ColumnNullable.h at 98eb619b4b1fc5e9f82790c4810be4e0cbed3fcf · 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
    @ochumelec #232616 07:18 AM, 30 Aug 2021
    подскажите пожалуйста у кого-то получилось запустить CH на macbook m1 в докере?
  • https://t.me/clickhouse_ru
    попробуйте прописать платформу, если в docker-compose, то это выглядит приблизительно platform: linux/x86_64
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232614 #232618 07:22 AM, 30 Aug 2021
    не понял в чем проблема применить функцию ifnull
  • https://t.me/clickhouse_ru
    @anonymous_d_777 #232620 07:27 AM, 30 Aug 2021
    Помогите уменьшить размер таблицы system.query_log
    Ее размер приблизился по размеру к самим данным в CH.
    Как вижу есть 2 пути:
    1) Отключить логгирование совсем(что как я понял не есть хорошо)
    2) Поменять TTL для таблицы/уменьшить уровень логирования.
    Проблема еще в том, что страшно все поломать))
    Поэтому в приоритете понизить TTL. Отсюда вопрос - можно ли это сделать для системной таблицы? И если да, то как?
  • https://t.me/clickhouse_ru
    Retention
  • https://t.me/clickhouse_ru
    есть сборка под арм, неофициальная, гоняю ее в тест контейнерах - почти норм
    lunalabsltd/clickhouse-server
  • https://t.me/clickhouse_ru
    я как раз ее нашел, добавил в docker-compose но при билде пишет что нету манифеста(
  • https://t.me/clickhouse_ru
    Извините, а поподрбнее можно для новичков?
  • https://t.me/clickhouse_ru
    @ivymike_b #232625 07:30 AM, 30 Aug 2021
  • https://t.me/clickhouse_ru
    ERROR: manifest for lunalabsltd/clickhouse-server:latest not found: manifest unknown: manifest unknown
    как с этим боротся?
  • https://t.me/clickhouse_ru
    Вот так вот сразу гуглом тыкать? Я думал тут обмениваются опытом
  • посмотрите секцию <query_log> в конфиге
  • @214612813 #232629 07:34 AM, 30 Aug 2021
    а также настройки логирования
  • https://t.me/clickhouse_ru
    версию конкретную указать, например - тега лейтест нету у них
    https://hub.docker.com/r/lunalabsltd/clickhouse-server/tags?page=1&ordering=last_updated
  • https://t.me/clickhouse_ru
    Конфигурационные параметры сервера | Документация ClickHouse

    Конфигурационные параметры сервера builtin_dictionaries_reload_interval Интервал (в секундах) перезагрузки встроенных сл

  • https://t.me/clickhouse_ru
    завелось, спасибо!
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Настройки логирования нашел, но может можно запросом уменьшить TTL для этой таблицы?
  • https://t.me/clickhouse_ru
    @S_Dimitry #232636 07:43 AM, 30 Aug 2021
    День добрый, подскажите куда копнуть в КХ 21.5, тестирую мутации в партициях и одна мутация висит и ничего не делает, ошибок в логах нет. Партиция небольшая менее 3 Гб. Никаких мерджей и вставок нет.
  • https://t.me/clickhouse_ru
    Спасибо огромное!
  • в system.mutations parts_to_do не менятеся? latest_fail_reason пусто?
  • https://t.me/clickhouse_ru
    там специально мутация по партиции сделана, не меняется, соответственно в списке одна партиция и пустая причина. Свободного места на сервере 5 гигов при размере партиции в 2,9 Г.
  • https://t.me/clickhouse_ru
    подскажите, как она может мне помочь?
  • а что мутация делает вообще?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232641 #232643 08:03 AM, 30 Aug 2021
    подсунуть вместо null какую-то константу, на которой функция не будет падать?
  • https://t.me/clickhouse_ru
    alter table transactions_test update test='test4' in partition '2019-09-09' where test='test'
  • привет. я обнаружил проблему в том, что в JSON тип данных не совпадает с ожидаемым таблицей для конкретного поля (Integer -> String). Когда это поправил, импорт перестал сыпать такими сообщениями.
  • https://t.me/clickhouse_ru
    это будет все равно, что например шифровать пустую строку, КХ будет выполнять лишную работу по расшифровке
  • https://t.me/clickhouse_ru
    @ployd #232647 09:20 AM, 30 Aug 2021
    Может кто подсказать по max_live_view_insert_blocks_before_refresh. Правильно я понимаю, что они приводит к запросу в оригинальную таблицу каждые 64 вставки? То есть, если запрос вида max(timestamp) FROM original_table выполняется несколько секунд, то каждые 64 блока будет этот запрос на несколько секунд?
    Не могу отловить в query_log ничего связанного, туда записываются действия LV?
  • https://t.me/clickhouse_ru
    @rozhkovd #232648 09:21 AM, 30 Aug 2021
    Всем привет. Скажите кто-нибудь меняет процент резервируемого места для ext4 и будут ли последствия в перспективе, если изменить? А то на большом томе это получается довольно большой кусок
  • @beebeeep #232649 09:31 AM, 30 Aug 2021
    Место резервируется чтобы всякие системные вещи, бегущие от рута, не сломались когда юзерские программы съедят все место на диске
    Как по мне, так пользы в этом мало, потому что юзерские программы так-то и определяют смысл существования сервера. С другой стороны, какой-то резерв иметь надо потому что на систему с полностью забитым диском иной раз может быть невозможно залогиниться

    С третьей стороны, размер резерва волновать не должен, потому что надо мониторить и предпринимать действия гораздо раньше чем стрельнет резерв
  • https://t.me/clickhouse_ru
    @rozhkovd #232651 09:35 AM, 30 Aug 2021
    это все понятно, мне вот что именно интересно "Reserving some number of filesystem blocks for use by privileged processes is done to avoid filesystem fragmentation". Ну и меня беспокоит не системный раздел, а раздел с данными КХ
  • https://t.me/clickhouse_ru
    @mrpavelk #232652 09:58 AM, 30 Aug 2021
    Всем привет. Есть ли разница в производительности где указывать allow_experimental_window_functions в конфиге или в запросе?
  • @AU111111 #232653 11:10 AM, 30 Aug 2021
    Всем привет. Делаю запросы к КХ в python с помощью from clickhouse_driver import Client. Если я создаю один экземпляр Client и с помощью него делаю все запросы к КХ, то КХ начинает возвращать ошибку. Если же я создаю экземпляры Client для каждого запроса к КХ, то все работает без ошибок, но, думается, такое решение может привести к проблемам, когда запросов станет много. Кто-нибудь сталкивался с такой проблемой? Хотелось бы понять причину такого поведения и как корректно устранить эту проблему.
  • @AU111111 #232654 11:12 AM, 30 Aug 2021
    Текст ошибки: File "/code/geo/repositories/measurements.py", line 72, in get_AQI_distribution
        data = clickhouse_client.execute(
      File "/usr/local/lib/python3.8/site-packages/clickhouse_driver/client.py", line 248, in execute
        rv = self.process_ordinary_query(
      File "/usr/local/lib/python3.8/site-packages/clickhouse_driver/client.py", line 446, in process_ordinary_query
        return self.receive_result(with_column_types=with_column_types,
      File "/usr/local/lib/python3.8/site-packages/clickhouse_driver/client.py", line 113, in receive_result
        return result.get_result()
      File "/usr/local/lib/python3.8/site-packages/clickhouse_driver/result.py", line 50, in get_result
        for packet in self.packet_generator:
      File "/usr/local/lib/python3.8/site-packages/clickhouse_driver/client.py", line 129, in packet_generator
        packet = self.receive_packet()
      File "/usr/local/lib/python3.8/site-packages/clickhouse_driver/client.py", line 143, in receive_packet
        packet = self.connection.receive_packet()
      File "/usr/local/lib/python3.8/site-packages/clickhouse_driver/connection.py", line 490, in receive_packet
        raise errors.UnknownPacketFromServerError(
    clickhouse_driver.errors.UnknownPacketFromServerError: Code: 100. Unknown packet 4 from server None:None
  • https://t.me/clickhouse_ru
    все-таки дело было в свободном месте.
  • как поняли?
  • https://t.me/clickhouse_ru
    после рестарта КХ в system.errors появилась ошибка по месту
  • https://t.me/clickhouse_ru
    Мультитрединг?
  • интересно как без рестарта понять) Вы видимо размер парта смотрели в сжатом видите, а в разжатом больше 5Гб получалось
  • https://t.me/clickhouse_ru
    да, парт был сжат, тоже к этому выводу пришел. желательно иметь в 4 раза больше свободного места, чем размер парта, которому делаешь ALter\мутацию
  • это зависит от степени сжатия данных наверное, data_uncompressed_bytes надо смотреть в system.parts
  • https://t.me/clickhouse_ru
    @bvt123 #232664 11:56 AM, 30 Aug 2021
    кто знает где нужно переключить локаль, чтобы при работе через jdbc (datagrip) числа выходили с разделителем в виде запятой, а не точки?
  • https://t.me/clickhouse_ru
    для КХ пользую DBeaver и там настройки внутри соединения идут
  • https://t.me/clickhouse_ru
  • Я не использовал прикладной мультитрединг, запросы к КХ отправляет Джанго.
  • https://t.me/clickhouse_ru
    если запросы в джанго выполняются в разных потоках с одним инстансом клиента, то проблема именно в этом: https://clickhouse-driver.readthedocs.io/en/latest/quickstart.html#async-and-multithreading
  • @vmpol #232671 12:59 PM, 30 Aug 2021
    подскажите, а как правильно отнять от datetime64 миллисекунду?
  • https://t.me/clickhouse_ru
    @399999446 #232672 01:09 PM, 30 Aug 2021
    Всем привет
    Помогите разобраться почему не не отрабатывает right join (((
    drop table tt1
    drop table tt2
    create table tt1(app Int64,insert_id String) Engine =MergeTree() order by (app,insert_id);;
    create table tt2(app Int64,insert_id String) Engine =MergeTree() order by (app,insert_id);;

    insert into tt2(app,insert_id) values(302524,'c6bf67d2-436e-48c1-8b26-bc3bc2870444')

    insert into tt1(app,insert_id)
    select
    t2.app,
    t2.insert_id
    from tt1 as t1
    right join tt2 as t2
    on t1.app = t2.app
    and t1.insert_id = t2.insert_id
    where t1.app = 0

    insert into tt1(app,insert_id)
    select
    t2.app,
    t2.insert_id
    from tt1 as t1
    right join tt2 as t2
    on t1.app = t2.app
    and t1.insert_id = t2.insert_id
    where t1.app = 0

    302524 c6bf67d2-436e-48c1-8b26-bc3bc2870444
    302524 c6bf67d2-436e-48c1-8b26-bc3bc2870444
    select * from tt1
  • https://t.me/clickhouse_ru
    @399999446 #232673 01:12 PM, 30 Aug 2021
    Если в обоих таблицах меняю движок на Log,то работает
    Может какае-то загвоздка в движке
  • https://t.me/clickhouse_ru
    SELECT
    now64(),
    fromUnixTimestamp64Milli(reinterpretAsInt64(now64()) - 1)
  • https://t.me/clickhouse_ru
    @innopolis #232675 01:17 PM, 30 Aug 2021
    при создании таблицы было использован ON CLUSTER. Если после этого от кластера решили отказаться, то как указать у уже созданной таблицы новый адрес единичного-нод сервера (без кластера)?
  • @vmpol ↶ Reply to #232674 #232676 01:21 PM, 30 Aug 2021
    спасибо
  • https://t.me/clickhouse_ru
    ON CLUSTER это syntax sugar для выполнения одного запроса сразу на нескольких серверах, после того как вы выполнили эту команду вас ничего не держит. (если вы не используете Replicated движки)
  • @mef13 #232678 01:37 PM, 30 Aug 2021
    всем привет.
    подскажите по оптимизации поиска в кх:
    есть две таблицы mergetree с текстовыми полями, надо искать совпадения этих полей между собой. таблицы постоянно увеличиваются, строк там потенциально миллиарды.
    есть два вопроса:
    1. поиск планирую делать через where, может есть что-то лучшее для поиска дубликатов?
    2. есть ли смысл вводить доп поле, по которому делать prewhere? например последний индекс поля второй таблицы, либо же это излишне, т.к. два where все равно будут бегать по всем строкам?
  • https://t.me/clickhouse_ru
    @Fearan #232679 02:06 PM, 30 Aug 2021
    Джентльмены, помогите пожалуйста с идиотской проблемой.
    Мне нужно скопипастить пачку таблиц на нескольких нодах. Версии на нодах несколько разные - где-то постарее, где-то поновее.
    Там, где старые - show create table показывает описание в одну строку. Где новые - в format Pretty.
    По технологическим причинам мне надо увидеть описание именно в одну строку (в терминал портянка Pretty не влезает).

    Как clickhouse-client заставить выводить данные без "\n" ?
  • https://t.me/clickhouse_ru
    @EKbfh #232680 02:07 PM, 30 Aug 2021
    Привет! Подскажете, а как понять, в каком ближайшем релизе окажется тот или иной фикс?
  • https://t.me/clickhouse_ru
    @EKbfh ↶ Reply to #232679 #232681 02:07 PM, 30 Aug 2021
    можешь указать в запросе нужный формат
  • https://t.me/clickhouse_ru
    у вас в таблице t1 ничего нет, однако вы указываете t1.app = 0 в where, а не в ON. собственно поэтому записей на выходе и нет
  • https://t.me/clickhouse_ru
    @Fearan ↶ Reply to #232681 #232683 02:08 PM, 30 Aug 2021
    Я уже все доступные перетыкал - ни один не показывает, как надо.
  • https://t.me/clickhouse_ru
    на 1 итерации нет,затем есть 2 инсерта (на первом ожидается вставка,на втором нет)
    по итогу 2 раза вставляется
  • https://t.me/clickhouse_ru
    можно попробовать что-то типа:
    SELECT create_table_query FROM system.tables WHERE name = 't1'
  • https://t.me/clickhouse_ru
    @Fearan ↶ Reply to #232685 #232686 02:16 PM, 30 Aug 2021
    О! Оно!

    Спасибо большое.
  • https://t.me/clickhouse_ru
    так это же идентичные запросы, почему в первом случае ожидается вставка, а во втором нет? Спойлер: после третьего запуска вставка тоже произойдёт.
  • https://t.me/clickhouse_ru
    добавьте SETTINGS join_use_nulls = 1 и тогда у вас будет ожидаемое поведение - не пройдёт ни одного инсерта.
  • @nuralimov #232689 02:31 PM, 30 Aug 2021
    INSERT user1 action1
    INSERT user1 action2
    INSERT user1 action3
    INSERT user2 action1
    INSERT user3 action1

    хочу в КХ в таблице вот такие данные хранить, а action[N] хочу чтобы агрегировалось в поле и там были вроде json

    чтобы я потом взяз из базы юзера и узнал какие действия он делал

    КХ в такое умеет?
  • @nuralimov #232690 02:33 PM, 30 Aug 2021
    user1 [action1, action2, action3]

    вот такое чтобы лежало хочу после агрегации (мержа) в 1 поле
  • https://t.me/clickhouse_ru
  • @nuralimov #232692 02:35 PM, 30 Aug 2021
    а сагрегировать эти данные КХ сумеет?
  • @nuralimov #232693 02:35 PM, 30 Aug 2021
    он сможет на каждый инсерт обновлять значение массива у user1?
  • https://t.me/clickhouse_ru
    @avramenkoBogdan #232694 02:37 PM, 30 Aug 2021
    Ребята опытнее мб подскажут. КХ сам навряд ли такое сделает, это триггер какой-то, а про такие надстройки в КХ я не слыхал.

    Вьюха (в т.ч. и материализованная) сможет, разве что.

    Лучше конечно на стороне инсерта пихать массив.
  • @nuralimov #232695 02:39 PM, 30 Aug 2021
    Я на самом деле зашел чуть подальше простых обезъянних наливаний данных через инсерты и чет совсем нетривиально все пошло. А написанная птичьим языком дока, где "Бери это и засунть сюда и все полетит" - совсем не помогает.
  • https://t.me/clickhouse_ru
    выглядит будто вы хотите Nested структуру вставить
  • @moleculair #232697 02:47 PM, 30 Aug 2021
    Всем привет.
    Подскажите, пожалуйста, есть ли где-то best practice по использованию chproxy, возможно сравнение перфоманса с балансировкой nginx. Сколько ресурсов обычно ему хватает? Кластер 10 нод, поток трафика около 1.8 Гбит в пике.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232689 #232699 03:07 PM, 30 Aug 2021
    вставляете в таблицу примерно вот в таком виде. На неё вешаете MV, в котором делаете аггрегацию по юзеру. aggregation function у вас будет groupArray или если надо хитрее, то что-то тиа groupArray((ts,action))
  • https://t.me/clickhouse_ru
    @ivolake #232700 03:08 PM, 30 Aug 2021
    Здравствуйте. Подскажите пожалуйста, как посмотреть список колонок таблицы
  • а само поле какого типа держать?
  • @simpl1g #232702 03:09 PM, 30 Aug 2021
    Подскажите, КХ может одновременно несколько DDL отрабатывать? Запустили долгий ALTER TABLE MODIFY TTL ON CLUSTER и все остальные DDL даже не пытаются запуститься, просто по таймауту отваливаются
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232701 #232703 03:09 PM, 30 Aug 2021
    если в оригинальной таблице action String, то в dest таблице будет actions Array(String)
  • groupArray((ts,action)) а что имеете в виду?
  • select * from system.columns where table = ‘…’
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232704 #232706 03:11 PM, 30 Aug 2021
    select user,groupArray(action) as actions from table group by user;
  • @nuralimov #232707 03:12 PM, 30 Aug 2021
    тяжко
  • @nuralimov #232708 03:13 PM, 30 Aug 2021
    все таки убеждаюсь, что лучше логику делать кодом, все эти танцы и извращения это путь к проблемам
  • а разве не groupArrayState надо делать? или КХ сам сможет помержить groupArray?
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232708 #232711 03:14 PM, 30 Aug 2021
    нет. Такие штуки будут сильно быстрее работать в оптимизированном C++ коде КХ, чем вы их напишите сами. Почитайте про аггрегатные функции - https://clickhouse.tech/docs/ru/sql-reference/aggregate-functions/
    Введение | Документация ClickHouse

    Агрегатные функции Агрегатные функции работают в привычном для специалистов по базам данных смысле. ClickHouse поддержив

  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232709 #232712 03:15 PM, 30 Aug 2021
    groupArray делает массив из всех значений поля для группы, State - это если вам нужно потом сложить что-то с чем-то удобным образом
  • ну тут нужны серьезные объемы, чтобы увидеть, что го начинает подтупливать

    сотни тысяч в секунду
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232713 #232714 03:17 PM, 30 Aug 2021
    да, без объемов смысла особого нет. Но код на SQL будет лакониченне - строки вместо десятков строк. Надо просто повернуть голову на другой стиль программирования
  • @nuralimov #232715 03:20 PM, 30 Aug 2021
    Меня парит, что от кх разит функциональщиной. Прям вот смотрю на эти агрегацци и прям скала-хаскель. После процедурных очень сложно.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232678 #232716 03:21 PM, 30 Aug 2021
    вы не очень понятно описали задачу, можно понять неправильно. вобще-то строгое совпадения двух полей (даже текстовых) в разных таблицах решается через join, для которого существуют разные оптимизации. Но если дубликаты - это это строки в одной таблице - это иная задача. И в любом случае - полный проход по миллиардным таблицам - это всегда плохо, надо как-то избегать такого - например делать обратные индексы (скажем на основе MV/projectons), или как тут недавно обсуждалось - битмапами.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232715 #232717 03:22 PM, 30 Aug 2021
    ага, а мне так понравилось! Вот прямо душа отдыхает после этих го/питонов
  • https://t.me/clickhouse_ru
    добро пожаловать в мир sql
  • https://t.me/clickhouse_ru
    А что сложного, разбираетесь и делаете
  • https://t.me/clickhouse_ru
    тем более тут уже выше обсуждали, что за 8 часов можно узнать у КХ почти всё, а для оракл уже десятки часов требуются, чтобы что хоть что-то начинать понимать
  • https://t.me/clickhouse_ru
    Не понял причём тут оракл) там человек вроде про go пишет
  • https://t.me/clickhouse_ru
    @dmitriynvkv #232722 03:26 PM, 30 Aug 2021
    Мне вот кажется что в жизни среднего разработчика языки высуого уровеня нужны только для каркаса, а логику лучше писать в sql
  • https://t.me/clickhouse_ru
    мне казалось, что он говорил про кликхаус. но из-зато того что не использует функцию "ответить" все сообщения смешались в кашу.
  • https://t.me/clickhouse_ru
    Возможно)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232722 #232725 03:28 PM, 30 Aug 2021
    интересно, а SQL - язык какого уровня? Запредельно сверхвысокого? :)
  • @mef13 ↶ Reply to #232716 #232726 03:28 PM, 30 Aug 2021
    да, надо искать строгое совпадение двух полей в разных таблицах. join как раз подойдет. но как он себя поведет на миллиардных таблицах? проверка по сути нужна не очень часто, примерно раз в неделю и длительность выполнения не очень критична в разумных пределах...
  • https://t.me/clickhouse_ru
    Ну не очень выразился да.
  • https://t.me/clickhouse_ru
    при джойне правая таблица помещается в память. если памяти не хватит, тогда всё, приплыли
  • https://t.me/clickhouse_ru
    Так вроде merge join завезли
  • https://t.me/clickhouse_ru
    @dmitriynvkv #232731 03:31 PM, 30 Aug 2021
    С какой то версии
  • https://t.me/clickhouse_ru
    круть. и как оно? работает сильно медленнее?
  • https://t.me/clickhouse_ru
    А я хз, я давно не пользуюсь кх, тока чатик читаю
  • Спасибо!
  • https://t.me/clickhouse_ru
    @ployd #232736 07:26 PM, 30 Aug 2021
    Господа, может кто знает, можно ли в Buffer таблицу сделать такой SELECT, чтобы он не шёл в оригинальную таблицу, а только в ту часть, которая в памяти, непосредственно Buffer?
  • https://t.me/clickhouse_ru
    @ekzjuperi #232737 07:28 PM, 30 Aug 2021
    всем привет, как то можно отдебажить запрос?
    такую ошибку пишет при создании вьюхи
    error: code: 43, message: Illegal type AggregateFunction(max, UInt32) of argument of aggregate function max because the values of that data type are not comparable
  • судя по тексту ошибки вы передаёте в функцию max() не Int, а AggregateFunction. Проверяйте там ну и покажите как создаёте
  • https://t.me/clickhouse_ru
    спасибо, разобрался
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #232732 #232740 07:52 PM, 30 Aug 2021
    ну так....
    SELECT formatReadableQuantity(count())
    FROM calls
    │ 1.53 billion │

    SET join_algorithm = 'partial_merge'
    SELECT count()
    FROM calls AS c1
    INNER JOIN calls AS c2 ON c1.client = c2.companyTelnum

    ↓ Progress: 2.28 billion rows, 18.27 GB (404.36 thousand rows/s., 3.23 MB/s.)
    │ 2590808638539 │

    1 rows in set. Elapsed: 10954.815 sec. Processed 3.06 billion rows, 24.50 GB (279.57 thousand rows/s., 2.24 MB/s.)

    Два с половиной часа.
    Сервер какой-то более-менее приличный, поля не в индексе и взяты от балды. Зато работает без каких-то особых усилий. Если раз в неделю на ночь, то пойдет. А если ещё немного подумать над оптимизацией, то и подавно. Так что можно джойнить миллиарды.
  • 31 August 2021 (96 messages)
  • https://t.me/clickhouse_ru
    @zzhanabek #232746 06:01 AM, 31 Aug 2021
    Всем привет.
    В zookeeper таблицы должны иметь одинаковые названия?
    Если делать одинаковые названия, то выходит ошибка "Таблица уже существует". А если разные имена таблиц для репликации таблицы CH, то репликация не работает должным образом
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #232746 #232747 06:02 AM, 31 Aug 2021
    Не должны
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #232746 #232748 06:02 AM, 31 Aug 2021
    Ну ты можешь сделать дистрибьютед таблицу и потом с префиксом repl реплицированную
  • https://t.me/clickhouse_ru
    @solard #232749 06:03 AM, 31 Aug 2021
    Главное связать их вместе
  • https://t.me/clickhouse_ru
    @zzhanabek #232750 06:04 AM, 31 Aug 2021
    Есть три ноды c путями для zookeeper таблиц:
    /clickhouse/tables/{cluster_name}/1/database/{database_name}/table_name/{table_name}/replicas/{node_name}/

    Данные размазались только на 2/3, и ошибка Can't get data for node ... node doesn't exist
  • https://t.me/clickhouse_ru
    @zzhanabek #232751 06:05 AM, 31 Aug 2021
    по макросы node_name только уникальная
  • https://t.me/clickhouse_ru
    @solard #232752 06:05 AM, 31 Aug 2021
    А как создавал ?
  • https://t.me/clickhouse_ru
    @zzhanabek #232753 06:05 AM, 31 Aug 2021
    Разве ZK не должен был создать таблицы
  • https://t.me/clickhouse_ru
    Создал ReplicatedMergeTree('/clickhouse/tables/{cluster_name}/1/database/{database_name}/table_name/{table_name}/replicas/{node_name}/')
  • https://t.me/clickhouse_ru
    @zzhanabek #232755 06:06 AM, 31 Aug 2021
    при двухнодной схеме работало, при трехнодной схеме похерилось
  • У вас какой конфиг? 3 реплики?
  • https://t.me/clickhouse_ru
    один шард, три реплики
  • Не должен, надо руками на 3 реплике создать
  • Один и тот же код на 3х машинах выполнить и все будет ок.
  • https://t.me/clickhouse_ru
    Но на второй реплике сам создался. Алгоритм был таков:
    - на первой ноде перевел таблицу на ReplicatedMergeTree
    - на второй ноде создал таблицу эту самую
    - проверил, zk создал таблицу у себя
    - данные со второй ноды были доступны
    - повторил предыдущие действия на третьей ноде

    В итоге, на третьей ноде нет данных. Третья нода стала лидером зукипера, первые две ноды в ридонли
  • https://t.me/clickhouse_ru
    Сделал, но по каким-то причинам, это не сработало как ожидалось
  • https://t.me/clickhouse_ru
    @zzhanabek #232763 06:49 AM, 31 Aug 2021
    0 байтов на третьей ноде. А на первых двух данные совпадают
  • @Avtocato #232764 06:50 AM, 31 Aug 2021
    Добрый день! Подскажите, пожалуйста, как настроить ротацию логов в config.xml?
    Вроде настроил все верно, добавил параметры <rotate> daily но ничего не переключается.
    Спасибо.
  • https://t.me/clickhouse_ru
    Лишнего пробела нет? В нужной секции стоит?
  • @Avtocato #232768 08:12 AM, 31 Aug 2021
    <rotation>1 minutes</rotation>
    <archive>timestamp</archive>
    <times>local</times>
    <compress>true</compress>
    <purgeAge>3 days</purgeAge>
    <rotateOnOpen>true</rotateOnOpen>

    В секции logger
  • https://t.me/clickhouse_ru
    @pankina_hr #232770 08:38 AM, 31 Aug 2021
    #вакансия #архитектор #удаленно #hadoop #greenplum #postgres #clickhouse

    Вакансия: Technical Account Manager
    Город: удаленно или Москва (м.Алексеевская)
    Компания: Arenadata https://www.youtube.com/watch?v=RKZ7Chty98Y&t=38s
    Заработная плата: от 300 тыс. руб. на руки и выше

    Arenadata – ведущий российский разработчик платформы управления данными. Наши решения строятся на технологиях open-source с открытым исходным кодом. Мы являемся одним из крупнейших коммитеров и вносим вклад в развитие таких проектов как Greenplum, Apache Big Top, Apache Kafka, Apache NiFi, Yandex ClickHouse. А еще мы вендоры и внедряем наши продукты в крупнейшие российские компании.

    Мы ищем человека, который станет единой точкой входа от ключевого заказчика. Он должен отвечать на архитектурные вопросы, делать ревью ландшафта или отдельных систем, проводить архитектурный надзор на отдельных решениях, понимать как продукты работают, давать комментарии на техническом уровне.

    Обязанности:
    - Декомпозиция технических требований, оценка трудозатрат;
    - Создание архитектуры прикладных решений на базе opensource-продуктов (в первую очередь продуктов Arenadata);
    - Подготовка или ревью соответствующих технических и эксплуатационных документов;
    - Функциональное руководство аналитиками и инженерами (в паре с РП, на котором будет проектное руководство);
    - Принятие решений по ходу проекта совместно с РП, если такая необходимость возникнет.

    Требования:
    - Опыт работы с одной или несколькими системами: Greenplum, Hadoop (HDFS, Yarn, Hive, Spark, HBase), Kafka, Clickhouse.
    - Знание принципов построения архитектуры DWH/BDW, Data Lake, Стриминговых платформ.
    - Опыт построения решений в области Big Data.

    Условия:
    - Официальное трудоустройство по ТК РФ с белой зарплатой.
    - Возможность работать 100% удаленно или в офисе (на выбор), гибкий график.
    - Возможность участия в крупнейших российских и международных ИТ-конференциях, сертификация за счет компании.
    - Корпоративная скидка на изучение английского.
    - 100% оплата больничного до уровня месячного дохода, независимо от стажа и срока работы в компании.
    - Хороший ДМС со стоматологией.
    - Обеспечение техникой для работы (ноутбук, монитор).

    ✉️ Писать можно в телеграм @pankina_hr или на почту poe@arenadata.io
    Корпоративная платформа данных Arenadata Enterprise Data Platform (EDP)

    Данные трансформируют мир и лежат в основе AI-экономики. Arenadata Enterprise Data Platform, разработанная на основе передовых Open Source технологий, обеспечит быстрое, масштабируемое и отказоустойчивое управление данными для цифровой трансформации любого бизнеса или государственной организации. Платформа предусматривает полный цикл управления данными - от хранения до предикативной аналитики. Подробнее в нашем видео.

  • https://t.me/clickhouse_ru
    @flo_fd #232772 08:48 AM, 31 Aug 2021
    День добрый, может кто нибудь подсказать по получению данных из kafka с avro registry? Получаю такую ошибку - DB::Exception: avro::Exception: Invalid data file. Magic does not match. Не совсем понимаю что это может значить. В apicurio registry схема есть, в kafka топик тоже. https://pastebin.com/Y4kTr88r Подтолкните пж, а то не знаю куда копать.
    2021.08.31 11:40:27.635292 [ 125920 ] {5aa9497b-94f1-4e32-b7cb-8139b56b5aa5} <Er - 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.

  • @7699150 #232773 08:49 AM, 31 Aug 2021
    Ребят, привет! Нужен совет.
    Пишем данные из кафки в КХ
    Уже создано около 25 кафка-табличек и гора матвью на них.

    И вото нужно поменять кластер кафки. Можно ли в КХ как-то глобально поменять в этих табличках kafka_broker_list?
    Или нужно все таблички пересоздавать с новыми брокерами в конфиге?
  • https://t.me/clickhouse_ru
    @innopolis #232778 11:38 AM, 31 Aug 2021
    кто-нибудь подрубался с помощью яндексовского докерфайла clickhouseclient к remote машине?
  • @kobzarvlad #232779 11:38 AM, 31 Aug 2021
    добрый день, подскажите, пожалуйста
    удалили столбцы в таблицах (сначала в обычных, потом в дистрибьютед), но забыли выключить туда вставку со старыми полями, посыпались ошибки, вставку выключили
    но подвис один запрос от юзера replication на вставку в обычную таблицу и продолжают сыпаться ошибки
    executeQuery: Code: 16, e.displayText() = DB::Exception: No such column...
    если смотреть по query_log, изначальный запрос на вставку в distr таблицу прошел успешно
    можно как-то прибить этот процесс? запросы продолжают сыпаться, query_id у них разные
    спасибо
  • https://t.me/clickhouse_ru
    Я 0 ставлю. Резервирование давно не нужно. Вы сможете залогинится и сделать sudo даде с 0 места
  • https://t.me/clickhouse_ru
    Нету
  • https://t.me/clickhouse_ru
    если один поток и синхронное выполнение то один коннект, если нет то много
  • https://t.me/clickhouse_ru
    Так поточно мутация работает. Не разжимается парт на диск вообще. Колонка одна разжимается блоками в памяти мутирует и пишется на диск сжатая
  • https://t.me/clickhouse_ru
    Можно вам задать вопрос? Мутации не разжимают данные, а прям на сжатых работают?
  • https://t.me/clickhouse_ru
    a thread reads one compressed block into memory, decompress it, mutates, compresses, writes the new mutated block to a new part.
  • https://t.me/clickhouse_ru
    👍🏻👍🏻 спасибо
  • https://t.me/clickhouse_ru
    если данные не нужны то просто удалить bin файлы из каталога distributed таблицы

    Если нужны то можно bin файл прочитать селектом from engine... дальше не помню
  • https://t.me/clickhouse_ru
    Все drop/create. Сделайте dns запись и внесите туда все брокеры. Этот список это же бутстрап. Дальше клиент кафки использует дисковери
  • спасибо 🙏
  • Но старый же парт какое то время остаётся лежать на диске? 8 минут вроде бы
  • Ап, может кто знает что подкрутить можно
  • https://t.me/clickhouse_ru
    и что? На самом деле это вообще не проблема, место занимает только одна мутировавшая колонка.
  • https://t.me/clickhouse_ru
    чего? это же специально сделано так.
  • ну условно делается что-то тяжёлое с таблицей t1 on cluster минут на 20, в это время другой процесс запускает drop partition on cluster на t2, и он отваливается по таймауту и падает пайплайн у нас из-за этого, хотя drop это простая операция. Получается только отказываться от on cluster и запускать вручную на шардах?
  • https://t.me/clickhouse_ru
    эээ , при чем тут oncluster ? покажите с какой ошибкой падает ваш drop
  • сделали drop/create
    спасибо
  • DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000620939 is executing longer than distributed_ddl_task_timeout (=300) seconds. There are 1 unfinished hosts (0 of them are currently active), they are going to execute the query in background (version 21.3.15.4 (official build)) (from 10.64.128.14:54140) (in query: ALTER TABLE analytics_adjust_events_tmp_shard ON CLUSTER ch_shards DROP PARTITION 20210825
  • https://t.me/clickhouse_ru
    @nbsbbs #232799 01:52 PM, 31 Aug 2021
    Подскажите, пожалуйста. Есть вот такой запрос поверх таблицы SummingMergeTree:
    select ItemGalleryId, ItemThumbId, sum(Clicks) as Clicks, sum(Views) as Views, if (Views>0, Clicks/Views, 0) as Ctr from stat_rotation_events_search_by_key sres where ZoneSearchKeywordTranslation ='some search query' and ZoneGroup='some group' GROUP BY ItemGalleryId , ItemThumbId HAVING Views>25 order by Ctr desc Limit 1000
    Как мне сделать аналог count(*) чтобы знать, сколько таких записей всего?
  • при этом видно что пока первый ddl не закончит работать, в ЗК в пути /clickhouse/task_queue/ddl/query-0000620939/active пусто, обработка запроса даже не начинается
  • https://t.me/clickhouse_ru
    ну on cluster тут ни при чем. Без oncluster, drop будет также ждать, потом ваш клиент отвалится по таймауту.
    TTL можно менять моментально если надо, но тогда не будет пересчитываться TTL info
  • https://t.me/clickhouse_ru
    не правда. Все вообще не так
  • так без on cluster drop проходить если запустить на каждой ноде отдельно
  • https://t.me/clickhouse_ru
    и зависнет на какой-нибудь где идет alter table modify ttl
  • даже если мы делаем drop в другой таблице?
  • https://t.me/clickhouse_ru
    ну с window function в два клика
  • https://t.me/clickhouse_ru
    нет.
    DDDL точно также не зависят от друг друга. DDDL это тупой хелпер, он делает ровно тоже самое что вы руками выполняя на каждой ноде
  • https://t.me/clickhouse_ru
    @nbsbbs ↶ Reply to #232806 #232808 02:02 PM, 31 Aug 2021
    Прошу прощения, я все еще не понял.
    Вот у меня получается результат
    ┌─ItemGalleryId─┬─ItemThumbId─┬─Clicks─┬─Views─┬──────────────────Ctr─┐
    │ 3318834 │ 12720993 │ 2 │ 35 │ 0.05714285714285714 │
    │ 3489146 │ 14903948 │ 2 │ 37 │ 0.05405405405405406 │
    то есть статистика по каждой паре ItemGalleryId, ItemThumbId
    И мне нужно понять, сколько есть таких пар, чтобы знать, на сколько страниц рисовать пагинацию
  • https://t.me/clickhouse_ru
    я понял что вы про ORDER BY Ctr DESC Limit 1000
    вы спрашиваете сколько было до limit ?
  • https://t.me/clickhouse_ru
    @nbsbbs #232810 02:04 PM, 31 Aug 2021
    да
  • https://t.me/clickhouse_ru
    @nbsbbs ↶ Reply to #232809 #232811 02:06 PM, 31 Aug 2021
    Как раз для того, чтобы формировать Limit offset, мне это и нужно: знать, сколько всего записей, чтобы разбить на группы по 100
  • https://t.me/clickhouse_ru
    ха, я нашел баг в WF, не получится
  • извините, не понял, нет - не зависнет? Когда висит запрос drop partittion on cluster я могу зайти на каждый шард и выполнить drop вручную
  • @mminaev #232814 02:08 PM, 31 Aug 2021
    привет, подскажите пожалуйста, в чем проблема. Создал 2 базы

    CREATE DATABASE dictionary ON CLUSTER nodes ENGINE = Atomic;
    CREATE DATABASE test ON CLUSTER nodes ENGINE = Atomic;

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

    SHOW GRANTS FOR migrator

    Query id: 0d1e6066-2ffc-48b2-8204-5d89fc5a9e59

    ┌─GRANTS FOR migrator─────────────────────┐
    │ GRANT public_reader, writer TO migrator │
    └─────────────────────────────────────────┘

    SHOW GRANTS FOR writer

    Query id: 5f3d5831-cb91-4dab-b402-834b80fc0c4f

    ┌─GRANTS FOR writer──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │ GRANT SHOW, SELECT, INSERT, ALTER, CREATE TABLE, CREATE VIEW, CREATE DICTIONARY, DROP, TRUNCATE, OPTIMIZE, dictGet ON test.* TO writer │
    │ GRANT SHOW, SELECT, INSERT, ALTER, CREATE TABLE, CREATE VIEW, CREATE DICTIONARY, DROP, TRUNCATE, OPTIMIZE, dictGet ON dictionary.* TO writer │
    └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
    Но почему то в схеме test получается создать таблицу, а в dictionary -нет ошибка Not enough privileges. To execute this query it's necessary to have grant CREATE TABLE ON dictionary.test Как это можно подебажить?
  • https://t.me/clickhouse_ru
    а бага лечится (order by)

    select * from (
    ( select *, count() over () cnt from
    ( select * from numbers(10000000) )
    )
    ) order by number limit 3

    ┌─number─┬──────cnt─┐
    │ 0 │ 10000000 │
    │ 1 │ 10000000 │
    │ 2 │ 10000000 │
    └────────┴──────────┘
  • https://t.me/clickhouse_ru
    dddl запросы выполняются независимо, там нет никакой очереди.
  • https://t.me/clickhouse_ru
    @nbsbbs ↶ Reply to #232815 #232817 02:11 PM, 31 Aug 2021
    select * from (select *, count() over () cnt from (select ItemGalleryId, ItemThumbId, sum(Views) as Views from stat_rotation_events_search_by_key sres where ZoneSearchKeywordTranslation ='some query' and ZoneGroup='some group' GROUP BY ItemGalleryId , ItemThumbId HAVING Views>25))

    Вот так вот? Добавляет count() отдельной колонкой
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    @nbsbbs ↶ Reply to #232818 #232819 02:12 PM, 31 Aug 2021
    Спасибо, так меня вполне устроит
  • Пардон, напоминаю про https://github.com/ClickHouse/ClickHouse/discussions/28270. Если долго писать, можете тезисно объяснить, где неправильно?
    Exactly-once write semantics · Discussion #28270 · ClickHouse/ClickHouse

    Hi Team, I'd like to understand the proper way to ensure exactly-once ingestion into a sharded deployment of ClickHouse (multiple shards, with the same ReplicatedMergeTree tables configured...

  • https://t.me/clickhouse_ru
    Спасибо. А не знаете что под капо том у этой настройки вообще? Есть ли смысл заводить отдельного юзера на запросы без оконных функций?
  • https://t.me/clickhouse_ru
    О. Я даже не знал что есть discussions. Сегодня отвечу.
  • https://t.me/clickhouse_ru
    Ну в WF пока реализованы не на 100%. Это пока экспериментальная фича. Чтобы случайно пользователи не могли ей пользоваться на проде (из табло например), она выключена по умолчанию.
  • https://t.me/clickhouse_ru
    @lesikv #232824 02:55 PM, 31 Aug 2021
    Привет! Подскажите пожалуйста, есть ли какой-то вариант реализации join on between в CH?
    Code: 48, e.displayText() = DB::Exception: JOIN ON inequalities are not supported
  • https://t.me/clickhouse_ru
    Хммм.. В описании вроде как написано что обратная совместимость может страдать с последующими релизами у WF, а то что вы говорите по сути означает что опасно просто даже случайно запустить.
  • https://t.me/clickhouse_ru
    Issues · 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
    только в where написать как вариант
  • https://t.me/clickhouse_ru
    Смотря на что between. Если там даты без времени, например, я делал range дат и join с =
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #232827 #232829 03:06 PM, 31 Aug 2021
    спасибо
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #232828 #232830 03:06 PM, 31 Aug 2021
    дата со временем
  • https://t.me/clickhouse_ru
    И без постоянного шага?
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #232831 #232832 03:06 PM, 31 Aug 2021
    ага(
  • https://t.me/clickhouse_ru
    Asof join не поможет?
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #232833 #232834 03:11 PM, 31 Aug 2021
    ну я вот не знаю норм ли использовать его)
  • https://t.me/clickhouse_ru
    @lesikv #232835 03:12 PM, 31 Aug 2021
    не сильно ли дорогая операция
  • https://t.me/clickhouse_ru
    @lesikv #232836 03:12 PM, 31 Aug 2021
    мне говорили, что он нежелателен
  • https://t.me/clickhouse_ru
    Ни разу не пользовался, не знаю
  • https://t.me/clickhouse_ru
    @nbsbbs ↶ Reply to #232815 #232840 03:17 PM, 31 Aug 2021
    Случайно мне удалось найти некую замену этому методу. В клиенте php есть метод countAll(), который, по описанию, отдает rows_before_limit_at_least (If the query contains GROUP BY, rows_before_limit_at_least is the exact number of rows there would have been without a LIMIT - по мануалу).

    То есть о нас, кажется, уже позаботились)
  • https://t.me/clickhouse_ru
    И я говорю про любые экспериментальные фичи. Их много. Skip indexes были год экспериментальными, потом убрали этот флажок.
  • https://t.me/clickhouse_ru
    Да, но это не совсем правда. Если оптимизация groupbyinorder включена то результат может быть неверный.
  • @1382671541 #232844 05:03 PM, 31 Aug 2021
    добрый вечер! в CH есть какие-либо возможности имперсонации, чтобы, например, select внутри view выполнялся от другого юзера? не хочется давать доступ на чтение к исходной таблице, хотелось бы ограничиться только правами на Select from view
  • https://t.me/clickhouse_ru
    @gagushichev #232845 05:14 PM, 31 Aug 2021
    Добрый вечер, подскажите, пожалуйста, есть ли возможность произвести select из таблицы, явно указав партицию, которая указывалась при создании таблицы mergethree? (PARTITION BY toYYYYMMDD(dt))
    В документации не нашёл
  • https://t.me/clickhouse_ru
    Партиции по дате выбираются автоматически, если Вы делаете SELECT ... WHERE dt = '1234-56-78' или похожее
  • https://t.me/clickhouse_ru
    Нету.
  • https://t.me/clickhouse_ru
    Можно. Но не нужно. (Yuran правильно ответил)
    Where _partition =. ищите тут в чате. Есть виртуальные поля, у них имя начинается с подчеркивания.
  • @rikkir #232851 08:56 PM, 31 Aug 2021
    подскажите плз,
    при вставке данные с другого сервера в формате:
    INSERT into $db.$tableName SELECT * FROM remote('123.123.2.1', $db.$tableName, 'default', 'passs')";

    вываливается ошибка
    <Error> DynamicQueryHandler: Code: 491, e.displayText() = DB::Exception: URL "123.123.2.1" is not allowed in config.xml, Stack trace (when copying this message, always include the lines below):

    в чем может быть проблема?
  • Поиск по GitHub показал такие поля только упоминаются только в Kafka engine, для MergeTree есть что-то подобное?
  • https://t.me/clickhouse_ru
    да, их много, и вы плохо ищете
    https://t.me/clickhouse_ru/196828
    _part _partition_id _table ...
  • спасибо
  • https://t.me/clickhouse_ru
    на самом деле вам это не нужно, partition pruning все делает за вас.
    они нужны только для отладки внештатных ситуаций
  • https://t.me/clickhouse_ru
    >ClickHouse release 21.4.1
    >In this version, empty <remote_url_allow_hosts></remote_url_allow_hosts> will block all access to remote hosts while in previous versions it did nothing. If you want to keep old behaviour and you have empty remote_url_allow_hosts element in configuration file, remove it.