• 01 January 2021 (11 messages)
  • https://t.me/clickhouse_ru
    @patzantre #198344 01:22 AM, 01 Jan 2021
    С новым годом!
  • https://t.me/clickhouse_ru
    @glebi0 #198347 04:21 PM, 01 Jan 2021
    А есть инфа, что лежит в mrk2? И как его через od посмотреть? В предыдущей версии mrk там были просто 8-байт числа смещения
  • https://t.me/clickhouse_ru
    @glebi0 ↶ Reply to #198348 #198349 04:25 PM, 01 Jan 2021
    Это старый видос , там нет про mrk2 😞
  • https://t.me/clickhouse_ru
    как раз там про mrk2 и рассказывали, весь видос про адаптивную гранулярность
  • https://t.me/clickhouse_ru
    @den_crane #198351 04:31 PM, 01 Jan 2021
    в mrk2 лежит 3 штуки uint64 для каждой гранулы, а не 2 как в mrk
  • https://t.me/clickhouse_ru
    @den_crane #198352 04:32 PM, 01 Jan 2021
    mrk2 смещение в пожатом | смещение в разжатом | кол-во строк в грануле
    mrk смещение в пожатом | смещение в разжатом
  • https://t.me/clickhouse_ru
    @den_crane #198353 04:35 PM, 01 Jan 2021
    из mrk2 надо читать 24 байта od -l -j 72 -N 24 S.mrk2
    https://stackoverflow.com/questions/65198241/whats-the-process-of-clickhouse-primary-index
    What's the process of ClickHouse primary index

    As mentioned in the title, i am very confused about the ClickHouse primary index. ClickHouse primary index used these files: primary.idx, [primaryField].mrk, [primaryField].bin. Where is MarkRange ...

  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @zholmyrza_t #198357 07:07 PM, 01 Jan 2021
    Всех с новым годом! Есть метрика ClickHouseProfileEvents_InsertedRows для прометея который открывается в КХ под портом 9363(by default), был бы рад если бы вы разделили метрику на две, которая каждая из метрик отражает записи в "local" таблицы и в "distributed", возможно ли это?
    При мониторинге наблюдаю такую картину, самые активные показатели у той, в которую льются записи в дист таблицу
  • https://t.me/clickhouse_ru
  • 02 January 2021 (81 messages)
  • https://t.me/clickhouse_ru
    @VakaKvaka #198361 11:51 AM, 02 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    Предложения все таки стоит в гитхаб писать, тут оно просто потеряется
  • https://t.me/clickhouse_ru
    @studnev #198363 12:15 PM, 02 Jan 2021
    Привет! Clickhouse не ставиться deb http://repo.yandex.ru/clickhouse/deb/stable/ main/
  • https://t.me/clickhouse_ru
    @studnev #198364 12:15 PM, 02 Jan 2021
    Failed to fetch http://repo.yandex.ru/clickhouse/deb/stable/main/InRelease Cannot initiate the connection to repo.yandex.ru:80 (2a02:6b8::183). - connect (101: Network is unreachable) [IP: 2a02:6b8::183 80]
  • https://t.me/clickhouse_ru
    @studnev #198365 12:16 PM, 02 Jan 2021
    Есть тут кто из @yandex ?
  • https://t.me/clickhouse_ru
    @dbalashov #198366 12:17 PM, 02 Jan 2021
    нормально пингуеца
  • https://t.me/clickhouse_ru
    @studnev #198367 12:18 PM, 02 Jan 2021
    Да.. похоже что хост поменяли на https://repo.clickhouse.tech
  • https://t.me/clickhouse_ru
    @studnev #198368 12:18 PM, 02 Jan 2021
    более политически нейтральный
  • https://t.me/clickhouse_ru
    @studnev #198369 12:18 PM, 02 Jan 2021
    скоро на ru домене только вконтакте и mail останется
  • https://t.me/clickhouse_ru
    @dbalashov #198370 12:19 PM, 02 Jan 2021
    одноклассники!
  • https://t.me/clickhouse_ru
    @studnev #198371 12:20 PM, 02 Jan 2021
    нет, они уедут
  • https://t.me/clickhouse_ru
    @studnev #198372 12:20 PM, 02 Jan 2021
    будут classmates.xxx
  • https://t.me/clickhouse_ru
    @studnev #198373 03:10 PM, 02 Jan 2021
    Я что то пропустил или в clickhouse перестал работать Materialised view рекурсивный? После апдейта с 19 на 20 версию рекурсивные MV перестали вставлять как надо
  • https://t.me/clickhouse_ru
    Что подразумевается под рекурсивный?
  • https://t.me/clickhouse_ru
    @studnev #198375 03:13 PM, 02 Jan 2021
    CREATE MATERIALIZED VIEW harmony_etl.transfers_to_transfers_tx_mv ON CLUSTER replicated4 TO harmony.transfers_tx
    AS SELECT * FROM harmony_etl.transfers_to_archive_mv;
  • https://t.me/clickhouse_ru
    @studnev #198376 03:13 PM, 02 Jan 2021
    где harmony_etl.transfers_to_archive_mv - тоже MV
  • https://t.me/clickhouse_ru
    Там были изменения в 19 версии, если у transfers_to_archive_mv как хранилище используется .inner. таблица то дело в этом
  • https://t.me/clickhouse_ru
    @studnev #198378 03:15 PM, 02 Jan 2021
    нет не используется
  • https://t.me/clickhouse_ru
    @studnev #198379 03:16 PM, 02 Jan 2021
    он создан тоже как SELECT * FROM …
  • https://t.me/clickhouse_ru
    @studnev #198380 03:16 PM, 02 Jan 2021
    без всяких там populate
  • https://t.me/clickhouse_ru
    Покажите ее ддл
  • https://t.me/clickhouse_ru
    Это не относится к этому, нужно смотреть есть ли в ддл TO
  • https://t.me/clickhouse_ru
    @studnev #198383 03:16 PM, 02 Jan 2021
    CREATE MATERIALIZED VIEW harmony_etl.blocks_to_archive_mv ON CLUSTER replicated4 TO harmony_archive.blocks
    AS SELECT
    .......

    FROM harmony_etl.blocks;
  • https://t.me/clickhouse_ru
    Это другая таблицп
  • https://t.me/clickhouse_ru
    @studnev #198385 03:18 PM, 02 Jan 2021
    CREATE MATERIALIZED VIEW harmony_etl.transfers_to_archive_mv ON CLUSTER replicated4 TO harmony_archive.transfers
    AS SELECT

    бббббб

    FROM harmony_etl.transfers;
  • https://t.me/clickhouse_ru
    @unamedrus #198386 03:18 PM, 02 Jan 2021
    В общем подозреваю, что вам нужно подписаться будет на harmony_archive.transfers
  • https://t.me/clickhouse_ru
    @studnev #198387 03:19 PM, 02 Jan 2021
    так оно не работало в 19
  • https://t.me/clickhouse_ru
    @unamedrus #198388 03:19 PM, 02 Jan 2021
    С какой версии обновлялись?
  • https://t.me/clickhouse_ru
    Ну, суть то в том что поменяли этт
  • https://t.me/clickhouse_ru
    @studnev #198390 03:20 PM, 02 Jan 2021
    c 19.9
  • https://t.me/clickhouse_ru
    @studnev #198391 03:21 PM, 02 Jan 2021
    ну их у меня не очень много этих MV штук 100
  • https://t.me/clickhouse_ru
    @studnev #198392 03:21 PM, 02 Jan 2021
    но переписывать их руками сейчас неприятно
  • https://t.me/clickhouse_ru
    @unamedrus #198393 03:22 PM, 02 Jan 2021
    Я бы уточнил в ченджлогах, для 19 версии, breaking changes на эту тему
  • https://t.me/clickhouse_ru
    Сочувствую
  • https://t.me/clickhouse_ru
    @studnev #198395 03:23 PM, 02 Jan 2021
    ok спасибо потом посмотрю, пока что руки заняты
  • https://t.me/clickhouse_ru
    Это не важно inner или нет. Просто во from теперь не работает mv, там надо испошьзовать то что у той mv сторадж, или inner или имя явной таблицы
  • https://t.me/clickhouse_ru
    Спасибо! Это версия подтвердилась.
  • https://t.me/clickhouse_ru
    @den_crane #198398 05:22 PM, 02 Jan 2021
    ну это общеизвестная штука, я даже рассказывал https://youtu.be/1LVJ_WcLgF8?t=8878
  • https://t.me/clickhouse_ru
    @studnev #198399 05:22 PM, 02 Jan 2021
    Есть еще проблема; При переходе на 20 версию запросы коорые выполнялись на 19 версии миллисекунды выполняются несколько секунд. Если вызвать повторно, то быстро. Чеерз некоторое время снова жуткие тормоза. Подозреваю что то с настройками?
  • https://t.me/clickhouse_ru
    @studnev #198400 05:23 PM, 02 Jan 2021
    1 rows in set. Elapsed: 2.903 sec. Processed 2.18 thousand rows, 234.97 KB (749.64 rows/s., 80.95 KB/s.)
  • https://t.me/clickhouse_ru
    @studnev #198401 05:23 PM, 02 Jan 2021
    1 rows in set. Elapsed: 0.004 sec. Processed 2.18 thousand rows, 234.97 KB (599.57 thousand rows/s., 64.74 MB/s.)
  • https://t.me/clickhouse_ru
    @studnev #198402 05:23 PM, 02 Jan 2021
    вот такая вот разница
  • https://t.me/clickhouse_ru
    @studnev #198403 05:24 PM, 02 Jan 2021
    такой проблемы не было на 19 версии
  • https://t.me/clickhouse_ru
    у запроса есть длинное перечисление в например in (xxxx,xxx,xxx,xxx..... десятки тысяч значений). ?
  • https://t.me/clickhouse_ru
    @studnev #198405 05:25 PM, 02 Jan 2021
    нет
  • https://t.me/clickhouse_ru
    @studnev #198406 05:25 PM, 02 Jan 2021
    запрос простейший
  • https://t.me/clickhouse_ru
    @studnev #198407 05:25 PM, 02 Jan 2021
    типа
  • https://t.me/clickhouse_ru
    @studnev #198408 05:25 PM, 02 Jan 2021
    SELECT 0 AS depth,
    block, tx_time, currency_id,
    tx_id_bin, tx_index,
    '' AS transfer_from, address AS transfer_to,
    amount,
    toDecimal64(0,8) AS tx_value_in, toDecimal64(0,8) AS tx_value_out
    FROM bitcoin_flow.tx_balances_by_address
    WHERE
    address='19zu3f6NL9sSd1QL41u71cFiJ3tM5trHJF' AND direction='output'
    AND blockchain_id=2;
  • https://t.me/clickhouse_ru
    @studnev #198409 05:25 PM, 02 Jan 2021
    CREATE TABLE bitcoin_flow.tx_balances_by_address
    (

    )
    ENGINE = ReplicatedMergeTree('/clickhouse/all_replicated/tables/bitcoin_flow/tx_balances_by_address_2', '{replica}')
    ORDER BY (direction, address, block)
    SETTINGS index_granularity = 128
  • https://t.me/clickhouse_ru
    @studnev #198410 05:26 PM, 02 Jan 2021
    все попадает по индексу
  • https://t.me/clickhouse_ru
    @studnev #198411 05:26 PM, 02 Jan 2021
    кэш какой то?
  • https://t.me/clickhouse_ru
    @den_crane #198412 05:26 PM, 02 Jan 2021
    либо вам кажется либо это неизвестный баг
  • https://t.me/clickhouse_ru
    @studnev #198413 05:27 PM, 02 Jan 2021
    как кажется если я 2 раза подряд выполня/ и получаю разницу в 1000 раз
  • https://t.me/clickhouse_ru
    @den_crane #198414 05:27 PM, 02 Jan 2021
    например у тестового сервера меньше озу и диски загружены, поэтому кажется что проблема в КХ
  • https://t.me/clickhouse_ru
    @den_crane #198415 05:28 PM, 02 Jan 2021
    а на самом деле это вытеснение из линукс кеша
  • https://t.me/clickhouse_ru
    @studnev #198416 05:28 PM, 02 Jan 2021
    как там логи включить в консоли?
  • https://t.me/clickhouse_ru
    @den_crane #198417 05:29 PM, 02 Jan 2021
    set send_logs_level='debug'
  • https://t.me/clickhouse_ru
    @studnev #198418 06:14 PM, 02 Jan 2021
    лог одинаковый. Пока непонятно с чем связано. Такое впечатление что у кликхауса есть кэш и он его очищает в каком то случае
  • https://t.me/clickhouse_ru
    @studnev #198419 06:16 PM, 02 Jan 2021
    я добился 100% повторяемости этого при запросе к 2 таблицам,Если обращаюсь к одной из них, запросы ко второй начинают тормозить и наоборот.
  • https://t.me/clickhouse_ru
    @den_crane #198420 06:25 PM, 02 Jan 2021
    У КХ есть кеш засечек. По дефолту он 5ГБ. Сколько там закешировано видно в системных таблицах. Но скорее всего у вас все засечки < 5ГБ суммарно. Ну и это место не менялось.
  • https://t.me/clickhouse_ru
    @den_crane #198421 06:27 PM, 02 Jan 2021
    я бы смотрел sar -d 1 100 в момент запроса, похоже на медленный диск и вытеснение из линукс кеша
  • https://t.me/clickhouse_ru
    SELECT *
    FROM asynchronous_metrics
    WHERE metric LIKE '%Cache%'

    ┌─metric───────────────────────┬──────value─┐
    │ UncompressedCacheBytes │ 0 │
    │ MarkCacheBytes │ 5082679824 │
    │ UncompressedCacheCells │ 0 │
    │ CompiledExpressionCacheCount │ 0 │
    │ MarkCacheFiles │ 148 │
    └──────────────────────────────┴────────────┘
  • https://t.me/clickhouse_ru
    маловероятно. У нас много серверов, у всех nvme и везде одинаковое поведение сразу после 19 -> 20
  • https://t.me/clickhouse_ru
    ну это в github, тикет. Структуру таблиц, запросы.
  • https://t.me/clickhouse_ru
    @den_crane #198425 06:41 PM, 02 Jan 2021
    можно поотключать все оптимизации по одной
  • https://t.me/clickhouse_ru
    @studnev #198426 06:42 PM, 02 Jan 2021
    Поменял mark_cache_size = 15G - проблема ушла
  • https://t.me/clickhouse_ru
    @studnev #198427 06:42 PM, 02 Jan 2021
    интересно
  • https://t.me/clickhouse_ru
    @den_crane #198428 06:42 PM, 02 Jan 2021
    SELECT *
    FROM system.settings
    WHERE (name LIKE '%optim%') AND (value = '1')
  • https://t.me/clickhouse_ru
    @studnev #198429 06:42 PM, 02 Jan 2021
    SELECT *
    FROM system.settings
    WHERE (name LIKE '%optim%') AND (value = '1')

    ┌─name───────────────────────────────────────────────────┬─value─┬─changed─┬─description───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─min──┬─max──┬─readonly─┬─type─┐
    │ optimize_move_to_prewhere │ 1 │ 0 │ Allows disabling WHERE to PREWHERE optimization in SELECT queries from MergeTree. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ partial_merge_join_optimizations │ 1 │ 0 │ Enable optimizations in partial merge join │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ enable_optimize_predicate_expression │ 1 │ 0 │ If it is set to true, optimize predicates to subqueries. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ enable_optimize_predicate_expression_to_final_subquery │ 1 │ 0 │ Allow push predicate to final subquery. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ optimize_read_in_order │ 1 │ 0 │ Enable ORDER BY optimization for reading data in corresponding order in MergeTree tables. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ enable_scalar_subquery_optimization │ 1 │ 0 │ If it is set to true, prevent scalar subqueries from (de)serializing large scalar values and possibly avoid running the same subquery more than once. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ optimize_trivial_count_query │ 1 │ 0 │ Process trivial 'SELECT count() FROM table' query from metadata. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ optimize_move_functions_out_of_any │ 1 │ 0 │ Move functions out of aggregate functions 'any', 'anyLast'. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ optimize_injective_functions_inside_uniq │ 1 │ 0 │ Delete injective functions of one argument inside uniq*() functions. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ optimize_arithmetic_operations_in_aggregate_functions │ 1 │ 0 │ Move arithmetic operations out of aggregation functions │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ optimize_duplicate_order_by_and_distinct │ 1 │ 0 │ Remove duplicate ORDER BY and DISTINCT if it's possible │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ optimize_redundant_functions_in_order_by │ 1 │ 0 │ Remove functions from ORDER BY if its argument is also in ORDER BY │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ optimize_monotonous_functions_in_order_by │ 1 │ 0 │ Replace monotonous function with its argument in ORDER BY │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ optimize_trivial_insert_select │ 1 │ 0 │ Optimize trivial 'INSERT INTO table SELECT ... FROM TABLES' query │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
  • https://t.me/clickhouse_ru
    @studnev #198430 06:42 PM, 02 Jan 2021
    │ optimize_aggregators_of_group_by_keys │ 1 │ 0 │ Eliminates min/max/any/anyLast aggregators of GROUP BY keys in SELECT section │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ optimize_group_by_function_keys │ 1 │ 0 │ Eliminates functions of other keys in GROUP BY section │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    └────────────────────────────────────────────────────────┴───────┴─────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────┴──────┴──────────┴──────┘
  • https://t.me/clickhouse_ru
    @den_crane #198431 06:44 PM, 02 Jan 2021
    я предлагю все выключить и чтобы проверить что это не из-за них
  • https://t.me/clickhouse_ru
    @studnev #198432 06:46 PM, 02 Jan 2021
    почему тогда mark cache так влияет?
  • https://t.me/clickhouse_ru
    @studnev #198433 06:46 PM, 02 Jan 2021
    в 19 версии не трогали эту настройку
  • https://t.me/clickhouse_ru
    в гитхаб, я не представляю как nvme 2 сек. может читать 2 тыщи строк
  • https://t.me/clickhouse_ru
    непонятно что писать туда. Запрос ничем не примечательный. Возможно в табюлице очень много index_granularity
  • https://t.me/clickhouse_ru
    @studnev #198436 06:48 PM, 02 Jan 2021
    там хренова туча ключей
  • https://t.me/clickhouse_ru
    @den_crane #198437 06:50 PM, 02 Jan 2021
    create table напишите от обеих таблиц, сколько строк в них, оба запроса, ТОЧНУЮ версию КХ, наблюдаемое поведение в 19й, в 20й
  • https://t.me/clickhouse_ru
    @studnev #198438 06:52 PM, 02 Jan 2021
    Ок спасибо.
  • https://t.me/clickhouse_ru
    и про кеш марков про 15 напиште

    сколько кстати в 19й

    SELECT *
    FROM asynchronous_metrics
    WHERE metric LIKE '%Cache%'

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

    Но с другой стороны даже если марки не в кеше, для nmve это не должно быть проблемой
  • https://t.me/clickhouse_ru
    это может быть проблемой если их 5G и они чиитаются на каждый запрос
  • https://t.me/clickhouse_ru
    не должно в теории.
    PK индекс в памяти, дальше читаем только нужные парты и mrk файлы в них, по идее у вас Processed 2.18 thousand rows , это mrk файлов на 50 кб скорее всего
  • 03 January 2021 (56 messages)
  • https://t.me/clickhouse_ru
    hits и misses лежат в system.events
  • https://t.me/clickhouse_ru
    @studnev #198443 08:32 AM, 03 Jan 2021
    Добрый день! Как бороться с DB::Exception: PeekableReadBuffer: Memory limit exceed при вставке данных с HTTP ? Проявляется после перехода с 19.9 на 20.8
  • https://t.me/clickhouse_ru
    Denny Crane [Vertica DBA at Revjet(NB,Canada)] in ClickHouse не тормозит

    это тогда плохой инсерт. Он не стримабл. надо убрать now из инсерта и написать now где-нибудь в дефолтах таблицы. Плохие инсерты должны влезать в max_query_size он 256кб. Хорошие инсерты обрабатываются стрим парсером и могут быть любого бесконечного размера, если стрим парсер видит функцию -- например now он переключается на ast парсер , ast парсер ждет конца запроса и складывает запрос в буфер. Буфер по умолчанию -- 256kb

  • https://t.me/clickhouse_ru
    Там нет expressions. КРоме того <input_format_values_interpret_expressions>0</input_format_values_interpret_expressions>
  • https://t.me/clickhouse_ru
    @studnev #198446 08:57 AM, 03 Jan 2021
    В том вопросе в trace есть DB::ValuesBlockInputFormat::parseExpression а у меня просто DB::DataTypeString::deserializeTextQuoted. Что то другое тут по моему
  • https://t.me/clickhouse_ru
    ну
    а в каком формате вы вставляете?
    TSV?

    может у вас там где то кавычка открылась и не закрылась.... и какой нибудь multiline ждет когда закроется кавычка переполняя буфер?
  • https://t.me/clickhouse_ru
    СSV
  • https://t.me/clickhouse_ru
    покажите полный стектрейс?
    какого размера в строках и байтах CSV падает?
  • https://t.me/clickhouse_ru
    PeekableReadBuffer: Memory limit exceed when inserting data by HTTP (20.8) · Issue #18690 · ClickHouse/ClickHouse

    Error started to appear after migrated 19.9 -> 20.8 Settings <input_format_parallel_parsing>0</input_format_parallel_parsing> and <input_format_values_inte...

  • https://t.me/clickhouse_ru
    @studnev #198451 09:16 AM, 03 Jan 2021
    Про кавычки хорошая мысль. Одинарные кавычки заменяются как ‘ -> \’ . Может двойные кавычки ему не нравятся?
  • https://t.me/clickhouse_ru
    так, а данные вы как передаете?
    для INSERT
    запрос лучше в http get parameters через ?query=XXX передать
    а данные в POST

    заголовки и тело HTTP запроса в тикет закиньте
  • https://t.me/clickhouse_ru
    Да так передаю POST. Попробую данные приделать
  • https://t.me/clickhouse_ru
    https://clickhouse.tech/docs/en/interfaces/http/

    cat your_data.csv | curl "http://localhost:8123/?query=INSERT+INTO+your_table+FORMAT CSV" --data-binary @-
    вот так тоже ошибка по памяти?
    HTTP Interface | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @BloodJazMan #198455 09:41 AM, 03 Jan 2021
    DB::InputStreamFromASTInsertQuery::readImpl()

    у вас явно парсер в AST режим вместо streaming переключился
    скорее всего у вас ошибка в самой SQL query
    а не в данных
  • https://t.me/clickhouse_ru
    разделите query и данные посмотрите изменится ли ошибка
  • https://t.me/clickhouse_ru
    они отдельно
  • https://t.me/clickhouse_ru
    @cryptodoxer #198458 10:26 AM, 03 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @cryptodoxer #198459 10:30 AM, 03 Jan 2021
    привет. помогите плиз сделать правильную структуру, перегоняю данные из mysql в ch для анализа
    CREATE TABLE IF NOT EXISTS order_pack (
    EventDate Date DEFAULT toDate(1609632000),
    id Int32,
    order_id Int32,
    pack_id Int32,
    shipper_id Nullable(Int32),
    )
    ENGINE = MergeTree() PARTITION BY toYYYYMM(EventDate) ORDER BY (EventDate, id)
    при вставке больше 1000 записей ругается типа DB::Exception: Too many partitions for single INSERT block (more than 100)
    1609632000 это текущее время на момент создания таблицы
  • https://t.me/clickhouse_ru
    1609632000 тут ни при чем.
    У вас в mysql это поле есть? Там даты за какой период?

    Тупо отключите этот лимит
    set max_partitions_per_insert_block=0;
    это просто ручка безопасности, вам она не нужна раз вы даннные переливаете разово
  • https://t.me/clickhouse_ru
    @cryptodoxer #198461 10:38 AM, 03 Jan 2021
    в этой таблице нет дат
  • https://t.me/clickhouse_ru
    ну и как вы тогда insert делаете?
  • https://t.me/clickhouse_ru
    @cryptodoxer #198463 10:39 AM, 03 Jan 2021
    суть в том, что партиция вообще должна быть одна, так как дата разово генерится
    EventDate Date DEFAULT toDate(1609632000),
  • https://t.me/clickhouse_ru
    Это я понял. Извращение конечно. Не проще просто опустить partition by?
  • https://t.me/clickhouse_ru
    @cryptodoxer #198465 10:41 AM, 03 Jan 2021
    ща проверю еще раз, но так была тоже ошибка
  • https://t.me/clickhouse_ru
    ну и как вы тогда insert делаете?
  • https://t.me/clickhouse_ru
    @cryptodoxer #198467 10:43 AM, 03 Jan 2021
    CREATE TABLE IF NOT EXISTS order_pack (
    id Int32,
    order_id Int32,
    pack_id Int32,
    )
    ENGINE = MergeTree() ORDER BY ( id)
  • https://t.me/clickhouse_ru
    @cryptodoxer #198468 10:43 AM, 03 Jan 2021
    DB::Exception: Too many partitions for single INSERT block (more than 100).
  • https://t.me/clickhouse_ru
    ну и как вы тогда insert делаете?
  • https://t.me/clickhouse_ru
    @den_crane #198470 10:44 AM, 03 Jan 2021
    И какая версия кх?
  • https://t.me/clickhouse_ru
    @cryptodoxer #198471 10:44 AM, 03 Jan 2021
    упс - оказывается не было дропа до
  • https://t.me/clickhouse_ru
    @cryptodoxer #198472 10:44 AM, 03 Jan 2021
    все последнее в докере
  • https://t.me/clickhouse_ru
    @cryptodoxer #198473 10:46 AM, 03 Jan 2021
    я написал "конвертер" на laravel - что все таблицы на лету создает и в таблицы что меньше ляма записей вставляет одним инсертом. была проблема на таблицах где нет полей создания записи) теперь вроде все ок. как обычно - задашь вопрос, и сразу его решишь сам - хотя бился до этого пару часов(
  • https://t.me/clickhouse_ru
    @cryptodoxer #198474 10:47 AM, 03 Jan 2021
    еще проблема с дабле так и не решена в кх( даже последней версии(
  • https://t.me/clickhouse_ru
    @cryptodoxer #198475 10:47 AM, 03 Jan 2021
    https://github.com/ClickHouse/ClickHouse/issues/7690 тут пришлось данные на лету менять
    mysql decimal nullable -> DB::Exception: Attempt to read after eof · Issue #7690 · ClickHouse/ClickHouse

    Hi, Describe the bug or unexpected behaviour When I try to INSERT SELECT from a remote mysql table it leads to DB::Exception: Attempt to read after eof when a source column is of type decimal(xx,yy...

  • https://t.me/clickhouse_ru
    @den_crane #198476 10:52 AM, 03 Jan 2021
    Почему с дабле? Если issue про decimal.
    Вы тоже чтоли через engine mysql делаете?
  • https://t.me/clickhouse_ru
    @den_crane #198477 10:53 AM, 03 Jan 2021
    При чем тут миллион строк тогда.
  • https://t.me/clickhouse_ru
    @den_crane #198478 10:53 AM, 03 Jan 2021
    Пипец. Ни черта не понять.
  • https://t.me/clickhouse_ru
    @cryptodoxer #198479 10:54 AM, 03 Jan 2021
    Это 2 разные проблемы)) в mysql double может быть null в clickhouse - Nullable тоже, так вот при вставке null падает
    HttpCode:500 ; ;Code: 32, e.displayText() = DB::Exception: Attempt to read after eof: while executing 'FUNCTION CAST(_dummy_0 : 0, 'Nullable(Decimal(9, 2))' :: 1) -> CAST(_dummy_0, 'Nullable(Decimal(9, 2))') Nullable(Decimal(9, 2)) : 2' (version 20.12.4.5 (official build))

    это вторая проблема - которая решена в лоб заменой Null на 0
  • https://t.me/clickhouse_ru
    @cryptodoxer #198480 10:55 AM, 03 Jan 2021
    первая проблема была, я не заметил что drop table не было и изменение таблицы в партициях не применялось)
  • https://t.me/clickhouse_ru
    @cryptodoxer #198481 10:55 AM, 03 Jan 2021
    перепробовал кучу вариантов в dev/null
  • https://t.me/clickhouse_ru
    почему decimal в кх, а не float64, если в mysql у вас double?
  • https://t.me/clickhouse_ru
    @cryptodoxer #198483 10:56 AM, 03 Jan 2021
    потмоу что читал доку кх - где рекомендация юзать decimal для бабла) а не флоат
  • https://t.me/clickhouse_ru
    @cryptodoxer #198484 10:57 AM, 03 Jan 2021
    как и везде
  • https://t.me/clickhouse_ru
    Чушь. Тем более в mysql у вас уже float
  • https://t.me/clickhouse_ru
    @cryptodoxer #198486 10:58 AM, 03 Jan 2021
    с чего вдруг чушь? ) ща покажу пруфы. в мускуле именно double(9,2)
  • https://t.me/clickhouse_ru
    @cryptodoxer #198487 10:59 AM, 03 Jan 2021
    https://clickhouse.tech/docs/ru/sql-reference/data-types/float/
    Рекомендуется хранить данные в целочисленном виде всегда, когда это возможно. Например, переводите в целочисленные значения числа с фиксированной точностью, такие как денежные суммы или времена загрузки страниц в миллисекундах.
  • https://t.me/clickhouse_ru
    я даже наврал - не дабле в mysql а тоже decimal
  • https://t.me/clickhouse_ru
    @cryptodoxer #198489 11:01 AM, 03 Jan 2021
    price decimal(19,2) DEFAULT NULL,
  • https://t.me/clickhouse_ru
    @cryptodoxer #198490 11:10 AM, 03 Jan 2021
    в любом случае - спасибо!)
  • https://t.me/clickhouse_ru
    mysql decimal nullable -> DB::Exception: Attempt to read after eof · Issue #7690 · ClickHouse/ClickHouse

    Hi, Describe the bug or unexpected behaviour When I try to INSERT SELECT from a remote mysql table it leads to DB::Exception: Attempt to read after eof when a source column is of type decimal(xx,yy...

  • https://t.me/clickhouse_ru
    @BloodJazMan #198492 11:24 AM, 03 Jan 2021
    можете тут отписаться что у вас в latest воспроизводится
  • https://t.me/clickhouse_ru
    @cryptodoxer #198493 11:24 AM, 03 Jan 2021
    я и отписал - предпоследнее мое
  • https://t.me/clickhouse_ru
    @cryptodoxer #198494 11:25 AM, 03 Jan 2021
    mysql decimal nullable -> DB::Exception: Attempt to read after eof · Issue #7690 · ClickHouse/ClickHouse

    Hi, Describe the bug or unexpected behaviour When I try to INSERT SELECT from a remote mysql table it leads to DB::Exception: Attempt to read after eof when a source column is of type decimal(xx,yy...

  • @kreuzerkrieg #198495 12:07 PM, 03 Jan 2021
    коллеги, если я хочу заполнить таблицу с помощьп generateRandom() но у таблицы есть PARTITION BY toYYYYMMDD то в поле даты я не могу генерить случайные даты, желательно было бы заполнить эту колонку случайным денем одного года, это как то возможно сделать?
  • https://t.me/clickhouse_ru
    ну можно придумать что нибудь типа
    toStartOfYear(now()) + INTERVAL concat(rand() % 365), ' days')
  • @kreuzerkrieg #198497 12:23 PM, 03 Jan 2021
    О! а я уже хотел чтот то с epoch time делать. Спасибо!
  • 04 January 2021 (56 messages)
  • https://t.me/clickhouse_ru
    @alex_nder #198498 01:27 AM, 04 Jan 2021
    Привет всем. Кто-нибудь знает как работает движок MaterializeMysql с транзакциями. Например, я открыл транзакцию в mysql, затем удалил строку с id = 1. Вставил 10 миллионов строк, а затем строку с тем же id = 1. Далее фиксирую транзакцию в mysql. Возможна ли при этом несогласованность данных, когда строка уже удалена в clickhouse, но ещё не вставлена ее новая версия, поскольку между удалением и вставкой есть большое количество других операций в бин логе mysql. Заранее спасибо.
  • https://t.me/clickhouse_ru
    если я правильно помню, MaterializedMySQL работает как slave с statement based replication binlog
    если я не ошибаюсь то туда попадают только commited транзакции
  • https://t.me/clickhouse_ru
    по моему операции которые пишуются в redo transaction log и в binlog это разные операции...

    но надо проверять
  • https://t.me/clickhouse_ru
    вообще после слов
    "Replication can be easily broken."
    я бы вообще такой функционал в ClickHouse не тащил... и не использовал
  • https://t.me/clickhouse_ru
    а еще непонятно как оно работает с вот такими штуками
    https://dev.mysql.com/doc/refman/8.0/en/binary-log-transaction-compression.html
  • https://t.me/clickhouse_ru
    Жесть)))
  • https://t.me/clickhouse_ru
    Ничем не хуже конвертера на питоне)
  • @kreuzerkrieg #198505 07:52 AM, 04 Jan 2021
    коллеги, вопрос
    есть у меня таблица типа create table foo (a1 int32, a2 int32, d datetime, b1 int32)
    MergeTree, с partition by d, я хочу заполнить ее всяким сгенериным мусором используя generateRandom, но, число мне надо относительно нормальным, пусть все уложится в один год. Как написать запрос подобного типа
    insert into foo select * from ((select * from generateRandom('a1 int32, a2 int32')) (select toStartOfYear(now()) + INTERVAL rand() % 365 DAY as d)) (select * from generateRandom('b1 int32')))
  • @kreuzerkrieg #198506 07:53 AM, 04 Jan 2021
    это вообще возможно?
  • @GrouthHacker #198507 08:04 AM, 04 Jan 2021
    Вопрос: есть 2 таблицы:
    1. отсортированная по DateTime...
    2. без сортировки но с партициями по YYYYMMDD

    Если сделать запрос по датам с ключом --force_data_skipping_indices, то видим что индекс не используется ни в одном из двух.

    Если использовать --force_primary_key, то видно что при партицировании по дням, примари кей то же не заюзан.

    Вопрос: если нужен поиск данных по дням (и данные в запросе всегда только внутри дня), то как максимально оптимизировать таблицу?

    Даст ли что-то дополнительное создание индекса на DateTime (если данные надо выбирать в интервале 1мин к примеру)?
  • https://t.me/clickhouse_ru
    сколько данных за день в сжатых байтах на диске получаться будет?
  • Если в целом по всем столбцам, то 1-2гиг в сутки
  • https://t.me/clickhouse_ru
    как часто в течении дня данные вставляете?
  • каждую минуту
  • https://t.me/clickhouse_ru
    ну тогда у вас будет толпа мелких партов размером от 0.5 до 3 мегабайт
    которые clickhouse будет сливать

    данные вставляются монотонно или прошлый период тоже возможен?

    если EventTime будет в ORDER BY или в PRIMARY KEY
    и вставка монотонная (вставляются только данные новых периодов)
    то парты будет проще пропускать даже когда у вас партицирование по дням
    и сканировать их будет проще потому что в *.mrk файлах засечек EventTime будет
  • https://t.me/clickhouse_ru
    если савсем грубо
    то я так понимаю процесс

    PARTITION BY
    это логическое разбиение которое позволяет на раннем этапе очень быстро определить какие paratition сканируем

    ORDER BY / PRIMARY KEY
    если они по возрастанию времени и низко кардинальным колонкам
    позволяют быстрее через .mrk* файлы сравнивая значения из mrk с условиями запроса и принимая решешние находить нужные куски в .bin файлах просто делая fopen -> fseek -> fread -> uncompress -> compare
  • @GrouthHacker #198514 09:49 AM, 04 Jan 2021
    данные условно монотонные.... т.е. батчи инсерта всегда отсортированы по времени, но учитывая что они поступают с 10ти разных серверов вопзможен вариант когда с одного сервера поступили данные за 20-21ю минуту, а потом с другого пришли данные за 19-20ю...
  • по PARTITION BY в теории да, но на практике почему-то при партиционировании по дням выборка данных внутри дня работала МЕДЛЕНЕЕ чем при партиционировании по месяцу. Логического объяснения этому так и не нашел.
  • https://t.me/clickhouse_ru
    ну МЕНЬШЕ партиций
    меньше партов внутри партиции
    размер парта такой что буфера хорошо пролазят в CPU Cache

    логическое объяснение простое, главный паттерн чтобы clickhouse работал быстро ему надо парты среднего размера по 50-100 мегабайт в которых есть PK который есть в запросе... и условия фильтрации которые меньше cpu cache miss порождают =)
  • @ogavrilov #198517 10:20 AM, 04 Jan 2021
    Как можно разбивать данные в таблице по времени? например, есть данные с колонкой timestamp, хочу получить выборку вида count_of_rows, period_start, period_end. Разбивка по периодам на основании времени, например 1 час.
  • @ogavrilov #198518 10:23 AM, 04 Jan 2021
    Или может есть какой-то способ как найти промежутки в timestamps? Вроде такого - https://stackoverflow.com/questions/25027820/find-a-gap-between-time-stamp
    Find a gap between time stamp

    I have many many rows in the table. The table has a Date column (which includes date and time) I want to be able to loop through the table and find any gap between the two rows where the difference

  • возможно такое решение подойдет

    SELECT
    toStartOfInterval(timestamp, INTERVAL 1 hour) as timestamp_by_hour,
    min(timestamp) as min_timestamp,
    max(timestamp) as max_timestamp,
    count()
    FROM
    table
    GROUP BY
    timestamp_by_hour
  • получается разбивка периодов по часам, я бы хотел чтобы периоды были любые
  • https://t.me/clickhouse_ru
    > INTERVAL 1 hour

    Меняется на любой период который хочешь
  • @ogavrilov #198522 10:52 AM, 04 Jan 2021
    Так это понятно, вопрос в том что могут быть периоды в пару лет данных с паузами в 2 часа, вот я и хочу узнать границы этих периодов
  • https://t.me/clickhouse_ru
    @unamedrus #198523 10:55 AM, 04 Jan 2021
    А сколько записей в таблице ожидается?
  • @ogavrilov #198524 10:58 AM, 04 Jan 2021
    2.5кк в день, но скорость выполнения не важна, лижбы не падало
  • https://t.me/clickhouse_ru
    Судя по моим тестам в КХ попадают только закомиченные данные. Тут основной вопрос в том, как реализовано чтение и фиксация данных из бинлога. Например, записывается ли весь набор строк, измененный транзакцией в буфер, а затем, например, присоединяется как патриция - тогда несогласованности удаленных и вставленных строк не должно быть. Или же операции из лога читаются и выполняются по очереди - тогда несогласованность возможна
  • https://t.me/clickhouse_ru
    @unamedrus #198526 11:07 AM, 04 Jan 2021
    В целом можно посмотреть в сторону WITH FILL
    SELECT
    ts,
    now()
    FROM
    (
    SELECT
    ts,
    count() AS cnt
    FROM
    (
    SELECT now() + number AS ts
    FROM numbers(1000)
    WHERE number != 20
    )
    GROUP BY ts
    ORDER BY ts ASC WITH FILL STEP 5
    )
    WHERE cnt = 0

    @ogavrilov
    Что бы получить границы, тут придется скорее всего через массивы делать,
    WITH arrayJoin(arraySplit((x, y) -> (y = 0), groupArray(ts), groupArray(cnt))) AS x
    SELECT
    x[1],
    x[length(x)]
    FROM
    (
    SELECT
    ts,
    count() AS cnt
    FROM
    (
    SELECT now() + number AS ts
    FROM numbers(1000)
    WHERE number != 20
    )
    GROUP BY ts
    ORDER BY ts ASC WITH FILL STEP 5
    )
  • с with fill сейчас тоже смотрю, ваши варианты тоже сейчас попробую, спасибо
  • @ogavrilov #198528 11:33 AM, 04 Jan 2021
    как заставить WITH FILL STEP X начинать считать X от последнего значения, а не от первого в выборке?
  • @ogavrilov #198529 11:34 AM, 04 Jan 2021
    Сейчас при запросе с STEP 5 выдает
    2020-12-25 06:47:36 28
    2020-12-25 06:47:42 1
    2020-12-25 06:47:53 1
    2020-12-25 06:48:05 1
    2020-12-25 06:48:16 1
    2020-12-25 06:48:22 1
    2020-12-25 06:48:34 1
    2020-12-25 06:48:36 0
    2020-12-25 06:48:45 1
    2020-12-25 06:48:57 1
    И вот на 36 секунде вставлена записть от WITH FILL, хотя я ожидал что она появится только если с 34 секунды пройдет 5 секунд
  • @ogavrilov #198530 11:36 AM, 04 Jan 2021
    с таким подходом WITH FILL не подойдет для отсчитывания интервалов между данными
  • https://t.me/clickhouse_ru
    WITH FILL так работает,

    В целом для задачи поиска границ это не должно мешать
  • @ogavrilov #198532 11:42 AM, 04 Jan 2021
    Почему? Если я хочу найти границы периодов с паузой 60 секунд, может получиться что fill появится при меньшей паузе
  • @ogavrilov #198533 11:43 AM, 04 Jan 2021
    Или это только значение fill считается от первого row, а появляется он только если будет пауза указанная в step?
  • https://t.me/clickhouse_ru
    ну так в документации написано все
    https://clickhouse.tech/docs/en/engines/database-engines/materialize-mysql/
    запросы конвертируются

    MaterializedMySQL это по факту ReplacingMergeTree в который INSERT средствами clickhouse делать нельзя

    и INSERT -> INSERT
    UPDATE -> INSERT _sign=-1 , INSERT _sign=+1
    DELETE -> INSERT _sign=-1

    смотрите system.parts и system.part_log как оно там создается и мержится в итоге

    думаю что не важно насколько "большая транзакция"
    она либо в ROW based будет сконвертирована в кучу INSERT либо в Один INSERT Для Statement based
    MaterializeMySQL | ClickHouse Documentation

    MaterializeMySQL Creates ClickHouse database with all the tables existing in MySQL, and all the data in those tables. Cl

  • https://t.me/clickhouse_ru
    С документацией уже ознакомился, спасибо. В system.parts у меня нет таблицы из бд MaterializeMysql. По поводу большой транзакции и кучи инсертов как раз и есть вопрос. Если инсерты делаются последовательно, то в моем примере будет несогласованность данных. Например я в рамках транзакции удалил строку в mysql и затем ее добавил с тем же первичным ключем в той же транзакции. Итого, если я делаю select в CH, который попал на время между воспроизведением операции delete, но до выполнения insert новой версии строки, то этой строки у меня не будет в выборке поскольку она будет вставлена в CH с sign = -1, а новая версия еще не вставлена. В то же время в mysql у меня, очевидно, будет новая версия доступна сразу после подтверждения транзакции. В целом вопрос можно переформулировать.
  • https://t.me/clickhouse_ru
    @alex_nder #198538 12:45 PM, 04 Jan 2021
    Движок MaterializeMysql воспроизводит операции из binlog mysql по одной или сразу все, измененные в рамках одной транзакции MySql.
  • https://t.me/clickhouse_ru
    я думаю там есть какой нибудь батчинг
    но стоит задать вопрос автору изменений
    @zhang2014
    только вопрос на английском надо сделать
  • https://t.me/clickhouse_ru
    Супер, спасибо большое, обращусь к автору. Функционал очень интересен для таблиц с большим количеством записей. Сильно упростит синхронизацию транзакционного и аналитического хранилища.
  • https://t.me/clickhouse_ru
    ISSUES-4006 support MaterializeMySQL database engine by zhang2014 · Pull Request #10851 · ClickHouse/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en Changelog category: New Feature Changelog entry: Support MaterializeMySQL database engine. Implements #40...

  • https://t.me/clickhouse_ru
    данные флашатся каждую секунду
  • https://t.me/clickhouse_ru
    @ShihaleevKA #198543 01:41 PM, 04 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @ilia_stepanov #198544 02:11 PM, 04 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @shybetska_mariia #198545 02:56 PM, 04 Jan 2021
    Добрый день! Подскажите, кто-то сталкивался с такой проблемой: при округлении необходимо 1-4 - округлять вниз, а 5-9 -вверх. round использует банковское округление, ceil же вверх округляет любой вариант и тоже не подходит. Грубо говоря из 1,565 при округлении до сотых нужно получить 1,57
  • можете в децимал перевести, либо
    https://t.me/clickhouse_ru/146060
    【D】【J】 in ClickHouse не тормозит

    можно вроде только комбинацией if + floor/ceil

  • https://t.me/clickhouse_ru
    @nshumshurova #198548 05:33 PM, 04 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @nshumshurova #198549 05:35 PM, 04 Jan 2021
    на счет оптимизации через graphite_rollup, каким образом при оптимизации могли пропасть данные за определенный промежуток, если я потом добавляла куски из середины периода(не хватало места на диске для оптимизации) и в итоге есть разрв в метриках, если даты добавляются из промежутка то они не дозаписываются?
  • https://t.me/clickhouse_ru
    @nshumshurova #198550 05:35 PM, 04 Jan 2021
    варианты действий в следующий раз?
  • https://t.me/clickhouse_ru
    >то они не дозаписываются
    не играет никакой роли что дописали данные задним числом в середину или в начало.

    разрывы по другой причине.
  • https://t.me/clickhouse_ru
    это не важно как отсортированы данные в источнике. При записи инсерта на диск КХ отсортирует все колонки согласно orderby таблицы
  • https://t.me/clickhouse_ru
    просто запрос where неправильно написпн
  • https://t.me/clickhouse_ru
    А почему, если до этого разрывов не было?
  • https://t.me/clickhouse_ru
    ну вот у вас не хватало места, и что вы сделали? как вы место освободили?
  • https://t.me/clickhouse_ru
    @353222455 #198556 10:12 PM, 04 Jan 2021
    Joined.
  • 05 January 2021 (60 messages)
  • @ShopenV #198557 05:45 AM, 05 Jan 2021
    Joined.
  • Вопрос всё ещё актуален, может кто что подскажет ещё?
  • group by toHour()
  • https://t.me/clickhouse_ru
    @MakeReady #198561 08:06 AM, 05 Jan 2021
    Добрый день! Нужна идея. Есть несколько csv которые надо грузить в одну таблицу, сохраняя при этом в дополнительное поле признак, разделяющий данные из файлов. Нечто вида csv_id, data1, data2, data3, где data1-3 данные из csv
  • вообще не то, вопрос про разбиение по периодам если пауза между данными больше часа
  • @GrouthHacker #198563 09:52 AM, 05 Jan 2021
    Посоветуйте варианты работы с ретеншном?

    Каждому юзеру увидевшему баннер (AD), присваиваем уникальный id (UID), в течении месяца он может совершить действие (ACTION).

    Нюанс что действие (ACTION) совершается в другой системе, от которой мы получаем только id юзера (UID)

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

    SELECT ad, uid FROM db WHERE uid IN (SELECT DISTINCT uid FROM db WHERE action='ACTION') работает, но плохо.
    В сутки до 50млн хитов, и до 500к хитов с нужными ACTION.

    Наверняка у кого-то были схожие задачи. Что можно сделать чтоб избежать фул скан по UID ?
  • Не уверен, но можно попробовать что-то типа SummingMergeTree + хранить action в массиве. Надо будет аккуратно настроить primary key + order by чтобы парты были адекватного размера. + Все сильно будет зависить от вставки (инсерт по многим uid породит очень много фоновых мержей). У меня такая система система для нескольких дней работала.

    Но в любом случае селект по строке uid - это не к клику. Я бы сделал этот на стороне а в клике оставил только статку CollapsingMergeTree и обновлял ее раз в N времени

    P.s. retention был бы проще потому что все action 1 uid хранятся в 1 строке
  • SummingMergeTree не поможет, потому что по итогу нужны не только кол-во юзеров увидевших баннер, но и конкретные UID (и к примеру время показа банера/время дествия).

    Единственное, думал UID генерить на основе таймстемпа (вместо рандома).., что теоретически даст подсказку о том, в каком временном диапазоне искать инфу о показе банера. Но как это поможет оптимизировать запрос, и как для этого должна быть структурирована база пока не понимаю.
  • Ну можно несколько колонок связанных иметь, но это не решает самой проблемы поиска по uid. https://clickhouse.tech/docs/ru/sql-reference/data-types/nested-data-structures/nested/

    Плюс можно заполнять время ретеншена для uid из словаря в отдельную колонку, если uid-ов не так много. Но это все велосипеды
    Nested | Документация ClickHouse

    Nested Nested(Name1 Type1, Name2 Type2, …) Вложенная структура данных - это как будто вложенная таблица. Параметры вложе

  • хм, а в чем ошибка? Сейчас примерно так:
    CREATE table.... PARTITION BY toYYYYMMDD(time)

    SELECT ... WHERE toYYYYMMDD(time)>='20200901' and toYYYYMMDD(time)<'20200902'
  • https://t.me/clickhouse_ru
    В версиях до 20.10 (примерно) кликхаус хранил не toYYYYMMDD(time) значение а min-max значение что попадается в колонке, те toYYYYMMDD(time)>='20200901' такая штука в условиях потенциально могла сканировать все партиции
  • https://t.me/clickhouse_ru
    @unamedrus #198569 10:47 AM, 05 Jan 2021
    Те условие на самом деле должно быть
    WHERE time>='2020-09-01 00:00:00' and time<'2020-09-03 00:00:00'
  • https://t.me/clickhouse_ru
    иными словами, как в одном исерте совместить кокнретное число для одного поля и файл для остальных?
  • @beebeeep #198571 11:55 AM, 05 Jan 2021
    Joined.
  • Канонично такое делается через floor(x+eps/2), в случае сотых это floor(x+0.005). Но я не знаю, насколько ето будет еффективно в кх, потому что поставил его примерно вчера :)
  • @iureva #198573 12:47 PM, 05 Jan 2021
    Joined.
  • @Skorikov_Vladimir #198574 12:50 PM, 05 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    input function
    Insert into t select 55 csvid, ..... from input(...)
  • https://t.me/clickhouse_ru
    и все еще не хранит. Просто амос научил кх применять функции к minmax значениям партиций и угадывать для более сложных случаев.
  • https://t.me/clickhouse_ru
    то есть вот это будет корректно? clickhouse-client --format_csv_delimiter=";" --query="INSERT INTO t (Chanel,Setting,Scale,MesName,Name) FORMAT CSV select 55," < t.txt
  • https://t.me/clickhouse_ru
    @mikhailberg #198579 01:36 PM, 05 Jan 2021
    Подскажите, а insert into … select - данные вставляются потоком или конкретными кусками выгружаются в память и вставляются ? Что будет если в середине инсерта что-то упадет ?
  • https://t.me/clickhouse_ru
    @MakeReady #198580 01:37 PM, 05 Jan 2021
    если не включен режим игнорирования ошибок, то ничего не вставится
  • https://t.me/clickhouse_ru
    @MakeReady #198581 01:37 PM, 05 Jan 2021
    можно указать сколько ошибок игнорировать
  • https://t.me/clickhouse_ru
    @mikhailberg #198582 01:38 PM, 05 Jan 2021
    а как это работает ? у меня есть таблица на 20 миллардов, мне нужно заполнить табличку SummingMergeTree, я хочу сделать такой инсерт, данные вставленные через эту конструкцию как-то будут помечаться, мол если что-то отваилтся
  • https://t.me/clickhouse_ru
    нет, не будет.

    прочитайте доку https://clickhouse.tech/docs/ru/query_language/table_functions/input/
    input | Документация ClickHouse

    input input(structure) - табличная функция, позволяющая эффективно преобразовывать и вставлять отправленные на сервер да

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

    select groupArray(ad), uid, countIf(action='ACTION') c

    group by uid
    having c>0
  • https://t.me/clickhouse_ru
    не очень понятно с 'test_structure', но разберусь, спасибо!
  • https://t.me/clickhouse_ru
    >инсерт по многим uid породит очень много фоновых мержей
    нет
  • https://t.me/clickhouse_ru
    @bralbral #198589 02:07 PM, 05 Jan 2021
    Добрый вечер. Подскажите , а есть принципиальная разница между табличной функцией jdbc и движком JDBC? Конечно же , кроме того, что оно создаст таблицу.
  • https://t.me/clickhouse_ru
    нету. Табличная функция под капотом создает временную таблицу с движком JDBC
  • https://t.me/clickhouse_ru
    Благодарю.
  • https://t.me/clickhouse_ru
    все же test_structure - это имя целевой таблице_structure?
  • https://t.me/clickhouse_ru
    да, написано же в доке Если в data.csv лежат данные той же структуры test_structure, что и у таблицы test, то следующие два запроса эквивалентны:
  • https://t.me/clickhouse_ru
    @den_crane #198594 02:33 PM, 05 Jan 2021
    в смысле надо перечислить 'col1 String, col2 Date, col3 Int32'
  • https://t.me/clickhouse_ru
    @MakeReady #198595 02:35 PM, 05 Jan 2021
    написано, что эквивалентно команде без использования input
  • https://t.me/clickhouse_ru
    пример input
    INSERT INTO example SELECT id, ifNull(num, -1) FROM input('id UInt32, num Nullable(Int32)') format JSONEachRow {"id": 1, "num": null};
  • https://t.me/clickhouse_ru
    @MakeReady #198597 02:36 PM, 05 Jan 2021
    и написано так, что можно прочесть не как надо перечислить, а как INSERT INTO t SELECT * FROM input('t_structure')
  • @subotic0 #198598 02:37 PM, 05 Jan 2021
    всем привет, подскажите пожалуйста, после апдейта с версии 19.17.6.36 на версию 20.3.10.75 стали падать ошибки когда обращаюсь за данными через mysql(..), в чем может быть причина?

    c909828dc32e :) SELECT *
    :-] FROM mysql(..') limit 10

    SELECT *
    FROM mysql('..', '..', '..', '..', '..')
    LIMIT 10

    Received exception from server (version 20.3.10):
    Code: 1000. DB::Exception: Received from localhost:9000. DB::Exception: mysqlxx::ConnectionFailed: Unknown SSL error ((nullptr):3306).

    На версии 20.8.4.11 получаю аналогичную ошибку
  • https://t.me/clickhouse_ru
    @MakeReady #198599 02:37 PM, 05 Jan 2021
    понятно. спасибо!
  • https://t.me/clickhouse_ru
    @den_crane #198600 02:38 PM, 05 Jan 2021
    create table csvtest(csv_id Int64, c1 String, c2 String) Engine=Memory;

    INSERT INTO csvtest SELECT 55,c1,c2 FROM input('c1 String, c2 String') format CSV a,b

    select * from csvtest

    SELECT *
    FROM csvtest

    Query id: 7f6453eb-59f6-4750-8391-435ff242b426

    ┌─csv_id─┬─c1─┬─c2─┐
    │ 55 │ a │ b │
    └────────┴────┴────┘
  • https://t.me/clickhouse_ru
    да, я уже сделал инпут под свои нужды. Немного громоздно из-за необходимости перечисления полей с типами, но главное, что работает. Спасибо еще раз!
  • https://t.me/clickhouse_ru
    @MakeReady #198602 02:40 PM, 05 Jan 2021
    я просто еще и VALUES перечисляю, так как одно поле не вставляю, оно заполняется дефолтом
  • https://t.me/clickhouse_ru
    почему такие древние 20.3 и 20.8 ?

    почему не 20.8.11.17 ?

    сколько ping между CH и mysql ?
  • на v.20.8.11.17 каждый 3ий раз падает
  • https://t.me/clickhouse_ru
    CH падает?
  • выборка select * from mysql()
  • https://t.me/clickhouse_ru
    сколько ping между серверами CH и mysql ?
    какая версия mysql ?
  • 95-98
  • https://t.me/clickhouse_ru
    95 чего ? % ? мс? литров?
  • https://t.me/clickhouse_ru
    @den_crane #198610 03:24 PM, 05 Jan 2021
    или это версия mysql ?
  • @subotic0 #198611 03:24 PM, 05 Jan 2021
    Мс =)
  • https://t.me/clickhouse_ru
    что если

    set connect_timeout_with_failover_ms=1000, connect_timeout_with_failover_secure_ms=1000;
    select * from mysql();
  • @dj_mixer #198613 07:06 PM, 05 Jan 2021
    а можно как-то сделать odbc таблицу (а ещё лучше динамический запрос без создания таблицы) на базе запроса на удаленной базе а не таблицы/вью?

    по типу синтаксиса view() только для odbc...
    и если нет то какие мысли по поводу ФР?

    а то иногда надо динамически перелить dimension данные из удаленной базы которые генерируются сложным запросом в Х таблицам

    select a,b,c from odbc('DSN=postgres_10_10', 'select a.* from a join b ... join c')
  • год назад нельзя было, поэтому мы на спарк перешли
  • ок. так и напишем, люди аж на спарк переходят изза отсутствия фичи
  • @ViacheslavNefedov #198616 07:28 PM, 05 Jan 2021
    ну это раньше было, от бедности и безысходности
  • @roman_plotnik #198617 09:02 PM, 05 Jan 2021
    Joined.
  • @echohes #198618 11:05 PM, 05 Jan 2021
    Joined.
  • 06 January 2021 (54 messages)
  • @fs_fs_fs_fs #198619 12:33 AM, 06 Jan 2021
    Joined.
  • @fs_fs_fs_fs #198621 07:32 AM, 06 Jan 2021
    Всем привет.
    Столкнулся с очень странным поведением кликхауса, возможно кто то это уже проходил.
    Есть свежий и чистый кластер на который разворачивается бекап (при помощи утилиты https://github.com/AlexAkulov/clickhouse-backup)
    Бекап разворачивается без проблем, реплицируется на все сервера и т.д
    И вот тут начинается магия (для меня).
    Есть табличка например

    CREATE TABLE my_db.table_version (
    table_name String,
    current UInt32,
    new UInt32
    ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/my_db/{shard}/table_version', '{replica}') ORDER BY table_name SETTINGS index_granularity = 8192

    При попытке выполнить в ней запрос
    ALTER TABLE my_db.table_version
    UPDATE
    new = new + 1
    WHERE
    table_name = 'xxx'
    ;

    На данных которые восстановлены из бекапа - ошибок никаких НО с данными ничего не происходит, хотя в system.mutations я этот запрос вижу
    и он отработан как is_done=1

    Если в эту же табличку вставить какие то новые данные и выполнить такой же запрос на них, например:
    ALTER TABLE my_db.table_version
    UPDATE
    new = new + 1
    WHERE
    table_name = 'yyy'
    ;
    где yyy это новые данные которые вставлены после восстановления бекапа - все отрабатывает штатно

    При этом если сделать truncate или rename таблички - вск отрабатывает. То есть врят ли проблема где то с правами на файлы.
  • https://t.me/clickhouse_ru
    @evasyakin #198622 07:51 AM, 06 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @nikita_vashurin #198623 08:48 AM, 06 Jan 2021
    Joined.
  • Добрый день. не помогло, попытки установить значения >1000 не помогли, раз в 3-4 попытки все та же ошибка.
    При этом, создал таблицу с движком MySQL, селекты к ней идут без проблем
  • https://t.me/clickhouse_ru
    последнее число в имени парта это номер мутации.

    1. как называются восстановленный парт и новый парт (имя каталога)?
    2. какая версия КХ который бекапили и куда восстановили?
    3. какие права у файлов new? ls -l парт который не хочет мутировать / new*
  • @globgor #198627 01:27 PM, 06 Jan 2021
    всем привет, никто clickhouse с presto не женил? если да то что использовали?
  • @softbot_xxl #198628 01:30 PM, 06 Jan 2021
    вроде нативного коннектора нету, но может работает через odbc или другой протокол
  • пока не нашел рабочего рншения, нужно чтоб из presto запрос уходил в clickhouse
  • https://t.me/clickhouse_ru
    mysql какой версии?
  • кх - 20.12.4.5
    mysql - 5.7.28-31
  • @latina_danzig #198634 03:09 PM, 06 Jan 2021
    Есть ли в кх возможность скипать плохие json сообщения при записи в таблицу на движке кафки. Имеется ввиду неправильные не структурно (параметр skip_broken_message не подходит), а когда в жсон приходит какое-нибудь значение при чтении которого Materialized View кидает ошибку что невозможно привести к нужному формату. На данный момент если я намеренно отправляю 1 неверное сообщение и затем отправляю 10 верных сообщений, консьюмер не может записать оффсет и бесконечно пытается обработать этот блок возвращая мне Invalid Offset.
  • можно получать json строкой а потом парсить руками внутри mv
  • @latina_danzig #198636 03:10 PM, 06 Jan 2021
    Расскажи поподробней пожалуйста или поделисьполезной ссылочкой если имеется
  • https://t.me/clickhouse_ru
    типа в kafka таблицу пролезло, а в MV исключение в select? типа деление на 0? Нет нету такого.
    надо в MV в select соломку подкладывать, типа toInt32OrNull и т.п.
  • @n1ght_f0x #198638 03:13 PM, 06 Jan 2021
    вроде JSONStringEachRow формат для движка, а потом через JSONExtract* парсишь
    но я не думаю что это решит проблему с типами :)
  • @n1ght_f0x #198639 03:13 PM, 06 Jan 2021
    В идеале, не надо слать невалидные сообщения :)
  • https://t.me/clickhouse_ru
    от гниения бит никто не защищен
  • https://t.me/clickhouse_ru
    @den_crane #198641 03:14 PM, 06 Jan 2021
    солнце светит, шлет нейтрино
  • Это понятно, просто столкнулся с проблемой когда консьюмер повис на проде на ночь, и было больно. В итоге проблему и решил прикрутив валидацию данных которы отправляю с бэка. Думал есть какое-то Clickhouse side решение
  • Именно об этом
  • @n1ght_f0x #198644 03:16 PM, 06 Jan 2021
    можно попробовать на стороне кафке еще валидацию посмотреть
  • @n1ght_f0x #198645 03:17 PM, 06 Jan 2021
    в той же kafka connect куча всяких трансформаций и прочего + не очень сложно свое дописать
  • @latina_danzig #198646 03:17 PM, 06 Jan 2021
    Ну avro схемы никто еще не отменял 🙂
    Просто поставили инвестигейт задачу, разобраться что можно сделать чтобы минимизировать подобные падения штанов в дальнейшем
  • https://t.me/clickhouse_ru
    @den_crane #198647 03:21 PM, 06 Jan 2021
    Решения в КХ нету.
    Можно не использовать kafka engine . Взять какой-нибудь синкер который умеет не останавливать и писать сломанное в спец. топик
  • https://t.me/clickhouse_ru
    @1117268767 #198648 04:41 PM, 06 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    если данные попали в таблицу с кафка движком - оффсет разве не коммитается ?
  • https://t.me/clickhouse_ru
    таблица с движком кафка не имеет стора, туда нельзя ничего сохранить
  • https://t.me/clickhouse_ru
    а в какой момент оффсет коммитается ?
  • https://t.me/clickhouse_ru
    после удачной записи в MV
  • https://t.me/clickhouse_ru
    @den_crane #198654 06:19 PM, 06 Jan 2021
    или после удачного селест из kafka engine в клиента
  • https://t.me/clickhouse_ru
    а если у меня к кафке 10 вьюх приатачено. В эти вьюхи по очереди блоки данных попадают. Что будет, если 5 вьюх отработали, а 6ая сломалась ?
  • https://t.me/clickhouse_ru
    @den_crane #198656 06:20 PM, 06 Jan 2021
    кстати была настройка чтобы сначала комитить потом записывать в MV, может уже нету
  • https://t.me/clickhouse_ru
    >Что будет, если 5 вьюх отработали, а 6ая сломалась
    не закомитится оффсет
  • https://t.me/clickhouse_ru
    но данные, которые обработали 5 первых вьюх попадут куда надо ?
  • https://t.me/clickhouse_ru
    да, и будут дубликаты потом
  • https://t.me/clickhouse_ru
    @mikhailberg #198660 06:27 PM, 06 Jan 2021
    понял, спасибо!
  • 1. В бекапе лежит парт /srv/backup/test_backup/shadow/my_db/table_version/all_0_0_0_1249
    при ресторе он аттачит его под таким же именем
    То есть в базе после рестора мы видим /var/lib/clickhouse/data/my_db/table_version/all_0_0_0_1249
    Данные в таблице из этого парта есть, и они нормально реплицируются на все ноды CH

    2. Бекап был из 20.3.19.4 рестор в 20.3.21.2. Вроде по changelog ничего не должно было сломатся

    3. Права на папку drwxr-x--- овнер/группа clickhouse
    Права на файлы -rw-r----- овнер/группа clickhouse
    Опять таки по правам, если сделать rename table или truncate table то данные на файловой системе он меняет.

    Нашли интересный момент, после восстановления из бекапа если сделать запрос

    SELECT *
    FROM system.zookeeper
    WHERE path = '/clickhouse/tables/my_db/1/table_version/blocks'
    ;
    Получаем пусто - никаких записей нет вообще

    Еще раз для понимания table_version это таблица чисто восстановленная из бекапа,
    руками никаких данных не добавлялось

    В то же время если сделать такую же таблицу руками, добавить туда данные руками (через INSERT) то при запросе
    SELECT *
    FROM system.zookeeper
    WHERE path = '/clickhouse/tables/my_db/1/table_version1/blocks'
    ;
    Мы видим записи для блоков.
  • https://t.me/clickhouse_ru
    @den_crane #198664 07:27 PM, 06 Jan 2021
    blocks -- это хеши инсертов, для дедупликации. То что там пусто это как раз так и должно быть
  • https://t.me/clickhouse_ru
    да я так и думал , я воспроизвел
  • https://t.me/clickhouse_ru
    @den_crane #198667 07:40 PM, 06 Jan 2021
    странно это обсуждали уже, почему это не исправлено
  • https://t.me/clickhouse_ru
    @den_crane #198668 07:40 PM, 06 Jan 2021
    all_0_0_0_1249
  • https://t.me/clickhouse_ru
    @den_crane #198669 07:40 PM, 06 Jan 2021
    у таблицы в зукипере хранится 0
  • https://t.me/clickhouse_ru
    @den_crane #198670 07:40 PM, 06 Jan 2021
    0 < 1249
  • https://t.me/clickhouse_ru
    @den_crane #198671 07:41 PM, 06 Jan 2021
    поэтому этот парт не мутирует
  • https://t.me/clickhouse_ru
    @den_crane #198672 07:41 PM, 06 Jan 2021
    при том что при атаче номера блоков сбрасываются, а версия мутации почему-то нет
  • А для понимания расшифруете или может где то в документации описано расшифровка имени парта?
    И не подскажите как это можно пофиксить?
  • https://t.me/clickhouse_ru
    где-то описана ищите

    all_0_0_2 --- 0 , 0 -- это автоинкремент, начальный блок, конечный , 2 -- level (мержи)
    all_0_0_2_4 -- 4 - это версия мутации

    >И не подскажите как это можно пофиксить?
    фиг знает. Наверное, или поправить руками в имени каталога 1249 в 0
    или поправить в ZK 0 в 1300 например
    или сделать dummy alter update where 0 ; 1249 раз
  • https://t.me/clickhouse_ru
    @den_crane #198675 07:57 PM, 06 Jan 2021
    attach part does not reset mutation version on a part. · Issue #18804 · ClickHouse/ClickHouse

    Attach part does not reset mutation version on attached parts. So mutations (update/delete) do not work against parts restored from a backup, because their version is bigger than the version stored...

  • Вам огромное спасибо!
    Будем пробовать варианты.
  • Да, как минимум вариант переименовать парт в бекапе и уже его восстановить фиксит проблему. Еще раз большое спасибо!
  • @Leohim #198678 08:31 PM, 06 Jan 2021
    Joined.
  • @tarasovalx #198679 11:34 PM, 06 Jan 2021
    Joined.
  • 07 January 2021 (25 messages)
  • https://t.me/clickhouse_ru
    @rasstr0en #198680 07:38 AM, 07 Jan 2021
    Привет! поделитесь, Buffer таблицу кто-нибудь использует в проде? Если буффер стоит перед ReplacingMergeTree, и проходит ALTER на добавление колонки - буффер сам перестроится или его надо пересоздавать?
  • https://t.me/clickhouse_ru
    Надо пересоздавать
  • https://t.me/clickhouse_ru
    @pnm000 #198682 12:50 PM, 07 Jan 2021
    Кто то может подсказать почему такая щтука не работает ?
    WITH (SELECT 1) as result select * from result;
  • https://t.me/clickhouse_ru
    WITH result AS
    (
    SELECT 1
    )
    SELECT *
    FROM result

    Query id: b7af6c59-cc6a-41d3-a16a-861434c55bf1

    ┌─1─┐
    │ 1 │
    └───┘
    таки работает с 20.10 где то
  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #198684 #198685 01:00 PM, 07 Jan 2021
    Блин спасибо у меня 20.8.7.15
  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #198684 #198686 01:05 PM, 07 Jan 2021
    спасибо
  • https://t.me/clickhouse_ru
    @pnm000 #198687 01:11 PM, 07 Jan 2021
    Subqueries in WITH section (CTE) can reference previous subqueries in WITH section by their name. #16575 (Amos Bird).
  • https://t.me/clickhouse_ru
    @rasstr0en #198688 02:15 PM, 07 Jan 2021
    подскажите, KILL QUERY ввел в Is_cancelled запрос, что с ним в это время происходит?
  • https://t.me/clickhouse_ru
    на определенных этапах выполнения запроса, запрос проверит был ли он отменен и тогда закончится
    те потенциально он может зависнуть так, что поможет только рестарт кх
  • https://t.me/clickhouse_ru
    @rasstr0en #198690 02:20 PM, 07 Jan 2021
    спасибо, понятно
  • @923476123 #198691 02:55 PM, 07 Jan 2021
    Всем привет, кто знает хорошую утилиту для инкрементальных патчей, что то вроде flyway?
  • @865226418 #198692 03:01 PM, 07 Jan 2021
    Может кто-то сталкивался с проблемой репликации Zookepeer: {} <Error> hepic_data.replicated_data_records: DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Poco::Exception. Code: 1000, e.code() = 113, e.displayText() = Net Exception: No route to host, Stack trace (when copying this message, always include the lines below):
  • @865226418 #198693 03:02 PM, 07 Jan 2021
    в конфигах везде IP и они доступны
  • @865226418 #198694 03:03 PM, 07 Jan 2021
    это случается когда пытаешься синхронизировать данные
  • https://t.me/clickhouse_ru
    CH сервера анонсируют свои hostname -f в ZK , другие реплики идут по этому имени.

    Вы поднимаете КХ. hostname -f = xxx.local . Другая реплика ломится в сеть по адресу xxx.local и получает No route to host . При этом вы думаете что используются какие-то внешние IP.

    Есть параметр в config.xml inter server http host туда можно вписать свое собственное имя. Прочитайте описание там.
  • великолепно! Спасибо огромное!
  • https://t.me/clickhouse_ru
    Yet another ClickHouse support by a-konyaev · Pull Request #2640 · flyway/flyway

    Based on #2166 and #1773 This one has some improvements in comparison to previous implementations: more accurate declaration of the schema table's columns (types and default values) &q...

  • @923476123 #198698 03:14 PM, 07 Jan 2021
    Они вроде как не закончили
  • https://t.me/clickhouse_ru
    гыгы, они ? Автор тут, он все закончил.

    Ментейнеры флайвей не идиоты чтобы что-то незнакомое мержить. Я бы тоже не стал на их месте.
    Представьте вы помержили что-то. А дальше приходит юзер с ишью и говорит я вот тут нажал и мне ваша утилита все данные снесла. И вы как дурак смотрите на это и непонятно куда бежать. Вы в КХ ноль, и КХ у вас нет.
  • @923476123 #198700 03:20 PM, 07 Jan 2021
    и какая практика поддержания прода и теста в одинаковой структуре?
  • https://t.me/clickhouse_ru
    я неправильно выразился может. Проблема не с https://github.com/flyway/flyway/pull/2640 . Там все ОК. Проблема в том что его никогда не вмержат.
  • @923476123 #198702 03:21 PM, 07 Jan 2021
    возможно есть другое решение которое дошло до релиза?
  • @1533747687 #198703 07:43 PM, 07 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @Splinter_Rat #198705 08:56 PM, 07 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @alfiyazi #198706 11:46 PM, 07 Jan 2021
    Joined.
  • 08 January 2021 (106 messages)
  • @globgor #198709 05:36 AM, 08 Jan 2021
    всем привет, кто-нибудь использовал postgresql wire protocol, есть какая нибудь дока?
  • включать так:
    <yandex>
    <postgresql_port>5432</postgresql_port>
    </yandex>

    потом подключаться
  • @globgor #198711 07:44 AM, 08 Jan 2021
    спасибо
  • https://t.me/clickhouse_ru
    @343206394 #198712 08:03 AM, 08 Jan 2021
    Добрый день. Вопрос по обновлению.

    Сейчас прод на 19.16
    Хотим переехать на 20.8.*
    Есть смысл сразу переходить или через 20.3.* безопаснее?
  • 20.3 -> 20.8 требует ручной коррекции ДДЛ (КХ стал нетолерантен к невалидным encodingам и типам)
    а так вроде разницы не много... и так и так больно будет по моему...
  • https://t.me/clickhouse_ru
    @343206394 #198714 08:10 AM, 08 Jan 2021
    ой
  • https://t.me/clickhouse_ru
    @343206394 #198715 08:11 AM, 08 Jan 2021
    "(КХ стал нетолерантен к невалидным encodingам и типам" а где про это почитать подробнее?
  • Из нашего опыта переезда 19 -> 20.3 пришлось править JOIN, 20.3 -> 20.8 сейчас по быстрому попробовали, приложение не завелось, тоже надо смотреть код. Так что да, с пол пинка скорее всего не выйдет
  • https://t.me/clickhouse_ru
    @343206394 #198717 08:33 AM, 08 Jan 2021
    Я понял, спсб. Будем тест мучать
  • @785098385 #198718 09:19 AM, 08 Jan 2021
    Joined.
  • @785098385 #198719 09:29 AM, 08 Jan 2021
    посмотрел видео Зайцева на ютубе "переезжаем на CH: 3 года спустя" . Когда создаю таблицу с materialized columns, получаю ошибку. может, есть идеи, что я делаю не так?

    CREATE TABLE default.transactions4tmp ( id String, transaction String, transaction_time DateTime, metrics Nested( name LowCardinality(String), value String), gateway_mid String MATERIALIZED metrics.value[indexOf(metrics.name, 'gateway_mid')], op_code String MATERIALIZED metrics.value[indexOf(metrics.name, 'op_code')], connector String MATERIALIZED metrics.value[indexOf(metrics.name, 'connector')] ) ENGINE = MergeTree PRIMARY KEY (id) ORDER BY (id) SETTINGS index_granularity = 8192

    DB::Exception: Missing columns: 'metrics.name' 'metrics.value' while processing query: 'CAST(metrics.value[indexOf(metrics.name, 'gateway_mid')] AS gateway_mid_tmp_alter12946552051445946325, 'String') AS gateway_mid, gateway_mid_tmp_alter12946552051445946325, CAST(metrics.value[indexOf(metrics.name, 'op_code')] AS op_code_tmp_alter1294071364216470892, 'String') AS op_code, op_code_tmp_alter1294071364216470892, CAST(metrics.value[indexOf(metrics.name, 'connector')] AS connector_tmp_alter8212060507549675347, 'String') AS connector, connector_tmp_alter8212060507549675347', required columns: 'metrics.value' 'metrics.name', source columns: 'connector' 'op_code' 'metrics' 'transaction_time' 'transaction' 'gateway_mid' 'id': default expression and column type are incompatible. (version 20.12.5.14 (official build))
  • https://t.me/clickhouse_ru
    А при чем тут Зайцев?
  • @785098385 #198721 10:45 AM, 08 Jan 2021
    сам Зайцев не при чем) Я смотрел https://www.youtube.com/watch?v=k5rw8YPTdRo
    Переезжаем на ClickHouse: 3 года спустя / Александр Зайцев (Altinity)

    Приглашаем на Saint HighLoad ++ 2021 20 и 21 сентября 2021, Санкт-Петербург, DESIGN DISTRICT DAA in SPB Программа, билеты и подробности - https://clck.ru/VmKaW -------- При поддержке AvitoTech мы впервые публикуем все видео с HighLoad++ 2019 в открытый доступ. Учитесь, вдохновляйтесь и перенимайте лучшие практики у спикеров, не выходя из дома. -------- Календарь конференций - https://ontico.ru -------- HighLoad++ 2019 Тезисы и презентация: https://www.highload.ru/moscow/2019/abstracts/5992 3 года назад я рассказывал на HighLoad++, как мы перевели мульти-петабайтовую аналитическую систему на ClickHouse. Это была увлекательная "дорога из желтого кирпича", полная неведомых опасностей. ClickHouse тогда напоминал минное поле, найти безопасный путь в котором было непросто. Прошло три года, что изменилось? ... -------- Нашли ошибку в видео? Пишите нам на support@ontico.ru

  • @785098385 #198723 10:46 AM, 08 Jan 2021
    и создать гибридную схему не смог (
  • https://t.me/clickhouse_ru
    @brbrbr #198724 10:48 AM, 08 Jan 2021
    У него там очепятка. Берётся поле типа LowCardinality(String) и пишется во Float64.
  • https://t.me/clickhouse_ru
    @brbrbr #198725 10:49 AM, 08 Jan 2021
    Хотя нет, вру. Не знаю тогда.
  • https://t.me/clickhouse_ru
    @AysaKok #198726 11:03 AM, 08 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru/191887
    https://github.com/ClickHouse/ClickHouse/issues/7677

    не используйте nested, это просто синтактический сахар для нескольких массивов...
    Denny Crane [Vertica DBA at Revjet(NB,Canada)] in ClickHouse не тормозит

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

  • Impossible to alter column type that has skipping index on it (LC(String) to (String)) · Issue #17632 · ClickHouse/ClickHouse

    Issue while upgrading from 20.3.11.97 to 20.8.7.15-2 version. service startup failed due to invalid codec errors. Error: SQL Error [36]: ClickHouse exception, code: 36, host: 127.0.0.1, port: 54669...

  • https://t.me/clickhouse_ru/193641
    https://t.me/clickhouse_ru/196169
    вот вам ещё
    короче стелите заранее
    【D】【J】 in ClickHouse не тормозит

    Добрый день. после обновления с 20.3 на 20.8 КХ не стартует. Received exception from server (version 20.8.7): Code: 36. DB::Exception: Received from localhost:9000. DB::Exception: Codec Gorilla is not applicable for LowCardinality(String) because the data type is not of fixed size. Кто знает как решить? в новую таблицу данные перелить не вариант, слишком много... ещё была такая проблема но она решилось настройкой allow_suspicious_codecs It does not make sense to have codec NONE along with other compression codecs: NONE, ZSTD(1).

  • https://t.me/clickhouse_ru
    @343206394 #198730 12:13 PM, 08 Jan 2021
    Благодарю
  • @788785486 #198731 12:23 PM, 08 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @albertalexandrov #198732 01:09 PM, 08 Jan 2021
    Всем привет и счастливого Нового года!)

    Возможно кто-то сможет подсказать по поводу функции pandas.read_sql.

    Я создал таблицу и заполнил ее:

    create table regions
    (
    date DateTime Default now(),
    region String
    )
    engine = MergeTree()
    PARTITION BY toYYYYMM(date)
    ORDER BY tuple()
    SETTINGS index_granularity = 8192;

    insert into regions (region) values ('Asia'), ('Europe')

    Я бы хотел получить ее содержимое функцией pandas.read_sql. Для этого я пишу следующий код:

    import pandas as pd
    from sqlalchemy import create_engine

    uri = 'clickhouse://default:@localhost/default'
    engine = create_engine(uri)
    query = 'select * from regions'
    pd.read_sql(query, engine)

    В ответ получаю такое:

    Empty DataFrame
    Columns: [2021-01-08 09:24:33, Asia]
    Index: []

    Шляпа.

    При этом, если будет указано
    clickhouse
    +native
    ://default:@localhost/default
    , то ответ будет ожидаемым:

    date region
    0 2021-01-08 09:24:33 Asia
    1 2021-01-08 09:24:33 Europe

    Прошу подсказать, как побороть шляпу
  • @LetsGoFast #198733 01:19 PM, 08 Jan 2021
    Joined.
  • Всем привет. Я тоже воодушевившись этим видео попробовал вроде даже еще проще сделать табличку, и не получается.
  • @LetsGoFast #198735 01:23 PM, 08 Jan 2021
    CREATE TABLE default.test (
    id UInt32,
    qty Array(Array(UInt32)),
    total_qty UInt32 MATERIALIZED sumArray(flatten(qty))
    ) ENGINE = MergeTree PARTITION BY id
    ORDER BY
    id SETTINGS index_granularity = 8192
  • @LetsGoFast #198736 01:23 PM, 08 Jan 2021
    DB::Exception: Aggregate function sumArray(flatten(qty)) is found in wrong place in query: While processing sumArray(flatten(qty)) AS total_qty_tmp_alter185108538576301212:
  • https://t.me/clickhouse_ru
    arraySum, а не sumArray
  • it works fine without the "nested sugar"
    CREATE TABLE default.transactions6nested ( id String, transaction String, transaction_time DateTime DEFAULT now(), metrics.name Array(LowCardinality(String)), metrics.value Array(String), gateway_mid String MATERIALIZED metrics.value[indexOf(metrics.name, 'gateway_mid')], op_code String MATERIALIZED metrics.value[indexOf(metrics.name, 'op_code')], connector String MATERIALIZED metrics.value[indexOf(metrics.name, 'connector')] ) ENGINE = MergeTree PRIMARY KEY id ORDER BY id SETTINGS index_granularity = 8192
    thanks for your attention
  • 👍
  • https://t.me/clickhouse_ru
    @nyoroon #198740 01:28 PM, 08 Jan 2021
    sumArray это sum c комбинатором -Array, считает сумму всех массивов
  • https://t.me/clickhouse_ru
    @nyoroon #198741 01:28 PM, 08 Jan 2021
    arraySum считает сумму каждого массива
  • так для него не нужен flatten? он и так сосчитает общую сумму всех массивов?
  • 【D】【J】 in ClickHouse не тормозит

    https://t.me/clickhouse_ru/191887 https://github.com/ClickHouse/ClickHouse/issues/7677 не используйте nested, это просто синтактический сахар для нескольких массивов...

  • https://t.me/clickhouse_ru
    не, это по нескольким строкам, не по вложенным массивам (агрегатная функция)
  • @LetsGoFast #198745 01:34 PM, 08 Jan 2021
    Не. без него даже не создается
  • @LetsGoFast #198746 01:35 PM, 08 Jan 2021
    Спасибо!!!
  • @vvvjhaq #198747 01:49 PM, 08 Jan 2021
    Привет, есть функции, которые делают число обратным? из 1 делает -1
    или просто умножить на -1 легче?
  • https://t.me/clickhouse_ru
    select negate(44)
  • спасибо)
  • https://t.me/clickhouse_ru
    @studnev #198750 01:58 PM, 08 Jan 2021
    А вот почему так? Есть таблица с ReplicatedMergeTree с ORDER BY по полю pk String. Если делать запрос по всей таблице выполняется за 0.3 сек. Если сделать запрос с WHERE pk IN (… все значения pk ( 5 штук) ) то 7 сек. Результат естественно одинаковый
  • https://t.me/clickhouse_ru
    @studnev #198751 01:59 PM, 08 Jan 2021
    а первом случае <Information> executeQuery: Read 483903165 rows, 922.97 MiB in 0.458724202 sec., 1054889109 rows/sec., 1.96 GiB/sec.
  • https://t.me/clickhouse_ru
    @studnev #198752 02:00 PM, 08 Jan 2021
    во втором <Information> executeQuery: Read 483903165 rows, 31.43 GiB in 11.142873359 sec., 43427143 rows/sec., 2.82 GiB/sec.
  • https://t.me/clickhouse_ru
    @den_crane #198753 02:01 PM, 08 Jan 2021
    >Если делать запрос по всей таблице
    wut?
  • https://t.me/clickhouse_ru
    @studnev #198754 02:02 PM, 08 Jan 2021
    ну типа SELECT tx_date,count() FROM ethereum.transactions_rt
    GROUP BY tx_date ORDER BY count() DESC LIMIT 10;
  • https://t.me/clickhouse_ru
    @studnev #198756 02:10 PM, 08 Jan 2021
    то же самое наблюдается еслди делать запрос WHERE pk < ( some large )
  • https://t.me/clickhouse_ru
    @den_crane #198757 02:13 PM, 08 Jan 2021
    а где супертяжелая колонка pk которую надо прочитать и распаковать в запросе "по всей таблице" ?
  • https://t.me/clickhouse_ru
    @studnev #198758 02:14 PM, 08 Jan 2021
    хз
  • https://t.me/clickhouse_ru
    @studnev #198759 02:15 PM, 08 Jan 2021
    в ней только 5 строк уникальных
  • https://t.me/clickhouse_ru
    @den_crane #198760 02:15 PM, 08 Jan 2021
    ну и вообще ничего не понятно, не складывается. Как запросы могут вернуть одинаковый результат
  • https://t.me/clickhouse_ru
    потому что WHERE всегода true
  • https://t.me/clickhouse_ru
    т.е. PK низкокардинальное поле?
  • https://t.me/clickhouse_ru
    @studnev #198763 02:16 PM, 08 Jan 2021
    да
  • https://t.me/clickhouse_ru
    @studnev #198764 02:16 PM, 08 Jan 2021
    там всего 5
  • https://t.me/clickhouse_ru
    @studnev #198765 02:16 PM, 08 Jan 2021
    и оно жутко тормозит. Я уже продбовал делать INDEX … но с ним не лучше
  • https://t.me/clickhouse_ru
    @studnev #198766 02:17 PM, 08 Jan 2021
    с INDEX даже медленее потому что оно пытается долго что то дропать, а дропать там нечего, а потом снова похоже на fullscan
  • https://t.me/clickhouse_ru
    @den_crane #198767 02:20 PM, 08 Jan 2021
    если там всего 5 значений , почему тогда оно весит столько 922.97 MiB vs 31.43 GiB ?
  • https://t.me/clickhouse_ru
    @den_crane #198768 02:20 PM, 08 Jan 2021
    оно не жмется что-ли?
  • https://t.me/clickhouse_ru
    @den_crane #198769 02:20 PM, 08 Jan 2021
    компрессия выключена?
  • https://t.me/clickhouse_ru
    @studnev #198770 02:20 PM, 08 Jan 2021
    как вывести весь стат по таблице?
  • https://t.me/clickhouse_ru
    @den_crane #198771 02:21 PM, 08 Jan 2021
    стат? что?
  • https://t.me/clickhouse_ru
    @den_crane #198772 02:21 PM, 08 Jan 2021
    select formatReadableSize(sum(column_data_compressed_bytes) as x) size, formatReadableSize(sum(column_bytes_on_disk)), formatReadableSize(sum(column_data_uncompressed_bytes))
    , database,table, column
    from system.parts_columns
    where active = 1 and table like 't11'
    group by database,table, column
    order by x desc
  • https://t.me/clickhouse_ru
    @studnev #198773 02:21 PM, 08 Jan 2021
    ┌─size───────┬─formatReadableSize(sum(column_bytes_on_disk))─┬─formatReadableSize(sum(column_data_uncompressed_bytes))─┬─database─┬─table───────────────────┬─column─────────────────┐
    │ 14.87 GiB │ 14.87 GiB │ 14.81 GiB │ ethereum │ transactions_rt_storage │ tx_hash_bin │
    │ 14.67 GiB │ 14.67 GiB │ 14.81 GiB │ ethereum │ transactions_rt_storage │ block_hash_bin │
    │ 7.52 GiB │ 7.52 GiB │ 9.42 GiB │ ethereum │ transactions_rt_storage │ tx_sender_bin │
    │ 6.24 GiB │ 6.24 GiB │ 9.39 GiB │ ethereum │ transactions_rt_storage │ tx_to_bin │
    │ 3.01 GiB │ 3.01 GiB │ 17.73 GiB │ ethereum │ transactions_rt_storage │ block_path_string │
    │ 2.29 GiB │ 2.29 GiB │ 16.10 GiB │ ethereum │ transactions_rt_storage │ block_path │
    │ 2.22 GiB │ 2.23 GiB │ 3.59 GiB │ ethereum │ transactions_rt_storage │ cumulative_gas_used │
    │ 1.77 GiB │ 1.77 GiB │ 1.80 GiB │ ethereum │ transactions_rt_storage │ tx_time │
    │ 1.76 GiB │ 1.77 GiB │ 3.59 GiB │ ethereum │ transactions_rt_storage │ value │
    │ 1.74 GiB │ 1.74 GiB │ 1.80 GiB │ ethereum │ transactions_rt_storage │ block │
    │ 1.73 GiB │ 1.73 GiB │ 3.59 GiB │ ethereum │ transactions_rt_storage │ tx_nonce │
    │ 1.50 GiB │ 1.50 GiB │ 1.80 GiB │ ethereum │ transactions_rt_storage │ gas_value │
    │ 1.30 GiB │ 1.30 GiB │ 1.80 GiB │ ethereum │ transactions_rt_storage │ tx_index │
    │ 1.24 GiB │ 1.24 GiB │ 1.80 GiB │ ethereum │ transactions_rt_storage │ gas_price │
    │ 1.09 GiB │ 1.09 GiB │ 1.80 GiB │ ethereum │ transactions_rt_storage │ gas_used │
    │ 620.69 MiB │ 622.06 MiB │ 919.06 MiB │ ethereum │ transactions_rt_storage │ tx_date │
    │ 106.75 MiB │ 108.12 MiB │ 1.80 GiB │ ethereum │ transactions_rt_storage │ success │
    │ 62.58 MiB │ 65.32 MiB │ 14.30 GiB │ ethereum │ transactions_rt_storage │ block_path_root │
    │ 60.62 MiB │ 61.99 MiB │ 14.28 GiB │ ethereum │ transactions_rt_storage │ block_path_root_string │
    │ 53.36 MiB │ 54.74 MiB │ 497.55 MiB │ ethereum │ transactions_rt_storage │ tx_creates_bin │
    │ 25.41 MiB │ 26.78 MiB │ 499.96 MiB │ ethereum │ transactions_rt_storage │ error │
  • https://t.me/clickhouse_ru
    @studnev #198774 02:21 PM, 08 Jan 2021
    │ 8.27 MiB │ 9.64 MiB │ 1.80 GiB │ ethereum │ transactions_rt_storage │ currency_id │
    │ 8.27 MiB │ 9.64 MiB │ 1.80 GiB │ ethereum │ transactions_rt_storage │ blockchain_id │
    │ 8.27 MiB │ 9.64 MiB │ 1.80 GiB │ ethereum │ transactions_rt_storage │ gas_currency_id │
    └────────────┴───────────────────────────────────────────────┴─────────────────────────────────────────────────────────┴──────────┴─────────────────────────┴────────────────────────┘
  • https://t.me/clickhouse_ru
    @studnev #198775 02:22 PM, 08 Jan 2021
    block_path_root_string - это PK
  • https://t.me/clickhouse_ru
    @studnev #198776 02:24 PM, 08 Jan 2021
    чего то правда откуда там столько байтов для 5 строк…
  • https://t.me/clickhouse_ru
    т.е. у вас таблица order by (block_path_root_string) ?
  • https://t.me/clickhouse_ru
    @studnev #198778 02:25 PM, 08 Jan 2021
    да
  • https://t.me/clickhouse_ru
    @studnev #198779 02:25 PM, 08 Jan 2021
    ) ENGINE = ReplicatedMergeTree('/clickhouse/all_sharded/tables/ethereum/transactions_rt_storage/{shard}', '{sharded-replica}')
    PARTITION BY toStartOfMonth(tx_date)
    ORDER BY block_path_root_string;
  • https://t.me/clickhouse_ru
    @den_crane #198780 02:25 PM, 08 Jan 2021
    попробуйте LowCardinality(String)
  • https://t.me/clickhouse_ru
    @studnev #198781 02:25 PM, 08 Jan 2021
    сейчас
  • https://t.me/clickhouse_ru
    @den_crane #198782 02:26 PM, 08 Jan 2021
    сколько символов в строке? length(block_path_root_string) ?
  • https://t.me/clickhouse_ru
    @studnev #198783 02:27 PM, 08 Jan 2021
    самая длинная - это 999999,-1,1000000,-1,4000000,-1,4000000,-2
  • https://t.me/clickhouse_ru
    @studnev #198784 02:27 PM, 08 Jan 2021
    то есть строки короткие
  • https://t.me/clickhouse_ru
    @studnev #198785 02:27 PM, 08 Jan 2021
    я еше пробовал использовать сначала array(Int64) вместо строки, с ним одинаковые результаты
  • https://t.me/clickhouse_ru
    пробую
  • https://t.me/clickhouse_ru
    @studnev #198787 02:47 PM, 08 Jan 2021
    а может все дело в том что надо было OPTIMIZE TABLE запустить?
  • https://t.me/clickhouse_ru
    @den_crane #198788 03:08 PM, 08 Jan 2021
    у меня в тесте LC помог и ускорил запрос в 10 раз
  • https://t.me/clickhouse_ru
    да с LC стало лучше, но разница все равно есть в 2 раза
  • https://t.me/clickhouse_ru
    @den_crane #198790 03:11 PM, 08 Jan 2021
    LC(String) Processed 500.00 million rows, 1.50 GB
    String Processed 500.00 million rows, 26.50 GB
  • https://t.me/clickhouse_ru
    @den_crane #198791 03:17 PM, 08 Jan 2021
    ну 300 млн. сравнений строк нельзя сделать бесплатно, тут индексы не могут помочь. КХ все равно делает unboxing LC и 300*5 млн раз сравнивает строки
  • @dj_mixer #198792 03:20 PM, 08 Jan 2021
    кстати тут был недавно один товарищ который хотел применять партишн ключ без сравнений... я все спрашивал зачем... теперь выяснилось, что мне тож надо )))) надо бы фичу (если партишн ключ мин-макс весь покрывается условием - скипать проверки!
  • https://t.me/clickhouse_ru
    @den_crane #198793 03:25 PM, 08 Jan 2021
    в смысле в колонку не ходить и не делать проверку для каждой строки? потому что уже проверено прунингом?
  • аха, если по всем партициям подходит
  • @dj_mixer #198795 03:29 PM, 08 Jan 2021
    разница внезапно есть
  • https://t.me/clickhouse_ru
    @den_crane #198796 03:30 PM, 08 Jan 2021
    ну конечно есть , сейчас даже where 1 не оптимизируется
  • https://t.me/clickhouse_ru
    так clickhouse+native это драйвер https://github.com/mymarilyn/clickhouse-driver
    а просто clickhouse это другой, http драйвер, ну кривой он видимо, зачем он вам?
  • @1418553334 #198799 04:23 PM, 08 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    Issue с такой же проблемой на github: https://github.com/xzkostyan/clickhouse-sqlalchemy/issues/10. Но вообще вам правильно сказали. Используйте clickhouse+native
    SQL queries with pd.read_sql drop first two records · Issue #10 · xzkostyan/clickhouse-sqlalchemy

    For some reason (unknown to me), using pd.read_sql drops the second record and uses the first one as a header. Any idea why is it happening? Here's a sample code used on the Rate example im...

  • @ViacheslavNefedov #198801 04:52 PM, 08 Jan 2021
    господа, а в базе system есть где-то ошибки запросов? если влетели на мемори лимит, то это должно быть видно где-то? вроде в query_log нету
  • https://t.me/clickhouse_ru
    @nyoroon #198802 04:53 PM, 08 Jan 2021
    в квери логе всё
  • https://t.me/clickhouse_ru
    @nyoroon #198803 04:54 PM, 08 Jan 2021
    мб можно в text_log посмотреть (это лог самого КХ), но эта таблица по-умолчанию выключена
  • спасибо. Что-то сразу тормознул
  • @ViacheslavNefedov #198805 05:00 PM, 08 Jan 2021
    select top 100 extract(exception, 'Exception: (.*?):') as _exception, *
    from system.query_log where exception_code = 241
  • @ViacheslavNefedov #198806 05:00 PM, 08 Jan 2021
    сработало
  • https://t.me/clickhouse_ru
    видимо нативный протокол на сервере не открыт. спасибо
  • https://t.me/clickhouse_ru
    древний issue. спасибо
  • @1203179549 #198809 06:13 PM, 08 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @nikitosiusis #198810 09:38 PM, 08 Jan 2021
    а подскажите почему
    select sum(users) summa, case when (retention > 180) then '>180d' ELSE '<180d' END AS ret from default.mau group by summa,ret;
    говорит мне unknown function sum ?
  • https://t.me/clickhouse_ru
    @nikitosiusis #198811 09:38 PM, 08 Jan 2021
    хочу получить две суммы - у кого retention больше 180 и у кого меньше
  • https://t.me/clickhouse_ru
    Ну а как делать GROUP BY по агрегатной функции.
    А почему кстати не воспользоваться sumIf(users,retention > 180) и тд
  • https://t.me/clickhouse_ru
    @nikitosiusis #198813 09:40 PM, 08 Jan 2021
    а саммультииф есть?)
  • https://t.me/clickhouse_ru
    @nikitosiusis #198814 09:44 PM, 08 Jan 2021
    ааа мне просто из group by надо было сумму убрать)
  • https://t.me/clickhouse_ru
    @frct1 ↶ Reply to #198814 #198815 11:50 PM, 08 Jan 2021
    Почему не два вложенных запроса ?
  • https://t.me/clickhouse_ru
    @nikitosiusis #198816 11:51 PM, 08 Jan 2021
    да все я уже смог, я хотел от груп бай чего-то не того:)
  • 09 January 2021 (104 messages)
  • @NormandFR #198817 11:57 AM, 09 Jan 2021
    привет всем почему пишет компрессия NaN?
    inputFloat Float64 CODEC(LZ4HC)
    я создаю таким образом, почему может не отображать табикс?
  • https://t.me/clickhouse_ru
    Потому что деление на 0
  • а понятно, я думал это булев типа
  • https://t.me/clickhouse_ru
    @nyoroon #198821 02:19 PM, 09 Jan 2021
    NaN = Not a Number
  • https://t.me/clickhouse_ru
    табикс показывает (вычисляет) насколько ужато, если в таблице 0 строк, то посчитать невозможно.

    используейте describe

    desc xx
    ┌─name───────┬─type────┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
    │ A │ Int64 │ │ │ │ │ │
    │ inputFloat │ Float64 │ │ │ │ LZ4HC(0) │ │
    └────────────┴─────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘
  • ну да я понял спасибо, я просто думал показывает зжимаемый столбец или нет
  • https://t.me/clickhouse_ru
    tabix вроде не саппортится и сделан еще до того как CODEC появились
  • угу, ну хватает пока его 🙂 спасибо еще раз
  • https://t.me/clickhouse_ru
    После некоторого исследования этой проблемы есть такие экспериментальные выводы:
  • https://t.me/clickhouse_ru
    @studnev #198828 03:39 PM, 09 Jan 2021
    1) если есть поле с низкой кардинальностью то построение индекса по нему тормозит запрос
  • https://t.me/clickhouse_ru
    @studnev #198829 03:39 PM, 09 Jan 2021
    2) array работает медленнее String существенно, и для сравнения и для IN
  • https://t.me/clickhouse_ru
    @studnev #198830 03:39 PM, 09 Jan 2021
    3) соритровка данны очень важна и если вставлялись случайно, то нужен OPTIMIZE
  • https://t.me/clickhouse_ru
    @studnev #198831 03:40 PM, 09 Jan 2021
    4) LowCardinality(String) быстрее чем String в индексе, иногда на порядок
  • https://t.me/clickhouse_ru
    @studnev #198832 03:41 PM, 09 Jan 2021
    в сумме могу сказать что окончательный вариант. таблицы очень слабо отличается от начального , при существенной разнице в скорости запросов
  • https://t.me/clickhouse_ru
    @studnev #198833 03:46 PM, 09 Jan 2021
    Подозреваю @den_crane тут есть что сказать
  • https://t.me/clickhouse_ru
    если данные не отсортированы, то КХ сам сортирует при вставке по ORDER BY
  • https://t.me/clickhouse_ru
    видимо не до конца
  • https://t.me/clickhouse_ru
    @nyoroon #198836 03:47 PM, 09 Jan 2021
    не может быть такого
  • https://t.me/clickhouse_ru
    @nyoroon #198837 03:48 PM, 09 Jan 2021
    OPTIMIZE может пофорсить мерж многих мелких партов в один большой, но кх сам в фоне это делает
  • https://t.me/clickhouse_ru
    @studnev #198838 03:48 PM, 09 Jan 2021
    я уже встречался раньше с поведением когда делаешь таблицу CREATE AS SELECT потом сразу ее начинаешь испольщовать и тормоз
  • https://t.me/clickhouse_ru
    @nyoroon #198839 03:52 PM, 09 Jan 2021
    перед тестовыми запросами сбрасывал page cache?
  • https://t.me/clickhouse_ru
    @studnev #198840 03:52 PM, 09 Jan 2021
    нет
  • https://t.me/clickhouse_ru
    @nyoroon #198841 03:52 PM, 09 Jan 2021
    ну значит просто медленные запросы могли получится из-за того что нужных данных в памяти не было и пошли долгие чтения с диска
  • https://t.me/clickhouse_ru
    @studnev #198842 03:54 PM, 09 Jan 2021
    и так 10 раз? подозрительно чтото
  • https://t.me/clickhouse_ru
    тут видно что с диска больше читает. нужно больше инфы - схема таблицы, сами запросы
  • https://t.me/clickhouse_ru
    @nyoroon #198844 03:54 PM, 09 Jan 2021
    причём разница по объёму прочитанного 30 раз
  • https://t.me/clickhouse_ru
    что на серверах? хдд? ссд/нвме?
  • https://t.me/clickhouse_ru
    nvme
  • https://t.me/clickhouse_ru
    @nyoroon #198847 03:56 PM, 09 Jan 2021
    ну тогда странно, надо смотреть
  • https://t.me/clickhouse_ru
    @studnev #198848 03:57 PM, 09 Jan 2021
    повторить очень легко, сделать таблицу с текстовым полем. и туда записать. одинаковое значение, и сравнить с WHERE string=‘’value’ и без этого.
  • https://t.me/clickhouse_ru
    @nyoroon #198849 03:57 PM, 09 Jan 2021
    а, ну тут просто на сравнении строк тормозит похоже
  • https://t.me/clickhouse_ru
    @nyoroon #198850 03:57 PM, 09 Jan 2021
    потому что надо все эти миллионы строк проверить, это не бесплатно
  • https://t.me/clickhouse_ru
    @studnev #198851 03:57 PM, 09 Jan 2021
    что там проверять они все одинаковые
  • https://t.me/clickhouse_ru
    @nyoroon #198852 03:58 PM, 09 Jan 2021
    а как ты узнаешь что они одинаковые, если не проверишь?
  • https://t.me/clickhouse_ru
    @studnev #198853 03:58 PM, 09 Jan 2021
    и самое печальное я не могу это объяснить clickhouse. причем INDEX делает тольуо хуже
  • https://t.me/clickhouse_ru
    @studnev #198854 03:59 PM, 09 Jan 2021
    у меня возникла фундаментальная проблема - как использовать низкокардинальную фильтрацию запросов. Я общего решения так и. не нашел
  • https://t.me/clickhouse_ru
    @studnev #198855 03:59 PM, 09 Jan 2021
    все они тормозят, даже самый лучший вариант тормозит от 2 до 10 раз
  • https://t.me/clickhouse_ru
    @nyoroon #198856 03:59 PM, 09 Jan 2021
    какие-нибудь ENUM использовать? uint8 всяко проще сравнивать чем string
  • https://t.me/clickhouse_ru
    @studnev #198857 04:01 PM, 09 Jan 2021
    ну вот @den_crane предложил LowCardinality(String) - это в принйипе подошло
  • https://t.me/clickhouse_ru
    @studnev #198858 04:01 PM, 09 Jan 2021
    спасибо ему
  • https://t.me/clickhouse_ru
    @nyoroon #198859 04:02 PM, 09 Jan 2021
    ну это скорее уменьшает количество чтений
  • https://t.me/clickhouse_ru
    @studnev #198860 04:02 PM, 09 Jan 2021
    главное это уменьшает размер колонки
  • https://t.me/clickhouse_ru
    @mmatyushin #198861 04:06 PM, 09 Jan 2021
    /stat@combot
  • https://t.me/clickhouse_ru
    @combot #198862 b o t 04:06 PM, 09 Jan 2021
    Total messages: 198861
  • https://t.me/clickhouse_ru
    @328571802 #198863 04:08 PM, 09 Jan 2021
    Joined.
  • Индекс в кх разреженный, соотвественно одной проверки индекса часто недостаточно. Но конечно можно оптимизировать пропуском проверок на гранулах где и начальная и конечная засечка совпадает (как и с партициями).
  • ... можно пропускать его проверку используя where identity(string)="value", тогда индекс не будет использоваться.
  • https://t.me/clickhouse_ru
    cool! не знал...
  • Вообще в кх проверка коротких строк (хеши) у нас была не сильно хуже проверки цифр... Там все очень эффективно в этом плане
  • https://t.me/clickhouse_ru
    @studnev #198868 05:09 PM, 09 Jan 2021
    я думаю все таки там основная проблема была в объеме чтения с диска
  • https://t.me/clickhouse_ru
    @studnev #198869 05:09 PM, 09 Jan 2021
    надо было несколько гигабайт прочитать и на это уходили иногда секунды
  • Да, ну тогда экономить на спичках в виде проверки индекса смысла нет
  • @kafnevod #198871 05:23 PM, 09 Jan 2021
    Доброго времени суток, коллеги
    Всех с прошедшими и наступающим старым Новым

    Обнаружил, что в Clickhouse добавлена поддержка Posrgres Wire prtocol
    https://altinity.com/blog/new-year-greetings-and-clickhouse-updates?utm_campaign=Newsletter&utm_medium=email&_hsmi=104857590&_hsenc=p2ANqtz--hhNfovO4dE6MqO3AOCcfndDoF8_POtaeJNuzxJ6Z8CygtQRgxUmSQqN6mW-ufussRf4r91hOZJEi30lXRuNsx9HGHmg&utm_content=104856435&utm_source=hs_email
    https://clickhouse.tech/docs/en/whats-new/changelog/#clickhouse-release-v20-5-2-7-stable-2020-07-02
    https://github.com/ClickHouse/ClickHouse/pull/10242

    Вижу что в бинарниках последней версии clickhouse-server поддерживается конфигурационный тег postgresql_port

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

    Может кто просвятит?
    New Year Greetings & ClickHouse Updates | Altinity

    The year 2020 in one word: change. We've changed the way people work, communicate and travel. It taught us to care more about family, friends, and colleagues while highlighting our world's fragility. Altinity and ClickHouse were no different, but fortunately, most of these changes were positive.

  • https://t.me/clickhouse_ru/198710

    В доке и дефолт конфиге пока нет.
    【D】【J】 in ClickHouse не тормозит

    включать так: <yandex> <postgresql_port>5432</postgresql_port> </yandex> потом подключаться

  • @kafnevod #198873 05:29 PM, 09 Jan 2021
    Спасибо
    Как всегда оперативно!
    Попробуем
  • @1424665488 #198875 05:42 PM, 09 Jan 2021
    Joined.
  • ты мне 4к? верно понял
  • https://t.me/clickhouse_ru
    @106936600 #198879 07:22 PM, 09 Jan 2021
    Есть ли существенная разница в SSD/HDD для активной записи в Clickhouse?
  • https://t.me/clickhouse_ru
    @nyoroon #198880 07:24 PM, 09 Jan 2021
    активная запись это сколько мегабайт в секунду?
  • https://t.me/clickhouse_ru
    @nyoroon #198881 07:25 PM, 09 Jan 2021
    SSD лучше всегда, если есть деньги
  • https://t.me/clickhouse_ru
    @106936600 #198882 07:26 PM, 09 Jan 2021
    Думаю около 15-20MBPS в пик
  • https://t.me/clickhouse_ru
    при больших объемах данных на рейдах из хдд (>1TB полезных данных), при выходе диска из строя - умрете на ребилде =)
  • https://t.me/clickhouse_ru
    @106936600 #198884 07:28 PM, 09 Jan 2021
    Смерть данных - не страшно особо
  • https://t.me/clickhouse_ru
    Это сжатых или сырых?
  • https://t.me/clickhouse_ru
    Сырых
  • https://t.me/clickhouse_ru
    @nyoroon #198887 07:29 PM, 09 Jan 2021
    Ну это копейки вообще
  • https://t.me/clickhouse_ru
    @nyoroon #198888 07:29 PM, 09 Jan 2021
    Можно и хдд
  • https://t.me/clickhouse_ru
    @nyoroon #198889 07:29 PM, 09 Jan 2021
    На ssd, правда, приятнее читать будет
  • https://t.me/clickhouse_ru
    можно использовать raid0 и не страдать
  • https://t.me/clickhouse_ru
    ну да, только въезжать диски будут все равно - и это в любом случае будет либо долго, либо влиять на производительность. 🙂
  • https://t.me/clickhouse_ru
    если нестрашно и 20МБ сырых - то смело ставьте хдд и не парьтесь.
  • https://t.me/clickhouse_ru
    @nikitosiusis #198893 07:34 PM, 09 Jan 2021
    так говорите как будто ссд при ребилде не деградируют по скорости)
  • https://t.me/clickhouse_ru
    Нечасто увидишь "raid0" и "не страдать" в одном предложении
  • https://t.me/clickhouse_ru
    потому что не так распространен raid0, соответственно утверждения встречаются редко :)
  • https://t.me/clickhouse_ru
    @ddpechkin #198896 07:37 PM, 09 Jan 2021
    все деградирует, даже нвме 🙂 тут вопрос, скорее, что когда выбирают хдд - обычно думают только о нормальном режиме работы, про условный дегрейд режим и восстановление после него - не думают, а обычно запаса производительности у хдд уже не хватает. и в итоге у всех шок, что "база будет тормозить еще N дней, потому что меняется диск" 🙂
  • @beebeeep #198897 07:38 PM, 09 Jan 2021
    База без реплик = данные не нужны ;)
  • https://t.me/clickhouse_ru
    @JackRussell77 #198898 08:25 PM, 09 Jan 2021
    Joined.
  • "replication is not backup"...
  • @beebeeep #198900 08:33 PM, 09 Jan 2021
    Я и не говорил что бэкап не нужен, впрочем
  • https://t.me/clickhouse_ru
    @JackRussell77 #198901 08:39 PM, 09 Jan 2021
    Разумный ли подход : хочу обсчитывать данные , которые лежат в кластере CH возвращать в CH. Новую порцию лить в свежую таблицу и подменивать партицию в исходной. Планирую использовать Apache Spark для расчетов . * нет никаких идей как это лучше приготовить?)
  • Делали так раньше. Запускали на airflow pyspark. В clickhouse можно использовать ReplacingMergeTree если подходит
  • https://t.me/clickhouse_ru
    @zidman #198903 09:22 PM, 09 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @Ahton #198904 09:23 PM, 09 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    да ладно. Годами все работает на hdd

    df -h /
    Filesystem Size Used Avail Use% Mounted on
    /dev/md0 46T 38T 7.8T 83% /
  • https://t.me/clickhouse_ru
    Умрете - я не про потерю данных, а про сам синк и перформанс. У меня у самого примерно такие же цифры, достаточно интенсивный регулярный поток без пиков и поэтому замена дисков затягивается :)
  • https://t.me/clickhouse_ru
    да постоянно меняем. И скрабинг раз в месяц.
  • https://t.me/clickhouse_ru
    Очень хорошо :) мы тоже меняем регулярно. И тоже живём в основном на хдд
  • https://t.me/clickhouse_ru
    @den_crane #198909 10:22 PM, 09 Jan 2021
    и нормально ребилдятся 10TB-ые диски
  • https://t.me/clickhouse_ru
    @den_crane #198910 10:22 PM, 09 Jan 2021
    mdraid конечно рулит
  • https://t.me/clickhouse_ru
    @den_crane #198911 10:22 PM, 09 Jan 2021
    железные рейды в топку
  • https://t.me/clickhouse_ru
    @ddpechkin #198912 10:22 PM, 09 Jan 2021
    Да железные рейды, кажется, только виндовым юзерам уже и нужны :)
  • https://t.me/clickhouse_ru
    @den_crane #198913 10:24 PM, 09 Jan 2021
    про raid0, а еще смешно, но у меня вертика работает на raid1 из 2-х nvme. И что самое смешное уже несколько раз спасало.
  • https://t.me/clickhouse_ru
    Но под свой кейс я бы при возможности выкинул хдд шки и взял бы нвме сервера с репликой на уровне БД и забил бы на репликацию данных на уровне сервера :)
  • https://t.me/clickhouse_ru
    @ddpechkin #198915 10:25 PM, 09 Jan 2021
    Сдох нвме - перенакатил данные на всем сервере
  • https://t.me/clickhouse_ru
    @den_crane #198916 10:25 PM, 09 Jan 2021
    я тоже сразу перейду на NVME когда выйдут 100ТБ NVME ценой по 100баксов
  • https://t.me/clickhouse_ru
    нет, это про память. Там колонка 62 MB размером на диске.
  • https://t.me/clickhouse_ru
    @IgorRekun #198918 10:29 PM, 09 Jan 2021
    А какие кстати могут быть подводные камни при раскатке под докер свормом?
  • https://t.me/clickhouse_ru
    Когда это случится, в сервера потребуется уже что-то новое, стоящее как подходящие nmve нынче
  • https://t.me/clickhouse_ru
    эм, какая разница чем?
    ну имена хостов в докере рандомные, но это к сварму не относится.
  • https://t.me/clickhouse_ru
    @den_crane #198921 10:34 PM, 09 Jan 2021
    а кто вообще свармом пользуется? его уже все похоронили
  • https://t.me/clickhouse_ru
    нету. Если сделать 10й рейд из 10ти HDD , будет примерно как NVME, у меня КХ читает и пишет 1.5GB/s на HDD
  • https://t.me/clickhouse_ru
    По феншую только кубером раскатывать?

    Или кликхаус лучше вообще без прослоек руками настраивать?
  • https://t.me/clickhouse_ru
    да как хотите, у меня chef и LXC
    а так конечно, кубер это новый линукс
  • https://t.me/clickhouse_ru
    @Nyrym #198925 10:49 PM, 09 Jan 2021
    Joined.
  • 10 January 2021 (60 messages)
  • https://t.me/clickhouse_ru
    Кубер это supervisord на стероидах
  • https://t.me/clickhouse_ru
    @vdimir #198928 09:02 AM, 10 Jan 2021
    Joined.
  • Для небольших проектов решение swarm имеет очевидные преимущества перед k8
    Это, кстати, признают и гуру kubernetes
    Так что, не знаю у кого как, у нас swarm живее всех живых
  • https://t.me/clickhouse_ru
    ну смотря что считать небольшим проектом
    и смотря где это все развертывать

    скажем AWS EKS vs bare metal docker swarm, я бы выбрал первый вариант =)
  • https://t.me/clickhouse_ru
    @nikitosiusis #198931 11:59 AM, 10 Jan 2021
    хорошо так говорить, когда деньги инвестора
  • https://t.me/clickhouse_ru
    нет, я для себя считал именно с точки зрения того что EKS это наиболее универсальный способ чтобы и autoscaling был
    и EBS через PVC подключать... и эксплуатация была дешевле с точки зрения специалиста...

    но потом servers.ru выкатил свои managed kubernetes и я решил не лезть в облака
  • @nahsi_at_tg #198933 12:14 PM, 10 Jan 2021
    зачем вам swarm когда есть nomad?
  • https://t.me/clickhouse_ru
    Простой как три рубля по сравнению с кубером но за номад спасибо, выглядит интересно
  • Вот и номад простой как три рубля, причем фичастый и не deprecated
  • @RedHat01 #198936 03:05 PM, 10 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @MakeReady #198937 03:29 PM, 10 Jan 2021
    почему пользователь default может перестать видеть записи в своей же таблице? Другой пользователь, которому дан грант с ограничениями записи видит.
  • https://t.me/clickhouse_ru
    @den_crane #198938 03:32 PM, 10 Jan 2021
    в КХ нету своих таблиц.
    Кажется когда назначаются row-based policy одному пользователю, все остальные пользователи перестают видеть все, у них становится все запрещено
  • https://t.me/clickhouse_ru
    @MakeReady #198939 03:33 PM, 10 Jan 2021
    в смысле default.table
  • https://t.me/clickhouse_ru
    @MakeReady #198940 03:33 PM, 10 Jan 2021
    да, похоже на это
  • https://t.me/clickhouse_ru
    @MakeReady #198941 03:34 PM, 10 Jan 2021
    как это починить?
  • https://t.me/clickhouse_ru
    выдать права на все строки
  • https://t.me/clickhouse_ru
    @MakeReady #198943 03:35 PM, 10 Jan 2021
    дефолту?
  • https://t.me/clickhouse_ru
    default база никак не связана с default юзером. Это однофамильцы, не родственники
  • https://t.me/clickhouse_ru
    @den_crane #198945 03:36 PM, 10 Jan 2021
    default не владелец таблиц
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    @MakeReady #198947 03:39 PM, 10 Jan 2021
    FOR SELECT
    USING 1 ?
  • https://t.me/clickhouse_ru
    @MakeReady #198948 03:42 PM, 10 Jan 2021
    странная система
  • https://t.me/clickhouse_ru
    @1236463047 #198949 04:58 PM, 10 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @den_crane #198950 05:02 PM, 10 Jan 2021
    Права складываются. Если сложить все можно читать всем с Васе можно читать чётное, получается Васе можно читать все.
  • https://t.me/clickhouse_ru
    @1236463047 #198951 05:05 PM, 10 Jan 2021
    Парни, привет, подскажите плиз, ситуация мне непонятная - сервер убунту с апдейченным КХ. Неделю назад запускал мутации на апдейт и какая-то подвисла. Полное ощущение - что работает до сих пор и апдейтит все что падает в таблицу. или просто хз что. Причем в show processlist ничего нет. Но сервер трудится. В каталоге data постоянно мелькает создание-удаление папок tmp_mut_...
    select * from system.mutations Limit 10 - тупо виснет
    Как бы остановить невидимое?
  • https://t.me/clickhouse_ru
    @1236463047 #198952 05:07 PM, 10 Jan 2021
    Попробовал KILL MUTATION WHERE database =XXX тоже подвисает наглухо
  • https://t.me/clickhouse_ru
    @1236463047 #198953 05:07 PM, 10 Jan 2021
    рестарт КХ, ребут сервера - не помогают
  • https://t.me/clickhouse_ru
    @1236463047 #198954 05:08 PM, 10 Jan 2021
    Если не в ту группу пишу, подправьте плиз
  • https://t.me/clickhouse_ru
    кстати не все, вставлять строки могут
  • https://t.me/clickhouse_ru
    1. replicated таблица?
    2. версия КХ
  • https://t.me/clickhouse_ru
    я же написал: читать
  • https://t.me/clickhouse_ru
    @MakeReady #198958 05:22 PM, 10 Jan 2021
    :))
  • https://t.me/clickhouse_ru
    @1236463047 #198959 05:22 PM, 10 Jan 2021
    нет, один сервер, одна таблица все просто. Версия... счас поищу - но сегодня запускал apt-get update & apt-get upgrade
  • https://t.me/clickhouse_ru
    @1236463047 #198960 05:22 PM, 10 Jan 2021
    таблица summarymergetree
  • https://t.me/clickhouse_ru
    @den_crane #198961 05:22 PM, 10 Jan 2021
    я не понимаю в чем удивление такой реализации lable security. оно везде такое
  • https://t.me/clickhouse_ru
    в каталоге таблицы есть файлик /daat/db/таблицы/mutations.txt его можно отредактировать или удалить
    после этого detach/atach или ребут
  • https://t.me/clickhouse_ru
    @1236463047 #198963 05:24 PM, 10 Jan 2021
    да, много их там
  • https://t.me/clickhouse_ru
    @1236463047 #198964 05:24 PM, 10 Jan 2021
    Если руками удалить эти txt - сервак не сдохнет?
  • https://t.me/clickhouse_ru
    select version()
  • https://t.me/clickhouse_ru
    @1236463047 #198966 05:24 PM, 10 Jan 2021
    20.12.5.14
  • https://t.me/clickhouse_ru
    @1236463047 #198967 05:25 PM, 10 Jan 2021
    каких только команд нет ))
  • https://t.me/clickhouse_ru
    вы издеваетесь?
  • https://t.me/clickhouse_ru
    @den_crane #198969 05:25 PM, 10 Jan 2021
    я написал: его можно отредактировать или удалить
  • https://t.me/clickhouse_ru
    @den_crane #198970 05:25 PM, 10 Jan 2021
    можно как-то по другому это прочитать?
  • https://t.me/clickhouse_ru
    @1236463047 #198971 05:26 PM, 10 Jan 2021
    не сердитесь, сори
  • https://t.me/clickhouse_ru
    @1236463047 #198972 05:36 PM, 10 Jan 2021
    да, походу остановилось. Теперь tmp_mut не мелькают
  • https://t.me/clickhouse_ru
    @1236463047 #198973 05:36 PM, 10 Jan 2021
    спасибо
  • https://t.me/clickhouse_ru
    @1236463047 #198974 05:37 PM, 10 Jan 2021
    но
    select * from system.mutations limit 1;
    все равно подвисает
  • https://t.me/clickhouse_ru
    @den_crane #198975 05:38 PM, 10 Jan 2021
    так а второй шаг был? detach/atach или ребут
  • https://t.me/clickhouse_ru
    @1236463047 #198976 05:38 PM, 10 Jan 2021
    service restart
  • https://t.me/clickhouse_ru
    @den_crane #198977 05:41 PM, 10 Jan 2021
    значит еще есть файлы mutations.txt , в других таблицах
  • https://t.me/clickhouse_ru
    @1236463047 #198978 05:52 PM, 10 Jan 2021
    прошел поудалял. ПРосто стремно так ходить руками по базе... БАкап бакапом, но...
    ДА, теперь все гуд
  • https://t.me/clickhouse_ru
    @1236463047 #198979 05:52 PM, 10 Jan 2021
    Спасибо огромное
  • https://t.me/clickhouse_ru
    @1236463047 #198980 06:22 PM, 10 Jan 2021
    А так, на будущее - есть ли какой аналог show processlist? а то в этой ситуации была не очевидна проблема
  • https://t.me/clickhouse_ru
    system.processes табличка
  • https://t.me/clickhouse_ru
    мутации видно в system.merges, а не в system.processes
  • https://t.me/clickhouse_ru
    @1236463047 #198983 06:37 PM, 10 Jan 2021
    Спасибо )
  • https://t.me/clickhouse_ru
    @324059230 #198984 07:34 PM, 10 Jan 2021
    Joined.
  • @winlawer #198985 07:40 PM, 10 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @topigy #198986 09:28 PM, 10 Jan 2021
    Joined.
  • 11 January 2021 (131 messages)
  • @GrouthHacker #198987 06:31 AM, 11 Jan 2021
    Подскажите, может есть возможность при инсерте данных через HTTP клиент автоматически вставлять информацию о том с какого IP был запрос на инсерт?

    Т.е. добавить в таблицу что-то типа
    remoteServer IPv6 DEFAULT адрес_с_которого_пришел_инсерт ?

    p.s. этот IP есть в системных логах initial_address from system.query_log
    вопрос как получить её при инсерте в другой таблице
  • @beebeeep #198988 06:47 AM, 11 Jan 2021
    Первое что приходит в голову - поставить перед кх нгинкс и в нем переписать запрос
  • @beebeeep #198989 06:48 AM, 11 Jan 2021
    Но, конечно, непонятно насколько это будет эффективно
  • @GrouthHacker #198990 07:10 AM, 11 Jan 2021
    Переписать запрос можно и на стороне серверовс которых идет инсерт..., но хочется решить этот момент именно силами кликхауса.
  • @Dmitrii_Sulimchuk #198991 07:16 AM, 11 Jan 2021
    всем привет. можете подсказать в чем может быть проблема?
    SELECT count() FROM reports.table AS sd WHERE (sd.month = 12) AND (sd.year = 2020) - возвращает больше 2х мрлд
    делаю
    insert into xxx SELECT * FROM reports.table AS sd WHERE (sd.month = 12) AND (sd.year = 2020)

    вставляет каждый раз разное количество, но не больше 1.7 млрд
    в логах ничего ошибок нет
    ClickHouse server version 20.12.5 revision 54442.
  • Похожая задача.
  • https://t.me/clickhouse_ru
    Тоже замечал - когда копировал за месяц в друг табл. В итоге пришлось копировать по дням. Тогда 1-в-1. Большой объем почему-то глючил
  • https://t.me/clickhouse_ru
    @m_connected #198994 07:56 AM, 11 Jan 2021
  • https://t.me/clickhouse_ru
    а нет способа копировать данные через партиции ? 🧐
  • https://t.me/clickhouse_ru
    @AndreyMiroshnikov #198996 08:38 AM, 11 Jan 2021
    Joined.
  • нет к сожалению. буду пока частями переносить.
  • https://t.me/clickhouse_ru
    @MakeReady #198998 09:29 AM, 11 Jan 2021
    как перенести одну таблицу из базы в базу? Простое копирование ее дирректории в /var/lib/clickhouse/data/default не работает
  • https://t.me/clickhouse_ru
    Бекап и восстановление в Clickhouse

    Как сделать бекап и восстановить данные в Clickhouse

  • https://t.me/clickhouse_ru
    @1236463047 #199000 09:33 AM, 11 Jan 2021
    только фриз и аттач не партиций а сразу таблицы
  • https://t.me/clickhouse_ru
    @MakeReady #199001 09:33 AM, 11 Jan 2021
    не, особо большую
  • https://t.me/clickhouse_ru
    @MakeReady #199002 09:34 AM, 11 Jan 2021
    может попробовать просто папку и метаданные?
  • https://t.me/clickhouse_ru
    @floxard #199003 09:35 AM, 11 Jan 2021
    мы тащим кусками, не всё сразу
    добавляем ещё шард, переключаем в него запись
    потом по одной партиции freeze, tar+nc, detach на src, attach на dst
  • https://t.me/clickhouse_ru
    @MakeReady #199004 09:37 AM, 11 Jan 2021
    👍
  • можно так, а дальше словарем.
    drop table if exists default.testDefaultInsert ;
    create table default.testDefaultInsert (A String CODEC(NONE), host String DEFAULT hostName(), fqdn String DEFAULT FQDN()) Engine=MergeTree order by tuple();
    insert into default.testDefaultInsert (A) values ('test record');
    select * from default.testDefaultInsert ;
  • https://t.me/clickhouse_ru
    @MakeReady #199006 09:47 AM, 11 Jan 2021
    Всем спасибо! Для небольшой таблицы простой перенос ее директории и файла из метаданных работает. Нужно только владельца менять, который теряется при переносе рсинком
  • https://t.me/clickhouse_ru
    @bralbral #199007 10:01 AM, 11 Jan 2021
    Добрый день. Есть БД с атомик engine. Дропаю партицию из таблицы. Место не увеличивается . Кликхаус в докере.

    https://github.com/ClickHouse/ClickHouse/issues/18123 почитав, понял, что вроде так и должно быть.
    What's the difference between Atomic and Ordinary database engine · Issue #18123 · ClickHouse/ClickHouse

    I've searched the official doc and hasn't found anything about this.

  • он вроде ждет пока все запросы не кончатся + таймаут... или он у вас даже через день место жрёт? если так - то наверно баг, лучше завести тикет
  • https://t.me/clickhouse_ru
    Насчёт дня не знаю , но пару часов уже точно. Возможно нужно перезагрузить контейнер. меня смущает, что с ординари можно было смело зайти на расширенные папки на хост. При атомике в папке с базой при ls -l уже нельзя пощупать файлы, а присутствуют ссылки на папки внутри контейнера.
  • https://t.me/clickhouse_ru
    @critskiy #199010 10:25 AM, 11 Jan 2021
    Здравствуйте, а вы не можете подсказать когда будет обновлена документация CH насчет движков? А то начиная с версии 20.10 по дефолту введен для баз Atomic движок и как бе в доках че-т упоминания не найду кроме как комментариев в altinity blog и issues гита, а хотелось бы более подробнее информацию (или я слепой)
  • https://t.me/clickhouse_ru
    @ivan_pilin #199011 10:45 AM, 11 Jan 2021
    Joined.
  • ну так зайдите в шелл контейнера и делайте что хотите..
  • @372234777 #199013 11:31 AM, 11 Jan 2021
    Добрый день, открыл 2 сессии работы в clickhouse, в одной запустил "insert into <table>", в другой (пока insert работал) - "truncate table <table>". Это привело к отказу работы clickhouse (невозможно соединиться через клиент (code 210 connection refused)). Перезапуск сервиса не помог, пришлось переустанавливать. Было у кого-нибудь такое?
  • https://t.me/clickhouse_ru
    а до переустановки в /var/log/clickhouse-server/clickhouse-server.err.log что показывало?
  • не заглядывал туда. Но сам сервис при перезапуске ошибок не выдавал. Я думал (судя по ошибке клиента), с конфигами проблема, но они не менялись. После переустановки с такими же конфигами всё завелось.
  • https://t.me/clickhouse_ru
    ошибка клиента показывает только что разрыв соединения и ничего больше

    процесс ps auxf | grep clickhouse-server при этом что покаывал?
    и в логи надо было посмотреть

    после переустановки с теми же конфигами той же версией clickhouse-server?
    или поновее?

    и после этого INSERT INTO + TRUNCATE в другом клиенте не валятся уже?
  • https://t.me/clickhouse_ru
    @frolovigoru #199017 11:56 AM, 11 Jan 2021
    Всем добрый день) вопрос по DISTINCT

    в документации сказано следующее

    DISTINCT не поддерживается, если SELECT имеет по крайней мере один столбец-массив.
    http://clickhouse.tech/docs/ru/sql-reference/statements/select/distinct/#limitations

    Это значит что distinct вообще не применяется? или применяется каким-то неизвестным способом?
    просто заметили что он то работает, то вообще добавляет какие то дубли.
    Версия клика ClickHouse server version 19.16.10 revision 54427
    DISTINCT | Документация ClickHouse

    Секция DISTINCT Если указан SELECT DISTINCT, то в результате запроса останутся только уникальные строки. Таким образом,

  • ps показывал работающий процесс. Версия та же 20.12.5. Опыт этот пока не повторял. На всякий случай уточню, что запросы были из 2х клиентов (clickhouse-client и clickhouse_driver из python).
  • https://t.me/clickhouse_ru
    ну, тогда надо смотреть в логи и попробовать повторить ... если воспроизведется, то делать issue на github
    просто потому что как минимум TRUNCATE либо должен был окончания INSERT Ждать либо INSERT должен был отвалиться

    какой движок у таблицы?
  • MergeTree()
  • https://t.me/clickhouse_ru
    похоже что документация в этом месте устарела, но скорее всего DISTINCT просто не применяется для 19.16

    для 20.8-lts
    CREATE TABLE default.test (a Array(UInt64)) ENGINE MergeTree() ORDER BY a;

    INSERT INTO default.test VALUES ([1,2,3]),([1,2,3]), ([3,2,1]);
    SELECT DISTINCt a FROM default.test;
    SELECT a FROM default.test;

    DROP TABLE default.test;
    выдает

    a
    [1,2,3]
    [3,2,1]

    и
    a
    [1,2,3]
    [1,2,3]
    [3,2,1]

    соответсвенно
  • https://t.me/clickhouse_ru
    на 19.16 тоже работает такой скрипт
    да и на большой таблице работало, а сейчас вылезли дубли, нашли вот эту фразу в документации
  • https://t.me/clickhouse_ru
    @VladAleshin #199023 12:51 PM, 11 Jan 2021
    Всем привет! Пытаюсь проверить на дубли таблицу с количеством строк > 1 млрд.
    select
    uniqExact(id)
    , count(*)
    from
    vc_games_history_archive
    получаю ошибку "Memory limit (for query) exceeded"
    Пробовал с параметром set max_threads=1 - результат тот же. Есть какие-либо варианты выполнить этот запрос?
  • https://t.me/clickhouse_ru
    лучше использовать через GROUP BY id

    в таком случае можно и на диске делать его
  • https://t.me/clickhouse_ru
    в английской версии документации это тоже присутсвует
    задайте вопрос на github
  • https://t.me/clickhouse_ru
    с group by таже самая ошибка
  • https://t.me/clickhouse_ru
    GROUP BY | ClickHouse Documentation

    GROUP BY Clause GROUP BY clause switches the SELECT query into an aggregation mode, which works as follows: GROUP BY cla

  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    read_backoff_min_latency_ms=0
  • https://t.me/clickhouse_ru
    Это исправлено 4 года назад. Забыли из доки убрать.
  • https://t.me/clickhouse_ru
    то есть если у меня появились дубли после дистинкта - проблема в чем то другом?
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
    @floxard #199035 01:12 PM, 11 Jan 2021
    @den_crane можно вопрос не за кх?
  • https://t.me/clickhouse_ru
    Да, главное не спамить в чате рекламой
  • https://t.me/clickhouse_ru
    @floxard #199037 01:14 PM, 11 Jan 2021
    лучшее OLTP key-value под реалтайм апдейты? не in-memory
  • https://t.me/clickhouse_ru
    @floxard #199038 01:17 PM, 11 Jan 2021
    даже не совсем апдейты
    скорее что то вроде "вставить, если уже есть такой ключ то обновить"
  • https://t.me/clickhouse_ru
    @pronvis #199039 01:27 PM, 11 Jan 2021
    вопрос - откуда CH берёт хост который записывает в зукипер для репликации?
  • https://t.me/clickhouse_ru
    @pronvis #199040 01:29 PM, 11 Jan 2021
    вот по этому пути /clickhouse/tables/{shard}/{db_name}/{table_name}/replicas/{replica}/host
  • https://t.me/clickhouse_ru
    @pronvis #199041 01:30 PM, 11 Jan 2021
    у меня туда попало значение, которое не резолвится с других тачек
  • https://t.me/clickhouse_ru
    @pronvis #199042 01:30 PM, 11 Jan 2021
    хочется понять откуда оно взялось, это hostname -f?
  • https://t.me/clickhouse_ru
    @pronvis #199043 01:32 PM, 11 Jan 2021
    и если я его починил, то можно ли попросить CH обновить это значение в zookeeper’e или ручками только?
  • https://t.me/clickhouse_ru
    устанавливается при загрузке КХ
    берется из hostname -f , если не задана настройка interserver_http_host

    /etc/clickhouse-server/config.xml

    <!-- Hostname that is used by other replicas to request this server.
    If not specified, than it is determined analogous to 'hostname -f' command.
    This setting could be used to switch replication to another network interface.
    -->
    <!--
    <interserver_http_host>example.yandex.ru</interserver_http_host>
    -->
  • https://t.me/clickhouse_ru
    @pronvis #199045 01:38 PM, 11 Jan 2021
    супер, спасибо!
  • https://t.me/clickhouse_ru
    @pronvis #199046 01:38 PM, 11 Jan 2021
    hostname -f починили
  • https://t.me/clickhouse_ru
    @pronvis #199047 01:39 PM, 11 Jan 2021
    теперь ручками в зукипере менять или можно как-то попросить это сделать CH?
  • https://t.me/clickhouse_ru
    rocksDB ?
    badger ? https://dgraph.io/blog/post/badger/

    или нужно distributed? cassandra?
  • https://t.me/clickhouse_ru
    badger судя по описанию то что я хотел, спасибо
  • https://t.me/clickhouse_ru
    @den_crane #199050 01:48 PM, 11 Jan 2021
    кстати кто не в курсе rocksDB встроен в КХ и можно создавать таблицы с движком Engine=EmbeddedRocksDB
  • https://t.me/clickhouse_ru
    @nikitosiusis #199051 01:48 PM, 11 Jan 2021
    а параметры движку всякие как передать?
  • https://t.me/clickhouse_ru
    @den_crane #199052 01:49 PM, 11 Jan 2021
    CREATE TABLE test (key String, value UInt32) Engine=EmbeddedRocksDB PRIMARY KEY(key);
  • https://t.me/clickhouse_ru
    @den_crane #199053 01:51 PM, 11 Jan 2021
    update там через insert-ы можно делать, про delete не знаю
  • https://t.me/clickhouse_ru
    @vmanyushin #199054 01:54 PM, 11 Jan 2021
    сделал ALTER на колонке, сменил тип с UInt32 -> Int64, теперь при запросе получаю ошибку: “Type mismatch for column color. Column has type Int64, got type UInt32.” почему так? и как исправить?
  • https://t.me/clickhouse_ru
    @nikitosiusis #199055 01:54 PM, 11 Jan 2021
    не, я про многочисленные опции при старте движка. конфиг его то бишь
  • https://t.me/clickhouse_ru
    пока никак
  • https://t.me/clickhouse_ru
    alter вернул управление? закончился?

    что в system.mutations ?
  • https://t.me/clickhouse_ru
    @vmanyushin #199059 01:58 PM, 11 Jan 2021
    отвалился по таймауту с сообщением что продолжит работу асинхронно
  • https://t.me/clickhouse_ru
    @vmanyushin #199060 01:59 PM, 11 Jan 2021
    в system.mutations этого запроса нет
  • https://t.me/clickhouse_ru
    @vmanyushin #199061 02:00 PM, 11 Jan 2021
    describe на таблице показывает что колонка имеет тип Int64
  • https://t.me/clickhouse_ru
    версия КХ ?
  • https://t.me/clickhouse_ru
    @vmanyushin #199063 02:00 PM, 11 Jan 2021
    19.13
  • https://t.me/clickhouse_ru
    почему бы было не написать об этом в первом сообщении?
  • https://t.me/clickhouse_ru
    значит идет ваш alter, не закончился еще

    вот так можно мониторить

    select type, count() from system.parts_columns where acitve and table = column = group by type
  • https://t.me/clickhouse_ru
    @den_crane #199066 02:03 PM, 11 Jan 2021
    часть партом уже будет UInt64, часть UInt32
  • https://t.me/clickhouse_ru
    @vmanyushin #199067 02:04 PM, 11 Jan 2021
    в итоге все части должны стать Int64 я так понимаю?
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    @vmanyushin #199069 02:06 PM, 11 Jan 2021
    ясно, спасибо за информацию
  • @vvvjhaq #199070 02:51 PM, 11 Jan 2021
    Всем привет, можно ли объединить insert into select +insert values?
  • https://t.me/clickhouse_ru
    @1236463047 #199071 03:00 PM, 11 Jan 2021
    Приветсвую, тоже вопрос - сервер с озу 60 гиг, база около 10-ти. КХ не использует больше 3-х. В конфиге не стоит ограничения - все как было из коробки. Вся большая память не тронутая ничем простаивает. КХ последний 20.12, Убунта
  • https://t.me/clickhouse_ru
    память не простаивает, в ней хранится файловый кеш ОС
  • https://t.me/clickhouse_ru
    @1236463047 #199073 03:01 PM, 11 Jan 2021
    ну htop показывает - занято 3 гига и все
  • https://t.me/clickhouse_ru
    @nyoroon #199074 03:01 PM, 11 Jan 2021
    ну правильно, остальное в cached
  • https://t.me/clickhouse_ru
    @nyoroon #199075 03:01 PM, 11 Jan 2021
    free в консоли запусти
  • https://t.me/clickhouse_ru
    @almorgv #199076 03:02 PM, 11 Jan 2021
    Не понимаю, какой юзкейс у ReplacingMergeTree, который схлопывает по ключу сортировки. Почему не по первичному ключу? Вот, например, мне кажется самый распространенный пример. Таймсайрес данные, которые надо всегда выбирать отсортированными по времени. Поэтому делаем ключ сортировки таймстамп. Но иногда я хочу заменять старые данные, новыми по первичному ключу, например по хосту, в рамках одной партиции типа за месяц. Но движок этого не позволяет. Как быть?
  • https://t.me/clickhouse_ru
    union
  • https://t.me/clickhouse_ru
    @1236463047 #199078 03:02 PM, 11 Jan 2021
    запустил - 3 зянято, 56 свободно
  • https://t.me/clickhouse_ru
    @1236463047 #199079 03:03 PM, 11 Jan 2021
    2 гига буф-кеш
  • https://t.me/clickhouse_ru
    free или available ?
  • https://t.me/clickhouse_ru
    @1236463047 #199081 03:04 PM, 11 Jan 2021
    total used free shared buff/cache available
    Mem: 61852364 3026548 56582084 102584 2243732 58086184
  • https://t.me/clickhouse_ru
    free -h

    -h -human
  • https://t.me/clickhouse_ru
    @1236463047 #199083 03:04 PM, 11 Jan 2021
    total used free shared buff/cache available
    Mem: 58G 1.1G 55G 100M 2.6G 57G
    Swap: 0B 0B 0B
  • https://t.me/clickhouse_ru
    @1236463047 #199084 03:05 PM, 11 Jan 2021
    сдвиг на 1 позицию
  • https://t.me/clickhouse_ru
    @1236463047 #199085 03:05 PM, 11 Jan 2021
    ......................total used free shared buff/cache available
    Mem: 58G 1.1G 55G 100M 2.6G 57G
    Swap: 0B 0B 0B
  • https://t.me/clickhouse_ru
    три бектика `

    total used free shared buff/cache available
    Mem: 125Gi 14Gi 8.3Gi 58Mi 102Gi 109Gi
    Swap: 0B 0B 0B
  • https://t.me/clickhouse_ru
    @den_crane #199087 03:06 PM, 11 Jan 2021
    total used free shared buff/cache available
    Mem: 125Gi 14Gi 8.3Gi 58Mi 102Gi 109Gi
    Swap: 0B 0B 0B
  • https://t.me/clickhouse_ru
    @den_crane #199088 03:06 PM, 11 Jan 2021
    дерьмо телеграм
  • https://t.me/clickhouse_ru
    @1236463047 #199089 03:06 PM, 11 Jan 2021
    ))
  • https://t.me/clickhouse_ru
    @den_crane #199090 03:06 PM, 11 Jan 2021
    пора переходить куда-то
  • https://t.me/clickhouse_ru
    @1236463047 #199091 03:07 PM, 11 Jan 2021
    ну что есть
  • https://t.me/clickhouse_ru
    @den_crane #199092 03:07 PM, 11 Jan 2021
    пойду гитхаб почитаю
  • https://t.me/clickhouse_ru
    а я хочу Анжелину Джоли из 1998 года.
  • https://t.me/clickhouse_ru
    @1236463047 #199094 03:08 PM, 11 Jan 2021
    я к чему - нет ли какого лимита, а то я может душу КХ сам того не зная
  • https://t.me/clickhouse_ru
    дефолты адекватные, не напрягайтесь
  • @dj_mixer #199096 03:08 PM, 11 Jan 2021
    часто видим такое, кто может подсказать кроме места на диске, что ещё используется для подсчёта current maximum?
    Not executing log entry MERGE_PARTS for part 20210111-14_396_408_2 because source parts size (23.35 MiB) is greater than the current maximum (4.45 MiB).
  • https://t.me/clickhouse_ru
    @beglaryanartur #199097 03:08 PM, 11 Jan 2021
    Добрый вечер. Делается вставка в Distributed таблицу, которая смотрит на MergeTree в другом ДЦ. Сеть в какой то момент между ДЦ потерялась, сейчас всё вернулось. Но данные не отправляются. Ошибка Code: 209, e.displayText() = DB::NetException: Timeout exceeded while reading from socket (10.19.0.197:9000): while receiving packet from 10.19.0.197:9000, Stack trace:. есть ещё одна такая же таблица, которая нормально отправляет в другой ДЦ. Рестарт делал не помог. STOP/START DISTRIBUTED SENDS тоже не помог. Что ещё можно посмотреть?
  • https://t.me/clickhouse_ru
    сам КХ жрёт память только во время выполнения запроса/мержей
  • https://t.me/clickhouse_ru
    Тоже бы не отказался. Но я серьезно, есть ли какие-то варианты или я чего-то не понимаю в бест практис?
  • https://t.me/clickhouse_ru
    @1236463047 #199100 03:10 PM, 11 Jan 2021
    но селекты то бегают... Ну ок, раз нормально, знач нормально
  • https://t.me/clickhouse_ru
    Про первичный ключ долго рассказывать. Лень.

    Главный вопрос: А почему КХ ? Почему не victoria metrics?
  • https://t.me/clickhouse_ru
    @critskiy #199102 03:13 PM, 11 Jan 2021
    А ведь в КХ можно ведь шардинг на самого себя, напомните пжл? I mean, internal sharding, когда на одном и том же серваке (в одном инстансе кх) создаешь таблицу, одну Distributed, а одну на базе *Tree?
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
    @critskiy #199104 03:14 PM, 11 Jan 2021
    вот, спс
  • https://t.me/clickhouse_ru
    @pvlbsk #199105 03:20 PM, 11 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    Не смотрели на нее даже, честно говоря. Базово нужен реалтайм поиск по 400+ колонкам редкие обновления/замена и компрессия на хранение больших объемов. Там есть такое?
  • https://t.me/clickhouse_ru
    @almorgv #199107 03:22 PM, 11 Jan 2021
    Плюс использование как долгосрочное хранилище
  • https://t.me/clickhouse_ru
    таймсириес и 400колонок? Что-то в консерватории у вас не так.
  • https://t.me/clickhouse_ru
    Ну условный таймсайрес очень. Там не большой рпс на запись
  • https://t.me/clickhouse_ru
    @almorgv #199110 03:25 PM, 11 Jan 2021
    Таймсайрес скорее в плане того, что смотреть на них потом пользователям надо по времени их записи туда
  • https://t.me/clickhouse_ru
    @vl4deee11 #199111 03:30 PM, 11 Jan 2021
    Joined.
  • ok, я эт уже спрашивал и решал же ) гребаная экспонента
    max_size = interpolateExponential(
    data_settings->max_bytes_to_merge_at_min_space_in_pool,
    data_settings->max_bytes_to_merge_at_max_space_in_pool,
    static_cast<double>(free_entries) / data_settings->number_of_free_entries_in_pool_to_lower_max_size_of_merge);
  • @mishfish #199113 04:04 PM, 11 Jan 2021
    Joined.
  • @879338183 #199115 04:52 PM, 11 Jan 2021
    Joined.
  • спасибо, помогло!
  • @vasya_p0pkin #199117 05:32 PM, 11 Jan 2021
    Подскажите, нужно перелить около 7 ТБ данных из ClickHouse в Distributed table ClickHouse. Как это правильней сделать? Тупо переливкой через ClickHouseClient. Или городить скрипт, который будет переливать частями? Бывают проблемы с сетью и не хочется непредвиденного завершения или большого дублирования данных.
  • https://t.me/clickhouse_ru
    /report
  • https://t.me/clickhouse_ru
    ну clickhouse-copier делает это кусками, по партициям, в паралель, проверяет результат и автоматически ретраит
  • https://t.me/clickhouse_ru
    @den_crane #199124 06:57 PM, 11 Jan 2021
    но вообще можно и rsync-м, если не нужен шардинг
  • @vasya_p0pkin #199125 06:57 PM, 11 Jan 2021
    Спасибо, только что про него прочитал. Ща буду разбираться
  • 12 January 2021 (124 messages)
  • https://t.me/clickhouse_ru
    У меня одна из задач примерно такая же. Данные льются батчами каждый день. Это новое состояние системы на определенный день. - агрегаты с плавающим окном (-30 дней.) 150 показателей на 50 млн записей. Т.е. дата это партиция , которая адресует расчет на определенное утро.+ ещё хочется индекс что бы быстро искать по такой партиции. Насколько это нормальный кейс для КХ ?
  • https://t.me/clickhouse_ru
    ну я ничего не понял. Предыдущий тоже хотел непонятного. Зачем нужна там сортировка по дате, если по сути она ничего вообще не дает.
  • https://t.me/clickhouse_ru
    @JackRussell77 #199128 01:07 AM, 12 Jan 2021
    Ну да , для меня это атрибут - признак расчета . Если отстраниться от первичного вопроса , для моего случая как движок таблиц подойдёт ?
  • MergeTree?
  • https://t.me/clickhouse_ru
    @li_bao #199130 04:22 AM, 12 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @li_bao #199131 05:02 AM, 12 Jan 2021
    Добрый день, коллеги. С ch работаю недавно, пока не всё знаю.
    Ситуация такая: у меня есть json вида [{"name":"aaa","date":"2020-02-01 15:44:33","val":222},{"name":"bbb","date":"2020-03-01 15:44:33","val":333}], хочется его использовать в запросе как то так
    select <some> from table1 t join @json j on j.name = t.name where ....
    Единственный вариант, который я пока нашел - это создавать таблицу с engine=Memory(), вливать туда данные, использовать и потом грохать. При этом в документации говорится, что именно так ведет себя КХ при обработке IN с большими данными. Вопрос - есть ли какие то другие способы?
  • https://t.me/clickhouse_ru
    Да, есть вот такой подход с внешними данными
    Внешние данные для обработки запроса | Документация ClickHouse

    Внешние данные для обработки запроса ClickHouse позволяет отправить на сервер данные, необходимые для обработки одного з

  • https://t.me/clickhouse_ru
    @li_bao ↶ Reply to #199132 #199133 06:40 AM, 12 Jan 2021
    Спасибо, но это мне скорее всего не годится. Я подключаюсь к КХ из c# и мне нужно использовать json как таблицу внутри запроса. Буду использовать CREATE TEMPORARY TABLE, это мне подойдет. Спасибо за ответ.
  • https://t.me/clickhouse_ru
    @PavelKhripkov #199134 07:13 AM, 12 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @BloodJazMan #199135 07:29 AM, 12 Jan 2021
    Привет всем
    а есть какой то аналог use_client_time_zone для HTTP интерфейса?

    пытался сделать так
    curl -vvv "http://127.0.0.1:8123/?query=SELECT+now()&use_client_time_zone=1" -H "X-ClickHouse-Timezone: UTC"
  • https://t.me/clickhouse_ru
    Нет
  • https://t.me/clickhouse_ru
    @pronvis #199137 08:28 AM, 12 Jan 2021
    после миграции MergeTree таблицы на Replicated и аттача партиций через

    `clickhouse-client --format=TSVRaw -q"select 'ALTER TABLE ' || database || '.' || table || ' ATTACH PARTITION ID \'' || partition_id || '\';\n' from system.detached_parts group by database, table, partition_id order by database, table, partition_id;" | clickhouse-client -mn

    остались detach partisions в состоянии inactive
  • https://t.me/clickhouse_ru
    @pronvis #199138 08:29 AM, 12 Jan 2021
    я думал они исчезнут через 8 минут (по дефолту), но прошли уже почти сутки, а они всё ещё там
  • https://t.me/clickhouse_ru
    @pronvis #199139 08:29 AM, 12 Jan 2021
    это нормально 🙂 ?
  • @a_sima10 #199140 08:48 AM, 12 Jan 2021
    всем привет, хочу перенести КХ на другой сервер и настроить шардирование между двумя серверами, подскажите как правильно/лучше/быстрее перенести данные с одного сервера на другой в шардированную таблицу?
  • https://t.me/clickhouse_ru
    Добрый день)

    нашел по поиску вот такое сообщение

    "я менял на большие значения, чтобы через jdbc посылать SQL с огромным спиcком in
    (jdbc не умеет external-data)"
  • https://t.me/clickhouse_ru
    "миллионы можно, пока в sql размер влезает (256кб по дефолту), но лучше external data. Какой API ? можно через что угодно, даже jdbc"

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

    которые обычно делаются поверх ReplicatedMergeTree (но можно любой движок)

    у вас сейчас "не шардированная" таблица какой Engine имеет?
  • да, все верное - Distributed

    сейчас не шардированная таблица ENGINE = MergeTree
  • https://t.me/clickhouse_ru
    ну самое простое, но не самое лучшее

    ставим новый сервер с нуля
    создаем там пустую таблицу с Engine = MergreTree

    добавляем оба сервера в
    <remote_servers><your_cluster_name>
    в разные <shard> теги

    создаем новую таблицу ENGINE Distributed(...) на обоих серверах
    все новые INSERT делаем в новый сервер в таблицу которая ENGINE MergeTree
    ну либо рандомно с весовым коэффициентом скажем (75% в новый сервер, 25% в старый сервер)

    все SELECT делаем из ENGINE=Distributed()
    тоже можно рандомно какой нибудь chproxy с весами настроить чтобы данные каждый раз не лить с одного сервера на другой...
  • https://t.me/clickhouse_ru
    второй вариант более правильный и более сложный

    ставим Zookeeper
    ставим второй clickhouse-server
    прописываем на обоих clickhouse серверах <zookeeper> секцию и <remote_servers> в конфиги

    конвертируем MergeTree в ReplicatedMergeTree на первом сервере
    https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/replication/#converting-from-mergetree-to-replicatedmergetree

    получите два сервера с копией данных

    дальше делаете Distributed таблицу и читаете из нее
    Data Replication | ClickHouse Documentation

    Data Replication Replication is only supported for tables in the MergeTree family: ReplicatedMergeTree ReplicatedSumming

  • немного не понял с переносом, сейчас на старом сервере таблица весит 1,7 ТБ, на двух новых серверах диски по 2ТБ, я бы хотел что бы данные со старого сервера при переносе распределились на два новых сервера 50/50 по занимаемому месту
  • https://t.me/clickhouse_ru
    облом =) автоматического решардинга нет
    и у вас уже нет места для того чтобы сделать
    INSERT INTO distributed_table FROM your_merge_tree_table с распределением 50 на 50
  • https://t.me/clickhouse_ru
    ну можно попробовать переливать данные частями
    сначала INSERT INTO ... SELECT .. WHERE ... а потом ALTER TABLE ... DELETE .. WHERE ...
    но это сильно будет диск жрать на ALTER TABLE ... DELETE
  • https://t.me/clickhouse_ru
    @vmaxlog #199150 10:27 AM, 12 Jan 2021
    добрый день можно ли как то писать в такие таблицы https://clickhouse.tech/docs/en/engines/table-engines/integrations/rabbitmq/ через вьюшки?
    RabbitMQ | ClickHouse Documentation

    RabbitMQ Engine This engine allows integrating ClickHouse with RabbitMQ. RabbitMQ lets you: Publish or subscribe to data

  • https://t.me/clickhouse_ru
    @OrNixx #199151 10:41 AM, 12 Jan 2021
    можно ли создать primary key после создания таблицы? че-то не могу нагуглить
  • https://t.me/clickhouse_ru
    Primary key задаётся при создании merge tree таблицы и для таблицы не меняется.
  • https://t.me/clickhouse_ru
    @andrey_konyaev #199153 10:54 AM, 12 Jan 2021
    Можно добавить вторичный индекс
  • https://t.me/clickhouse_ru
    @OrNixx #199154 10:55 AM, 12 Jan 2021
    сейчас прочитал, что он не обеспечивает уникальности. как добиться unique index? использовать ReplacingMergeTree ?
  • https://t.me/clickhouse_ru
    @andrey_konyaev #199155 10:57 AM, 12 Jan 2021
    Replacing не гарантирует уникальность. Схлопка только при слияниях и внутри патриции.

    Можно замутить схему с matView которая будет считать argmax всех столбцов кроме primary key и на неё повесить view
  • https://t.me/clickhouse_ru
    @andrey_konyaev #199156 10:58 AM, 12 Jan 2021
    А можно вызывать select с final
  • https://t.me/clickhouse_ru
    @OrNixx #199157 10:59 AM, 12 Jan 2021
    т.е. штатных средств для unique index нет?
  • @1018890436 #199158 11:01 AM, 12 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @andrey_konyaev #199159 11:01 AM, 12 Jan 2021
    Только в виде аггрегата, но может кто ещё что-то посоветует.
  • тогда наверное придется создать на каком-то новом сервере таблицу Distributed, которая будет шардиться локально и на другой новый сервер и в нее заливать потихоньку данные через insert into tables select * from remote where EventDateTime >= 'date' and EventDateTime < 'date'
  • https://t.me/clickhouse_ru
    нет нельзя
    вьюшка ничем вам не поможет
    можете попробовать сделать Pull Request чтобы RabbitMQ Engine мог сообщения в RabbitMQ отсылать
  • https://t.me/clickhouse_ru
    он может. если сделать инсерт данные упадут в рабит
  • Вам должен помочь clickhouse-copier
    https://clickhouse.tech/docs/ru/operations/utilities/clickhouse-copier/
    clickhouse-copier | Документация ClickHouse

    clickhouse-copier Копирует данные из таблиц одного кластера в таблицы другого (или этого же) кластера. Можно запустить н

  • @p_roman #199165 01:14 PM, 12 Jan 2021
    Добрый день

    Столкнулись с проблемой расхождения ответов
    У нас старый формат таблиц (данных много, поэтому сразу не перельешь). Сам движок ReplicatedReplacingMergeTree

    Отправляем запрос вида
    SELECT column FROM distributed_table WHERE column IN (набор из сотен значений)
    получаем разное количество записей

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

    Что посоветуете?
  • https://t.me/clickhouse_ru
    @warlock9600 #199166 01:18 PM, 12 Jan 2021
    Коллеги, а есть у кого нить может статейка на русском про то, как деплоить кликхаус с использованием clickhouse-operator от altinity?

    У них дока конечно исчерпывающая, но на англ в первый раз делать это тяжеловато
  • https://t.me/clickhouse_ru
    ну у вас реплики отстают друг от друга
    и данные выбираются то с одной реплики то с другой
  • Это проявляется на старых данных, когда в запросе ограничение по датам за 18-19 год. Все равно может быть дело в репликах? Как проверить отставание, подскажите, пожалуйста?
  • https://t.me/clickhouse_ru
    ну лучше сделать по доке которая в github
    шаги примерно такие
    устанавливаем оператор через web installer
    curl -sL https://github.com/Altinity/clickhouse-operator/blob/master/deploy/operator-web-installer/clickhouse-operator-install.sh | bash -x

    устанавливаем Zookeeper
    https://github.com/Altinity/clickhouse-operator/blob/master/deploy/zookeeper/quick-start-persistent-volume/zookeeper-1-node-create.sh

    для первого раза можно 1 нодовую конфигурацию взять

    пишем свой yaml манифест определяющий кластер
    за основу можно взять
    https://github.com/Altinity/clickhouse-operator/blob/master/docs/chi-examples/01-simple-layout-02-1shard-2repl.yaml
    просто определите сколько у вас реплик и шардов

    и делаете его kubectl apply

    дальше смотрите через kubectl describe -n your-ns your-chi на статус как оно там накатывается
    ну или через k9s смотрите как оператор ваш chi реконсайлит
    Altinity/clickhouse-operator

    The ClickHouse Operator creates, configures and manages ClickHouse clusters running on Kubernetes - Altinity/clickhouse-operator

  • https://t.me/clickhouse_ru
    а что with?

    with T as (select ... )
    select join T

    или там длинный json ? или вообще не json?
  • https://t.me/clickhouse_ru
    либо у вас парты пересекались по номерам, поэтому attach приатачил не все
    либо вы на обеих репликах положили в detached, то в этом случае надо было делать не так, attach атачит только на одной реплике, где он запущен, остальные реплики фетчат с него.
  • https://t.me/clickhouse_ru
    конечно jdbc умеет, я неправильно написал (в 2017м или 2018 jdbc не умел)

    https://github.com/ClickHouse/ClickHouse/issues/17219#issuecomment-731224167
    How to upload external Data using jdbc · Issue #17219 · ClickHouse/ClickHouse

    I have a query which has a large in clause . The query likes "SELECT distinct(id) FROM table WHERE id in ('92f66358058d6bb4','00005053e61ae5b1','92f...

  • https://t.me/clickhouse_ru
    точно НЕ второй вариант - аттачил на одной реплике только.
    inactive партции когда-нибудь исчезнут?
  • https://t.me/clickhouse_ru
    в detached ничего само не исчезает. Вы взяли парты с одного шарда? Или с нескольких?
    у вас номера блоков пересекались?
  • https://t.me/clickhouse_ru
    👌пасип, попробую
  • https://t.me/clickhouse_ru
    у меня один инстанс вообще был. на него всё писалось. после этого появилось две новые машинки, на них создал replicated таблицы. на той где были данные сделал по инструкции на сайте - переименовал обычную, создал репликейтед и данные из обычной в реплицируемую скопировал на файлухе в detached директорию. дальше тем скриптом из github issue прошёлся чтобы приаттачить
  • https://t.me/clickhouse_ru
    видимо это были inactive парты в старой MT

    если все данные на месте, то просто удалите все из detached
  • https://t.me/clickhouse_ru
    будут вопросы, пишите =)
    кстати пошарьте свой опыт потом, получилось или нет, это тоже очень интересно
  • https://t.me/clickhouse_ru
    ок, спасибо!
  • https://t.me/clickhouse_ru
    Да у меня больше дум, как это в CI обернуть, и как автоскейл красиво сделать
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    нет, вторичных индексов нету, не верьте
  • https://t.me/clickhouse_ru
    нету, никак не проверить БЫСТРО что запись уже существует.
  • https://t.me/clickhouse_ru
    в CI/CD это так примерно заворачивается
    берете токен от вашего кубернетес кластера + endpoint от apiserver
    и кладете в ~/.kubeconfig
    делаете переменную KUBECONFIG=~/.kubeconfig
    и в CI/CD где то вызываете kubectl apply

    автоскейл чего? автоскейл kubernetes или автоскейл clickhouse в кубернетес?
    автоскейла в кликхаусе нет, но можно мониторинг прикрутить + podAntiAffinity чтобы по одному поду внутри StatefulSet на ноду и прикрутить к этому autoscaling node groups для того провайдера Kubernetes который это поддерживает

    у вас какой k8s? облачный? bare-metal?
  • https://t.me/clickhouse_ru
    ну и вы вперед паровоза бежите
    вы сначала научитесь с этим жить хотя бы локально на minikube чтобы понять как оно там устроено... а потом уже про масштабирование думайте
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #199183 #199186 02:18 PM, 12 Jan 2021
    Понятно, спасибо
  • https://t.me/clickhouse_ru
    ну вы попробуйте вставить в какой нибудь Postgres миллиард UUID записей с UNIQE index ;)
    вместе поплачем над тем что надо до 9 чтений рандомных на каждую запись сделать
  • https://t.me/clickhouse_ru
    да, сразу не разобрался и полез в чат)
    спасибо большое
  • https://t.me/clickhouse_ru
    то есть задача проверки "уникальности" для большого набора "произвольных данных", она сама по себе не тривиальна
    и в OLTP базах более или менее решена только для случаев монотонно возрастающих числовых значений размерностью до UInt64 ;)
  • https://t.me/clickhouse_ru
    @den_crane #199190 02:34 PM, 12 Jan 2021
    в OLTP базах в btree индексе random io небольшой из-за того что там логарифм получается с большим основанием, поэтому для млрд. будет 6 рандом чтений, а для 100млрд. будет 7. Даже если не монотонно возрастает. В КХ индекс не btree и еще и разреженный.
    И еще внезапно КХ читает все марки в парте, поэтому надо проверить 1 строку, а КХ может 10ГБ одних марков вычитать с диска и еще в памяти это 10ГБ надо разложить.
  • https://t.me/clickhouse_ru
    @den_crane #199191 02:53 PM, 12 Jan 2021
    Запрос выполняется по PK , выполняется около секунды, при этом с диска ничего не читает.

    https://gist.github.com/den-crane/1f3143176c4333530ab6f73c3518adcb
  • https://t.me/clickhouse_ru
    @den_crane #199192 02:54 PM, 12 Jan 2021
    секунда уходит на чтение из кеша линукса 6ГБ марков и раскладывание их в кеш.
  • спасибо, помогло
  • https://t.me/clickhouse_ru
    @den_crane #199194 03:52 PM, 12 Jan 2021
    В след. stable 20.11 и 20.12 уже будет пофикшено, к сожалению такой критичный баг бекпортили 3 недели, могло быть пофикшено 2 версии назад.
  • @KNavrotskiy #199195 04:04 PM, 12 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @cheeezer #199196 04:13 PM, 12 Jan 2021
    Добрый вечер!

    При запросе

    SELECT
    col0,
    groupArray(col2) AS col2Arr,
    groupArray(col3) AS col3Arr,
    groupArray(col4) AS col4Arr
    FROM
    (
    SELECT
    col1, col2, col3, col4
    FROM tmp_tab
    GROUP BY col0, col1
    )
    GROUP BY col0

    гарантируется, что в массивах col2Arr, col3Arr, col4Arr под одинаковыми индексами будут элементы из одной строки подзапроса? Т.е. для одной строки из подзапроса col2 будет под таким же индексом в col2Arr, что и col3 в col3Arr?
    Потому что описание из документации можно трактовать двояко: "Values can be added to the array in any (indeterminate) order."
  • @Resager #199197 04:15 PM, 12 Jan 2021
    Извините, а сэмплирование в КХ возможно по двум полям? Как это лучше сделать? В примерах везде одно поле
  • https://t.me/clickhouse_ru
    просто в хешфункцию передать два, или 22 аргумента через запятую
  • https://t.me/clickhouse_ru
    гарантируется для не Nullable полей.

    или можете делать groupArray( (col2,col3,col4) ) AS colsArr,
  • https://t.me/clickhouse_ru
    @den_crane #199200 04:23 PM, 12 Jan 2021
    Null -ы не попадают в агрегатные функции, поэтому в итоге может оказаться что там тупо разное кол-во элементов в массивах, тупл (col2,col3,col4) решает эту проблему
  • https://t.me/clickhouse_ru
    Понял, спасибо
  • https://t.me/clickhouse_ru
    @kuzn3c0v #199202 04:31 PM, 12 Jan 2021
    Joined.
  • @andrey45263 #199203 04:31 PM, 12 Jan 2021
    Добрый день. Создал таблицу Engine = URL

    CREATE TABLE dwh.campaign_url_table (
    campaign_id String, account_ids Array(Int32), group Int32
    ) ENGINE=URL('https://staging-stable-dev-backend.str.inc/marketing', JSON);

    но любое обращение к таблице приводить к

    SELECT *
    FROM dwh.campaign_url_table

    Received exception from server (version 20.10.3):
    Code: 1000. DB::Exception: Received from localhost:9000. DB::Exception: SSL Exception: error:14000438:SSL routines::tlsv1 alert internal error.

    спасибо за помощь.
  • https://t.me/clickhouse_ru
    а какой сертификат https://staging-stable-dev-backend.str.inc ? самоподписанный?
  • https://t.me/clickhouse_ru
    Даже без ORDER BY в запросе/подзапросе?
    Из доки "In some cases, you can still rely on the order of execution. This applies to cases when SELECT comes from a subquery that uses ORDER BY." Или это вообще про порядок строк в результирующей выборке?
  • https://t.me/clickhouse_ru
    это порядок элементов в массиве.

    в случае подзапросов с order by порядок сохраняется и в массиве элементы будут в порядке order by col1, col2

    SELECT
    col0,
    groupArray(col2) AS col2Arr,
    groupArray(col3) AS col3Arr,
    groupArray(col4) AS col4Arr
    FROM
    (
    SELECT
    col1, col2, col3, col4
    FROM GROUP BY col0, col1
    order by col1, col2
    )
    GROUP BY col0
  • https://t.me/clickhouse_ru
    спасибо!
  • @denisrakhimov #199208 04:47 PM, 12 Jan 2021
    Joined.
  • вроде бы Lets Encrypt, но не уверен точно

    issuer=C = US, O = Let's Encrypt, CN = R3
  • @denisrakhimov #199210 04:51 PM, 12 Jan 2021
    Коллеги, добрый вечер! Подскажите пожалуйста, есть ли инструкция по обновлению КХ с версии 20.4.2.9 до текущего релиза на боевой базе?
  • https://t.me/clickhouse_ru
    @MakeReady #199211 05:06 PM, 12 Jan 2021
    в CSV в поле с DateTime есть NULL-ы. Как сделать чтобы они не приводили к ошибке?
  • https://t.me/clickhouse_ru
    все новые КХ любой версии умеют читать файлы от старых. Апгрейд КХ всегда это замена тупая бинарников и перезапуск сервиса.
    Проблема в том что новые версии всегда ломают поведение, некоторые запросы перестают выполняться, некоторые требуют установки параметров, некоторые возвращают другой результат. Я тестирую на стейдже 6 месяцев каждую версию на которую планирую перейти. И тестирую апгрейд и даунгрейд.
  • https://t.me/clickhouse_ru
    что такое Null в вашем понимании?

    у меня есть три варианта
    a) ,Null,
    b) ,\N,
    c) ,,

    DateTime или Nullable(DateTime) ?
  • https://t.me/clickhouse_ru
    @zorca #199216 05:11 PM, 12 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    |NULL| и DateTiem, можно сделать и Nullable(DateTime)
  • https://t.me/clickhouse_ru
    ну КХ ожидает \N или ,,
    можно через input function перекодировать, я бы sed-м заменил
  • https://t.me/clickhouse_ru
    @MakeReady #199220 05:19 PM, 12 Jan 2021
    хм, в других местах его NULL устраивает
  • https://t.me/clickhouse_ru
    @MakeReady #199221 05:22 PM, 12 Jan 2021
    попробую от них избавиться
  • https://t.me/clickhouse_ru
    да, с ,, и Nullable(DateTime) все ОК, Спасибо!
  • Вставит значение по умолчанию, начало эпохи, например
  • https://t.me/clickhouse_ru
    @MakeReady #199224 06:19 PM, 12 Jan 2021
    нет NULL не вставлял
  • https://t.me/clickhouse_ru
    @den_crane #199225 07:11 PM, 12 Jan 2021
    в CSV нету такого: Null. Как для строки отличить, там Null или строка "Null" ? Поэтому в CSV используется \N
  • https://t.me/clickhouse_ru
    @den_crane #199226 07:12 PM, 12 Jan 2021
    в последних КХ можно задать что пустая ячейка ,, воспринимается как default
  • https://t.me/clickhouse_ru
    @den_crane #199227 07:12 PM, 12 Jan 2021
    --input_format_defaults_for_omitted_fields arg For input data calculate default expressions for omitted fields (it works for JSONEachRow, CSV and TSV formats).
  • @nzxme #199228 07:38 PM, 12 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @Sarcasticat #199229 08:36 PM, 12 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @Sarcasticat #199230 08:44 PM, 12 Jan 2021
    Господа, есть вопрос (возможно даже два):
    Основная задача: посчитать количество событий в определенном промежутке с группировкой по дням/часам/etc. и с заполнением нулями промежутков, в которые событий нет.
    Я делаю вот так для периодов в день (и это первый вопрос, возможно это неправильно?):
    SELECT
    count(*) AS cnt,
    toStartOfInterval(time, toIntervalDay(1)) AS period
    FROM metrics
    WHERE (toDate(time) >= '2021-01-11') AND (toDate(time) <= '2021-01-12')
    GROUP BY period
    ORDER BY period ASC
    UNION ALL
    SELECT
    0 AS cnt,
    arrayJoin(timeSlots(toDateTime(toDate('2021-01-11'), 'UTC'), toUInt32(dateDiff('second', toDateTime(toDate('2021-01-11')), toDateTime(toDate('2021-01-12')))), toUInt32(86400))) AS period
    GROUP BY period
    ORDER BY period ASC
    проблема в том, что в ответ я получаю
    ┌────cnt─┬──────────────period─┐
    │ 391722 │ 2021-01-11 00:00:00 │
    │ 468620 │ 2021-01-12 00:00:00 │
    └────────┴─────────────────────┘
    ┌─cnt─┬──────────────period─┐
    │ 0 │ 2021-01-11 03:00:00 │
    │ 0 │ 2021-01-12 03:00:00 │
    └─────┴─────────────────────┘
    т.е. нулевые почему-то в московской таймзоне
    в то же время, если сделать этот подзапрос отдельно то все хорошо:
    SELECT timeSlots(toDateTime(toDate('2021-01-11'), 'UTC'), toUInt32(dateDiff('second', toDateTime(toDate('2021-01-11')), toDateTime(toDate('2021-01-12')))), toUInt32(86400)) AS slots

    ┌─slots─────────────────────────────────────────┐
    │ ['2021-01-11 00:00:00','2021-01-12 00:00:00'] │
    └───────────────────────────────────────────────┘
    wtf?
  • https://t.me/clickhouse_ru
    TZ свойство типа (свой-во колонки), а не значения. В metrics TZ Moscow
  • https://t.me/clickhouse_ru
    @den_crane #199232 08:51 PM, 12 Jan 2021
    order by with fill наверное в этом случае сам заполнит
  • https://t.me/clickhouse_ru
    @den_crane #199233 08:53 PM, 12 Jan 2021
    SELECT t
    FROM
    (
    SELECT toDateTime('2016-06-15 23:00:00', 'Asia/Yekaterinburg') AS t
    UNION ALL
    SELECT toDateTime('2016-06-15 23:00:00', 'UTC') AS t
    )

    ┌───────────────────t─┐
    │ 2016-06-15 23:00:00 │
    └─────────────────────┘
    ┌───────────────────t─┐
    │ 2016-06-16 04:00:00 │
    └─────────────────────┘

    SELECT t
    FROM
    (
    SELECT toDateTime('2016-06-15 23:00:00', 'UTC') AS t
    UNION ALL
    SELECT toDateTime('2016-06-15 23:00:00', 'Asia/Yekaterinburg') AS t
    )

    ┌───────────────────t─┐
    │ 2016-06-15 23:00:00 │
    └─────────────────────┘
    ┌───────────────────t─┐
    │ 2016-06-15 18:00:00 │
    └─────────────────────┘
  • https://t.me/clickhouse_ru
    @Sarcasticat #199234 08:53 PM, 12 Jan 2021
    вспомнить бы, почему я не стал использовать fill
  • https://t.me/clickhouse_ru
    @den_crane #199235 08:54 PM, 12 Jan 2021
    SELECT
    t,
    toTypeName(t)
    FROM
    (
    SELECT toDateTime('2016-06-15 23:00:00', 'UTC') AS t
    UNION ALL
    SELECT toDateTime('2016-06-15 23:00:00', 'Asia/Yekaterinburg') AS t
    )

    ┌───────────────────t─┬─toTypeName(t)───┐
    │ 2016-06-15 18:00:00 │ DateTime('UTC') │
    └─────────────────────┴─────────────────┘
    ┌───────────────────t─┬─toTypeName(t)───┐
    │ 2016-06-15 23:00:00 │ DateTime('UTC') │
    └─────────────────────┴─────────────────┘
  • https://t.me/clickhouse_ru
    @den_crane #199236 08:54 PM, 12 Jan 2021
    SELECT
    t,
    toTypeName(t)
    FROM
    (
    SELECT toDateTime('2016-06-15 23:00:00', 'Asia/Yekaterinburg') AS t
    UNION ALL
    SELECT toDateTime('2016-06-15 23:00:00', 'UTC') AS t
    )

    ┌───────────────────t─┬─toTypeName(t)──────────────────┐
    │ 2016-06-15 23:00:00 │ DateTime('Asia/Yekaterinburg') │
    └─────────────────────┴────────────────────────────────┘
    ┌───────────────────t─┬─toTypeName(t)──────────────────┐
    │ 2016-06-16 04:00:00 │ DateTime('Asia/Yekaterinburg') │
    └─────────────────────┴────────────────────────────────┘
  • https://t.me/clickhouse_ru
    @Sarcasticat #199237 08:57 PM, 12 Jan 2021
    ага. кто первый встал, того и тапки
  • https://t.me/clickhouse_ru
    @Sarcasticat #199238 08:57 PM, 12 Jan 2021
    ладно, вроде как FILL меня должен спасти. наверное я его как-то не так готовил, когда пробовал
  • https://t.me/clickhouse_ru
    @Sarcasticat #199239 09:04 PM, 12 Jan 2021
    м. я вспомнил, в чем была моя проблема с FILL. если за весь период вообще ничего нет - FILL ничего и не заполнит
  • https://t.me/clickhouse_ru
    @peter_ll #199240 09:05 PM, 12 Jan 2021
    Ребята, подскажите пожалуйста куда смотреть:
    обновили КХ 20.4.3 > 20.12.4, стартанули
    ЦПУ выжран (ниже 34% не опускается)
    причем на этой машине не вижу ни процессов ни мержей ни мутаций
    что я пропускаю?
    может там какие-нибудь дефолтные компресии сменились и рул ттл и он в БГ мне сча пытается историю отлопатить?
  • https://t.me/clickhouse_ru
    и в будущее он тоже не заглянет, хех
  • https://t.me/clickhouse_ru
    @peter_ll #199242 09:12 PM, 12 Jan 2021
    спайки - от запросов, а чем стабильно треть проца занято не могу разгадать
    и в таком стиле 2 кластера по 12 тачек(
  • https://t.me/clickhouse_ru
    хех, все равно непонятно, как мне тогда сгенерить timeSlots правильно
    алсо
    SELECT toTypeName(timeSlots(toDateTime(toDate('2021-01-11')), toUInt32(dateDiff('second', toDateTime(toDate('2021-01-11')), toDateTime(toDate('2021-01-12')))), toUInt32(86400))) AS typename

    ┌─typename─────────────────────────┐
    │ Array(DateTime('Europe/Moscow')) │
    └──────────────────────────────────┘
  • https://t.me/clickhouse_ru
    @106936600 #199244 09:45 PM, 12 Jan 2021
    А можете посоветовать, какой нибудь красивый\удобный вьювер (а может даже и моделер) для clickhouse?
  • dBeaver - будьте как все
  • https://t.me/clickhouse_ru
    Да, похоже это то, что искал, спасибо
  • Тогда давайте не останавливаться на достигнутом. Будьте лучше, чем большинство - https://www.jetbrains.com/datagrip/ :)
    DataGrip: The Cross-Platform IDE for Databases & SQL by JetBrains

    A powerful IDE from JetBrains for SQL on macOS, Windows, and Linux.

  • https://t.me/clickhouse_ru
    :D
  • https://t.me/clickhouse_ru
    @106936600 #199249 10:59 PM, 12 Jan 2021
    А можно ли сделать COMMENT COLUMN при CREATE TABLE?
  • https://t.me/clickhouse_ru
    create table XX(A Int64 comment 'xxxxx') Engine=Log
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @den_crane #199252 11:02 PM, 12 Jan 2021
    ( A Int64 default 100 comment 'xxxxx' CODEC(Delta,ZSTD) )
  • https://t.me/clickhouse_ru
    @peter_ll #199254 11:20 PM, 12 Jan 2021
    еще одно странное поведение
    (обновили КХ 20.4.3 > 20.12.4)
    временные таблицы с engine=Log
    созданные и еще не дропнутые с версии 20.4 читаются в несколько тредов (insert-select ~1m rows ~19sec)

    а созданная в 20.12 почему-то ломится в 1 тред (и в 2-3 раза дольше обрабатывается)
    насильно пытаюсь увеличить (
    set max_threads = 6;
    set min_insert_block_size_rows=200000;) - не помогает - видимо чего-то не учел?
  • 13 January 2021 (246 messages)
  • Странно это. А просто селект тоже в 1 поток?
  • @ogavrilov #199256 05:39 AM, 13 Jan 2021
    как можно узнать row, в котором началась последовательность, удовлетворяющая sequenceMatch ?
  • @ogavrilov #199257 05:40 AM, 13 Jan 2021
    или можно как-то получить все данные, которые удовлетворяют sequenceMatch, а не просто их количество?
  • @Trampler #199258 05:59 AM, 13 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    Когда таблицу log заполняю с min_insert_block_size_rows=200000
    То на селекте в формат нулл можно добиться того, чтобы было несколько тредов
    Но чтобы и на инсерты позитивно повлияло - не заборол пока
  • https://t.me/clickhouse_ru
    max_insert_threads
    можно попробовать увеличить, если еще не делали

    https://github.com/ClickHouse/ClickHouse/search?q=max_insert_threads
    Search · max_insert_threads · 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
    @ivan_kush #199261 06:56 AM, 13 Jan 2021
    никто не знает, поддерживает ли CH чз http FORMAT CustomSeparated?
    https://github.com/ClickHouse/ClickHouse/issues/12744#issuecomment-663738562

    Потому что без него у меня CH выдает ошибку, что не нашёл ,
    Row 1:
    Column 0, name: datetime, type: String, parsed text: "2021-Jan^d1^d2" ERROR: Line feed found where delimiter (,) is expected. It's like your file has less columns than expected.
    And if your file have right number of columns, maybe it have unescaped quotes in value

    А
    когда делаю запрос с указаниме типа разделителя format_custom_field_delimiter='^', то выдаёт ошибку
    Code: 49, e.displayText() = DB::Exception: There is no checkpoint (version 20.1.2.4 (official build))

    cам запрос
    find . -type f -name 'j.log' | while read f; do
    curl "http://localhost:8123
    /?query=INSERT%20INTO%20mydb%20FORMAT%20CustomSeparated%20SETTINGS%20format_custom_escaping_rule%3D%27CSV%27%2C%20format_custom_field_delimiter%20%3D%20%27%5E%27" --data-binary "@${f}"
    done
    How to import csv file with multiple delimiter character · Issue #12744 · ClickHouse/ClickHouse

    How to import csv file with multiple delimiter character, example: name$$city$$age ss$$hangzhou$$28 dd$$shanghai$$30 (base) [admin@datainsight-d-006052 ~]$ clickhouse-client --password ck2020 --for...

  • Так у вас вставка не параллелится? Я думал селекты. По вставке insert_select куча параметров есть которые надо смотреть.
  • https://t.me/clickhouse_ru
    В лоб пробовал - не спасло
  • https://t.me/clickhouse_ru
    А есть где-то в сконцентрированом виде список? А то разрозненно натыкался на разные, а полной картины не сложил в голове
  • @dj_mixer #199265 07:07 AM, 13 Jan 2021
    nu %min_insert%, %max_insert% дефолтовые смотрите если системы одинаковые рядом
  • https://t.me/clickhouse_ru
    @balekhov #199266 07:23 AM, 13 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @smartyru #199268 07:39 AM, 13 Jan 2021
    Не подскажете, clickhouse_fdw можно водрузить на Postgres 10.5 или 11я версия A MUST ?
  • https://t.me/clickhouse_ru
    @OrNixx #199269 07:43 AM, 13 Jan 2021
    Всем привет. Пытаемся внедрить КХ для хранения cdr (лог звонков с АТС). Партиционирование по timestamp (yyyymm). При вводе в эксплуатацию начала валиться ошибка Too many parts (600). Merges are processing significantly slower than inserts. (version 20.12.5.14 (official build)). Пустил трафик через clickhouse-bulk ( "flush_count": 1000, "flush_interval": 5000 ) — ошибка не ушла. Добавил
    <merge_tree>
    <parts_to_delay_insert>300</parts_to_delay_insert>
    <parts_to_throw_insert>600</parts_to_throw_insert>
    <max_delay_to_insert>2</max_delay_to_insert>
    <max_suspicious_broken_parts>5</max_suspicious_broken_parts>
    </merge_tree>
    — всё равно ошибка не ушла. Что я делаю не так?
  • https://t.me/clickhouse_ru
    @OrNixx #199270 07:57 AM, 13 Jan 2021
    и 7 ядер проца забито процессом КХ. это merge ?
  • https://t.me/clickhouse_ru
    @1236463047 #199271 08:05 AM, 13 Jan 2021
    ммм... flush_count 10000?
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #199271 #199272 08:06 AM, 13 Jan 2021
    там больше 80 строк всё равно не накапливается. флашит по таймауту
  • https://t.me/clickhouse_ru
    @1236463047 #199273 08:06 AM, 13 Jan 2021
    раз в 5 сек?
  • https://t.me/clickhouse_ru
    @OrNixx #199274 08:06 AM, 13 Jan 2021
    да
  • https://t.me/clickhouse_ru
    @1236463047 #199275 08:07 AM, 13 Jan 2021
    а точно кто-то еще не толкает инсерты?
  • https://t.me/clickhouse_ru
    @1236463047 #199276 08:07 AM, 13 Jan 2021
    Запись раз в 5 сек...
  • https://t.me/clickhouse_ru
    @1236463047 #199277 08:08 AM, 13 Jan 2021
    а диск в порядке?
  • https://t.me/clickhouse_ru
    @OrNixx #199278 08:08 AM, 13 Jan 2021
    там ещё апдейты через alter table валятся. они могут быть причиной хаоса? ещё и сервер падает периодически.
    диск да, в норме
  • https://t.me/clickhouse_ru
    @1236463047 #199279 08:09 AM, 13 Jan 2021
    show processlist
  • https://t.me/clickhouse_ru
    @1236463047 #199280 08:09 AM, 13 Jan 2021
    кажет кучу стоящих инсертов?
  • https://t.me/clickhouse_ru
    @OrNixx #199281 08:10 AM, 13 Jan 2021
    в processlist ничего поймать не могу
  • https://t.me/clickhouse_ru
    @1236463047 #199282 08:10 AM, 13 Jan 2021
    апдейты - могут )) У меня еще и подвисшие были. Пару дней назд тут же и подсказали
  • https://t.me/clickhouse_ru
    @1236463047 #199283 08:11 AM, 13 Jan 2021
    счас найду...
  • https://t.me/clickhouse_ru
    @1236463047 #199284 08:12 AM, 13 Jan 2021
    идешь в папку с данными базы
  • https://t.me/clickhouse_ru
    @1236463047 #199285 08:12 AM, 13 Jan 2021
    /var/lib/clickhouse/data/<db>/<table>
  • https://t.me/clickhouse_ru
    @rjs45 ↶ Reply to #199278 #199286 08:12 AM, 13 Jan 2021
    если Вам нужны частые апдейты, то КХ лучше не брать.
    + вставки каких данных? У нас была такая ошибка когда вставляли пачки данных сильно разрозненные по ключу сортировки
  • https://t.me/clickhouse_ru
    @rjs45 #199287 08:13 AM, 13 Jan 2021
    еще что там в system.mutations и system.merges ?
  • https://t.me/clickhouse_ru
    @1236463047 #199288 08:13 AM, 13 Jan 2021
    и там смотрите на mutation_ххххх.txt
  • https://t.me/clickhouse_ru
    @1236463047 #199289 08:13 AM, 13 Jan 2021
    мне пришлось их все поудалять и сервис рестарт
  • https://t.me/clickhouse_ru
    @OrNixx #199290 08:14 AM, 13 Jan 2021
    # ls muta*.txt |wc -w
    24579
    и растёт
  • https://t.me/clickhouse_ru
    @OrNixx #199291 08:15 AM, 13 Jan 2021
    root@db-stat-ch:/etc/clickhouse-server# clickhouse-client -d stat
    ClickHouse client version 20.12.5.14 (official build).
    Connecting to database stat at localhost:9000 as user default.
    Code: 210. DB::NetException: Connection refused (localhost:9000)

    ещё и сервер пропадает на несколько секунд
  • https://t.me/clickhouse_ru
    @OrNixx #199292 08:17 AM, 13 Jan 2021
    такое количество апдейтов не годится, судя по всему? вызывает непрерывный merge? сорян, я плохо понимаю физиологию КХ..
  • https://t.me/clickhouse_ru
    @1236463047 #199293 08:17 AM, 13 Jan 2021
    кх он да, для другого
  • https://t.me/clickhouse_ru
    @1236463047 #199294 08:17 AM, 13 Jan 2021
    апдейты можно, но редко
  • https://t.me/clickhouse_ru
    @1236463047 #199295 08:18 AM, 13 Jan 2021
    может движок сменить на replace-summary-aggreg ?
  • https://t.me/clickhouse_ru
    @1236463047 #199296 08:18 AM, 13 Jan 2021
    чтоб избежать
  • https://t.me/clickhouse_ru
    @OrNixx #199297 08:18 AM, 13 Jan 2021
    я не знал, что они будут так часто апдейтить данные, когда рекомендовал решение. думал, инсёрт и всё. то есть проблема практически точно в апдейтах?
  • https://t.me/clickhouse_ru
    @1236463047 #199298 08:19 AM, 13 Jan 2021
    ну как... если можете их как-то веременно приостановить и поможет - то да
  • https://t.me/clickhouse_ru
    @1236463047 #199299 08:20 AM, 13 Jan 2021
    но по "пракчиески точно" - подождите может еще мнений - я "средненько"
  • https://t.me/clickhouse_ru
    @rjs45 #199300 08:21 AM, 13 Jan 2021
    update/delete - это операции, которые не должны выполняться постоянно. Только в каких-то экстренных случаях, если надо поправть какой-то косяк в данных или еще что-то.
    Можно попробовать ReplacingMergeTree, но он не дает 100% уверенности, что осталась только последняя версия
  • https://t.me/clickhouse_ru
    @1236463047 #199301 08:21 AM, 13 Jan 2021
    с Final-ом то вроде дает? Правда работает медленней обычного селекта
  • https://t.me/clickhouse_ru
    @rjs45 ↶ Reply to #199301 #199302 08:23 AM, 13 Jan 2021
    Да, но это тоже тяжело. Мы сейчас страдаем от этих Final-ов (много их стало)
  • https://t.me/clickhouse_ru
    ugh. время в timeSlots перестает смещаться если принудительно кастовать везде в UTC. но тогда смещаются сами данные
  • https://t.me/clickhouse_ru
    что в партициях?
    нам однажды с реплицированными таблицами сильно помог запрос select * from system.replication_queue where database='...' and table='...'
  • а какого формата апдейты? CDR вроде не апдейтят :)
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #199305 #199306 09:02 AM, 13 Jan 2021
    они там какие-то кастомные json-поля апдейтят
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #199304 #199307 09:02 AM, 13 Jan 2021
    нет, репликации нет
  • если апдейтов не много, то попробуйте апдейты через инсерт с ReplacingMergeTree. если много, то возможно другую бд...
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #199308 #199311 09:13 AM, 13 Jan 2021
    т.е. делаю ReplacingMergeTree с order by uniqueId, и вставляю обновлённую строку с этим же uniqueId, и КХ её заменит?
  • https://t.me/clickhouse_ru
    @1236463047 #199312 09:15 AM, 13 Jan 2021
    да
  • https://t.me/clickhouse_ru
    Когда нибудь, eventually
  • https://t.me/clickhouse_ru
    вставлять надо БАТЧЕМ либо по 10 тыс записей (а лучше 100 тыс), либо не чаще 1 раз в секунду
    можете еще ENGINE=Buffer таблицу поставить и в нее вливать, но там сохранность данных при рестарте не гарантируетс...

    flush_interval оставьте в bulk 5000 а flush_count поднимите до 10000 хотя бы
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #199314 #199315 09:16 AM, 13 Jan 2021
    там слишком мало строк на вставку, чтобы это было проблемой. в апдейтах беда 99%
  • @ramun25 #199316 09:16 AM, 13 Jan 2021
    про datetime64 в доке написано:
    CREATE TABLE dt
    (
    `timestamp` DateTime64(3, 'Europe/Moscow'),
    `event_id` UInt8
    )
    ENGINE = TinyLog
    INSERT INTO dt Values (1546300800000, 1), ('2019-01-01 00:00:00', 2)т.е. можно не указывать размерность
    у нас datetime64(9)
    :) insert into test.test_ip (dt64) values (1610525117709038246) ;
    1 rows in set. Elapsed: 0.005 sec.

    :) insert into test.test_ip (dt64) values (1610525117.709038246) ;
    1 rows in set. Elapsed: 0.006 sec.

    :) SELECT dt64 FROM test.test_ip
    ┌────────────────────dt64─┐
    │ 2021-01-13 08:05:17.709 │
    └─────────────────────────┘
    ┌──────────────────dt64─┐
    │ 2106-02-07 :30:38.246 │
    └───────────────────────┘

    ClickHouse server version 20.8.5 revision 54438вставку можно только через указание размерности делать?
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #199313 #199317 09:16 AM, 13 Jan 2021
    а примерно когда?
  • @ramun25 #199318 09:17 AM, 13 Jan 2021
    при мерже, обращение через group by
  • https://t.me/clickhouse_ru
    Если не терпится - то добавлешь FINAL в селект. НО работает сразу медленее.
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #199319 #199320 09:20 AM, 13 Jan 2021
    понял. а если терпится, то порядок задержки? 5 секунд, 5 минут, полчаса?
  • https://t.me/clickhouse_ru
    @1236463047 #199321 09:23 AM, 13 Jan 2021
    это у кого как. Закинь да проверь что именно у вас
  • https://t.me/clickhouse_ru
    @vmaxlog #199323 09:26 AM, 13 Jan 2021
    а че clickhouse-bulk норм софт?
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #199323 #199324 09:29 AM, 13 Jan 2021
    Несколько лет использую. Работает и не жужжит
  • https://t.me/clickhouse_ru
    @OrNixx #199325 09:30 AM, 13 Jan 2021
    Mergetree в replacing можно преобразовать? Или заново заливать?
  • по доке, при селекте на чистую таблицу кх не гарантирует отсутствие дубликатов. лучше делать с group by, а чтобы по памяти не падало - в конфиге указать, когда с диском начинать работать, если оперативки не хватит.
  • @mochalovn #199327 10:05 AM, 13 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @etaoin_shrdlu_cmfwyp #199328 10:06 AM, 13 Jan 2021
    Joined.
  • @mochalovn #199329 10:08 AM, 13 Jan 2021
    Всем привет!

    Если есть таблица с колонкой time типа DateTime64(6). По этой колонке есть PARTITION BY и ORDER BY (составной). Будет ли эффективен следующий запрос? То есть не будет же вся колонка сортироваться?

    select * from table order by desc(time) limit 10
  • @ramun25 #199330 10:18 AM, 13 Jan 2021
    partition by - тут лишний кмк.
  • https://t.me/clickhouse_ru
    нет не лишний
  • @ramun25 #199332 10:19 AM, 13 Jan 2021
    в смысле там шинковаться партиции будут по миллисекундам?
  • https://t.me/clickhouse_ru
    ну там наверняка PARTITION BY toYYYYMM(datetime_field) ?
  • Ага
  • @mochalovn #199335 10:20 AM, 13 Jan 2021
    PARTITION BY (toYYYYMMDD(time), toHour(time))
  • https://t.me/clickhouse_ru
    ORDER BY | Документация ClickHouse

    Секция ORDER BY Секция ORDER BY содержит список выражений, к каждому из которых также может быть приписано DESC или ASC

  • https://t.me/clickhouse_ru
    слишком частые партитции... это плохо
    сократите до toYYYYMM(time)
  • @ramun25 #199338 10:25 AM, 13 Jan 2021
    если честно, то не знаю наверняка, будет или нет. но если нет, то тогда ты хочешь получить произвольные 10 записей в произвольной партиции и отсортировать в обратном порядке? скорее всего - тут весь столбец должен взяться.
  • @mochalovn #199339 10:28 AM, 13 Jan 2021
    Понятно. Спасибо за совет по партициям! Тогда буду замерять производительность на данных.
  • @ramun25 #199340 10:33 AM, 13 Jan 2021
    у меня похожий запрос:
    5 rows in set. Elapsed: 0.698 sec. Processed 1.16 million rows, 9.30 MB (1.66 million rows/s., 13.31 MB/s.)хотя если выбирать max( от этого поля), то
    1 rows in set. Elapsed: 60.483 sec. Processed 1.69 billion rows, 13.48 GB (27.87 million rows/s., 222.93 MB/s.)
  • @ramun25 #199341 10:34 AM, 13 Jan 2021
    получается - норм запрос. :) пользуйся!
  • @mochalovn #199342 10:34 AM, 13 Jan 2021
    То есть все зависит от конкретного запроса? Скорее всего просто SELECT будет быстрым.

    Спасибо за помощь))
  • @ramun25 #199343 10:37 AM, 13 Jan 2021
    реально. order by timekey desc limit 1 намного лучше, чем max(timekey)
  • https://t.me/clickhouse_ru
    @paulineoskolkoff #199344 10:47 AM, 13 Jan 2021
    Добрый день!

    Подскажите, плз, в чем может быть проблема. Использую nullIf для делителя, но все равно выдает Division by zero. Проверяю отдельно делитель, вижу null (ну то есть пустое поле, nullIf срабатывает). Версия 20.11.5.18.

    Спасибо!
  • https://t.me/clickhouse_ru
    0 != null
    Это разные понятия
  • https://t.me/clickhouse_ru
    @paulineoskolkoff #199346 10:48 AM, 13 Jan 2021
    Да, поэтому чтобы избежать деления на 0 я подменяю его на null
  • https://t.me/clickhouse_ru
    А как конкретно выражение выглядит?
  • https://t.me/clickhouse_ru
    Select a / nullIf(b,0) from T
  • https://t.me/clickhouse_ru
    WITH
    3 AS a,
    0 AS b
    SELECT a / nullIf(b, 0)

    Query id: 9bc4bb40-236f-413d-8313-4d5fcbfe9bb3

    ┌─divide(a, nullIf(b, 0))─┐
    │ ᴺᵁᴸᴸ │
    └─────────────────────────┘
    clickhouse 20.13

    Видимо проблема связана с типом данных
    https://github.com/ClickHouse/ClickHouse/issues/7509#issuecomment-731599933
    Division by zero · Issue #7509 · ClickHouse/ClickHouse

    Division by zero Describe the bug or unexpected behaviour error despite the fact that the denominator is converted to null in case of zero value How to reproduce ` drop table if EXISTS test_table; ...

  • https://t.me/clickhouse_ru
    @unamedrus #199350 10:52 AM, 13 Jan 2021
    У вас Decimal?
  • https://t.me/clickhouse_ru
    @paulineoskolkoff #199351 10:53 AM, 13 Jan 2021
    Да, вижу! Сорри, только сообразила посмотреть
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    @unamedrus #199353 10:57 AM, 13 Jan 2021
    Но Decimal в 20.13 точно так же не работает
  • https://t.me/clickhouse_ru
    Угу, видимо придется конвертить.. или нашла еще intDivOrZero, попробую
  • @alexey_avdonin #199355 11:08 AM, 13 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @li_bao ↶ Reply to #199170 #199356 11:08 AM, 13 Jan 2021
    с with не разобрался до конца, пока что обошелся create temporary table / insert / select. Там json, но как написать with чтобы потом можно было использовать в запросе - неясно (мне пока что не ясно, если дадите пример, буду благодарен безмерно)
  • https://t.me/clickhouse_ru
    @StadnikD #199357 11:10 AM, 13 Jan 2021
    а можно написать несколько условий в if?
  • https://t.me/clickhouse_ru
    @StadnikD #199358 11:10 AM, 13 Jan 2021
    в документации что-то не нашел этого
  • Условные функции | Документация ClickHouse

    Условные функции if Условное выражение. В отличие от большинства систем, ClickHouse всегда считает оба выражения then и

  • https://t.me/clickhouse_ru
    multiif не катит
  • https://t.me/clickhouse_ru
    хочу конъюнкцию в условие
  • https://t.me/clickhouse_ru
    Вообще можно, через and или or
  • @ogavrilov #199363 11:30 AM, 13 Jan 2021
    всем привет, повторю вопрос, вдруг кто знает - как можно узнать все row, в которых началась последовательность, удовлетворяющая sequenceMatch? таблица на пару десятков миллионов, sequence из двух последовательных элементов, скорость исполнения не очень важна
  • https://t.me/clickhouse_ru
    @romanneklesa #199365 12:33 PM, 13 Jan 2021
    привет. подскажите, пожалуйста, на однонодовом брокере кафки получаем лог
    Can't get assignment. It can be caused by some issue with consumer group (not enough partitions?). Will keep trying.

    параметр group.initial.rebalance.delay.ms дефолтный, kafka_topic_list, kafka_group_name с разынми именами, версия КХ - 20.11.4.13. в чем может быть причина его появления и как выйти с такой ситуации?
  • https://t.me/clickhouse_ru
    @mark_frost #199366 12:40 PM, 13 Jan 2021
    Joined.
  • @andrey45263 #199367 12:42 PM, 13 Jan 2021
    Добрый день. Создал таблицу Engine = URL

    CREATE TABLE dwh.campaign_url_table (
    campaign_id String, account_ids Array(Int32), group Int32
    ) ENGINE=URL('https://staging-stable-dev-backend.str.inc/marketing', JSON);

    но любое обращение к таблице приводить к
    Received exception from server (version 20.10.3):
    Code: 1000. DB::Exception: Received from localhost:9000. DB::Exception: SSL Exception: error:14000438:SSL routines::tlsv1 alert internal error.

    Сертификат Let's Encrypt
    спасибо за помощь.
  • пример, какой-нить приведи. какая конкретно последовательность, например.
  • https://t.me/clickhouse_ru
    Какая ОС у кх?
    https://github.com/ClickHouse/ClickHouse/issues/17803
    Openssl: probe different standard paths for ca. · Issue #17803 · ClickHouse/ClickHouse

    Users from os other than ubuntu often complain that secure connections can not be established because of wrong path to ca is used in the openssl bundled in ClickHouse. The solution is to probe comm...

  • Спасибо
    Mint , CentOS_7 + docker — в обоих случаях результат одинаковый
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/18869#issuecomment-757111029

    Пробуйте направить это на хранилище сертов для вашей ос
    OpenSSL certificate issue when using S3 https endpoint in AWS China Region · Issue #18869 · ClickHouse/ClickHouse

    Describe the bug When using S3 https endpoint in AWS China Region (Beijing and Ningxia), there is a openssl certificate issue reported. How to reproduce Which ClickHouse server version to use: 20.1...

  • Example of sequenceMatch aggregate function usage in ClickHouse.

    Example of sequenceMatch aggregate function usage in ClickHouse. - example.txt

  • https://t.me/clickhouse_ru
    Повторю и свой вопрос. FILL хоть и может заполнять "в будущее" но, по очевидным причинам, ничего не заполняет, если результатов нет вообще. А timeSlots двигает время, какую бы таймзону я в DateTime старта timeSlots не указал.
  • https://t.me/clickhouse_ru
    Скорее всего придется на коленке построить воронку на массивах и ручками сделать

    https://altinity.com/blog/harnessing-the-power-of-clickhouse-arrays-part-2

    Тк вам нужна именно последовательная комбинация из двух (?1)(?2) событий без каких либо событий между ними.
    Harnessing the Power of ClickHouse Arrays - Part 2

    ClickHouse arrays combine neatly with GROUP BY aggregation. We show how arrays track sequences and offer one way to do funnel analysis.

  • никак не могу уяснить, как high order functions пользоваться в ch, тоже уже смотрю этот подход. есть какая-то дока для тупых, где разжёвано как с array* функциями жить?
  • https://t.me/clickhouse_ru
    https://habr.com/ru/post/515606/
    и чуть чуть
    https://altinity.com/blog/harnessing-the-power-of-clickhouse-arrays-part-3

    Ну и банально сама дока кх
    Clickhouse — оконные функции, которых нет…

    Работу с колоночными базами данных я начал с BigQuery. Когда пришлось “переехать” на Clickhouse я был неприятно удивлен фактом отсутствия полноценных оконных фун...

  • спасибо, буду пытаться
  • https://t.me/clickhouse_ru
    WITH
    groupArray(eventType) AS event_arr,
    groupArray(EventTime) AS time_arr
    SELECT
    userID,
    arrayFirst((x, y, z) -> ((y = 'A') AND (z = 'B')), time_arr, event_arr, arrayPushBack(arrayPopFront(event_arr), cast('A', 'Enum8(\'A\' = 1, \'B\' = 2)'))) AS x
    FROM
    (
    SELECT
    userID,
    eventType,
    EventTime
    FROM test.funnel
    WHERE (Age > 30) AND (eventType IN ('A', 'B'))
    ORDER BY
    userID ASC,
    EventTime ASC
    )
    GROUP BY userID

    Я бы что то такое написал, там правда нужно отфильтровать нули
  • @ogavrilov #199379 01:17 PM, 13 Jan 2021
    Что за магия в arrayFirst?) но спасибо, проверю
  • @reflechant #199380 01:21 PM, 13 Jan 2021
    Если есть вот такой запрос:
    SELECT
    id,
    sumIf(1, event_type="event_1") AS event_1,
    sumIf(1, event_type="event_2") AS event_2,
    sumIf(1, event_type="event_3") AS event_3,
    и т.д.
    Это же можно переделать через groupArray?
  • https://t.me/clickhouse_ru
    @unamedrus #199381 01:21 PM, 13 Jan 2021
    Беру три массива
    массив таймстампов
    массив евентов
    массив эвентов с сдвигом на 1 элемент вперед
    И достаю первый таймстап который отвечает буквально последовательности из эвентов A и B
  • https://t.me/clickhouse_ru
    @unamedrus #199382 01:24 PM, 13 Jan 2021
    SELECT id, sumForEach([event_type="event_1", event_type="event_2", event_type="event_3"]) в целом можно так

    Либо можно через sumMap([event_type],[1]);
    Но вообще с -If были небольшие проблемы с перфомансом по сравнению с sum(If)
    https://github.com/ClickHouse/ClickHouse/pull/17041
    Rewrite `sum(if())` and `sumIf` to `countIf` in special cases by ucasFL · Pull Request #17041 · ClickHouse/ClickHouse

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

  • результат странный, +------+----------+
    |userID|x |
    +------+----------+
    |4 |1970-01-01|
    |2 |1970-01-01|
    |1 |2001-01-01|
    +------+----------+
  • @ogavrilov #199384 01:30 PM, 13 Jan 2021
    а, нули
  • @ogavrilov #199385 01:30 PM, 13 Jan 2021
    понял
  • https://t.me/clickhouse_ru
    Они самые, ага
  • @406442199 #199387 01:55 PM, 13 Jan 2021
    Joined.
  • ПРивет. вышло решить?
  • show users;

    SHOW USERS

    ┌─name─────┐
    │ default │
    │ mtest │
    │ ptest │
    └──────────┘

    3 rows in set. Elapsed: 0.002 sec.
  • 【D】【J】 in ClickHouse не тормозит

    show users; SHOW USERS ┌─name ─────┐ │ default │ │ mtest │ │ ptest │ └──────────┘ 3 rows in set. Elapsed: 0.002 sec.

  • @dj_mixer #199391 01:59 PM, 13 Jan 2021
    GRANT SHOW USERS ON *.* если не под дефолтом
  • в той версии не было еще этой команды
  • https://t.me/clickhouse_ru
    по дизайну предполается 1-2 апдейта в год. Не шучу
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #199394 #199395 02:25 PM, 13 Jan 2021
    если будут идти частые заменяющие инсёрты в ReplacingMergeTree -- оно так же ляжет от мержей?
  • https://t.me/clickhouse_ru
    @OrNixx #199396 02:26 PM, 13 Jan 2021
    кейс такой, что первый час данные могут обновляться, а дальше их уже никто не трогает
  • https://t.me/clickhouse_ru
    нет, ну не все так просто. Вообще КХ просто для иммютебл данных. Вы что пытаетесь проапдейтить? Какой-то атрибут?
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #199397 #199399 02:27 PM, 13 Jan 2021
    инсёртится лог звонков. потом в течение часа у строки могут обновиться некоторые поля, выборка по стринг-полю uniqueId
  • https://t.me/clickhouse_ru
    ну копите данные в кассандре, обновляйте, а через час заливайте в КХ
  • https://t.me/clickhouse_ru
    @OrNixx #199401 02:28 PM, 13 Jan 2021
    сейчас мускуль, но строк 400млн, и ему тяжко. План-Б такой, да. заливать прошлый час в КХ, если с Replacing не выйдет
  • https://t.me/clickhouse_ru
    почему 20.1.2.4 ? есть например 20.1.16.120 ?

    кавычки там скорее всего не нужны %27
    это для баша они нужны
  • https://t.me/clickhouse_ru
    т.е. разница в том как создается engine=Log , одним блоком или несколькими.
    Откуда берутся эти engine=Log ? каким запросом?
  • https://t.me/clickhouse_ru
    create ttt as prototype_table
    engine=Log

    потом шелл
    zcat file | clickhouse-client -q"insert into ttt format CSV"
  • @ramun25 #199405 02:40 PM, 13 Jan 2021
    какие есть параметры конфига клиента? столкнулся, что поле datetime64 он сначала выбирает по длине строки (а не по разделителю), потом пытается его парсить по символам разделяющие разряды даты, а только потом берет что написано. у меня это выражается следующим образом: для пустых дат мы пишем 0, если в следующем поле после 0(тип datetime64) стоит отрицательное число, то загрузка падает на парсинге даты. если положительное, то грузится. если вместо 0 писать 0000-00-00 00:00:00.00000, то грузится и с отрицательными числами. это настройками как-нить можно поправить?
  • https://t.me/clickhouse_ru
    ну например так --max_insert_block_size=10000 --input_format_parallel_parsing=0
    zcat file | clickhouse-client --max_insert_block_size=10000 --input_format_parallel_parsing=0 -q"insert into ttt format CSV"
  • https://t.me/clickhouse_ru
    спасибо, пробую
    на последующий ЕТЛ-ьный запрос к этой таблице насильно какие-то сеттинги надо добавлять? или само должно понять?
  • https://t.me/clickhouse_ru
    @sinefabula #199408 02:52 PM, 13 Jan 2021
    Добрый вечер! Читал документацию, но не нашёл ответ на свой вопрос: можно ли как-то в КХ добавить свой метод сжатия столбцов?
  • не трогая код, нет. Чем же вас текущие не устроили? там комбинаций компрессий с энкодингами выше крыши же
  • https://t.me/clickhouse_ru
    @sinefabula #199410 03:04 PM, 13 Jan 2021
    Надеюсь что не понадобятся, это ещё будем изучать :) просто заранее пытаюсь выяснить, сложно ли это сделать, потому что есть хороший алгоритм сжатия массивов для нашего случая
  • https://t.me/clickhouse_ru
    тредов стадо больше (~6)
    но к скорости последующей выборки плюсануло не так сильно, как я надеялся

    [hostname] 2021.01.13 15:01:57.683883 [ 2607564 ] {f1e730ce-c8f9-429c-a8b5-d957fdc1f27f} <Information> executeQuery: Read 1624753 rows, 1.35 GiB in 28.547938887 sec., 56913 rows/sec., 48.38 MiB/sec.
    [hostname] 2021.01.13 15:01:57.684423 [ 2607564 ] {f1e730ce-c8f9-429c-a8b5-d957fdc1f27f} <Debug> MemoryTracker: Peak memory usage (for query): 3.32 GiB.
    получается что-то из дефолтных сеттингов решило вести себя иначе
    Спасибо @den_crane
  • https://t.me/clickhouse_ru
    например какой? я сомневаюсь что можно сжать лучше чем ZSDT3
  • https://t.me/clickhouse_ru
    ну сделайте тикет на гитхабе что регресия перфоманса, приложите статистику, было так, стало так
  • https://t.me/clickhouse_ru
    @dbalashov #199414 04:03 PM, 13 Jan 2021
    Когда-то я внедрял ClickHouse в стартапе, где даже алерты мониторили индийцы — это был Дикий Запад

    Однажды я работал дата-инженером в стартапе. Он быстро рос и в какой-то момент решился на покупку одной крупной компании. Там было больше сотни сотрудников — оказалось, почти все из Индии. Пока...

  • https://t.me/clickhouse_ru
    Подниму
  • https://t.me/clickhouse_ru
    @ImIvanco #199416 04:12 PM, 13 Jan 2021
    добрый день. подскажите пожалуйста как это реализуется, на каких технологиях.
    Есть клиентские приложения которые в случайные промежутки времени отправляют данные( сложный JSON) на сервер.
    запросы от клиентов приходят в виде 1 объект в случайный промежуток времени.
    момент вставки в БД предполагается определять так: "когда накопилось 10 тыс. объектов - вставь в КХ".
    как и с помощью чего реализуют подобную логику ? in-memory БД а-ля Redis?
  • https://t.me/clickhouse_ru
    @nyoroon #199417 04:12 PM, 13 Jan 2021
    можно в очередь складывать и потом оттуда большими кусками выгребать
  • https://t.me/clickhouse_ru
    @serjnarbut #199418 04:14 PM, 13 Jan 2021
    а этот сложный json вам нужно парсить предварительно?
  • https://t.me/clickhouse_ru
    @nyoroon #199419 04:14 PM, 13 Jan 2021
    (редис тоже как очередь можно использовать)
  • https://t.me/clickhouse_ru
    @serjnarbut #199420 04:15 PM, 13 Jan 2021
    так-то в кх есть буфферные таблицы, и там как раз можно настроить флаш в целевую таблицу по условию "накопилось 10к элементов"
  • https://t.me/clickhouse_ru
    Очередь, может - ивент стрим (от Кафки до Флинка - смотря какой кейс) - все зависит от объема данных, ресурсов, сценариев предобработки и того, можете ли вы эти данные потерять или нет ( Редис вот не персистентый)
  • https://t.me/clickhouse_ru
    нет . можно сформировать на клиенте готовый json для вставки в КХ(там есть какой то упрощенный формат).
    буферные таблицы - посмотрю , спасибо.
    а на REDIS можно такие условия писать типа "если объектов больше N тогда" - сложи все в БД?
  • https://t.me/clickhouse_ru
    @resuba #199423 04:22 PM, 13 Jan 2021
    День добрый, есть таблица
    create table copy ( ... ) ENGINE = MergeTree ...
    есть материализованная вью
    CREATE MATERIALIZED VIEW original TO copy ...
    У неё движок не указывается

    Я не нахожу описания работы TO (https://clickhouse.tech/docs/en/engines/table-engines/special/materializedview/), в чём отличие от просто материализованной вью без TO, которая не будет никуда копировать (кроме того, что не будет наполняться ещё одна таблица)?
    MaterializedView | ClickHouse Documentation

    MaterializedView Table Engine Used for implementing materialized views (for more information, see CREATE VIEW). For stor

  • https://t.me/clickhouse_ru
    с этими технологиями знаком только в общих чертах.
    объем в 10000 вставок может накопится в среднем за часов пусть 5-7.
    предобработку можно не делать , т.е. настроить на клиенте.
    данные терять - нет.
    может есть под рукой статья или материал какой то с примером как это реализовано на одной из указанных технологий?
    я так понимаю для КХ это типовая довольно задача или у всех данные сперва в OLTP БД падают?)
  • https://t.me/clickhouse_ru
    ну если так мало вставок, можно сразу в кх вставлять и не мучаться
  • https://t.me/clickhouse_ru
    единичными по пару кб и пофиг?)
  • https://t.me/clickhouse_ru
    @nyoroon #199428 04:31 PM, 13 Jan 2021
    ну они же не 100 рпс в секунду
  • https://t.me/clickhouse_ru
    @nyoroon #199429 04:31 PM, 13 Jan 2021
    или так тоже бывает?
  • https://t.me/clickhouse_ru
    @dbalashov #199430 04:32 PM, 13 Jan 2021
    у нас вообще одно время собирались метрики с софта вебсервисом и писались в json-файлы (немного, по тыще в час от силы), а раз в 10 минут приходил обработчик, парсил, пачкой вставлял в CH и удалял обработанные файлы
  • https://t.me/clickhouse_ru
    неа. ну 100 в минуту максимум. время прихода рандомное, варьируется в некоторых пределах.
  • Возьмите clickhouse-bulk
  • @ogavrilov #199433 04:33 PM, 13 Jan 2021
    И просто вставляйте через него
  • https://t.me/clickhouse_ru
    @deniszh #199434 04:34 PM, 13 Jan 2021
    Заранее извиняюсь за тупой вопрос, но может кто подкажет почему не работает задание партиции через выражение? Пытаюсь сделать как в документации - "ALTER TABLE default.t1 DROP PARTITION toYYYYMM(now() - INTERVAL 3 month)" - получаю "Syntax error: failed at position 79 (end of query): Expected one of: LIKE, GLOBAL NOT IN, IS, OR, QuestionMark, BETWEEN, NOT LIKE, AND, IN, ILIKE, NOT ILIKE, NOT, token, NOT IN, GLOBAL IN"
  • @uname91 #199435 04:35 PM, 13 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @deniszh #199436 04:35 PM, 13 Jan 2021
    талица PARTITION BY toYYYYMM(Date)
  • https://t.me/clickhouse_ru
    @deniszh #199437 04:35 PM, 13 Jan 2021
    CH 20.6.8.5
  • https://t.me/clickhouse_ru
    так то понятно). а потом что сделали?
  • https://t.me/clickhouse_ru
    спасибо, посмотрю
  • https://t.me/clickhouse_ru
    перешли на prometheus и графану :)
  • https://t.me/clickhouse_ru
    @dbalashov #199441 04:37 PM, 13 Jan 2021
    там изменился подход и количество метрик
  • https://t.me/clickhouse_ru
    Это 30 инсертов в секунду, мелочь, можете не парится
  • https://t.me/clickhouse_ru
    @dbalashov #199443 04:38 PM, 13 Jan 2021
    но вышеуказаный подход работал как часы года два
  • https://t.me/clickhouse_ru
    Можете взять буффер кх в добавок, если диск такой слабый итд
  • https://t.me/clickhouse_ru
    @artcorp96 #199445 04:39 PM, 13 Jan 2021
    Но я бы даже не парился на счет такой мелочи, как 30 вставок в секунду
  • https://t.me/clickhouse_ru
    а как же рекомендации в доке КХ?) я вот начитался теперь тут вроде как дурацкие вопросы задаю..
  • https://t.me/clickhouse_ru
    Какие ?
  • https://t.me/clickhouse_ru
    вставлять данные большими пачками.
  • https://t.me/clickhouse_ru
    1. Это не про вас, у вас таких данных тупо нет
    2. Я же написал, если хотите вариант по лучше берете буффер кх
  • https://t.me/clickhouse_ru
    @artcorp96 #199450 04:41 PM, 13 Jan 2021
    Но я бы просто забил
  • https://t.me/clickhouse_ru
    забить это то могем. спасибо всем за советы.
  • https://t.me/clickhouse_ru
    @nyoroon #199452 04:44 PM, 13 Jan 2021
    буффер не очень надёжен, он до вставки в таблицу просто в памяти хранит данные
  • https://t.me/clickhouse_ru
    Велком, когда данных станет больше, просто буффер цепляете и все, а когда будет не хватать, можете уже аля брокер подцепить типо кафки и читать с нее через кафка энджин
  • https://t.me/clickhouse_ru
    Ну тут зависит от требований системы, конечно есть шанс потерять данные, если это баковские данные или баланс то да, буффер не советую
  • https://t.me/clickhouse_ru
    @artcorp96 #199455 04:46 PM, 13 Jan 2021
    Но обычно, раз в год потерять 10 записей, не критично
  • https://t.me/clickhouse_ru
    @artcorp96 #199456 04:46 PM, 13 Jan 2021
    А если критично, берете кафку и вперед
  • https://t.me/clickhouse_ru
    @ImIvanco #199457 04:48 PM, 13 Jan 2021
    все спасибо вопрос закрыт) пойду изучать,
    логика пока такая "забить" - "если плохо" - "буфер" - "если плохо" - серъезные технологии.
  • https://t.me/clickhouse_ru
    Отвечаю сам себе. 🙂 Это потому что https://github.com/ClickHouse/ClickHouse/issues/10212 - обернуть все в tuple() помогает.
    Drop partition with partition expression is broken · Issue #10212 · ClickHouse/ClickHouse

    Describe the bug When I use partition expression instead of string I get a syntax error. Since upgrade from version 19.13 to 20.3.5.21. How to reproduce DROP TABLE IF EXISTS test1; CREATE TABLE IF ...

  • https://t.me/clickhouse_ru
    @bralbral #199459 05:11 PM, 13 Jan 2021
    Добрый вечер. Есть 2 кластера в разных сетях. В первом случае 6 машин, в другом 5. Так вот, нужно перетащить данные из 1 кластера во второй. Хотел через freeze переносить партиции, но смущает, что количество серверов не сходится во втором случае, и одна окажется лишней ( равномерно не получится перетащить ) . Но выходит, что придется выгружать в файлы и опять потом заносить. Что можете посоветовать ?
  • https://t.me/clickhouse_ru
    это ща так спайс рекламируют?)
  • "insert - select" или сети совсем не видят друг друга?
  • https://t.me/clickhouse_ru
    1) такую админы поставили. Попробовал локально на сборке из master - таже ошибка.
    Логи сервера:
    <Fatal> : Logical error: 'There is no checkpoint'.

    2) кавычки нужны, без них ошибка
    Code: 62. DB::Exception: Syntax error: failed at position 87: CSV, format_custom_field_delimiter = '^'. Expected one of: NULL, number, string literal, literal
  • https://t.me/clickhouse_ru
    Совсем, через флешку переносить
  • https://t.me/clickhouse_ru
    И его в том числе, звоните.
  • https://t.me/clickhouse_ru
    @ktifor #199465 05:26 PM, 13 Jan 2021
    Joined.
  • если таблиц мало, экспортируйте через Format Native дампы и переносите и вставляйте... можно и через фриз - и раскидать 6-й шард раунд робином...
  • https://t.me/clickhouse_ru
    Ну да, только вот это на постоянной основе нужно делать 😁. И постоянно заносить последнюю партицию через дистрибьютед не очень получается
  • Тогда лучше дамп через format native и вставка в distributed
  • https://t.me/clickhouse_ru
    Благодарю
  • https://t.me/clickhouse_ru
    @devzenno #199470 06:08 PM, 13 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @devzenno #199471 06:10 PM, 13 Jan 2021
    Здравствуйте, подскажите, пожалуйста, по структуре БД в кликхаусе - есть достаточно простая структура данных:

    {дата}, {строка1}, {строка2}, {…} , {строка 11}

    Выборка будет производится в основном с учетом полей «дата», «строка1» и подстроки из «строка2».

    Возможны также перекрестные запросы с участием практически всех полей.

    Есть ещё один момент – поле «строка1» имеет ограниченное количество вариантов, 15 млн., если точнее. Потом оно повторяется, даты и остальные строки при этом разные.

    Насколько правильным будет залить всё это счастье просто в одну таблицу? Или, возможно, есть какие-то другие варианты, более оптимальные?
  • https://t.me/clickhouse_ru
    @desyatkin #199472 06:40 PM, 13 Jan 2021
    vagrant.vm 🙂 select * from devices2;

    SELECT *
    FROM devices2

    Query id: c8f873e5-605b-4d29-b880-3c9bbc590f0d

    ┌─id─┬─name────┐
    │ 1 │ Desktop │
    │ 2 │ Phone │
    │ 3 │ Tablet │
    │ 4 │ TV │
    └────┴─────────┘

    4 rows in set. Elapsed: 0.002 sec.

    vagrant.vm 🙂 select dictHas('devices2' , toUInt64(1));

    SELECT dictHas('devices2', toUInt64(1))

    Query id: eceaf74c-af32-4c68-a16a-cc03fc89cbaf

    Received exception from server (version 20.12.5):
    Code: 36. DB::Exception: Received from localhost:9000. DB::Exception: external dictionary 'devices2' not found: While processing dictHas('devices2', toUInt64(1)).

    0 rows in set. Elapsed: 0.002 sec.

    Подскажите пожалуйста, что я делаю не так. Внешний словарь, с подключеничем через odbc в postgresql, загрузился, выборка по нему работает. А когда я пытаюсь использовать его в запросе, говорит, что его нет..
  • https://t.me/clickhouse_ru
    @Sarcasticat #199473 06:43 PM, 13 Jan 2021
    И еще вопрос:
    даже если я успокоюсь и буду использовать WITH FILL для заполнения пустот - как заполнять пустоты помесячно? Там во-первых STEP в секундах/днях, а во-вторых вообще какая-то непонятная хрень происходит
    SELECT
    count(*) AS cnt,
    toStartOfInterval(time, toIntervalMonth(1)) AS period
    FROM metrics
    WHERE (toDateTime(time) >= '2020-09-01 00:00:00') AND (toDateTime(time) <= '2021-02-31 23:59:59') AND (event = 'radio_play')
    GROUP BY period
    ORDER BY period ASC WITH FILL FROM toDateTime('2020-09-01 00:00:00') TO toDateTime('2021-02-31 23:59:59') STEP 2592000

    ┌──cnt─┬─────period─┐
    │ 1543 │ 2020-12-01 │
    │ 3094 │ 2021-01-01 │
    └──────┴────────────┘
    ┌─cnt─┬─────period─┐
    │ 0 │ 2040-08-29 │
    │ 0 │ 2106-02-07 │
    │ 0 │ 2058-11-19 │
    │ 0 │ 1978-04-13 │
    │ 0 │ 2077-02-08 │
    │ 0 │ 1996-07-03 │
    │ 0 │ 2095-05-01 │
    └─────┴────────────┘
  • имхо, очень правильно будет залить все в одну таблицу, пускай повторяются на здоровье
  • https://t.me/clickhouse_ru
    ну это тренировочный пример) я просто пытаюсь разобраться с кх для начала
  • select dictHas('dbname.devices2' , toUInt64(1));
  • https://t.me/clickhouse_ru
    🙏
  • https://t.me/clickhouse_ru
    @TheBestUser #199478 07:18 PM, 13 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    плиз, хелп) только первые шаги делаем в клике, не хотелось бы ступить в самом начале
  • https://t.me/clickhouse_ru
    или вот это мне ответили?)
  • да, это было вам, перепутал.
    лейте в одну таблицу.
    можете даже попробовать lowcardinality на колонке где строки повторяются если они прямо много раз повторяются (15 млн уников на 15 млрд строк например)
  • https://t.me/clickhouse_ru
    В целом нормально, если есть некая локальность значений можно поле строка1 даже в lowCardinality обернуть
  • https://t.me/clickhouse_ru
    @devzenno #199483 07:35 PM, 13 Jan 2021
    о, благодарствую за ответы! А то заливать почти 6ТБ данных, не хотелось бы потом перезаливать заново...
  • https://t.me/clickhouse_ru
    @igor_trof #199484 09:04 PM, 13 Jan 2021
    Добрый вечер, не подскажите возможно ли выделить больше ресурсов на операции Преобразования типов? Ситуация следущая есть объемный топик, на него смотрит mv и соотвественно скидывает в табличку, если в mv не преобразовывать string в datetime например, то лаг не накапливаться, как только прикручиваю преобразования, то начинает копиться лаг :(
  • https://t.me/clickhouse_ru
    да ну, не верю. Дело скорее не в этом
    и сколько миллиардов записей в секунду?
  • https://t.me/clickhouse_ru
    @igor_trof #199486 09:07 PM, 13 Jan 2021
    500 mbs 310к eps
  • https://t.me/clickhouse_ru
    и сколько параметр consumers.. у kafka?
  • https://t.me/clickhouse_ru
    24 ноды по 3 консьюмера
  • https://t.me/clickhouse_ru
    что? какие ноды? вы о чем вообще?

    у kafka engine что в
    kafka_num_consumers
    kafka_thread_per_consumer
  • https://t.me/clickhouse_ru
    По пропускной способности, рекомендации с гитхаба, выставлены
  • https://t.me/clickhouse_ru
    ну и сколько? что там у вас?
  • https://t.me/clickhouse_ru
    @den_crane #199492 09:11 PM, 13 Jan 2021
    вам надо распалеллить обработку
  • https://t.me/clickhouse_ru
    72 партиции на топике, считываю 24 нодами(серверами в кластере , по 3 консьюмера на каждой, пихаю в mergetree таблицу без репликации
  • https://t.me/clickhouse_ru
    @den_crane #199494 09:11 PM, 13 Jan 2021
    ставьте
    kafka_num_consumers=10
    kafka_thread_per_consumer=1
  • https://t.me/clickhouse_ru
    Thread не пробовал менять, завтра затестирую
  • https://t.me/clickhouse_ru
    без него все 10 консьюмеров будут в 1 CPU
  • https://t.me/clickhouse_ru
    @den_crane #199497 09:16 PM, 13 Jan 2021
    короче

    в профиль пользователя default background_processing_pool_thread=30

    в кафка таблицу kafka_num_consumers=10 kafka_thread_per_consumer=1
  • https://t.me/clickhouse_ru
    Попробую, background_processing_pool стоит и так уже 32, попробую thread_per_consumer добавить должно помочь
  • при вставке КХ-клиентом очень большого куска (чтоб партов меньше было) с формат TabSeparated КХ сервер отвалился с ошибкой по памяти.
    DB::Exception: Memory limit (total) exceeded: would use 57.01 GiB (attempt to allocate chunk of 4295098416 bytes), maximum: 56.92 GiB (version 20.8.9.6 (official build))

    кусок весь должен помещаться в память? или это тоже "плохой" инсерт?
  • https://t.me/clickhouse_ru
    >кусок весь должен помещаться в память
    да должен, сортируется в памяти, потом пишется на диск
  • ок, спасибо
  • https://t.me/clickhouse_ru
    @resuba #199502 10:12 PM, 13 Jan 2021
    Доброй ночи, а как можно сделать, чтобы если материализованная вью не сумела отработать на вставленном куске данных, то она не вернул ошибку, а просто забил на вставленный кусок?
  • https://t.me/clickhouse_ru
    нельзя, не реализована такая фича
  • https://t.me/clickhouse_ru
    так max( ) не оптимизирован в отличии от order by и не использует индекс/сортировку таблицы
  • https://t.me/clickhouse_ru
    теперь надо в tuple обернуть
    ALTER TABLE default.t1 DROP PARTITION tuple(toYYYYMM(now() - INTERVAL 3 month))
  • https://t.me/clickhouse_ru
    ага, спасибо, разобрался
  • https://t.me/clickhouse_ru
    @den_crane #199507 10:51 PM, 13 Jan 2021
    допишу-ка я это в доку
  • @Proker #199508 11:32 PM, 13 Jan 2021
    Joined.
  • 14 January 2021 (63 messages)
  • @vartelegram #199509 12:30 AM, 14 Jan 2021
    Joined.
  • @1214459504 #199510 02:08 AM, 14 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @ermilov1988 #199511 07:46 AM, 14 Jan 2021
    Joined.
  • @1574998704 #199512 07:46 AM, 14 Jan 2021
    Joined.
  • @1582608111 #199513 07:47 AM, 14 Jan 2021
    Joined.
  • @1582608111 #199514 07:48 AM, 14 Jan 2021
    Hi all
  • @1582608111 #199515 07:49 AM, 14 Jan 2021
    How do clickhouse free up Ram for linux when finish a query?
  • спасибо!
  • @GrouthHacker #199517 08:17 AM, 14 Jan 2021
    Подскажите, это баг или фича:
    Создаем таблицу Т SummingMergeTree, к ней MATERIALIZED VIEW с селектом из таблицы А.
    Создаем таблицу Т2 SummingMergeTree с такимже МВ и селектом из А.

    При обращении к таблицам Т и Т2 получаем разные результаты при использовании выборок.
    Единственное отличие Т от Т2 — при создании Т в ORDER BY были перечислены все столбцы. В Т2 только основные.
  • @egorrrx #199518 08:17 AM, 14 Jan 2021
    Joined.
  • А где задаются значения по умолчанию на всю базу?
  • https://t.me/clickhouse_ru
    Case when 'January' then ... ,
    Case when 'February' then ...
    итд
  • @QValD #199522 10:10 AM, 14 Jan 2021
    Joined.
  • @QValD #199524 10:17 AM, 14 Jan 2021
    добрый день, коллеги. Есть вопрос: есть таблица, в которую в разрезе таймстэмпов из кафки прилетают параметры (каждый параметр = столбец), как-то так:
  • @QValD #199525 10:18 AM, 14 Jan 2021
    что можно сделать, чтобы в итоге в пустые ячейки писались предыдущие значения? как-то так:
  • https://t.me/clickhouse_ru
    Средствами ch никак:
    1. Kafka engine это не знает
    2. Mv берет эвенты кусками каждые 7.5 секунд, то есть даже если написать neighbor, в первом эвенте куска поле param2 всегда будет пустое

    можно попробовать сделать в схеме target таблицы param2 MATERIALIZED neighbor(param1, -1), но я не уверен, что это будет работать и проблема скорее всего перетечет на границу партов

    лучше вообще так не делать в ch, какую проблему решаете?
  • @QValD ↶ Reply to #199527 #199528 10:45 AM, 14 Jan 2021
    Аналитику намного удобнее строить по такой таблице, когда есть состояние параметров на определённый момент времени
  • https://t.me/clickhouse_ru
    @TigProg #199529 10:46 AM, 14 Jan 2021
    Я кстати неправильно понял, там не neighbor(param1, - 1)
  • https://t.me/clickhouse_ru
    Так у вас не эвенты, а состояния
    Мб сделать словарь или вообще делать не на ch, а на oltp?
    UPD я имею в виду, что вы хотите состояние, но не передаете его в следующих сообщениях в Kafka
  • @iBubnov #199531 10:57 AM, 14 Jan 2021
    Добрый день. А подскажите, на что надо ориентироваться при принятии решения, какой ключ партиционирования нужно указывать при создании таблицы
    engine = MergeTree PARTITION BY date -- вот тут дата у меня по дням, но например result_type уникальных данных куда меньше. или например q_id уникальный данных тоже меньше чем уникальных date, однако result_type еще меньше.
    ORDER BY (date, result_type, q_id, f_id, r_id)

    По документации пока трудновато понять, что именно надо использовать. Может как-то тут все проще можно объяснить?
  • @QValD ↶ Reply to #199530 #199532 11:00 AM, 14 Jan 2021
    вот чтобы не делать предпроцессор, который заполняет предыдущие состояния, предположил, что можно сделать средствами ch
  • https://t.me/clickhouse_ru
    @kozlov_alpha #199533 11:02 AM, 14 Jan 2021
    Joined.
  • Ksql может поможет?
  • @ogavrilov #199535 11:04 AM, 14 Jan 2021
    Раз уже кафка есть
  • https://t.me/clickhouse_ru
    @kozlov_alpha #199536 11:28 AM, 14 Jan 2021
    подскажите правильный путь решения
    есть исходный постгрес , из которого нужно брать данные для агрегатов и справочники

    как правильнее/производительнее/надежней ?

    работать с ПГ к которому присоединены таблицы КХ
    или
    работать с КХ к которому присоединены таблицы ПГ
    и каким образом?

    из того что нашел это
    clickhousedb_fdw и clickhouse-jdbc-bridge

    но что-то оба варианта не впечатлили
  • https://t.me/clickhouse_ru
    @martem #199537 11:29 AM, 14 Jan 2021
    Joined.
  • @GrouthHacker #199538 11:38 AM, 14 Jan 2021
    Коллеги, подскажите, в чем разница при подсчтете уников в MV через

    ... uniqIfState
    ... uniqStateIf
    какой из вариантов оптимальнее?
  • https://t.me/clickhouse_ru
    uniqStateIf
    Этот, сначала отфильтровываем и только потом считаем стейт
  • если вам нужно будет удалять данные со временем по признаку времени, лучше partition by date.
    если иначе - много всяких если, нужно больше информации
  • Ну скажем так, основная задача этой таблицы, делать запросы в которых всегда будет такой селект Select ..., uniq(result_type), group by q_id
    И данных может быть ну например 1ккк+
  • вообще не делайте партиции тогда
  • А ORDER BY - это же посути индекс и его то уж точно надо и поидее в определенном порядке?
  • да, в зависимости от запросов и данных (может хорошо влиять на сжатие)

    если только груп бай без where - то он тоже не особо нужен, можно только сжатие улучшить используя хороший order by
  • Правильно ли я понимаю, что как раз эта таблица показывает как работает OrDER BY?
  • да
  • Спасибо, а нет ли способов понять, правильно ли я построил индекс для запроса? типа как в постгре explain какой-то сделать
  • https://t.me/clickhouse_ru
    @ilevd #199548 01:52 PM, 14 Jan 2021
    А никто не сталкивался со случаем работы с jdbc, что значения Tuple-а возвращается как строка?
  • https://t.me/clickhouse_ru
    есть в OLAP понятия размерности(дименшины) и метрики, грубо говоря:

    select sum() - метрика
    count() - метрика
    country - размерность
    city - размерность
    group by country, city

    так вот, все что перечислено в summingMT в order by -- это размерности
    все что не перечислено -- это метрики

    если у метрики числовой тип, то summingMT их скалдывает
    если у метрики нечисловой тип, то summingMT берет любое значение ANY()
  • https://t.me/clickhouse_ru
    в профиле default
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    если вы не знаете какой как партиционировать таблицу, партиционируйте по месяцам. toYYYYMM
  • https://t.me/clickhouse_ru
    @menshikova_ad #199553 02:00 PM, 14 Jan 2021
    Joined.
  • @alexbasharin #199554 02:00 PM, 14 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    какой индекс? skip ?
  • @v3ktor_1 #199556 02:12 PM, 14 Jan 2021
    Привет

    ребят, есть такой запрос

    SELECT * FROM keyword_statistic WHERE search_date='2020-01-01' ORDER BY search_date LIMIT 1000, 1000

    но все время разные отрезки попадают, там на дату 500 тысяч строк инфы..., т/е/ все время результат как будто рандомный возвращает

    как сделать чтоб оно всегда срезало мертво как в мускуле? от числа и не было рандомной выборки
  • @v3ktor_1 #199557 02:16 PM, 14 Jan 2021
    а то мне нужно часть данных обратно в мускул перелить....)
  • https://t.me/clickhouse_ru
    WHERE search_date='2020-01-01' ORDER BY search_date

    так а секунд нету?
  • @v3ktor_1 #199559 02:16 PM, 14 Jan 2021
    секунд нет
  • https://t.me/clickhouse_ru
    а зачем LIMIT 1000, 1000
    лейте в файл без лимита format CSV и потом в mysql загрузите как csv
  • благодарю
  • @QValD ↶ Reply to #199551 #199562 02:30 PM, 14 Jan 2021
    Благодарю, поизучаю
  • https://t.me/clickhouse_ru
    @ievgenpro #199563 02:30 PM, 14 Jan 2021
    подскажите пожалуйста, кто работал с питоновским клиентом для кликхауса, когда в одном приложении делаю запросы в несколько потоков на запись в одну таблицу получаю что то вроде этого

    Error on database:9000 ping: Unexpected EOF while reading bytes
    Error on database:9000 ping: [Errno 9] Bad file descriptor
    Error on database:9000 ping: [Errno 9] Bad file descriptor
    EXCEPTION! Code: 100. Unknown packet 4 from server database:9000
    clickhouse_driver.errors.UnknownPacketFromServerError: Code: 100. Unknown packet 4 from server database:9000
  • https://t.me/clickhouse_ru
    @tshev ↶ Reply to #199563 #199564 02:55 PM, 14 Jan 2021
    Создайте по клиенту на ядро.
  • https://t.me/clickhouse_ru
    @ievgenpro #199565 02:55 PM, 14 Jan 2021
    Ага. так и подумал. спасибо
  • Это же в user.xml? А где-нибудь есть описание, какие ключи писать?
  • запустите с set send_logs_level='trace' там много полезного. explain подвезли недавно, но он не для новичков
  • Понял, спасибо
  • https://t.me/clickhouse_ru
    @glader_ru #199569 04:12 PM, 14 Jan 2021
    Добрый день. Может кто сталкивался. Беру файл с 10млн записей в формате ORC. Выполняю запрос insert into <table> select * from file('<filename>', ORC, '<fields>'). Запрос работает очень долго (уже больше часа) и пишет, что вставил 700 млн строк. В самой таблице почти сразу появилось 10 млн и не меняется. В чем может быть проблема?
    (точно такой же по составу файл, но parquet, заливает сразу)
  • https://t.me/clickhouse_ru
    выглядит как повод для issue на github

    а если строк меньше чем 10 миллионов?
  • @469513194 #199571 07:00 PM, 14 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    Аналогично.
  • 15 January 2021 (71 messages)
  • @957807795 #199573 05:16 AM, 15 Jan 2021
    while connecting tableau with clickhouse we are getting below error
    [unixODBC][Driver Manager]Can't open lib '/usr/local/lib/libclickhouseodbc.so' : file not found
    Generic ODBC requires additional configuration. The driver and DSN (data source name) must be installed and configured to match the connection.
    Unable to connect using the DSN named "ANANTH DB". Check that the DSN exists and is a valid connection.
  • @957807795 #199574 05:16 AM, 15 Jan 2021
    Releases · ClickHouse/clickhouse-odbc

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

  • https://t.me/clickhouse_ru
    If you are sure that file exists and configuration is correct, try ldd comand. You can see this message when system can't find one of dependencies of .so file or it has wrong version.
  • @957807795 #199576 05:41 AM, 15 Jan 2021
    ldd comand
  • @957807795 #199577 05:41 AM, 15 Jan 2021
    clickhouse is installed using docker
  • https://t.me/clickhouse_ru
    @DenisZagitov #199578 06:18 AM, 15 Jan 2021
    Ребят, привет! Подскажите, пожалуйста, как скорректировать лимит выделенной памяти (10Гб по-умолчанию) на запрос?
  • https://t.me/clickhouse_ru
    @DenisZagitov #199579 06:19 AM, 15 Jan 2021
    Как я понял это max_memory_usage
  • https://t.me/clickhouse_ru
    @DenisZagitov #199580 06:20 AM, 15 Jan 2021
    Но не понимаю в каком блоке настроек его прописывать. Пробовал в <yandex></yandex> - не взлетело
  • https://t.me/clickhouse_ru
    You get error in tableau and install odbc driver on tableau server
  • @957807795 #199582 06:20 AM, 15 Jan 2021
    tableau server
  • https://t.me/clickhouse_ru
    @DenisZagitov #199583 06:21 AM, 15 Jan 2021
    <max_server_memory_usage>21474836480</max_server_memory_usage> ставил - тоже не помогает
  • https://t.me/clickhouse_ru
    @DenisZagitov #199584 06:21 AM, 15 Jan 2021
    это ведь значение в байтах надо указывать?
  • https://t.me/clickhouse_ru
    В users.xml
    yandex - profiles - <ваш профиль>
  • https://t.me/clickhouse_ru
    @DenisZagitov #199586 06:22 AM, 15 Jan 2021
    Спасибо, Антон, сейчас попробую
  • https://t.me/clickhouse_ru
    @li_bao #199587 08:36 AM, 15 Jan 2021
    Добрый день.
    Делаю create table t (Id Int64,Name String...) engine Join(ANY,INNER,Id)
    Затем select ... from a join t using id where t.Name in ('a','d','c')
    И получаю Table t (67628bd1-2522-4ada-a420-4c6269ed7526) has incompatible type of JOIN
    ЧЯДНТ?
  • https://t.me/clickhouse_ru
    @edyya ↶ Reply to #199583 #199588 08:36 AM, 15 Jan 2021
    Привет, Денис!

    можно еще ставить только при выполнении тяжелых запросов:
    SET max_memory_usage = 100000000000;
  • https://t.me/clickhouse_ru
    @f_mihail #199589 09:02 AM, 15 Jan 2021
    Добрый день. Как из этой строки в CH -[2,2,3,4,4,3,2] получить такую - 2,2,3,4,4,3,2
  • https://t.me/clickhouse_ru
    вопрос снимаю, спасибо
  • @spirid_sv #199592 09:46 AM, 15 Jan 2021
    С пятнице!) И пятничный вопрос )) insert into ssv.r values ('aaa\\\\bbb'), ('ccc\\dddd'), потом select count() from ssv.r where s like '%\\\\%': 2. Тогда. если следовать экранированию match, '%\\\\\\%' выведет 1. Но нет, вывод 0.
  • @spirid_sv #199593 09:47 AM, 15 Jan 2021
    Что-то запут у меня с экранированием обратного слеша..
  • @spirid_sv #199594 09:47 AM, 15 Jan 2021
    Как надо-то? ))
  • https://t.me/clickhouse_ru
    @OrNixx #199595 09:57 AM, 15 Jan 2021
    в КХ предусмотрен файл с кредентсами, типа как /root/.my.cnf ? не могу нагуглить
  • @mixamar #199596 09:58 AM, 15 Jan 2021
    ну так конфиг жеж
  • @mixamar #199597 09:58 AM, 15 Jan 2021
    ls /etc/clickhouse-server/
  • @mixamar #199598 09:59 AM, 15 Jan 2021
    users.xml
  • @mixamar #199599 09:59 AM, 15 Jan 2021
    или речь про авто-логин клиентом?
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #199599 #199600 09:59 AM, 15 Jan 2021
    да
  • https://t.me/clickhouse_ru
    @OrNixx #199601 09:59 AM, 15 Jan 2021
    чтобы в cli пароль не передавать
  • https://t.me/clickhouse_ru
    @peter_ll #199602 10:00 AM, 15 Jan 2021
    ll /etc/clickhouse-client/
    тогда)
  • https://t.me/clickhouse_ru
    @OrNixx #199603 10:00 AM, 15 Jan 2021
    нашёл, спс
  • https://t.me/clickhouse_ru
    @OrNixx #199604 10:01 AM, 15 Jan 2021
    ~/.clickhouse-client/config.xml
  • https://t.me/clickhouse_ru
    @peter_ll #199605 10:01 AM, 15 Jan 2021
    да, сорь, этот
  • like '%\\\\\\\\%' вот так... заэкранируй экран и символ слеша))
  • @serega_vitvitskiy #199607 11:01 AM, 15 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @347497971 #199608 11:46 AM, 15 Jan 2021
    Всем привет

    У меня возникла проблема - есть табличка которая читает из кафки, есть ее копия с MergeTree созданная для матвью, и есть матвью который с простым условием должен складывать данные в табличку.

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

    Из необычного когда создавался MergeTree то использовался старый синтаксис, а именно так :

    ...
    date Date MATERIALIZED toDate(Timestamp)
    ) ENGINE = MergeTree(date, date, 8192);
  • https://t.me/clickhouse_ru
    @petrpu #199609 11:57 AM, 15 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @stufently #199610 12:07 PM, 15 Jan 2021
    Есть интересная проблема, присуствует в таблице битый парт и кликлаус ругается что не может его смержить, а когда мытаюсь его детачнуть, то говорит что парт участвует в мерже

    2021.01.15 12:05:54.200281 [ 1142972 ] {} <Warning> default.events (ReplicatedMergeTreePartCheckThread): Checking data of part 20201130_20201130_499695_499707_2.
    2021.01.15 12:05:54.892738 [ 1142967 ] {} <Warning> default.events (ReplicatedMergeTreePartCheckThread): Checking part 20201130_20201130_499695_499707_2
    2021.01.15 12:05:54.897808 [ 1143453 ] {} <Error> default.events (8005f254-5c8e-45ed-9a03-8ba6d4b05bce): auto DB::StorageReplicatedMergeTree::processQueueEntry(ReplicatedMergeTreeQueue::SelectedEntryPtr)::(anonymous class)::operator()(DB::StorageReplicatedMergeTree::LogEntryPtr &) const: Code: 33, e.displayText() = DB::Exception: Cannot read all data. Bytes read: 15729662. Bytes expected: 268435455.: (while reading column BillingURL): (while reading from part /var/lib/clickhouse/store/800/8005f254-5c8e-45ed-9a03-8ba6d4b05bce/20201130_20201130_499695_499707_2/ from mark 14 with max_rows_to_read = 8192): While executing MergeTreeSequentialSource: Cannot fetch required block. Stream PipelineExecuting, part 2, Stack trace (when copying this message, always include the lines below):

    ALTER TABLE events
    DETACH PART '20201130_20201130_499695_499707_2'

    Query id: 55348067-6a11-40ea-83ae-235d5ffb4aaf

    Received exception from server (version 20.12.5):
    Code: 384. DB::Exception: Received from localhost:9000. DB::Exception: Part 20201130_20201130_499695_499707_2 is currently participating in a background operation (mutation/merge), try again later.
  • https://t.me/clickhouse_ru
    @Quantum_Cupcake #199611 12:07 PM, 15 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    ClickHouse Kafka Engine FAQ

    Kafka is a popular way to stream data into ClickHouse. ClickHouse has a built-in connector for this purpose -- the Kafka engine. This article collects typical questions that we get in our support cases regarding the Kafka engine usage. We hope that our recommendations will help to avoid common problems.

  • https://t.me/clickhouse_ru
    Спасибо, Эд)
  • @archangel37 #199614 12:30 PM, 15 Jan 2021
    всем привет! подскажите плиз, есть ли какой-то быстрый способ получить последнюю запись с условием?
    условно
    есть колонка, где есть значение - это значение всегда из определённого массива (допустим колонка color == одно из [red, green, blue])
    каким образом оптимально получить последнюю строку со значением в колонке color "red", к примеру?
  • https://t.me/clickhouse_ru
    Прочитал, спасибо

    И получается на некоторых версиях клика, предположительно на "старых" данные могут дублироваться?
  • https://t.me/clickhouse_ru
    на новых тоже в редких случаях,
    at least once пока только поддерживаетс
  • У вас кафка брокер стабильно работает? Кх нормально оффсеты коммитит?
  • https://t.me/clickhouse_ru
    Не знаю как ответить на вопрос.

    Сравниваем клик с куду, там из того же топика льется и дуплицирования нет
  • https://t.me/clickhouse_ru
    @devzenno #199620 02:13 PM, 15 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    может поможет
    system stop merges default.events
  • https://t.me/clickhouse_ru
    Проверю завтра
  • https://t.me/clickhouse_ru
    select

    where has( color, 'red')
    order by time desc
    limit 1
  • @archangel37 #199624 02:38 PM, 15 Jan 2021
    спасибо большое! а то я тут уже в подзапросы полез - селект в селекте...
  • @archangel37 #199625 02:40 PM, 15 Jan 2021
    через аггрегатные функции... натолкнуло - вот это https://altinity.com/blog/2020/4/14/handling-real-time-updates-in-clickhouse
  • https://t.me/clickhouse_ru
    @den_crane #199626 02:40 PM, 15 Jan 2021
    про кафку и дубликаты

    делаем poll1, poll2, poll3
    записываем в КХ,
    комитим оффсеты
    кафка отвечает, что был ребаланс и партиции эти уже не наши, и комит неудачный.
    и даже у нас есть ребаланс листенер, про ребаланс мы можем узнать только в момент poll, и надо успеть и узнать и среагировать за таймаут в 5 сек. , иначе ребаланс пройдет без нас.
  • https://t.me/clickhouse_ru
    Join(ANY,INNER,
    a join t

    Либо Join(ALL,INNER,
    либо a any join t
  • @efreeman #199628 04:34 PM, 15 Jan 2021
    посоветуйте хороший bi tool, что бы free + OSS. желательно из личного опыта, что-то ничего выбрать не могу, только с платными работал. требования: шарить/экспортировать несложные отчеты
  • https://t.me/clickhouse_ru
    @BloodJazMan #199629 04:37 PM, 15 Jan 2021
    прямо вот "посоветовать"
    из тех кто clickhouse поддерживает
    apache superset
    и metabase
    из более или менее "BI"
  • @efreeman #199630 04:38 PM, 15 Jan 2021
    дзякуй, будем посмотреть
  • @efreeman #199631 04:40 PM, 15 Jan 2021
    вообще, мне кибана видится неплохим вариантом, но она с только с эластиком работает, лишняя прослойка. а ch дружит с эластиком как-нибудь?
  • https://t.me/clickhouse_ru
    @a_dubovoy #199632 04:43 PM, 15 Jan 2021
    Redash ещё есть. Но из этих трёх решений субъективно superset самое нормальное
  • https://t.me/clickhouse_ru
    @nikitosiusis #199633 04:44 PM, 15 Jan 2021
    а мы метабейзом очень довольны. пойду погляжу ютуб про суперсет)
  • https://t.me/clickhouse_ru
    @nikitosiusis #199634 04:45 PM, 15 Jan 2021
    редаш какая-то поделка с некрасивыми графиками и кривым конструктором)
  • https://t.me/clickhouse_ru
    @a_dubovoy #199635 04:45 PM, 15 Jan 2021
    У metabase 2 главные проблемы: написан на Clojure и отвратительная модель прав. Интерфейс у него и правда самый приятный
  • https://t.me/clickhouse_ru
    @nikitosiusis #199636 04:46 PM, 15 Jan 2021
    суперсет кажется покруче картинки умеет
  • https://t.me/clickhouse_ru
    @106936600 #199637 04:50 PM, 15 Jan 2021
    Добрый день, хочу спросить, как будет оптимальнее делать из Column LowerCase при внесении или при запросе SELECT?
  • https://t.me/clickhouse_ru
    @106936600 #199638 04:50 PM, 15 Jan 2021
    Строк 10миллиардов, запросы на SELECT выполняются не во время записи
  • https://t.me/clickhouse_ru
    @mr_sikorsky #199639 04:56 PM, 15 Jan 2021
    Joined.
  • если вам оригинальные кейс не нужен, то во внесении, во всех базах, файлах и вообще везде, учитывая, что читать больше одного раза
  • @1497416366 #199641 05:17 PM, 15 Jan 2021
    Joined.
  • @tg_ilia #199643 09:19 PM, 15 Jan 2021
    Joined.
  • @githubreleases_bot #199644 b o t 09:50 PM, 15 Jan 2021
    ClickHouse/ClickHouse description changed: v20.8.12.2-lts
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v20.8.12.2-lts
    Release notes:
    ClickHouse lts release v20.8.12.2-lts
    Release v20.8.12.2-lts · ClickHouse/ClickHouse

    ClickHouse lts release v20.8.12.2-lts

  • https://t.me/clickhouse_ru
    @den_crane #199645 10:25 PM, 15 Jan 2021
    Вот бывает же.
    Беру таблицу , считаю sum(поле) получается 428922784
    Переливаю в другую таблицу, менее широкую, c помощью insert ... select .... sum / sum / sum group by по 20 полям.
    считаю sum(поле) в новой таблице получается 428922779

    через полчаса отладки я догадался сделать set insert_deduplicate = 0
  • https://t.me/clickhouse_ru
  • 16 January 2021 (46 messages)
  • Как с языка снял, ну в общем то я в этом чате постоянно с таким выражением сижу
  • https://t.me/clickhouse_ru
    @li_bao ↶ Reply to #199627 #199648 07:41 AM, 16 Jan 2021
    О как. Спасибо.
  • https://t.me/clickhouse_ru
    не помогло к сожалению, так же ругается что используется парт в мерже
  • https://t.me/clickhouse_ru
    @ievgenpro #199651 09:53 AM, 16 Jan 2021
    Хороших всем выходных. подскажите плз, как проверить актуальное значение max_concurrent_queries? в конфиге поменял, хочу убедиться, что подхватилось. в system.settings нет его
  • https://t.me/clickhouse_ru
    @1236463047 #199652 10:25 AM, 16 Jan 2021
    Народ, а какие требования к машинам zookeeper для репликации 2 КХ серверов?
  • https://t.me/clickhouse_ru
    @k0st1an #199653 10:27 AM, 16 Jan 2021
    Вопросик. Экспартируем данные из КХ в native формате в файл. Далее пытаемся сделать инсерт в базу, но в таблице нет одной или несколько колонок. Естественно получаем ошибку. Инсерт делаю так: clickhouse-client -q "INSERT INTO default.event_test FORMAT Native" < file. Пытался указать, какие именно колонки использовать. Не помогло. Есть ли варианты импортировать данные если нет части колонок в конечной базе при существовании этих колонов в исходных данных?
  • https://t.me/clickhouse_ru
    Input function
  • https://t.me/clickhouse_ru
    input | Документация ClickHouse

    input input(structure) - табличная функция, позволяющая эффективно преобразовывать и вставлять отправленные на сервер да

  • сюда:
    clickhouse/data/preprocessed_configs/config.xml
  • https://t.me/clickhouse_ru
    @ievgenpro #199658 10:41 AM, 16 Jan 2021
    запросом из базы не? верно?
  • Нет вроде для этого параметра способа
  • https://t.me/clickhouse_ru
    @ievgenpro #199660 01:00 PM, 16 Jan 2021
    спасибо. уже посмотрел
  • https://t.me/clickhouse_ru
    @ievgenpro #199661 01:00 PM, 16 Jan 2021
    конфиг, как Вы и сказали
  • https://t.me/clickhouse_ru
    @glebi0 #199662 02:18 PM, 16 Jan 2021
    а можно ли отключить слияние в фоне для учебных целей ?
  • https://t.me/clickhouse_ru
    SYSTEM STOP MERGES
  • https://t.me/clickhouse_ru
    @glebi0 #199664 02:42 PM, 16 Jan 2021
    А сколько байт или строк максимум в дата парте? Как КХ понимает, что партиция разжирела, и ее нужно по нескольким партам разбить?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @den_crane #199667 02:47 PM, 16 Jan 2021
    Разбивать конечно ничего КХ не будет. Нету такой возможности. Мерж умеет только соединять/слиять.
  • https://t.me/clickhouse_ru
    @li_bao ↶ Reply to #199664 #199668 02:55 PM, 16 Jan 2021
    По моему парт и партишн в КХ совсем разные вещи, ну просто таки совершенно.
  • https://t.me/clickhouse_ru
    @den_crane #199669 03:15 PM, 16 Jan 2021
    партишн -- виртуальная сущьность. Логически объединяет физические парты.
  • https://t.me/clickhouse_ru
    @106936600 #199670 03:57 PM, 16 Jan 2021
    Добрый день, подскажите, как сделать лучше, есть 10000 различных строк, вносится 1миллиард строк, где один колумн, это содержимое одной из этих 10000 строк, лучше вынести их в отдельную таблицу и дать им ID и вносить его или просто вносить их в таблицу и не париться?
  • https://t.me/clickhouse_ru
    @106936600 #199671 03:58 PM, 16 Jan 2021
    Длина строк от 40 до 80 символов
  • @zhora9001 #199672 03:58 PM, 16 Jan 2021
    LowCardinality быть может?
  • https://t.me/clickhouse_ru
    есть такая штука -- LowCardinality, примерно для вашего случая
  • https://t.me/clickhouse_ru
    Да, я знаю про неё, просто боюсь, что потом 10 000 строк могут превратиться в 100 000
  • https://t.me/clickhouse_ru
    @106936600 #199675 04:00 PM, 16 Jan 2021
    Или даже больше
  • https://t.me/clickhouse_ru
    словарь в каждом парте свой
  • https://t.me/clickhouse_ru
    @106936600 #199677 04:01 PM, 16 Jan 2021
    о, это отличная новость, спасибо!
  • https://t.me/clickhouse_ru
    @106936600 #199678 04:02 PM, 16 Jan 2021
    А LowCardinality может быть Nullable?
  • https://t.me/clickhouse_ru
    на самом деле решение можно принять только зная запросы которые будут выполняться над этой колонкой.
    И например джойн с таблицей на 100к это совсем не сахар. И словарь (ext.dictionary) тоже не сахар.
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    Join'ы делаться не будут, только если на несколько сотен строк
  • https://t.me/clickhouse_ru
    вы просто не понимаете что такое джойны.

    Вот например вы сохранили в большой таблице id = 777
    В маленькой таблице у вас 100к строк, как вы расшифруете 777 в большой таблице?
    Вы сделаете джойн. Nested loop в КХ нету, HashJoin перекинет все 100к в память и будет делать это очень долго (100мс)
  • https://t.me/clickhouse_ru
    Вынесу данные, которые мне нужны в ENGINE = Memory() и там сделаю Join
  • https://t.me/clickhouse_ru
    ахаха.
  • https://t.me/clickhouse_ru
    @106936600 #199685 04:20 PM, 16 Jan 2021
    )
  • https://t.me/clickhouse_ru
    Проблема 100мс. возникает из перекладывания данных в хеш-таблицу, поэтому ENGINE = Memory() ничего не изменит
  • https://t.me/clickhouse_ru
    @den_crane #199687 04:21 PM, 16 Jan 2021
    Есть правда Engine=Join который поможет, но с ним другие проблемы
  • https://t.me/clickhouse_ru
    @den_crane #199688 04:22 PM, 16 Jan 2021
    Ну когда кол-во строк станет не 100к, возникнут новые трудности типа out of memory
  • https://t.me/clickhouse_ru
    @106936600 #199689 04:22 PM, 16 Jan 2021
    Значит хранить строки?))
  • https://t.me/clickhouse_ru
    @den_crane #199690 04:23 PM, 16 Jan 2021
    да, одна широкая таблица.
  • https://t.me/clickhouse_ru
    @den_crane #199691 04:24 PM, 16 Jan 2021
    У меня в одном проекте после перехода с вертики было штук 20 таких таблиц с которыми джойнили, сейчас через 4 года осталось 2, остальные переместились в широкую, чтобы не делать джойны.
  • https://t.me/clickhouse_ru
    @den_crane #199692 04:25 PM, 16 Jan 2021
    и то потому что те 2 надо обновлять после заливки
  • https://t.me/clickhouse_ru
    @106936600 #199693 04:27 PM, 16 Jan 2021
    Понял, спасибо
  • @roman_gaussian #199695 05:24 PM, 16 Jan 2021
    Joined.
  • @77072141 #199697 07:16 PM, 16 Jan 2021
    Joined.
  • 17 January 2021 (48 messages)
  • https://t.me/clickhouse_ru
    @k0st1an #199699 11:00 AM, 17 Jan 2021
    Всем добра. Вопросик такой: есть файл созданный так SELECT … WHERE … OUTPUT <file> FORMAT Native, можно из него как то получить имена и типы колонок? Мне это нужно для последующего восстановления данных и чтоб не держать два файла (данные и схему).
  • @Trampler #199700 11:19 AM, 17 Jan 2021
    Добрый день. У меня базовый вопрос, поставил КХ на Debian, хотел бы переопределить раздел для хранения данных (базы пока не создавались). Достаточно будет стопнуть сервер и в конфиге поменять path и tmp_path на необходимые мне, или есть нюансы?
  • https://t.me/clickhouse_ru
    @kl_xz #199701 02:36 PM, 17 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @kl_xz #199702 02:43 PM, 17 Jan 2021
    Здравствуйте, начали разрабатывать аналитику.
    У нас 2 потребности:
    1) Отчёты за определенный период (тут всё понятно)
    2) Получать последние данные о пользователе (вплоть до последних 10 секунд) для формирования рекомендаций.
    Подходит ли ClickHouse для этой цели?
    Также проблема в том, что последние действия пользователя могут быть пару часов/дней назад, а могут быть 10-30 секунд назад, а рекомендации всегда должны быть актуальными. Можете предложить схему для такой задачи?
  • https://t.me/clickhouse_ru
    @orantius #199703 02:43 PM, 17 Jan 2021
    рпс какой в п.2.?
  • https://t.me/clickhouse_ru
    @kl_xz #199704 02:45 PM, 17 Jan 2021
    Варьируется в пределах 100-1000
  • https://t.me/clickhouse_ru
    @kl_xz #199705 03:19 PM, 17 Jan 2021
    Нормально ли будет раз в, скажем, 5 секунд сохранять 2-5к записей?
  • https://t.me/clickhouse_ru
    @1236463047 #199706 04:43 PM, 17 Jan 2021
    да
  • https://t.me/clickhouse_ru
    @1236463047 #199707 04:43 PM, 17 Jan 2021
    и даже 5 раз в сек
  • https://t.me/clickhouse_ru
    для 2 не подходит. Возьмите кассандру / redis / mysql
  • https://t.me/clickhouse_ru
    как бы да. Там еще каталог с access_management там xml-и c юзерами, его можно тоже перенести, если хочется.
  • https://t.me/clickhouse_ru
    А можно узнать почему? Как я понял постоянно что-то идет в базу. Надо некий селект по данным по юзеру. Что тут не так? Какая разница когда он был - where userId=хх order by desc
  • https://t.me/clickhouse_ru
    КХ очень медленный и делает огромный оверхед на таких запросах.
    В некоторых ситуациях mysql будет читать 2кб и отвечать за 0.001 сек., а КХ будет читать 6ГБ и отвечать за 3 сек.
  • https://t.me/clickhouse_ru
    @den_crane #199712 05:45 PM, 17 Jan 2021
    КХ не для точечных запросов когда надо обработать 200 записей и вернуть одну
  • https://t.me/clickhouse_ru
    @1236463047 #199713 05:48 PM, 17 Jan 2021
    это да. А тут речь про одну-две записи? ТОгда согласен. А так поле с datetime первым в перечне полей сортировки на таблице и должен отфильтровать. Нет?
  • https://t.me/clickhouse_ru
    @kl_xz #199714 05:49 PM, 17 Jan 2021
    Выбирать нужно не одну, а категории видео с наибольшим удержанием, в диапазоне 70-90%
  • https://t.me/clickhouse_ru
    >А так поле с datetime первым в перечне полей сортировки на таблице и должен отфильтровать
    это большая ошибка для любой базы.
    индекс должен быть order by (userId, time), для запроса where userId=хх order by desc
  • https://t.me/clickhouse_ru
    @1236463047 #199716 05:50 PM, 17 Jan 2021
    дада, user, time, вы правы, забыл его
  • https://t.me/clickhouse_ru
    @den_crane #199717 05:51 PM, 17 Jan 2021
    Проблема с КХ в том что индекс разреженный и будет прочитано записей больше чем нужно, потому что индекс указывает на гранулу в которой 8192 записей
  • https://t.me/clickhouse_ru
    @den_crane #199718 05:51 PM, 17 Jan 2021
    скорее всего будет обработано минимум 2 гранулы
  • https://t.me/clickhouse_ru
    @den_crane #199719 05:52 PM, 17 Jan 2021
    другая проблема что файлы .mrk (засечки) будут загружены все из партов, которые запрунены
  • https://t.me/clickhouse_ru
    @den_crane #199720 05:53 PM, 17 Jan 2021
    и получается что mysql дает 10krps , и читает 1кб на запрос, а КХ дает 500rps и читает 60кб на запрос
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @den_crane #199722 05:54 PM, 17 Jan 2021
    SETTINGS index_granularity = 64;
    Elapsed: 1.655 sec. Processed 1.15 thousand rows, 123.55 KB
  • https://t.me/clickhouse_ru
    @kl_xz #199723 05:55 PM, 17 Jan 2021
    Я понял, спасибо большое. Просто статистика просмотров в любом случае нужна и хотелось объединить в одном месте и хранение больших аналитических данных и использовать эту же таблицу для формирования рекомендаций
  • https://t.me/clickhouse_ru
    пробовать вы конечно можете, но если у вас реальная биг дата, и надо реально много rps, то для таких точечных запросов КХ не подходит.
  • https://t.me/clickhouse_ru
    @kl_xz #199725 05:57 PM, 17 Jan 2021
    Благодарю, буду разделять
  • https://t.me/clickhouse_ru
    @1236463047 #199726 06:14 PM, 17 Jan 2021
    ну да, таким гранулятором (64) - это да
  • https://t.me/clickhouse_ru
    @1236463047 #199727 06:15 PM, 17 Jan 2021
    запустил последний селект на своей базе ради интереса - база 30 гиг, а марков 100Мб
  • https://t.me/clickhouse_ru
    @den_crane #199728 06:19 PM, 17 Jan 2021
    хм база 30ГБ ? У меня пользователи лежат в кластере кассандры с 50 нодами и 2 TB диска в каждой ноде.
  • https://t.me/clickhouse_ru
    @hyragano #199729 06:19 PM, 17 Jan 2021
    Подскажите пожалуйста. Верно понимаю, что delete данных если ну очень нужно по какому-то признаку (не по PK) возможен в CH?
  • https://t.me/clickhouse_ru
    Спасибо за подтверждение, просто засомневался, что не будет потом поломок в данных
  • https://t.me/clickhouse_ru
    да, но КХ полностью перезаписывает парт(ы) без удаленных записей, если не повезло и записи с такими значениями парт. ключей будут в партах объемом 1ТБ, то КХ прочитает , распакует, запакует и запишет 1 TБ чтобы удалить 1 запись
  • https://t.me/clickhouse_ru
    Мы только начинаем. И у меня сразу запись в суммаримерж
  • https://t.me/clickhouse_ru
    ок. Спасибо за пояснение. Поидее у меня удаление будет идти в пределах одного парта (так как бью по месяцам) и нужно удалить 1К-100К записей в пределах одного парта, но по определенному признаку. Такое случается раз в 2-3 месяца, а то и режже.
  • https://t.me/clickhouse_ru
    это нормально, только нужно контроливать что мутации завершаются и НЕ застревают навсегда и не запускать одновременно 50тыс. мутаций как делают некоторые.
  • https://t.me/clickhouse_ru
    Ок. Спасибо, будем последить
  • https://t.me/clickhouse_ru
    @hyragano #199737 06:30 PM, 17 Jan 2021
    Еще вопрос: посмотрел на кафка коннкетор, вроде как в нем починили известную проблему при ребалансировки кафки + у меня и так данные не айс и нужно их группировать, так как дубли уже в искходных данных, потому вроде норм. Тут вопрос: какой размер блока укзаывать оптимальнее? Я предпологал, что около 1М, но где-то видел рекомендацию 65К.
  • https://t.me/clickhouse_ru
    @den_crane #199738 06:42 PM, 17 Jan 2021
    >вроде как в нем починили известную проблему при ребалансировки кафки
    ? это нельзя починить без 2pc транзакций
  • https://t.me/clickhouse_ru
    @den_crane #199739 06:43 PM, 17 Jan 2021
    >Я предпологал, что около 1М, но где-то видел рекомендацию 65К.
    в современном kafka engine это все уже неактуально и там все по другому
  • https://t.me/clickhouse_ru
    Значит я не так понял. но даже в этом кейсе вроде мы получим дубли данных, что в нашей ситуации соовсем не страшно
  • https://t.me/clickhouse_ru
    Можете пожалуйста подсказать, куда смотреть по данному вопросу?
  • https://t.me/clickhouse_ru
    если речь про https://github.com/ClickHouse/ClickHouse/issues/18668
    то там ничего не вмержено, нашлись баги в librdkafka
    Upgrade librdkafka to 1.5.3 or greater to fix duplicate writes with exactly once semantics and compressed messages · Issue #18668 · ClickHouse/ClickHouse

    We are experiencing duplicates writes when consuming from Kafka using the Kafka connector while using exactly once semantics with compressed messages. We were able to locate the bug in librdkakfa, ...

  • https://t.me/clickhouse_ru
    ок. Спасибо.
  • https://t.me/clickhouse_ru
    Better settings for Kafka by filimonov · Pull Request #11388 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    @685067425 #199746 08:16 PM, 17 Jan 2021
    Joined.
  • 18 January 2021 (219 messages)
  • @demetranadya #199747 05:02 AM, 18 Jan 2021
    Первичный ключ не даёт уникальности?
  • @demetranadya #199748 05:03 AM, 18 Jan 2021
    Мне нужно, чтобы нельзя было добавить одинаковые id
  • @demetranadya #199749 05:03 AM, 18 Jan 2021
    Сейчас указан ключ сортировки, но как понимаю, он же автоматом и является первичным ключом
  • https://t.me/clickhouse_ru
    Нет. Можно взять Replacing движок и он будет в фоне чистить дубли по ключу, но он не дает 100% гарантии, что дублей совсем не будет
  • https://t.me/clickhouse_ru
    @rbessembe #199751 05:35 AM, 18 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @Mikhail_Pirozhnikov19 #199752 05:35 AM, 18 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @mikhailberg #199753 06:06 AM, 18 Jan 2021
    Здравствуйте!
    подскажите, в каких случаях может пригодиться LowCardinality ? Как он работает ? Где храняться данные и в каком виде ? Можно ли сальтерить с обычной строки в LowCardinality ?
    В доке как-то супер мало информации.
    Спасибо
  • https://t.me/clickhouse_ru
    @310887960 #199754 06:20 AM, 18 Jan 2021
    Joined.
  • @vmihailenco #199755 06:29 AM, 18 Jan 2021
    Добрый день,

    Пытаюсь добавить S3 disk по статьям с Altinity. На тестовой таблице все работает, но когда добавляю S3 disk в существующий storage policy, то получаю в логах

    <Error> auto DB::IBackgroundJobExecutor::jobExecutingTask()::(anonymous class)::operator()() const: Poco::Exception. Code: 1000, e.code() = 2, e.displayText() = File not found: /var/lib/clickhouse/data/<database>/<table>, Stack trace (when copying this message, always include the lines below):

    Папка /var/lib/clickhouse/data/<database> есть (путь отредактирован), а вот папки с таблицой действительно нет. Что посоветуете? CH 20.12.5.14
  • https://t.me/clickhouse_ru
    @v_chistyakov #199756 07:58 AM, 18 Jan 2021
    Всем привет! Ищем нам в команду DBA (ClickHouse). Наша команда занимается разработкой и сопровождением решений для аналитики на базе различного типа хранилищ. На данный момент мы поддерживаем СlickHouse и Cassandra. На очереди Apache Ignite. По ссылке описание вакансии, но я готов ответить на уточняющие вопросы, потому что сам работаю в этой команде :slightly_smiling_face: Ссылка на вакансию: https://spb.hh.ru/vacancy/39575203
    Вакансия Database Engineer (Data Division) в Санкт-Петербурге, работа в компании Infobip (вакансия в архиве)

    Зарплата: не указана. Санкт-Петербург. Требуемый опыт: 3–6 лет. Полная занятость. Дата публикации: 26.05.2021.

  • @166680412 #199757 08:09 AM, 18 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @KiLEXst #199758 08:11 AM, 18 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @DavidAvagimyan #199759 08:41 AM, 18 Jan 2021
    Всем привет! Есть люди с опытом обработки большого массива данных на кх ? Хотелось бы проконсультироваться в личке, что бы чат не засорять.
  • https://t.me/clickhouse_ru
    @dbalashov #199760 08:44 AM, 18 Jan 2021
    ачо, нам тоже интересно
  • https://t.me/clickhouse_ru
    @1236463047 #199761 08:44 AM, 18 Jan 2021
    тут как раз все такие так что пиши ))
  • https://t.me/clickhouse_ru
    @dbalashov #199762 08:44 AM, 18 Jan 2021
    не все, так что я просто послушаю
  • https://t.me/clickhouse_ru
    @106936600 #199763 08:51 AM, 18 Jan 2021
    А есть ли возможность посмотреть статус OPTIMIZE TABLE к ReplicationMergeTree?
  • https://t.me/clickhouse_ru
    @411878622 #199764 08:52 AM, 18 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @DavidAvagimyan #199766 08:57 AM, 18 Jan 2021
    Есть самописная DMP для внутренних нужд компании и сейчас стоит задача по формированию аттрибутов профилй. Решили взять кх для сборки и обработки сырых данных ( опыта в этом большого нет). В сырые данные сохраняются title и url запросов и куча других полей. Пока работа идет с title и url полями, по ним формируются правила примера если title содержит "нужный текст" то такой запрос относится к аттрибуту под id 400 ( к примеру). Получается по факту пример запроса такой
    select uid, positionCaseInsensitiveUTF8(ref, 'https://example.ru') != 0 OR positionCaseInsensitiveUTF8(title, 'Кулинария') != 0 OR positionCaseInsensitiveUTF8(title, 'Рецепт этого блюда') != 0 OR positionCaseInsensitiveUTF8(title, 'Кулинарный рецепт') != 0 as "440" from raw_data where "440" = 1;
  • https://t.me/clickhouse_ru
    @DavidAvagimyan #199767 08:58 AM, 18 Jan 2021
    Там запрос иногда из 20-30 аттрибутов по 50-60 блоков OR каждый), данные в кх обрабатываются за пол года. их там порядка 200-300 миллиардов записей.
  • https://t.me/clickhouse_ru
    @gavryushin #199768 09:00 AM, 18 Jan 2021
    Здравствуйте!
    Создали таблицу с полем типа DateTime без указания timezone; timezone, похоже, выставился автоматически Europe/Moscow. Заполнять это поле начали (по ошибке) датой UTC, то есть получили событие в 13:00 по московскому времени, превратили это время в UTC, то есть 10:00, и записали в поле DateTime. В итоге, как я понял из доки, которая говорит о том, что не важно, какая timezone указана для поля, все равно в недрах всё хранится в UTC (ну и как я вижу исходя из запросов), на самом деле в таблице сохранилось время 07:00 (это наблюдается при запросах, где пытаюсь выгрузить данные за определенные промежутки времени).
    Engine таблицы – ReplicatedMergeTree
    Каким образом корректно исправить эту проблему? Изменить тип стобца с DateTime('Europe/Moscow') на DateTime('Europe/London'), а затем обновить все значения этого поля, чтобы привести их к корректным?
  • https://t.me/clickhouse_ru
    @411878622 #199769 09:04 AM, 18 Jan 2021
    Добрый день, а если я хочу потоково читать из двух кафок с разными топиками, можно это как-то сделать?

    я пробывал вот так, вбить адреса кафок и задать названия топиков:

    create table test_kafka (
    id UInt64
    ) ENGINE = Kafka('kafka-1:9092’, ’kafka-2:9092’ , ‘topic_1, topic_2', 'group1', 'JSONEachRow’);

    но так не работает 🙁
    Кажется, потому что в kafka-1 нет topic_2 и в kafka-2 нет topic_1

    Делаю такой вывод, так как по отдельности все работает:

    create table test_kafka (
    id UInt64
    ) ENGINE = Kafka('kafka-1:9092’, ‘topic_1', 'group1', 'JSONEachRow’);

    create table test_kafka (
    id UInt64
    ) ENGINE = Kafka(‘kafka-2:9092’, ‘topic_2', 'group1', 'JSONEachRow’);
  • https://t.me/clickhouse_ru
    я думаю, что нужно создавать две таблицы с разными коннекшенами
    так будет более верно на мой взгляд, тк если чето упадет на первой, то весь консюм не стопнется
  • В чем вопрос? :) сырые данные лучше нормализовывать (регистр, различные варианты написания URL) или до кх (возможно, кто пишет данные), или через мат.вью. Если набор URL ограничен, то возможно обогащать атрибутом через словарь или через подготовленный join в той же мат.вью.
  • @617847972 #199772 09:16 AM, 18 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    Проблема в том что набор url не ограничен) И сам вопрос в том что у меня иногда запросы просто не отрабатывают так как не справляются за время. Пока единственный вариант который пришел в голову расширить кластер кх. Но подумал вдруг есть еще какой либо способ или какой либо еще инструмент который можно поковырять)
  • Этот запрос вы из маьвью вытащили или из селекта?
  • https://t.me/clickhouse_ru
    @DavidAvagimyan #199775 09:19 AM, 18 Jan 2021
    из select
  • @ramun25 #199776 09:20 AM, 18 Jan 2021
    Правила только по title?
  • https://t.me/clickhouse_ru
    возможно будет лучше создать material column’ы чтобы они считались при вставке на каждый из поисков. чтобы полнотекстовый поиск происходил только раз на одну запись, а не на каждый запрос
  • https://t.me/clickhouse_ru
    @DavidAvagimyan #199778 09:23 AM, 18 Jan 2021
    правила и по title и по url формируются. Их количество не ограничено. Аттрибутов тоже много соответственно правила все разные и комбинации тоже разные внутри.
  • https://t.me/clickhouse_ru
    @DavidAvagimyan #199779 09:23 AM, 18 Jan 2021
    ну вот это можно было попробовать material column’ы
  • https://t.me/clickhouse_ru
    @zl0ng #199780 09:23 AM, 18 Jan 2021
    Други, помогите плз) Есть таблица с логами заходов пользователей(1 запись = 1 действие). Нужно сгруппировать по дате и посчитать кол-во активных пользователей по датам. Активный - это тот кто заходил хотябы раз за 2 недели, тоесть есть хотя бы одна запись) Как на клике это лучше всего посчитать?
  • https://t.me/clickhouse_ru
    ну да, клику не так сильно важно сколько этих колумнов будет. разбить на атомарные признаки и хранить только 0/1 типа совпадает/не совпадает, а потом уже любые запросы можно будет строить
  • https://t.me/clickhouse_ru
    @KiLEXst #199782 09:24 AM, 18 Jan 2021
    наверное можно еще както массив склепать в этот material column - но я не пробовал
  • https://t.me/clickhouse_ru
    @Makasinov #199783 09:25 AM, 18 Jan 2021
    Хаюшке всем, докинули пару дисков в рейд на пару терабайт, участились мерджи и начали отставать периодически реплики. Я подозреваю что надо просто какие то настройки подтюнить, но не уверен какие конекретно. Сталкивался кто?
  • https://t.me/clickhouse_ru
    не уверен, но
    select count(active) as alias

    group by date
    having alias > 1
    возможно даже в селект не нужно пихать, а сразу в хевинг, но это не точно)

    или в подзапрос обернуть, так точно работать будет)
  • https://t.me/clickhouse_ru
    + сгрупировать по ид пользователя или какойто признак уникальности
  • https://t.me/clickhouse_ru
    точно
  • https://t.me/clickhouse_ru
    @KiLEXst #199787 09:28 AM, 18 Jan 2021
    uniq(userid)
  • https://t.me/clickhouse_ru
    @mikhailberg #199788 09:29 AM, 18 Jan 2021
    если нужен тотал по всем прям - можно попробовать в группировку докинуть with totals
  • https://t.me/clickhouse_ru
    @zl0ng #199789 09:30 AM, 18 Jan 2021
    Эммм. Это будет просто кол-во в эти дни, а должно быть например в сегодня попадут только те кто заходил сегодян или в оконо 2 недели назад. И так на каждый день)
  • https://t.me/clickhouse_ru
    написано было что заходил хотябы раз
  • https://t.me/clickhouse_ru
    @zl0ng #199791 09:32 AM, 18 Jan 2021
    Сорри поправил на или)
  • https://t.me/clickhouse_ru
    @KiLEXst #199792 09:32 AM, 18 Jan 2021
    значит запись текущего дня как раз гарантирует активность
  • https://t.me/clickhouse_ru
    @mr_andrey_beliy #199793 09:32 AM, 18 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @zl0ng ↶ Reply to #199792 #199794 09:33 AM, 18 Jan 2021
    Верно, но если ее сегодня нет, а 11 дней назад есть, то и сегодня он дожен поасть в активные)
  • https://t.me/clickhouse_ru
    @KiLEXst #199795 09:34 AM, 18 Jan 2021
    правильно я понимаю. вот например пустой лог. приходит один чел - и мы должны в агрегации получить что есть один активный чел ровно 2 недели от его захода и потом нули?
  • https://t.me/clickhouse_ru
    @KiLEXst #199796 09:34 AM, 18 Jan 2021
    сагрегируй до двухнедельных отрезков)
  • https://t.me/clickhouse_ru
    @zl0ng ↶ Reply to #199795 #199797 09:36 AM, 18 Jan 2021
    Не очень тебя понял) В итогде должна быть табличка с 2мя колонками, дата и кол-во активных пользователей.
  • https://t.me/clickhouse_ru
    @KiLEXst #199798 09:37 AM, 18 Jan 2021
    а исходя из какой логики в дне должен учитываться пользователь который последний раз заходил две недели назад?)
  • https://t.me/clickhouse_ru
    @KiLEXst #199799 09:38 AM, 18 Jan 2021
    просто чтобы было больше количественно?)
  • https://t.me/clickhouse_ru
    @zl0ng #199800 09:39 AM, 18 Jan 2021
    Ну типо если есть хотя бы 1 тык приложении 2 недели назад(это 1 строчка в этой таблице), то он сегодня опадет в активные, а завтра нет(если он сегодня или завтра не зайдет соответственно))
  • https://t.me/clickhouse_ru
    @KiLEXst #199801 09:40 AM, 18 Jan 2021
    такое ощущение что ничего лучше не будет чем циклом в коде пробежаться по всем дням искомого периода и выбрать уникальных визиторов за последние две недели… ну или через какую нить временную таблицу…
  • https://t.me/clickhouse_ru
    но никакой логики в этом нет же?)
  • https://t.me/clickhouse_ru
    @KiLEXst #199803 09:40 AM, 18 Jan 2021
    бизнес логики
  • https://t.me/clickhouse_ru
    @KiLEXst #199804 09:41 AM, 18 Jan 2021
    посчитайте уники по дням, посчитайте уники по неделям
  • https://t.me/clickhouse_ru
    @KiLEXst #199805 09:41 AM, 18 Jan 2021
    это правдивее и проще
  • @77072141 #199806 09:44 AM, 18 Jan 2021
    Здравствуйте, коллеги. Нужна помощь с добавлением индекса.

    clh01 :) alter table traffic add index packetDate_ packetDate type minmax granularity 8192

    ALTER TABLE traffic
    ADD INDEX packetDate_ packetDate TYPE minmax GRANULARITY 8192

    Query id: 2e43efe9-d10a-4720-862a-6a529b9ddd53

    Ok.

    0 rows in set. Elapsed: 0.022 sec.

    clh01 :) alter table traffic materialize index packetDate_

    ALTER TABLE traffic
    MATERIALIZE INDEX packetDate_

    Query id: 33c7de4e-b068-4b41-99e2-88afb045d4ca

    Ok.

    0 rows in set. Elapsed: 0.013 sec.

    clh01 :) optimize table traffic final

    OPTIMIZE TABLE traffic FINAL

    Query id: cf81bec4-650d-4150-801b-cc4f4d306cba

    Timeout exceeded while receiving data from server. Waited for 300 seconds, timeout is 300 seconds.
    Cancelling query.
    Ok.
    Query was cancelled.

    0 rows in set. Elapsed: 3431.730 sec.
  • https://t.me/clickhouse_ru
    @zl0ng #199807 09:44 AM, 18 Jan 2021
    Ну у клинтов есть обращения, у них не всегда пишется id, тк в обращение может быть через Ватсап, Телегу итд. В Табло есть дашборд в разных разрезах с кол-вом обращений. Пока ничего лучше что бы увидеть по дням кол-во обращений/активных продавцов не придумали)
  • https://t.me/clickhouse_ru
    не увидел ответа как двухнедельный онлайн для каждого ид решает этот вопрос. даже наоборот ощущение что значения будут сильно завышены
  • https://t.me/clickhouse_ru
    @KiLEXst #199809 09:51 AM, 18 Jan 2021
    в общем я думаю надо задачу более полно сформулировать, причем еще на этапе бизнес аналитики.
    а если то как понял - проще всего кодом пробежаться и для каждого дня запрос выполнить.
  • https://t.me/clickhouse_ru
    @zl0ng ↶ Reply to #199808 #199810 09:51 AM, 18 Jan 2021
    Ну типо если он 2 недели не заходил, то наврятли это он писал в поддержку. Короч просто метод узнать тех кто пользуется и щас когда их кол-во как и обращений будет расти, увидеть не полетит ли их отношение. Но это не моя идея, я полностью согласен что варик так себе)
  • https://t.me/clickhouse_ru
    Ну выберете всех юзеров начиная now() - interval 2 weeks
  • https://t.me/clickhouse_ru
    @Makasinov #199812 10:08 AM, 18 Jan 2021
    Может ли при проставленном insert_distributed_sync = 1 вообще существовать отставания реплик? Если во время вставки через clickhouse-client идёт сохранение на все реплики, то данные гарантировано записаны и отставания друг от друга нет. Я прав или я прав?
  • https://t.me/clickhouse_ru
    @kilopixel #199813 10:09 AM, 18 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @kilopixel #199814 10:11 AM, 18 Jan 2021
    Привет. Подскажите, как корректно удалить storage policies? Если убрать упоминания из конфига, то они остаются в system.storage_policies
  • full restart сделать и все пройдет
  • https://t.me/clickhouse_ru
    @kilopixel #199816 10:17 AM, 18 Jan 2021
    Понял, спасибо.
  • https://t.me/clickhouse_ru
    Для меня это не очень опция, так как я перевожу сервис с питона на C# и хочу, чтобы два сервиса некоторое время писали в одну таблицу, чтобы не потерять данные
    Можно ли как-то так сделать?
  • https://t.me/clickhouse_ru
    Так они будут продолжать писать в одну таблицу
    Вы создадите две Кафка таблицы, потом два MV, которые пишут в нужную таблицу
  • https://t.me/clickhouse_ru
    @mikhailberg #199820 10:23 AM, 18 Jan 2021
    Я бы так делал
  • https://t.me/clickhouse_ru
    @KiLEXst #199821 10:39 AM, 18 Jan 2021
    Вопрос по движкам компрессии

    Delta и DoubleDelta - насколько эффективны для автоинкремент UInt32 колонок с негарантированной последовательностью вставки? Насколько замедляет выборку(расчет) по этим полям.?
  • https://t.me/clickhouse_ru
    @KiLEXst #199822 10:41 AM, 18 Jan 2021
    выходит так что это самые жирные поля тк значения в них уникальны
  • https://t.me/clickhouse_ru
    @Valenvaryon #199823 10:51 AM, 18 Jan 2021
    Привет
    Запрос create table on cluster при поломанности каких-то машин выполнится или зафейлится?
  • https://t.me/clickhouse_ru
    @Makasinov #199824 11:31 AM, 18 Jan 2021
    На починенных выполнится, на сломанных нет)
  • https://t.me/clickhouse_ru
    @ExplosiveJam #199825 11:45 AM, 18 Jan 2021
    Подскажите, что означает TRACKING ONLY и NO LIMITS в выражении для квот? https://clickhouse.tech/docs/ru/sql-reference/statements/create/quota/
    Квота | Документация ClickHouse

    CREATE QUOTA Создает квоту, которая может быть присвоена пользователю или роли. Синтаксис: CREATE QUOTA [IF NOT EXISTS |

  • Функции поиска в строках | Документация ClickHouse

    Функции поиска в строках Во всех функциях, поиск регистрозависимый по умолчанию. Существуют варианты функций для регистр

  • @ViacheslavNefedov #199827 11:54 AM, 18 Jan 2021
    вот так попроще. Но конечно лучше сделать материализованные представления и разбирать данные
  • @ViacheslavNefedov #199828 11:54 AM, 18 Jan 2021
    всё-равно разбирать регулярками
  • https://t.me/clickhouse_ru
    @putopelatudo #199829 12:01 PM, 18 Jan 2021
    Joined.
  • @githubreleases_bot #199830 b o t 12:10 PM, 18 Jan 2021
    ClickHouse/ClickHouse tagged: v21.1.2.15-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.1.2.15-stable
    Release notes:
    ClickHouse stable release v21.1.2.15-stable
    Release v21.1.2.15-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.1.2.15-stable

  • https://t.me/clickhouse_ru
    А как вы его добавляете, как второй диск (cold) или как основной?
    Можете, пожалуйста, конфиг до-после показать?
  • добавляю как второй холодный
    в конфиге ничего особо нет
    <tiered>
    <move_factor>0.1</move_factor>
    <volumes>
    <hot>
    <disk>hot_ssd_0</disk>
    </hot>

    <s3>
    <disk>s3</disk>
    </s3>
    </volumes>
    </tiered>
  • https://t.me/clickhouse_ru
    Хм.
    А полный стектрейс ошибки можете показать, пожалуйста?
  • @vmihailenco #199834 12:39 PM, 18 Jan 2021
    думаю может надо дать какое-то время чтобы папка создалась
    из ошибки сразу удалил s3 из полиси пока
  • @77072141 #199837 12:44 PM, 18 Jan 2021
    Здравствуйте, коллеги. Нужна помощь с добавлением индекса.

    clh01 :) alter table traffic add index packetDate_ packetDate type minmax granularity 8192

    ALTER TABLE traffic
    ADD INDEX packetDate_ packetDate TYPE minmax GRANULARITY 8192

    Query id: 2e43efe9-d10a-4720-862a-6a529b9ddd53

    Ok.

    0 rows in set. Elapsed: 0.022 sec.

    clh01 :) alter table traffic materialize index packetDate_

    ALTER TABLE traffic
    MATERIALIZE INDEX packetDate_

    Query id: 33c7de4e-b068-4b41-99e2-88afb045d4ca

    Ok.

    0 rows in set. Elapsed: 0.013 sec.

    clh01 :) optimize table traffic final

    OPTIMIZE TABLE traffic FINAL

    Query id: cf81bec4-650d-4150-801b-cc4f4d306cba

    Timeout exceeded while receiving data from server. Waited for 300 seconds, timeout is 300 seconds.
    Cancelling query.
    Ok.
    Query was cancelled.

    0 rows in set. Elapsed: 3431.730 sec.
  • https://t.me/clickhouse_ru
    @muhin_ds #199838 12:45 PM, 18 Jan 2021
    Привет! Подскажите, пожалуйста, как залить на КХ внешние таблицы csv? (таблиц много 100 штук с одной и той же структурой)
  • https://t.me/clickhouse_ru
    А рестарт сервера помогает?
    Просто эти папки должны создаваться при старте таблицы, если их нет.
  • https://t.me/clickhouse_ru
    curl -T ~/Downloads/tablename.csv.gz -X POST -v --progress-bar \
    -H "Content-Encoding: gzip" \
    -H "Content-type: text/csv" \
    -H 'X-ClickHouse-User: default' \
    -H 'X-ClickHouse-Key: mySecurePass' \
    'https://www.host.com/?query=INSERT%20INTO%20tablename%20FORMAT%20CSVWithNames'
  • я не решился проверять
    поэтому может быть :)
  • https://t.me/clickhouse_ru
    Кажется, что рестарт должен помочь.
    Добавление "наживую" толком не тестировалось.
  • https://t.me/clickhouse_ru
    @DavidAvagimyan #199843 12:58 PM, 18 Jan 2021
    Какое значение по default в кликхаусе max_execution_time ?
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    @mikhailberg #199845 01:07 PM, 18 Jan 2021
    гайз, а как можно изменить партиционирование без боли ? Было партиционирование по недели, сейчас необходить сделать по месяцу. Ну и что бы помержилось все. Кроме как переливать в другую таблицу есть варики ?
  • https://t.me/clickhouse_ru
    Создаешь вторую таблицу, с нужным партиционированием. Объединяешь их с помощью движка Merge. Начинаешь писать в новую таблицу, читать из Merge.
  • https://t.me/clickhouse_ru
    из-за слишком большого количества партиций у меня огромное количество партов. Проблема решается альтером партиционирования на месяц.
  • @456224116 #199848 01:17 PM, 18 Jan 2021
    Ребята, а есть ли какие нить альтернативы, как сделать подобный запрос:
    Хочется выбрать первые строки по каждому пользователю, из довольно увесистого лога.

    select
    user,
    createdAt,
    at as first_log_at,
    abs(first_log_at - createdAt) as create_time_lag_sec,
    country,
    platform,
    version as start_version
    from isp
    where createdAt between toDate('2020-01-01') and today()
    order by at
    limit 1 by user

    Текущий вылетает по памяти:
    Code: 241, e.displayText() = DB::Exception: Memory limit (for query) exceeded: would use 9.31 GiB (attempt to allocate chunk of 4195401 bytes), maximum: 9.31 GiB: (avg_value_size_hint = 14.086669921875, avg_chars_size = 7.304003906249999, limit = 8192): (while reading column version): (while reading from part /var/lib/clickhouse/data/raven/log_r/4383f25745ae9ef993e861ad0c5bed11_0_26_48/ from mark 192 with max_rows_to_read = 8192): While executing MergeTreeThread (version 20.11.3.3 (official build))

    Вот такой вот запрос работает без проблем: но min(version) != version на первой записи
    select user,
    country,
    platform,
    createdAt,
    min(version) as start_version,
    min(at) as first_log_at,
    abs(first_log_at - createdAt) as create_time_lag_sec
    from raven.isp
    where isp.createdAt > toDate('2020-01-01')
    group by user, country, platform, createdAt;
  • https://t.me/clickhouse_ru
    разрешить клику свопить ответ на диск?
  • вариант... спасибо, попробуем
  • https://t.me/clickhouse_ru
    @KiLEXst #199851 01:19 PM, 18 Jan 2021
    Возможности ClickHouse для продвинутых разработчиков / Алексей Миловидов (Яндекс)

    Приглашаем на Saint HighLoad ++ 2021 20 и 21 сентября 2021, Санкт-Петербург, DESIGN DISTRICT DAA in SPB Программа, билеты и подробности - https://clck.ru/VmKaW -------- Backend Conf, РИТ++ 2018 Тезисы: http://backendconf.ru/2018/abstracts/3481 В докладе планируется рассмотреть малоизвестные или недостаточно хорошо освещённые в документации возможности ClickHouse: инкрементальная агрегация и манипуляции с состояниями агрегатных функций, межкластерное копирование, выполнение запросов без использования сервера и т.п. Будут приведены примеры из практики разработки сервисов Яндекса: как выжать из системы максимум возможного. -------- Нашли ошибку в видео? Пишите нам на support@ontico.ru

  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @KiLEXst #199853 01:20 PM, 18 Jan 2021
    но тут речь о group by.
  • https://t.me/clickhouse_ru
    @GizmoKazan #199854 01:32 PM, 18 Jan 2021
    Есть таблица

    user_id | event | time_event
    1| start | 2021-01-18 09:20:00
    1| ev1 | 2021-01-18 09:37:00
    1| ev2 | 2021-01-18 09:58:00
    1| exit | 2021-01-18 10:11:00
    2| start | 2021-01-18 10:02:00
    2| ev1 | 2021-01-18 10:37:00

    Как подсчитать, что за определенное время (например, 1 час), пользователь успевает сделать больше 3х событий.

    Пытаюсь делать таким запросом
    SELECT toStartOfInterval(time_event, INTERVAL 1 HOUR) AS time, user_id, COUNT(*) AS cnt
    FROM table
    GROUP BY time, user_id
    HAVING COUNT(*) > 3

    Но в этом случае промежуток времени это час с 00:00 до 00:59, а не от первого события отсчитывается. Может кто сориентирует как правильно сделать?
  • https://t.me/clickhouse_ru
    @KiLEXst #199855 01:37 PM, 18 Jan 2021
    а как представляете себе результат? в голове не укладывается
  • https://t.me/clickhouse_ru
    minmax granularity 8192 --- это ошибка , это кол-во гранул из первичного ключа, у вас получается 8192*8192
    minmax granularity 1 or(2) -- ожидается
  • Спасибо!
  • https://t.me/clickhouse_ru
    https://youtu.be/rqf-ILRgBdY?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ

    >Можно ли сальтерить с обычной строки в LowCardinality ?
    да можно
  • @chamaeleon_rex #199863 02:01 PM, 18 Jan 2021
    Привет всем. Подскажите, пожалуйста, чем
    ALTER TABLE table_name DROP PARTITION partition_expr
    принципиально отличается от
    ALTER TABLE table_name DROP PART partition_expr
    ?
  • https://t.me/clickhouse_ru
    PARTITION состоит из множества PART

    а откуда взялось
    ALTER TABLE table_name DROP PART partition_expr
    я не думаю что это работает
  • https://t.me/clickhouse_ru
    @106936600 #199865 02:03 PM, 18 Jan 2021
    А как рассчитать количество допустимых партиций на хост?
  • https://t.me/clickhouse_ru
    @den_crane #199866 02:03 PM, 18 Jan 2021
    лучше не используйте никогда DROP PART
    пока вы не понимаете что он делает
  • https://t.me/clickhouse_ru
    никак. Если вы не знаете ответа, используйте партиционирование toYYYYMM
  • @chamaeleon_rex #199868 02:05 PM, 18 Jan 2021
    Это из документации) https://clickhouse.tech/docs/ru/sql-reference/statements/alter/partition/#alter_drop-partition
    А можно ли удалять партиции по какому-то общему признаку, используя Like в предикате, или только явно указывая?
    Мне необходимо удалить много партиций, все они подходят под условие like '%2021-01-18%' например
    PARTITION | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @106936600 #199869 02:05 PM, 18 Jan 2021
    Ну я сделал партицирование, там максимальное кол-во партиций возможно - 100
  • https://t.me/clickhouse_ru
    @106936600 #199870 02:05 PM, 18 Jan 2021
    100 партиций, это много\мало?)
  • @chamaeleon_rex #199871 02:05 PM, 18 Jan 2021
    это не много
  • https://t.me/clickhouse_ru
    >А можно ли удалять партиции по какому-то общему признаку, используя Like в предикате, или только явно указывая?
    нельзя.

    >Мне необходимо удалить много партиций, все они подходят под условие like '%2021-01-18%' например
    можно написать что-то типа

    select concat('alter table ',table, ' drop partition id \'', partition_id, '\';')
    from system.parts
    where active = 1 and table like 'яяя' and partition like '%2020-09%' group by database,table,partition_id
    order by database,table,partition_id
  • @subotic0 #199873 02:06 PM, 18 Jan 2021
    Добрый день, подскажите пожалуйста
    делаю джойн
    select a.dt, b.val
    from (select arrayJoin([toDate('2020-01-01'), toDate('2020-01-01')]) as dt) a
    left join (select toDate('2020-01-01') as dt, 100 as val) b
    on a.dt = b.dt;
    Какую опцию нужно использовать, чтобы результат был примерно таким
    dt val
    2020-01-01 100
    2020-01-01 null
    Проще говоря, чтобы джойн происходил для произвольной строки из первой таблицы подходящей по ключу. Пытаюсь использовать any, без особого успеха
  • https://t.me/clickhouse_ru
    для сервера с X CPU и Y дисков это ок
  • https://t.me/clickhouse_ru
    хаха
  • Это чтобы получить селект который потом выполнить нужно на всех серверах?
  • https://t.me/clickhouse_ru
    @den_crane #199877 02:07 PM, 18 Jan 2021
    скажем для некоторых таблиц, чтобы работало быстро, я делаю одну партицию в таблице.
  • https://t.me/clickhouse_ru
    ))
    X - 16 ядер AMD Ryzen 9 5950X
    Y - 1 HDD Seagate Exos X16 14 TB ST14000NM002G, скорость RW 160MB/S
  • https://t.me/clickhouse_ru
    да чтобы получить SQL скрипт, который потом выполнить нужно на всех серверах
  • @chamaeleon_rex #199880 02:08 PM, 18 Jan 2021
    Понял, спасибо
  • https://t.me/clickhouse_ru
    @106936600 #199881 02:09 PM, 18 Jan 2021
    Я просто экспериментирую с различными видами данных и их внесением, пытаюсь понять, как лучше)
  • https://t.me/clickhouse_ru
    используйте toYYYYMM
  • https://t.me/clickhouse_ru
    @den_crane #199883 02:10 PM, 18 Jan 2021
    партиции в первую очередь для управления длительностью хранения, в 10ю очередь для перфоманса
  • https://t.me/clickhouse_ru
    Вся проблема в том, что данные вносятся за один день, потом простой, потом опять один день
    У данных нету идентификатора, по которому можно было бы их разбить по типу toYYYYMM
    Из за этого сделал ID и как партицию сейчас использовал Id % 100

    Но это я играюсь и сам ещё не знаю, что из этого выйдет)
  • https://t.me/clickhouse_ru
    дата внесения? materialize today()
  • https://t.me/clickhouse_ru
    Будет ли существенная разница у 1 миллиарда строк при различных партициях?
  • https://t.me/clickhouse_ru
    >Из за этого сделал ID и как партицию сейчас использовал Id % 100

    и как select-ы выглядят?
  • https://t.me/clickhouse_ru
    будет
  • https://t.me/clickhouse_ru
    @106936600 #199889 02:13 PM, 18 Jan 2021
    SELECT * FROM test_table WHERE str1="test"
  • https://t.me/clickhouse_ru
    эээ, а КХ тут зачем? Тут кассандра нужна или монга
  • https://t.me/clickhouse_ru
    @106936600 #199891 02:15 PM, 18 Jan 2021
    А, если вы про итоговый селект, то я ещё не начал работать с итоговыми данными, так что не могу точно сказать, сейчас я больше эксперементирую )
  • https://t.me/clickhouse_ru
    значит точно
    (
    X Date materialize today()
    ...)
    partition by toYYYYMM(X)
  • https://t.me/clickhouse_ru
    @106936600 #199893 02:19 PM, 18 Jan 2021
    А NOW() не подходит?
  • https://t.me/clickhouse_ru
    а зачем вам хранить в таблице секунды? колонка место жрет
  • https://t.me/clickhouse_ru
    @106936600 #199895 02:20 PM, 18 Jan 2021
    Согласен
  • https://t.me/clickhouse_ru
    а зачем materialize ?
  • https://t.me/clickhouse_ru
    чтобы не менять insert-ы и не менять поведение select *
  • https://t.me/clickhouse_ru
    @den_crane #199899 02:27 PM, 18 Jan 2021
    materialize поля не раскрываются *
  • https://t.me/clickhouse_ru
    что значит не раскрываются ?)
  • https://t.me/clickhouse_ru
    это значит что select * не выбирает такие поля
  • https://t.me/clickhouse_ru
    @mikhailberg #199902 02:28 PM, 18 Jan 2021
    это что-то типа виртуального поля получится ?
  • https://t.me/clickhouse_ru
    нет. Виртуальное это alias
  • https://t.me/clickhouse_ru
    в доке все есть
  • https://t.me/clickhouse_ru
    поле вполне реально, но надо явно его писать в select
  • @Temaspb1996 #199906 02:37 PM, 18 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @zholmyrza_t #199907 02:52 PM, 18 Jan 2021
    Если есть свободное место на сервере, и увеличить max_bytes_to_merge_at_max_space_in_pool больше чем 150ГБ, к примеру 400ГБ, это как-то может улучшить или ухудшить производительность КХ? чтобы мёрджы(слияния) выполнялись реже
  • https://t.me/clickhouse_ru
    эффективны.

    >Насколько замедляет выборку(расчет) по этим полям
    очень мало влияет

    надо проверять CODEC(ZSTD) vs CODEC(DoubleD, ZSTD)
  • https://t.me/clickhouse_ru
    это серьезно увеличит нагрузку на CPU и диск

    >чтобы мёрджы(слияния) выполнялись реже
    эээ, так ровно наоборот будет
  • https://t.me/clickhouse_ru
    @106936600 #199910 02:55 PM, 18 Jan 2021
    Есть вопрос, я использую ReplacingMergeTree
    У меня есть Column UInt64 ID - это хэш от колонок (String): str1, str2, str3
    Будет лучше поставить ORDER BY (ID) или ORDER BY(str1, str2, str3)
  • https://t.me/clickhouse_ru
    получается 150ГБ для мёрджей, это оптимальный размер, ок, спасибо
  • https://t.me/clickhouse_ru
    @agnek ↶ Reply to #199910 #199912 03:01 PM, 18 Jan 2021
    Как минимум есть два фактора:
    1. Поля, по которым ваши выборки фильтруются и сортируются. Например, при переходе к хешу вы сильно потеряете в скорости выборки, где в фильтре указано поле str1 или str1 или str2.
    2. Желательно, чтобы записи с одинаковыми полями лежали рядом - тогда хорошо сработает компрессия данных. Тут уже вам виднее, в каком случае это получится.
  • https://t.me/clickhouse_ru
    Понял, а на сколько нормально делать в ORDER BY (str1, str2, ifNull(str3, str4))?
  • https://t.me/clickhouse_ru
    @1236463047 #199914 03:40 PM, 18 Jan 2021
    подскажите - по SummingMergeTree:
    Допустим таблица:
    create table tr3
    (
    dt Date,
    demand_id UInt32,
    imps UInt64
    )
    engine = SummingMergeTree((imps))
    PRIMARY KEY (dt, demand_id)
    ORDER BY (dt, demand_id)

    Если в нее пихать - то схлопывается и суммируется - все ок

    Делаю по ней матвью:

    CREATE MATERIALIZED VIEW tv
    (
    dt Date,
    demand_id UInt32,
    imps UInt64
    )
    engine = SummingMergeTree((imps))
    PRIMARY KEY (dt, demand_id)
    ORDER BY (dt, demand_id)
    as Select dt,demand_id, sum(imps) from tr3 group by dt,demand_id;
  • https://t.me/clickhouse_ru
    @1236463047 #199915 03:40 PM, 18 Jan 2021
    и в итоге в матвью идет 0
  • https://t.me/clickhouse_ru
    @1236463047 #199916 03:41 PM, 18 Jan 2021
    Если без груп бай, то идет, но по том ждать когда оно там решит схлопнуться
  • https://t.me/clickhouse_ru
    @1236463047 #199917 03:41 PM, 18 Jan 2021
    а тут непонятно - какие-то ограничения чтоли на суммари вью из суммари ендж?
  • https://t.me/clickhouse_ru
    @zholmyrza_t #199918 03:44 PM, 18 Jan 2021
    Есть ли какие-то рекомендации под ЗК(настройки производительности итд), и использует ли кто-то ЗК как мастер мастер?(если возможно такое) для ускорения обработки транзакций внутри ЗК.
  • @253072124 #199919 03:50 PM, 18 Jan 2021
    всем доброго времени суток. Подскажите, пожалуйста, такой момент:

    я создаю индекс для таблицы db.t_oplogs_info (примерно 1,5 миллиарда строк, количество уникальных значений item_id = 50) на движке MergeTree():

    alter table db.t_oplogs_info add index t_oplogs_info_item_id_indx (platform_type, item_id) type set(0) granularity 8192;
    alter table db.t_oplogs_info materialize index t_oplogs_info_item_id_indx;

    дожидаюсь выполнения мутации, после чего при выполнении запроса:

    select count(1)
    from
    db.t_oplogs_info x
    where
    x.platform_type = 'p'
    and
    x.item_id = 'a'

    я получаю примерно те же значения по времени выполнения запроса по указанной таблице db.t_oplogs_info до создания в ней индекса t_oplogs_info_item_id_indx.
    С чем это может быть связано?
  • https://t.me/clickhouse_ru
    Спасибо, буду пробовать!
  • https://t.me/clickhouse_ru
    sum(imps) as imps

    имена полей в select и MV должны совпадать
  • https://t.me/clickhouse_ru
    Охтыж.... поди догадайся... Спасибо
  • https://t.me/clickhouse_ru
    ZK по дефолту мастер-мастер, там есть watch ноды , но это отдельная история и с КХ они не нужны.

    >ускорения обработки транзакций внутри ЗК
    ускорить ZK нельзя. Все ноды ZK делают одно и тоже и весь ZK работает со скоростью самого медленного узла

    У вас не должно быть проблем с ZK , 3 нод ZK (один ансамбль) должно хватать на сотню шардов / на 500 нод КХ
  • https://t.me/clickhouse_ru
    посмотрите мой доклад

    https://youtu.be/1LVJ_WcLgF8?t=7596

    https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf
  • https://t.me/clickhouse_ru
    @1236463047 #199925 04:19 PM, 18 Jan 2021
    не вопрос, с удовольствием
  • https://t.me/clickhouse_ru
    благодарю за развёрнутый ответ, есть ли надобность бэкапить как-то ноды ЗК?
  • https://t.me/clickhouse_ru
    бекапить их особого смысла нет. Бекап вряд ли пригодится, нельзя получить последнюю секунду состояния ZK из бекапа.

    У вас 3 ноды ZK , они все 3 содержат одинаковые данные / хранят снепшоты + логи.
    Любой ноды из 3 достаточно для восстановления ансамбля
  • https://t.me/clickhouse_ru
    @zholmyrza_t #199928 04:42 PM, 18 Jan 2021
    я вот читал, что для оптимальной вставки, нужно использовать большой батч(500к-1млн записей в блоке данных), это правило распространяется на один инстанс КХ? если так, то для нод 30 в кластере, можно будет 15млн на каждый батч?
  • https://t.me/clickhouse_ru
    есть условно простое правило - вставки в одну ноду не должны быть чаще чем раз в 1 сек
  • https://t.me/clickhouse_ru
    @zholmyrza_t #199930 04:47 PM, 18 Jan 2021
    хочу для себя понять, если в пуле скопится большое кол-во строк(в связи с непредвиденными обстоятельствами), на сколько большой блок данных сможет принять кластер
  • https://t.me/clickhouse_ru
    @nyoroon #199931 04:48 PM, 18 Jan 2021
    сколько угодно
  • https://t.me/clickhouse_ru
    @nyoroon #199932 04:48 PM, 18 Jan 2021
    сколько на диск влезет
  • https://t.me/clickhouse_ru
    все сильно зависит от ширины строк, от строк кол-ва за день, от требований к надежности / атомарности.
  • @1366913478 #199934 05:09 PM, 18 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    вопрос не имеет смысла. Какую проблему решаете?
  • https://t.me/clickhouse_ru
    можно записывать результат в одну таблицу , читать конечно через 2 ENGINE = Kafka(
  • https://t.me/clickhouse_ru
    Посмотрел доклад, хорошо. Много знал, но есть и новые фишки. Счас потыкаю базу. Спасибо!
  • https://t.me/clickhouse_ru
    @1236463047 #199938 06:00 PM, 18 Jan 2021
    Вот кстати вопрос. Что лучше (быстрее-проще-дешевле) Сразу инсертить в суммари таблицу или инсертить в движок нулл, а с него в суммари мат.Вью?
    Вроде как через null представляется лучше - сразу пойдет групировка и не надо "схлопывать" потом. Или это увеличивает стоимость инсертов и они у меня в очередь выстроятся из-за группировки?
  • @milovidov_an #199939 06:00 PM, 18 Jan 2021
    Опубликован changelog для релиза 21.1:
    https://github.com/ClickHouse/ClickHouse/blob/master/CHANGELOG.md
    ClickHouse/CHANGELOG.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.

  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #199939 #199940 06:37 PM, 18 Jan 2021
    🔥 теперь можно реализовать более эффективные клиенты/адаптеры, используя gRPC
  • https://t.me/clickhouse_ru
    Подскажите пожалуйста, про какой докдад речь?
  • https://t.me/clickhouse_ru
    Denny Crane [Vertica DBA at Revjet(NB,Canada)] in ClickHouse не тормозит

    посмотрите мой доклад https://youtu.be/1LVJ_WcLgF8?t=7596 https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf

  • https://t.me/clickhouse_ru
    Спасибо большое
  • https://t.me/clickhouse_ru
    ребилд рейда закончился?
  • https://t.me/clickhouse_ru
    @Makasinov #199945 07:02 PM, 18 Jan 2021
    Закончился. Я ещё пару особенностей заметил в логах, сейчас скину
  • https://t.me/clickhouse_ru
    @Makasinov #199946 07:04 PM, 18 Jan 2021
    2021.01.18 00:00:00.943698 [ 3531 ] {} <Error> default.visits_local: DB::BackgroundProcessingPoolTaskResult DB::StorageReplicatedMergeTree::queueTask(): std::exception. Code: 1001, type: fmt::v7::format_error, e.what() = argument not found, Stack trace (when copying this message, always include the lines below):
    Таких сообщений тьма в логах. При чем появляются как по крону, хотя, конечно, никакого крона или прочих сервисов отродясь не было и нет
    sudo cat /opt/clickhouse/log/clickhouse-server.log | grep "BackgroundProcessingPoolTaskResult" | cut -d ' ' -f1-2 | sed 's/:[0-9]*:[0-9]*.[0-9]*$//g' | uniq -c
    11054 2021.01.10 00
    7809 2021.01.11 00
    1817 2021.01.12 00
    5097 2021.01.13 00
    16041 2021.01.14 00
    18263 2021.01.15 00
    20 2021.01.15 04
    2 2021.01.15 12
    781 2021.01.16 00
    1376 2021.01.16 04
    98 2021.01.16 08
    2714 2021.01.17 00
    2103 2021.01.17 04
    1331 2021.01.17 08
    13686 2021.01.18 00
    531 2021.01.18 04
    262 2021.01.18 08
    Ровно в 00 часов, 4'ый час и 8'ой
  • https://t.me/clickhouse_ru
    это ничего не значит, мелкий баг

    https://github.com/ClickHouse/ClickHouse/issues/17613
    format error, argument not found · Issue #17613 · ClickHouse/ClickHouse

    (you don't have to strictly follow this form) Describe the bug a lot of background logs of thar error, constantly, on different tables How to reproduce from 20.3 -20.11.4.13 Expected behavi...

  • https://t.me/clickhouse_ru
    @Makasinov #199948 07:05 PM, 18 Jan 2021
    Отставание стали происходить тоже только ночью в 12 по utc. Но потом спустя пол часика разгребание replicas_queue разгребается и всё становится нормально
  • https://t.me/clickhouse_ru
    @Makasinov #199949 07:06 PM, 18 Jan 2021
    Одним легче. Но мы всё равно запланировали обновление до 21 завтра
  • https://t.me/clickhouse_ru
    какая версия сейчас?
  • https://t.me/clickhouse_ru
    жесть, стальные даже алмазные яйцы
  • https://t.me/clickhouse_ru
    @Makasinov #199952 07:07 PM, 18 Jan 2021
    ┌─version()─┐
    │ 20.11.3.3 │
    └───────────┘
  • https://t.me/clickhouse_ru
    @Makasinov #199953 07:07 PM, 18 Jan 2021
    Скорее сильное желание чинить кластер ночью
  • https://t.me/clickhouse_ru
    ну и обнавляйтсь до 20.11.6.6
  • https://t.me/clickhouse_ru
    @Makasinov #199955 07:09 PM, 18 Jan 2021
    Оке, в любом случае отпишу помогло или нет, буду копать дальше
  • https://t.me/clickhouse_ru
    @1236463047 #199956 07:12 PM, 18 Jan 2021
    Denny, так что насчет:
    Что лучше (быстрее-проще-дешевле) Сразу инсертить в суммари таблицу или инсертить в движок нулл, а с него в суммари мат.Вью?
    Вроде как через null представляется лучше - сразу пойдет групировка и не надо "схлопывать" потом. Или это увеличивает стоимость инсертов и они у меня в очередь выстроятся из-за группировки?
  • https://t.me/clickhouse_ru
    Обычно <insert> -> null -> mv -> <target> используют для "приведения" данных к должному виду таблицы.
    Но нет гарантии, что дубликаты будут в одном инсерте (а ведь он ещё на парты может делиться).
    Имхо если вы не протестируете на своих данных, вы так только размажете логику, не получив никаких плюшек.
  • https://t.me/clickhouse_ru
    ну в этом случае MV+Null

    можно и тоже самое сделать через input function, просто в insert
  • @ivak85 #199959 07:31 PM, 18 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @1236463047 #199960 07:31 PM, 18 Jan 2021
    логика - мне не нужны исходные данные, достаточно хранить суммированные
  • https://t.me/clickhouse_ru
    @1236463047 #199961 07:32 PM, 18 Jan 2021
    вопрос - где делать суммирование - в MV или Summ Eng таблице
  • https://t.me/clickhouse_ru
    в MV
  • https://t.me/clickhouse_ru
    @den_crane #199963 07:33 PM, 18 Jan 2021
    меньше строк, меньше i/o , все быстрее
  • https://t.me/clickhouse_ru
    @1236463047 #199964 07:33 PM, 18 Jan 2021
    т.е. insert null -> MV -> dest табл
  • https://t.me/clickhouse_ru
    @1236463047 #199965 07:33 PM, 18 Jan 2021
    спасибо
  • https://t.me/clickhouse_ru
    @1236463047 #199966 07:36 PM, 18 Jan 2021
    очень удобен кстати синтаксис МV, который через TO. МНе сейчас просто надо создать нулл табл и перекинуть вставку в существующий Суммари.
  • @dj_mixer #199967 09:53 PM, 18 Jan 2021
    https://github.com/ClickHouse/ClickHouse/pull/18112

    а суть этого только чтобы они не висели в памяти постоянно, а только грузились во время запроса?
    или там появился новый хеш которые ест меньше места в памяти?
    Use IDisk in Set and Join storages by GrigoryPervakov · Pull Request #18112 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    Как я понимаю, что бы можно было указать диск отличный от default
  • а, понятно, те что для чтения при загрузке...
  • @dj_mixer #199970 10:05 PM, 18 Jan 2021
    дожжжжждалась? =)

    Now ClickHouse can pretend to be a fake ZooKeeper. Currently, storage implementation is just stored in-memory hash-table, and server partially support ZooKeeper protocol. #16877 (alesapin).
  • https://t.me/clickhouse_ru
    @1236463047 #199971 10:09 PM, 18 Jan 2021
    ОMG... неужто без ЗК можно будет жить?
  • https://t.me/clickhouse_ru
    ❤️
  • https://t.me/clickhouse_ru
    @floxard #199973 10:26 PM, 18 Jan 2021
    (это не спам, это реакция на кх без зк)
  • 19 January 2021 (185 messages)
  • https://t.me/clickhouse_ru
    простите, но мы 3 года назад использовали КХ без ЗК :) правда не в кластере
  • Простите, а зачем кх не в кластере зк?
  • https://t.me/clickhouse_ru
    бывают случаи когда надежности безкластерного решения достаточно. ну или отказоустойчивость обеспечена другими методами
  • Не об этом вопрос был
  • https://t.me/clickhouse_ru
    @sam4om #199978 06:29 AM, 19 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @mrkandreev #199979 08:10 AM, 19 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @stufently #199980 09:11 AM, 19 Jan 2021
    А подскажите для ручного удаления реплики по прежнему достаточно почистить один путь к ней в зк ?
  • https://t.me/clickhouse_ru
    @ITMobile #199981 09:53 AM, 19 Jan 2021
    Всем добрый день
    А есть в клике функция, посчитать в отсортированных данных, по дате, например, количество переходов между значениями.
    Например есть такие значения по порядку
    1
    0
    0
    1
    2
    Значения тут поменялись 3 раза. Такое возможно вообще через sql?
  • uniq?
  • https://t.me/clickhouse_ru
    uniq оно как я понимаю просто количество уникальных элементов выдаст, а нужно количество переходов между значениями. Значния могут быть разные, в том числе и дубли могут быть, а нужно посчитать сколько раз они менялись за указанный период
  • https://t.me/clickhouse_ru
    c runningDifference можно поиграться
  • да я вас понимаю, и судя по тому что вы гвоорите ваша задача сводится к подсчету уников, разве нет?
  • @133452245 #199986 09:59 AM, 19 Jan 2021
    или вы про переход между 1 0 или 1 2
  • @133452245 #199987 09:59 AM, 19 Jan 2021
    2 перехода верно?
  • https://t.me/clickhouse_ru
    через neighbor *но он подглючивает
    или в array и колдовать...
  • @133452245 #199989 10:00 AM, 19 Jan 2021
    если так то человек выше верно подсказал runningDifference будет рабоатть, но осторожно, работает по блоку данных
  • https://t.me/clickhouse_ru
    1-0 это один переход, 0-1 - второй, 1-2 - третий, допустим еще добавился 2-0 - это четвертый переход. И строки заранее отсортированы
  • тада runningDifference вполне подойдет
  • https://t.me/clickhouse_ru
    Спасибо! буду разбираться
  • https://t.me/clickhouse_ru
    @KiLEXst #199993 10:02 AM, 19 Jan 2021
    кстати да, тоже вопрос с аналогичной задачей. Есть факты изменения статусов. например 1 - онлайн 2 - оффлайн.
    как посчитать при помощи кликавремея нахождения в каждом статусе за указанный период
  • пример таблицы пжз
  • https://t.me/clickhouse_ru
    1;2020-01-01 00:00:00
    2;2020-01-01 01:00:00
    1;2020-01-01 02:00:00
    2;2020-01-01 03:00:00
    1;2020-01-01 04:00:00
    1;2020-01-01 04:15:00
    2;2020-01-01 06:00:00

    ожидаемый результат
    1) 4
    2) 2
  • @rusxakep #199996 10:10 AM, 19 Jan 2021
    Joined.
  • @rusxakep #199998 10:11 AM, 19 Jan 2021
    Коллеги, приветствую! Подскажите, а каким образом можно обфусцировать через clickhouse-obfuscator таблицы oracle? через какой-нибудь jdbc/odbc драйвер или можно проще? Экспорт/Импорт в CSV/TSV не подходит.
  • https://t.me/clickhouse_ru
    @glader_ru #199999 10:33 AM, 19 Jan 2021
    Посоветуйте плз web gui для клика. Tabix уже сильно отстал.
  • https://t.me/clickhouse_ru
    @floxard #200000 10:36 AM, 19 Jan 2021
    прям вот именно для кликхауса не посоветую
  • https://t.me/clickhouse_ru
    @floxard #200001 10:36 AM, 19 Jan 2021
    а вообще редаш
  • https://t.me/clickhouse_ru
    clickhouseip:8123/play
  • https://t.me/clickhouse_ru
    There is no handle /play

    Use / or /ping for health checks.
    Or /replicas_status for more sophisticated health checks.
  • https://t.me/clickhouse_ru
    хм, значит в какой-то новой версии появилось. у меня 20.11.3.3
  • https://t.me/clickhouse_ru
    https://redash.io/help/data-sources/querying здесь нету клика, да.
  • https://t.me/clickhouse_ru
    DataGrip мне нрав. Не web правда
  • https://t.me/clickhouse_ru
    спрятался навеное
    https://redash.io/data-sources/clickhouse
  • https://t.me/clickhouse_ru
    @floxard #200010 10:45 AM, 19 Jan 2021
    @glader_ru , кстати, в документации ещё есть подборка
    https://clickhouse.tech/docs/ru/interfaces/third-party/gui/
    Визуальные интерфейсы от сторонних разработчиков | Документация ClickHouse

    Визуальные интерфейсы от сторонних разработчиков С открытым исходным кодом Tabix Веб-интерфейс для ClickHouse в проекте

  • https://t.me/clickhouse_ru
    О, спасибо, слона-то я и не заметил :)
  • https://t.me/clickhouse_ru
    @floxard #200012 10:48 AM, 19 Jan 2021
    Ещё слышал от друга про tableau что используют с кликхаусом, правда я не знаком, даже не в теме оно платное или фри
  • https://t.me/clickhouse_ru
    @floxard #200013 10:48 AM, 19 Jan 2021
    вроде как да... поправьте кто-то если ошибаюсь
  • https://t.me/clickhouse_ru
    @GizmoKazan #200014 10:49 AM, 19 Jan 2021
    Еще раз спрошу, может кто подскажет. Есть таблица

    user_id | event | time_event
    1| start | 2021-01-18 09:20:00
    1| ev1 | 2021-01-18 09:37:00
    1| ev2 | 2021-01-18 09:58:00
    1| exit | 2021-01-18 10:11:00
    2| start | 2021-01-18 10:02:00
    2| ev1 | 2021-01-18 10:37:00

    Как подсчитать, что за определенное время (например, 1 час), пользователь успевает сделать больше 3х событий.

    Пытаюсь делать таким запросом
    SELECT toStartOfInterval(time_event, INTERVAL 1 HOUR) AS time, user_id, COUNT(*) AS cnt
    FROM table
    GROUP BY time, user_id
    HAVING COUNT(*) > 3

    Но в этом случае промежуток времени это час с 00:00 до 00:59, а не от первого события отсчитывается. Может кто сориентирует как правильно сделать?
  • Я считал через runningDifference. Предварительно отсортировав по дате изменения статуса.
  • https://t.me/clickhouse_ru
    на редаше остановился тоже
  • https://t.me/clickhouse_ru
    а примерчик какой нить можно?
  • https://t.me/clickhouse_ru
    Ну решение такое себе, если честно. С точки зрения статических таблиц ещё ок, ну и внутренних отчетов с натяжкой тоже, но как общее для большой компании, лучше посмотреть что то ещё
  • @bakanchev #200019 10:55 AM, 19 Jan 2021
    добрый день, есть ли какое-то поле, отвечающее за последний timestamp чтения из таблицы в КХ?
  • https://t.me/clickhouse_ru
    А просили же другое
  • https://t.me/clickhouse_ru
    ничего другого адекватного не нашел, аналитики пользуются и не пикают. хотя очень не хватает возможности ограничений доступа не только по датасорцам
  • https://t.me/clickhouse_ru
    еще бы по колонкам нагрузку както оценить, есть гдето такие статы?
  • https://t.me/clickhouse_ru
    @ZaytsevSer #200023 10:56 AM, 19 Jan 2021
    Тут однозначно бобр! Лучшее из того, что находил, любовь почти с первого взгляда
  • https://t.me/clickhouse_ru
    нагрузку это... частота обращения? размер?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    частота обращения в первую очередь
  • https://t.me/clickhouse_ru
    @KiLEXst #200027 10:57 AM, 19 Jan 2021
    размеры то есть в системной табличке columns
  • https://t.me/clickhouse_ru
    @resuba #200028 10:59 AM, 19 Jan 2021
    В system.query_logs указан запрос - INSERT INTO default.my_table FORMAT TabSeparated
    А можно как то прилагающиеся к запросу значения посмотреть?
  • https://t.me/clickhouse_ru
    @resuba ↶ Reply to #200028 #200029 11:09 AM, 19 Jan 2021
    Наверно нельзя, другой короткий вопрос, в КХ можно указать строкой таймзону типа Europe/Moscow. D формате 2021-01-19T13:47:00+03:00 кх не читает, а можно как то указать смещением? Или нужно считать вручную прибавляя нужное значение к DateTime?
  • сейчас попробую наклепать.
  • SELECT
    s,
    d,
    runningDifference(d) AS insec
    FROM
    (
    SELECT *
    FROM
    (
    SELECT
    s,
    d
    FROM t
    ORDER BY d ASC
    )
    ORDER BY d ASC
    )

    ┌─s─┬───────────────────d─┬─insec─┐
    │ 1 │ 2021-01-19 11:05:13 │ 0 │
    │ 2 │ 2021-01-19 11:08:25 │ 192 │
    │ 1 │ 2021-01-19 11:08:36 │ 11 │
    │ 3 │ 2021-01-19 11:08:46 │ 10 │
    └───┴─────────────────────┴───────┘
  • https://t.me/clickhouse_ru
    а зачем тут двойная выборка и сортировка одинаковая?
  • @ramun25 #200033 11:17 AM, 19 Jan 2021
    можно так SELECT
    s,
    d,
    runningDifference(d)
    FROM
    (
    SELECT
    s,
    d
    FROM t
    GROUP BY
    s,
    d
    ORDER BY d ASC
    )
  • @ramun25 #200034 11:17 AM, 19 Jan 2021
    смысл чтобы был один блок данных
  • @ramun25 #200035 11:17 AM, 19 Jan 2021
    когда реальная таблица - то ты все равно по объекту группируешь
  • https://t.me/clickhouse_ru
    @KiLEXst #200036 11:17 AM, 19 Jan 2021
    понял, спасибо! будут пробовать
  • @ramun25 #200037 11:18 AM, 19 Jan 2021
    или кто там у тебя статус имеет
  • https://t.me/clickhouse_ru
    да, конечно еще юзерид будет
  • причем блоки данных видны только в родном клиенте. раньше когда не было попыток учесть все возможные переводы строк - самый лучший вариант был. запросы писал в notepad+, а потом копипастил портянки в клиент.
  • https://t.me/clickhouse_ru
    я в vscode пишу, внизу консоль открыта с залогиненым клиентом и по cmd-shift-r выполняю)
  • https://t.me/clickhouse_ru
    @tavi27 #200042 12:13 PM, 19 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #200043 01:19 PM, 19 Jan 2021
    Всем привет!

    Не пропустите первый ClickHouse митап в этом году: https://www.eventbrite.com/e/clickhouse-january-virtual-meetup-office-hours-tickets-128555676489

    Как обычно, поговорим о всяких новых фичах и планах на год. Если есть желание выступить с коротким докладом — пишите на info@altinity.com или мне в личку.
    ClickHouse January [Virtual] Meetup - Office Hours

    January Meetup for the ClickHouse Community

  • https://t.me/clickhouse_ru
    None
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @KiLEXst #200046 01:29 PM, 19 Jan 2021
    прямо ночью?
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #200047 01:30 PM, 19 Jan 2021
    10 вечера по Москве
  • https://t.me/clickhouse_ru
    @zl0ng #200048 02:30 PM, 19 Jan 2021
    Пасаны, а есть такой чат по Вертике?)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @zl0ng ↶ Reply to #200049 #200050 02:34 PM, 19 Jan 2021
    Шутки за 100?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @zl0ng ↶ Reply to #200051 #200052 02:39 PM, 19 Jan 2021
    Спасибо)
  • https://t.me/clickhouse_ru
    да и даже есть system drop replica
  • https://t.me/clickhouse_ru
    да, через ArrayDifference/ArraySplit
  • https://t.me/clickhouse_ru
    О гляну завтра, раньше не было. Как всегда больше вам спасибо.
  • https://t.me/clickhouse_ru
    через массивы.

    давайте create table / insert мне лень вашу табличку оборачивать в insert самому
  • https://t.me/clickhouse_ru
    что такое "последний timestamp чтения" ?
  • https://t.me/clickhouse_ru
    Да, спасибо. С ArrayDifference всё получилось.
  • https://t.me/clickhouse_ru
    @Fullherdi #200059 02:56 PM, 19 Jan 2021
    Является ли результат запроса
    SELECT max(elapsed) FROM system.processes
    максимальным временем выполнения запроса?
  • Имеется в виду, когда в последний раз запрашивали таблицу как объект. Я в принципе пропарсил query log, но может есть более простой способ
  • https://t.me/clickhouse_ru
    нету, только query log
  • Спасибо
  • https://t.me/clickhouse_ru
    в данный момент.
    system.processes -- отражает текущее состояние, иначе см. query_log
  • https://t.me/clickhouse_ru
    в данный момент и нужно)
    спасибо!
  • https://t.me/clickhouse_ru
    @chagin_mv #200065 03:16 PM, 19 Jan 2021
    Всем привет! Делаю attach файлов на части партиций вылетает такая ошибка "Attempt to read after eof " версия КХ 20.12.5.14

    А вкратце делали detach на одном сервере, переносили файлы на другой и сделали attach. По одной таблице вылетает такая ошибка. 10 таблиц перенеслись без проблем.

    Что посоветуете сделать?
  • https://t.me/clickhouse_ru
    >делали detach на одном сервере
    версия КХ у одного сервера?
  • https://t.me/clickhouse_ru
    @chagin_mv #200067 03:17 PM, 19 Jan 2021
    нет, версии разные
  • https://t.me/clickhouse_ru
    какая версия у исходного?
  • https://t.me/clickhouse_ru
    20.11.3.3 с этой переезжали
  • https://t.me/clickhouse_ru
    плюс переезжали с виртуального на физический, если это важно
  • https://t.me/clickhouse_ru
    в таблице есть поля LowCardinality(Nullable ?
  • https://t.me/clickhouse_ru
    да, Nullable поля имеются
  • https://t.me/clickhouse_ru
    блин, ну я не это спросил, что за идиотизм кругом, люди, что вы делаете
  • https://t.me/clickhouse_ru
    @den_crane #200074 03:24 PM, 19 Jan 2021
    EOF from detectDefaultCompressionCodec start happening between v20.8.2.3 and v20.13.1.1? · Issue #18340 · ClickHouse/ClickHouse

    I tried to upgrade ClickHouse from v20.8.2.3 to v20.13.1.1 but there are some errors while reading a merge_tree table.. Error Messages: 2020.12.22 11:19:36.084760 [ 20114 ] {} <Error>...

  • https://t.me/clickhouse_ru
    не, таких полей нет
  • https://t.me/clickhouse_ru
    а trace из КХ лога покажите
  • https://t.me/clickhouse_ru
    Вы правы, это был мой "крик боли". нам нельзя было ЗК а кластер хотелось
  • https://t.me/clickhouse_ru
    @rasstr0en #200079 04:07 PM, 19 Jan 2021
    Всем привет! Кто работал с движком Buffer - как много строк ставили как max_rows ? По опыту в MergeTree 20к строк хорошо пачкой вставляется, из буфера вставлять можно ли тысяч по 100?
  • https://t.me/clickhouse_ru
    А данные критичные ?
  • https://t.me/clickhouse_ru
    @rasstr0en #200081 04:09 PM, 19 Jan 2021
    Да
  • https://t.me/clickhouse_ru
    @rasstr0en #200082 04:09 PM, 19 Jan 2021
    терять не хочется
  • https://t.me/clickhouse_ru
    Тогда лучше не надо
  • https://t.me/clickhouse_ru
    @rasstr0en #200084 04:10 PM, 19 Jan 2021
    По докам даже на дроп таблицы буфер сбрасывается нормально же
  • https://t.me/clickhouse_ru
    @rasstr0en #200085 04:10 PM, 19 Jan 2021
    Или были случаи с буфером плохие?
  • https://t.me/clickhouse_ru
    Буффер хранит данные в оперативке, этого хватит
  • https://t.me/clickhouse_ru
    @artcorp96 #200087 04:11 PM, 19 Jan 2021
    Я для критичных данных вообще буффер не использывал бы
  • https://t.me/clickhouse_ru
    @rasstr0en #200088 04:11 PM, 19 Jan 2021
    ну, при краше сервера потерять секунды 2-3 таких данных не критично
  • https://t.me/clickhouse_ru
    @rasstr0en #200089 04:12 PM, 19 Jan 2021
    главное чтобы они не терялись в процессе нормальной работы)
  • https://t.me/clickhouse_ru
    Если конфиги норм, не вижу проблемы
  • https://t.me/clickhouse_ru
    @rasstr0en #200091 04:19 PM, 19 Jan 2021
    Тогда попробуем
  • https://t.me/clickhouse_ru
    @rasstr0en #200092 04:20 PM, 19 Jan 2021
    сейчас просто пишу в редис маленькими пачками и потом пачками побольше в кликхаус, с буфером надеюсь убрать один шаг и писать прямо в него мелкими пачками
  • https://t.me/clickhouse_ru
    А какой рпс ?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @rasstr0en #200095 04:21 PM, 19 Jan 2021
    то есть по плану буфер на 6 секунд и 24к строк
  • https://t.me/clickhouse_ru
    А, ну это совсем не много
  • https://t.me/clickhouse_ru
    @peter_ll #200097 04:24 PM, 19 Jan 2021
    Ребята
    если я вижу в
    select * from system.metrics;
    ZooKeeperSession = 2
    * Number of sessions (connections) to ZooKeeper. Should be no more than one, because using more than one connection to ZooKeeper may lead to bugs due to lack of linearizability (stale reads) that ZooKeeper consistency model allows.

    это вообще проблема?

    в конфиге вроде ничего сверхъестественного:
    <zookeeper>
    <node>
    <host>10.X.X.2</host>
    <port>2181</port>
    </node>
    <node>
    <host>10.X.X.3</host>
    <port>2181</port>
    </node>
    <node>
    <host>10.X.X.4</host>
    <port>2181</port>
    </node>
    <node>
    <host>10.X.X.5</host>
    <port>2181</port>
    </node>
    <node>
    <host>10.X.X.6</host>
    <port>2181</port>
    </node>
    <session_timeout_ms>30000</session_timeout_ms>
    </zookeeper>
  • @beebeeep #200098 04:29 PM, 19 Jan 2021
    А раз уж про это речь зашла - это вообще нормальный паттерн, использовать Buffer для накопления данных с последующим выгребанием в MergeTree?
  • https://t.me/clickhouse_ru
    Вопрос в вакууме, раз такое сделали, логично что для буффера свои кейсы
  • https://t.me/clickhouse_ru
    @1236463047 #200100 04:38 PM, 19 Jan 2021
    У меня через буффер. 200 серваков льют в него пачечками, он в одну. Про размер правде не скажу. Но тысячи точно. Вроде живет
  • https://t.me/clickhouse_ru
    а если альтерить таблицу - убиваете буфер, альтерите, создаете буффер?
  • https://t.me/clickhouse_ru
    @1236463047 #200102 04:40 PM, 19 Jan 2021
    да
  • https://t.me/clickhouse_ru
    @1236463047 #200103 04:40 PM, 19 Jan 2021
    это ж быстро
  • https://t.me/clickhouse_ru
    @rasstr0en #200104 04:40 PM, 19 Jan 2021
    и при смерти она сбрасывает буфер ок?
  • https://t.me/clickhouse_ru
    @rasstr0en #200105 04:41 PM, 19 Jan 2021
    Ну тогда прям выглядит как хорошая штука этот буфер
  • https://t.me/clickhouse_ru
    @dmayudinph #200106 04:41 PM, 19 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @samuylov #200107 04:41 PM, 19 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    До 10-15 к рпс +- норм, дальше думаю уже риск
  • https://t.me/clickhouse_ru
    Речь про одну машину
  • Вопрос скорее в том, есть ли там скрытые подводные камни. Понятно что оно должно умещаться в памяти, что-то ещё? Лимит по конкаренси - 10К рпс тянет, а 50-100, например?
  • https://t.me/clickhouse_ru
    Ну судя по доке - да
  • https://t.me/clickhouse_ru
    @1236463047 #200112 04:43 PM, 19 Jan 2021
    остается надеться ))
  • https://t.me/clickhouse_ru
    Если мы говорим про 1 машину, потянет столько, сколько хватит скорости оперативки. Явный минус это потеря данных, при краше
  • https://t.me/clickhouse_ru
    @artcorp96 #200114 04:45 PM, 19 Jan 2021
    Вообще лить 50-100 к рпс на одну машинку синхронно проблемно
  • https://t.me/clickhouse_ru
    @1236463047 #200115 04:45 PM, 19 Jan 2021
    в памяти - да, буыер не на диске - потому и потеря при краше сервера. Но при его краше - обойтись только потерей буфера - это удача )) Не надо чтоб крашился и все
  • https://t.me/clickhouse_ru
    Вообще краш в наши дни с норм админами редкость, но не исключено
  • https://t.me/clickhouse_ru
    100k tcp запросов ? 100k http ? это проблема для tcp, оверхед на tcp/http
  • https://t.me/clickhouse_ru
    Как понимаю, в вопросе уже решена проблема с сетью
  • https://t.me/clickhouse_ru
    @1236463047 #200119 04:47 PM, 19 Jan 2021
    есть еще кто-то писоал софтинка на go - буферит, а потом на КХ. Забыл название
  • https://t.me/clickhouse_ru
    bulk insert
  • https://t.me/clickhouse_ru
    у меня вчера в хецнере сервер 7 раз перезагрузился
  • Да, наверное 100к рпс я хватанул:) столько наверное суммарно во все шарды будет
  • https://t.me/clickhouse_ru
    Хмм, я думал они надежные
  • https://t.me/clickhouse_ru
    просто желзка заглючила
  • https://t.me/clickhouse_ru
    Я кх в проде под хайлоад где то больше полу года использую, не разу проблем с железом не было, чтоб сервер упал
  • https://t.me/clickhouse_ru
    @1236463047 #200126 04:52 PM, 19 Jan 2021
    Посмотрел свои данные - гдето 200-300К строк в минуту. Со всех серверов. Держат буфер, не жужжит
  • https://t.me/clickhouse_ru
    Ну это +- 5 к рпс, я тестил с танком 10 к, вроде было норм
  • https://t.me/clickhouse_ru
    @1236463047 #200128 04:54 PM, 19 Jan 2021
    но да, 3-5 в сек выходит
  • https://t.me/clickhouse_ru
    Интересно, а это на одну машину ?
  • https://t.me/clickhouse_ru
    @1236463047 #200130 04:55 PM, 19 Jan 2021
    это в один КХ со всех отправителей
  • https://t.me/clickhouse_ru
    @1236463047 #200131 04:56 PM, 19 Jan 2021
    100-200 трудяг льют свои данные
  • @Trampler #200132 04:56 PM, 19 Jan 2021
    Добрый день!
    Помогите пж разобраться с применимостью КХ для задачи выборки воронок состояний.
    Если упростить, то есть записи (datetime, objectid, status), объемы большие, модели перехода из статуса в статус для разных объектов могут отличаться.
    Воронка состояний в данном случае - некий заданный статусный путь из статуса 1 в статус N
    Именно ее агрегаты нужно будет показывать в отчетности/BItools.
    Выборка идет за период (например, выбранный месяц) относительно статуса1, основной нюанс в том, что просто взять и проагрегировать данные по каждому статусу - некорректно, нужно для каждого objectid смотреть его прохождение по выбранному статусному пути, т.е. фактически получается так (опять же упрощая):
    всего было объектов в статусе 1 - из них перешло в статус 2 - из них перешло в статус 3 - ... - из них перешло в статус N
    при этом datetime для статус 1 и статус N может отличаться в теории на пару лет, на год точно.
    отсюда несколько вопросов:
    1. насколько это вообще тема для КХ?
    2. если вполне себе, то как быть с индексом? удастся ли обойтись одной таблицей?
    3. сама задачка выборки подобной воронки - тоже вопрос. не подзапросами же такое решается)
    в голову приходит первым шагом вытащить по datetime и status = статус1 все объекты, а потом уже по самим objectid анализ статусного пути делать. но если таблица одна и индекс один сомнительно что это будет эффективно. а делать например 2 таблицы для одного и того же (но с разными индексами) кажется избыточным. первые мысли такие.
  • https://t.me/clickhouse_ru
    А не сложно обрабатывать так много данных ? Почему не шарды ? Там же таблицы очень быстро распухнут до огромных размеров
  • https://t.me/clickhouse_ru
    @1236463047 #200134 04:58 PM, 19 Jan 2021
    нет, там суммари сразу стоит
  • https://t.me/clickhouse_ru
    @1236463047 #200135 04:58 PM, 19 Jan 2021
    каждый клик не храню
  • https://t.me/clickhouse_ru
    @1236463047 #200136 04:59 PM, 19 Jan 2021
    партиции по дням, да есть
  • https://t.me/clickhouse_ru
    @den_crane #200137 05:00 PM, 19 Jan 2021
    ну ширина строк у всех разная, тут в чатике есть пользователи с триллионами строк в таблицах и миллионами в секунду
  • https://t.me/clickhouse_ru
    @1236463047 #200138 05:00 PM, 19 Jan 2021
    ну и история не нужна. Деньги на период получены - дроп партишен...
  • https://t.me/clickhouse_ru
    @maxisgrom #200139 05:04 PM, 19 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    sequenceCount
    windowfunnel

    https://clickhouse.tech/docs/en/sql-reference/aggregate-functions/parametric-functions/#windowfunnel

    массивы (groupArray)

    >1. насколько это вообще тема для КХ?
    и да и нет, для очень сложных воронок затруднительно

    >2. если вполне себе, то как быть с индексом? удастся ли обойтись одной таблицей?
    никакие индексы тут не помогут, прямо по таблице ивентов считают.
    если воронки (условия переходов) статичные то это надо считать до заливки в КХ или вообще тогда КХ не нужен
  • https://t.me/clickhouse_ru
    Кстати вот по поводу миллионов - допускаю что сохранить КХ сохранит. А как бегать по этим триллионам собирая отчеты? Или все решается раскладками по суммари таблицам с группировками по Час-День-Месяц..?
  • https://t.me/clickhouse_ru
    Можно добавить, что если данных много, то прикольно, если их можно пошардировать и использовать distributed_group_by_no_merge=1.
    Индексы тоже могут быть полезны. Но тут зависист от типа воронки.
    Например если есть что-то вроде
    windowFunnel(10000)(time, eventType=A, eventType=B)
    то можно в WHERE добавить eventType IN (A,B) и тогда будет прочитано меньше данных. Но такую оптимизацию можно делать не всегда.
    И в погоне за воронками надо не забыть не сломать общую логику индексов в ClickHouse. Например не сделать слишком гранулярный индекс.
  • https://t.me/clickhouse_ru
    странные вопросы. Не устраивает скорость селектов, шардируйте - оптимизируйте. У меня некоторые запросы выполняются 40 минут. Это устраивает кастомеров, проблемы нет.

    Пользователи с триллионами строк не делают селектов. Представьте вы льете 5 тыс метрик с сервера, с 10ти тысяч серверов, ну не надо вам смотреть температуру жесткого диска на всех серверах, только в случае какого-то ресерча, вы смотрите конкретную метрику
  • https://t.me/clickhouse_ru
    SET allow_introspection_functions = 1
    WITH arrayMap(x -> demangle(addressToSymbol(x)), trace) AS all SELECT thread_id, query_id, arrayStringConcat(all, '\n') AS res FROM system.trace_log LIMIT 1

    Вы про это имели ввиду?
  • https://t.me/clickhouse_ru
    clickhouse-server.log или clickhouse-server.err.log
  • @Trampler #200146 05:45 PM, 19 Jan 2021
    @den_crane @dancing_elf Спасибо за ответы! Поразбираюсь
  • https://t.me/clickhouse_ru
    2021.01.19 17:20:03.309854 [ 12994 ] {63e4ef56-6e6c-47c9-a775-731b4bd6c097} <Error> executeQuery: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 20.12.5.14 (official build)) (
    from [::ffff:78.25.99.99]:59151) (in query: ALTER TABLE DataGVSBase ATTACH PARTITION 202002), Stack trace (when copying this message, always include the lines below):

    0. DB::throwReadAfterEOF() @ 0x7d9f87d in /usr/bin/clickhouse
    1. ? @ 0x7dc0aed in /usr/bin/clickhouse
    2. DB::DataTypeString::deserializeBinary(DB::IColumn&, DB::ReadBuffer&) const @ 0xd953e95 in /usr/bin/clickhouse
    3. DB::IMergeTreeDataPart::loadIndex() @ 0xe4835bf in /usr/bin/clickhouse
    4. DB::IMergeTreeDataPart::loadColumnsChecksumsIndexes(bool, bool) @ 0xe481002 in /usr/bin/clickhouse
    5. DB::MergeTreeData::tryLoadPartsToAttach(std::__1::shared_ptr<DB::IAST> const&, bool, DB::Context const&, DB::MergeTreeData::PartsTemporaryRename&) @ 0xe4df16d in /usr/bin/clickhouse
    6. DB::StorageMergeTree::attachPartition(std::__1::shared_ptr<DB::IAST> const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, bool, DB::Context const&) @ 0xe2b98f8 in /usr/bin/clickhouse
    7. DB::MergeTreeData::alterPartition(std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, std::__1::vector<DB::PartitionCommand, std::__1::allocator<DB::PartitionCommand> > const&, DB::Context co
    nst&) @ 0xe4d827c in /usr/bin/clickhouse
    8. DB::InterpreterAlterQuery::execute() @ 0xdd0901a in /usr/bin/clickhouse
    9. ? @ 0xe060347 in /usr/bin/clickhouse
    10. DB::executeQuery(DB::ReadBuffer&, DB::WriteBuffer&, bool, DB::Context&, std::__1::function<void (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::b
    asic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char,
    std::__1::char_traits<char>, std::__1::allocator<char> > const&)>) @ 0xe063377 in /usr/bin/clickhouse
    11. DB::HTTPHandler::processQuery(DB::Context&, Poco::Net::HTTPServerRequest&, HTMLForm&, Poco::Net::HTTPServerResponse&, DB::HTTPHandler::Output&, std::__1::optional<DB::CurrentThread::QueryScope>&) @ 0xe6
    e1148 in /usr/bin/clickhouse
    12. DB::HTTPHandler::handleRequest(Poco::Net::HTTPServerRequest&, Poco::Net::HTTPServerResponse&) @ 0xe6e4385 in /usr/bin/clickhouse
    13. Poco::Net::HTTPServerConnection::run() @ 0x10eb55f5 in /usr/bin/clickhouse
    14. Poco::Net::TCPServerConnection::start() @ 0x10eebb1f in /usr/bin/clickhouse
    15. Poco::Net::TCPServerDispatcher::run() @ 0x10eed531 in /usr/bin/clickhouse
    16. Poco::PooledThread::run() @ 0x1101ab09 in /usr/bin/clickhouse
    17. Poco::ThreadImpl::runnableEntry(void*) @ 0x11016a9a in /usr/bin/clickhouse
    18. start_thread @ 0x7fa3 in /usr/lib/x86_64-linux-gnu/libpthread-2.28.so
    19. clone @ 0xf94cf in /usr/lib/x86_64-linux-gnu/libc-2.28.so
  • https://t.me/clickhouse_ru
    так похоже парт битый. Вы с выключенного КХ парт забрали? Или через FREEZE ?
  • https://t.me/clickhouse_ru
    делали detach но в КХ не писали новых данных
  • https://t.me/clickhouse_ru
    @yelrik #200150 06:30 PM, 19 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    может в этот момент merge был конечно
  • https://t.me/clickhouse_ru
    в смысле detach table ? тогда мержа не было
  • https://t.me/clickhouse_ru
    @yelrik #200153 06:31 PM, 19 Jan 2021
    приветы. Подскажите, как добавить пользователю права на создание таблицы в КликХаусе, который крутится в Облаке Яндекса. Всю документацию перерыл уже, ничего не выходит
  • https://t.me/clickhouse_ru
    detach партиций по всей таблице
  • https://t.me/clickhouse_ru
    и потом из папки detached скопировали?
  • https://t.me/clickhouse_ru
    да, копировали на новый сервер и там уже attach
  • https://t.me/clickhouse_ru
    может во время копирования побились, rsync-м копировали?
  • 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
    Приветствую.

    Спасибо за решение @tkostyan.
    Пытаюсь использовать это для alembic миграций, но в миграцию не подтягивает значение engine (елси же нужные строки туда дописать руками - сама миграция получается рабочая).

    def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_table('another_rate_2',
    sa.Column('day', clickhouse_sqlalchemy.types.common.Date(), nullable=False),
    sa.Column('value', clickhouse_sqlalchemy.types.common.Int32(), server_default=sa.text('1'), nullable=True),
    sa.Column('model', clickhouse_sqlalchemy.types.common.String(), nullable=True),
    sa.Column('dt', clickhouse_sqlalchemy.types.common.DateTime(), server_default=sa.text('now()'), nullable=True),
    sa.PrimaryKeyConstraint('day')

    # engine должен быть где-то здесь : (
    )


    хотя в самой модели engine указан

    another_table_2 = Table('another_rate_2', metadata,
    Column('day', types.Date, primary_key=True),
    Column('value', types.Int32, server_default=literal(1)),
    Column('model', types.String),
    Column('dt', types.DateTime, server_default=func.now()),
    Column('dt3', types.DateTime64(3), server_default=func.now()),
    # Column('dt2', types.DateTime64(2), server_default=func.now()),
    engines.ReplicatedMergeTree(
    '/clickhouse/tables/{layer}-{shard}/another_rate_2', '{replica}',
    partition_by=func.toYYYYMM(Column('dt')),
    order_by=('value', 'model')
    )
    )

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

    В alembic env.py использовал такой код для задания диалекта

    class CustomDialectImpl(impl.DefaultImpl):
    dialect = "clickhouse"
    transactional_ddl = False
  • https://t.me/clickhouse_ru
    Да, engine пока туда не будет подтягиваться. Сейчас это одно из ограничений, которое возможно получится обойти
  • 20 January 2021 (202 messages)
  • @demetranadya #200165 04:40 AM, 20 Jan 2021
    Есть пример создания индекса уже на готовой таблице?
  • https://t.me/clickhouse_ru
    @317622525 #200166 05:05 AM, 20 Jan 2021
    Joined.
  • @demetranadya #200167 05:23 AM, 20 Jan 2021
    Как для этой таблицы добавить составной индекс для s_company_id
  • @ogavrilov #200169 06:19 AM, 20 Jan 2021
    Кто-то использовал mongodb engine? Как доставать данные из вложенных документов?
  • Исправить на
    Order by id, s_company_id
  • Менять ключ нельзя, в кх только кластерный индекс определяющий порядок строк. Скип индекмы есть но это другое
  • @957807795 #200173 08:06 AM, 20 Jan 2021
    I we are trying to connect clickhouse with Tableau Server linux
    we are getting below error
    ——————————————————————————————————————————————————————
    while connecting tableau with clickhouse we are getting below error
    [unixODBC][Driver Manager]Can't open lib '/usr/local/lib/libclickhouseodbc.so' : file not found
    Generic ODBC requires additional configuration. The driver and DSN (data source name) must be installed and configured to match the connection.
    Unable to connect using the DSN named "ANANTH DB". Check that the DSN exists and is a valid connection.
    —————————————————————————————————————————————————————————————-
    https://github.com/ClickHouse/clickhouse-odbc
    we installed clickhouse-odbc

    Driver = /usr/local/opt/clickhouse-odbc/lib/libclickhouseodbc.so
    # Optional settings:
    #server = localhost
    #password = xxxxxx
    #port = 8123
    #database = default
    #uid = default
    #sslmode = require
    GitHub - ClickHouse/clickhouse-odbc: ODBC driver for ClickHouse

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

  • https://t.me/clickhouse_ru
    @andrey_rusanov #200174 08:21 AM, 20 Jan 2021
    Добрый день,
    подскажите пожалуйтса, как лучше сделать партиционирование. У меня есть данные (список событий), которые хранятся до года, в день записывается порядка миллиона событий, и это количество по чуть-чуть растет. Сначала думал использовал партиционирование по месяцу, но сейчас задумался, не будет ли правильнее делать партиционирование по дню?
  • https://t.me/clickhouse_ru
    клик ругается когда создаешь более 100 партиций на одну таблицу. у меня около 1500000 в день событий, партиционирование по месяцу - полет нормальный
  • https://t.me/clickhouse_ru
    спасибо! читал в документации что до 1000 патриций можно, видимо неправильно посчитал нули 😄
  • https://t.me/clickhouse_ru
    @KiLEXst #200177 08:26 AM, 20 Jan 2021
    ругается - но создаёт)
  • https://t.me/clickhouse_ru
    @andrey_rusanov #200178 08:27 AM, 20 Jan 2021
    в документации - вот что:

    Не рекомендуется делать слишком гранулированное партиционирование – то есть задавать партиции по столбцу, в котором будет слишком большой разброс значений (речь идет о порядке более тысячи партиций). Это приведет к скоплению большого числа файлов и файловых дескрипторов в системе, что может значительно снизить производительность запросов SELECT.
  • https://t.me/clickhouse_ru
    @andrey_rusanov #200179 08:27 AM, 20 Jan 2021
    у меня просто есть выборки по дням, вот я и задумался
  • https://t.me/clickhouse_ru
    @KiLEXst #200180 08:27 AM, 20 Jan 2021
    такой объем данных для клика - мелочь. в принципе даже без партиционирования нужные мне запросы происходят очень быстро
  • https://t.me/clickhouse_ru
    @KiLEXst #200181 08:28 AM, 20 Jan 2021
    я храню 3 года+
  • https://t.me/clickhouse_ru
    @KiLEXst #200182 08:28 AM, 20 Jan 2021
    у меня выборки дневные, сгруппированные по часам
  • https://t.me/clickhouse_ru
    @KiLEXst #200183 08:28 AM, 20 Jan 2021
    пробовал дневные партиции - по скорости получилось тоже самое - очень быстро)
  • https://t.me/clickhouse_ru
    @andrey_rusanov #200184 08:28 AM, 20 Jan 2021
    ок, супер, спасибо
  • https://t.me/clickhouse_ru
    Это можено изменять через настройку max_parts_in_total, стандартное значение 100000 (https://github.com/ClickHouse/ClickHouse/blob/2c71b997de3f49de80802ced4dd19787f344486a/src/Storages/MergeTree/MergeTreeSettings.h#L58)
    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
    спасибо, буду знать. Поэксперементирую на досуге
  • https://t.me/clickhouse_ru
    @yelrik #200187 08:37 AM, 20 Jan 2021
    ребят, каким клиентом для ClickHouse пользуетесь для Винды?
  • @QValD ↶ Reply to #200187 #200188 08:38 AM, 20 Jan 2021
    Встроенным в ide от jetbrains
  • https://t.me/clickhouse_ru
    Пользуюсь dbeaver, он кроссплатформенный
  • notepad++ putty ClickHouse client version 20.8.5.45 (official build).
  • https://t.me/clickhouse_ru
    @yelrik ↶ Reply to #200190 #200191 08:50 AM, 20 Jan 2021
    это что за зверь?
  • текстовый редактор + командная строка, большие портянки писать - самое то, другие окна не мешают. + можно на отдельные экраны разнести, когда совсеммного писать
  • https://t.me/clickhouse_ru
    @viusiumbeli #200193 09:09 AM, 20 Jan 2021
    Добрый день! Может кто-нибудь подсказать сколько раз будет вычиляться функция arrayFirst(m -> m != '', reverse(groupArray(mailing_result))) в этом запросе?
    SELECT arrayFirst(m -> m != '', reverse(groupArray(mailing_result))) as last_mailing_result
    FROM log_record
    having arrayFirst(m -> m != '', reverse(groupArray(mailing_result))) LIKE 'хорошо';
  • @olexander1 #200194 09:14 AM, 20 Jan 2021
    Здравствуйте!
    Помогите, пожалуйста, советом
    Есть таблица ReplacingMergeTree

    CREATE TABLE table_arrays(id UInt32,docs Array(UInt32)) ENGINE ReplacingMergeTree() ORDER BY id;

    И я вставляю данные

    INSERT INTO table_arrays
    VALUES (1000, [1,2,3]), (1001, [3,4,5]);

    INSERT INTO table_arrays
    VALUES (1000, [1,4]);

    Можно ли сделать так, чтобы после схлопывания или во время вставки, массивы объединялись по ключу сортировки (id)
    Сейчас
    select * from table_arrays;

    ┌───id─┬─docs────┐
    │ 1000 │ [1,2,3] │
    │ 1001 │ [3,4,5] │
    └──────┴─────────┘

    А нужно
    ┌───id─┬─docs────┐
    │ 1000 │ [1,2,3,4] │
    │ 1001 │ [3,4,5] │
    └──────┴─────────┘
  • https://t.me/clickhouse_ru
    @Mike_Er #200195 09:40 AM, 20 Jan 2021
    Коллеги привет, пробуем обновиться на последний стэйбл - 2021.01.20 12:36:40.356251 [ 74546 ] {} <Error> Application: DB::Exception: No macro 'shard2017' in config while processing substitutions in '/clickhouse/tables/{shard2017}/dnl_int_dnl_log_local' at '20' or macro is not supported here: Cannot attach table dnl_int
  • https://t.me/clickhouse_ru
    @Mike_Er #200196 09:40 AM, 20 Jan 2021
    что-то поменялось в конфигах*
  • https://t.me/clickhouse_ru
    @Mike_Er #200197 09:40 AM, 20 Jan 2021
    ?
  • 1
  • https://t.me/clickhouse_ru
    А можно ненмного поподробней? Каким образом это работает или мб в документации это где-то описано?
  • @demetranadya #200200 10:06 AM, 20 Jan 2021
    Можно ли добавлять индексы группировки после создания таблицы?
  • @KciNKh #200201 10:09 AM, 20 Jan 2021
    Доброго времени суток, обнаружилась проблема с INSERT в ReplicatedSummingMergeTree (1 шард - 2 реплики).
    при INSERT с такими же значениями (даже через большой интервал времени в несколько часов) этот INSERT "игнорируется" в сумме, хотя и выполняется без ошибок.
    Это так работает удаление дубликатов?
    SELECT version()
    20.12.5.14
  • @rokford #200202 10:25 AM, 20 Jan 2021
    Joined.
  • куда добавлять?
  • @ramun25 #200204 10:31 AM, 20 Jan 2021
    может кто сталкивался? (если не любите null, то должны)). https://clickhouse.tech/docs/ru/operations/settings/settings/#settings-input-format-null-as-default работает только при указании, как флага при подключении. если указывать в конфиге (табличка system.settings изменяется), то не работает. :) это так и должно быть?
    Настройки | Документация ClickHouse

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

  • Создавать для таблицы. Например нужен индекс на (дата, идентификатор компании) потом может понадобиться создать (дата, идентификатор города) или (дата, идентификатор хоста)
  • сначала groupArray - получается одна строка. на ней уже expression
  • там добавлять к индексу поля можно было. а вот менять порядок или изменять точно нет. данные сортированные лежат в файлах и добавление поля к индексу - не сильно сломает. а новый порядок - это полностью перебрать все данные. тоже самое - делайте руками и управляемо
  • @RNL2501 #200208 11:05 AM, 20 Jan 2021
    Joined.
  • @koziarskii #200209 11:05 AM, 20 Jan 2021
    Joined.
  • @RNL2501 #200210 11:16 AM, 20 Jan 2021
    Всем привет.
    Подскажите, пожалуста, как правильно обновиться с 19 на 20 CH, если он крутится в докере (данные и конфиг, конечно - снаружи контейнера):
    - можно просто скачать новый базовый образ и новый контейнер поднять (подмонтировав теже данные и при необходимости подпилить конфиг, если он стал несовместим)?
    - или во время обновления что либо еще делается, кроме замены бинарника/либ - с данными/метаданными/системными таблицами? и тогда нужно внутри контейнера запустить апдейт?
  • @KciNKh ↶ Reply to #200201 #200211 11:17 AM, 20 Jan 2021
    в логах нашли Block with ID 202101_2180591676372156159_10680116372015693460 already exists locally as part 20210119_20210119_89_89_0; ignoring it.
    как с этим бороться?
  • Добрый день.
    Мы апдейтились просто заменой версии контейнера, конкретно на 20.3 версию, фолдеры с данными просто подмонтировали на новый контейнер и все поднялось.
    Но тут надо смотреть именно по использованию (changelog глянуть для 20.3 версии) так как там есть изменения по использованию. Конкретно у нас были какие то нюансы с JOIN если я правильно помню
  • @RNL2501 #200214 12:10 PM, 20 Jan 2021
    я, конечно, читал changelog - там мильены изменений, после той версии, что у нас есть...)))
  • @RNL2501 #200215 12:11 PM, 20 Jan 2021
    нет правила с какой на какую версию можно обновляться?)
  • https://t.me/clickhouse_ru
    @n0byk #200216 12:15 PM, 20 Jan 2021
    Всем привет! подскажите пожалуйста, как лучше всего организовать хранение вложенных списков , категории товаров, услуг , домов?

    например:
    -География
    - Московская область
    - Москва
    -Пр. Мира
    Товары
    -Для дома
    -для дачи
    Для Работы
    -Спец одежда
    .....
  • Для чего вам категории? это справочники?
  • https://t.me/clickhouse_ru
    @n0byk ↶ Reply to #200217 #200218 12:32 PM, 20 Jan 2021
    Да, это справочники
  • https://t.me/clickhouse_ru
    Есть иеархические словари
  • структуру данных надо делать такую, чтобы удобнее было джойнить на основные данные. кх не предназначен для update - поэтому все update через полное обновление, через insert и группировкой перед join. или внешние справочники, которые или в другой БД, или в файле на диске. внешние справочники подключаются через create dictionary. структуру иерархическую или нет - вы сами должны определить, как вам удобнее (если неудобно, то view написать и словарь на него сделать, если удобно, то есть иерархические словари).
  • https://t.me/clickhouse_ru
    @yuioler #200221 01:00 PM, 20 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @d521bb85 #200222 01:15 PM, 20 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @peter_ll #200223 01:25 PM, 20 Jan 2021
    Привет
    По использованию цпу ишью все-еще со мной
    (КХ апдейт 20.4.3 > 20.12.4)
    * у меня есть овер-партицированные по меркам КХ таблицы - как понимаю именно в этом главный импакт на "фон" - с этим буду решать конечно но надеялся отложить на "чуть позже"
    ** стораж-полисей и пережатия не декларировал и в system.merges / процесслисте / мутациях чисто +- и обычного для ситуации дискового оверхэда не вижу
    *** хотелось бы без рестарта понять в том ли направлении копаю
    **** кластера без реплик - только шарды

    проверяю теорию про бэкграунд-процессы (именно background_schedule_pool смущает): то что алгритм который выбирает/проверяет "нужно ли что-нибудь сделать" отъедает много цпу в моменте именно инициализации - т.е. чекнуть "что делать и есть ли что в принципе"
    ***** подчистка мусора в таблицах/партишках чуть снизила "фоновую загрузку" цпу, но она на текущий момент все-равно ~33% → ~25%

    вопросы:
    1 - background_schedule_pool tasks это какие? *у меня все таблицы - простые MergeTree, т.е. в моём случае только рефрэш DNS и rm старых партов?
    2 - есть ли какой-то SYSTEM STOP XXX для проверки теории↑ ? Не нашел подходящего на https://clickhouse.tech/docs/en/sql-reference/statements/system/#query-language-system-mergetree но эт ведь не всегда показатель)
    2.1 - если я для теста накидывю разных "SYSTEM STOP ... db.table" - где потом я смогу увидеть все текущие (действующие) запреты?
    3 - может ли мне тюнинг чего-то из system.merge_tree_settings помочь в сабже (например number_of_free_entries_in_pool_to_lower_max_size_of_merge приопустить)?
  • @ErmakVA #200224 01:40 PM, 20 Jan 2021
    Коллеги, здравствуйте. Правильно ли я понимаю,что materialized view игнорирует аттачи партиций в таблицу, на которую оно смотрит?
  • https://t.me/clickhouse_ru
    @mylh371 #200225 01:52 PM, 20 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @glebsamm #200226 02:07 PM, 20 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @whatwhh #200227 02:16 PM, 20 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    с которой у нее селект? Или в которую пишет
  • Из которой селект
  • https://t.me/clickhouse_ru
    @1236463047 #200230 02:26 PM, 20 Jan 2021
    ПО идее - да. ИНсерта ж нет
  • https://t.me/clickhouse_ru
    @1236463047 #200231 02:27 PM, 20 Jan 2021
    но для 100% надежности - можно отключить (или детачнуть)
  • https://t.me/clickhouse_ru
    @mvikharev #200232 03:21 PM, 20 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    Joined.
  • @fs_fs_fs_fs #200234 03:58 PM, 20 Jan 2021
    Вопрос, нашел опечатки в документации (если тупо скопировать код и вставить то КХ не поднимется). Не подскажите куда issue создать?
  • 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://github.com/ClickHouse/readthedocs-stub
    Сейчас создам
    ClickHouse/readthedocs-stub

    Contribute to ClickHouse/readthedocs-stub development by creating an account on GitHub.

  • @fs_fs_fs_fs #200237 04:20 PM, 20 Jan 2021
    А кто то уже пользовался параметром default_replica_path и default_replica_name? Не подскажите с какой версии КХ он работает? В changelog найти не могу инфу...
  • https://t.me/clickhouse_ru
    @alex_zelensky #200239 05:12 PM, 20 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    сам кх стартует то?

    > Вот такая ошибка при перехапуске:
  • https://t.me/clickhouse_ru
    @alex_zelensky #200242 05:30 PM, 20 Jan 2021
    Нет не стартует вообще, ошибка и всё
  • https://t.me/clickhouse_ru
    @unamedrus #200243 05:31 PM, 20 Jan 2021
    Мутации запускали?
  • смотрите то что ДО этой ошибки
  • https://t.me/clickhouse_ru
    Мутации не запускали, умышленно, не Альтерили, может в коде где-то вылез случайно такой запрос
  • https://t.me/clickhouse_ru
    @mikhailberg #200247 05:34 PM, 20 Jan 2021
    а скиньте весь трейс
  • залейте куда нить на hastebin
  • https://t.me/clickhouse_ru
    @unamedrus #200251 05:39 PM, 20 Jan 2021
    Можете сделать поиск по метадате (по дефолту /var/lib/clickhouse/metadata/) на наличие "click_transaction_id_tmp_alter4665484246427899840"
  • https://t.me/clickhouse_ru
    @mikhailberg #200252 05:41 PM, 20 Jan 2021
    https://github.com/ClickHouse/ClickHouse/blob/00d240853dff16b9ba5499db612054e6fe04225a/src/Functions/FunctionsConversion.h#L197

    я вообще не эксперт, но видимо cast(uuid, ‘uuid’) кидает такое
    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
    не можем найти
  • https://t.me/clickhouse_ru
    @mikhailberg #200254 05:47 PM, 20 Jan 2021
    вы точно никакой альтер не запускали ? типа с айдишки в юид
  • https://t.me/clickhouse_ru
    @alex_zelensky #200255 05:49 PM, 20 Jan 2021
    UUID в ключе, альтер для UUID точно не запускали
  • https://t.me/clickhouse_ru
    А что находится в логах до
    <Error> Application: DB::Exception: Conversion between numeric types and UUID is not supported: While processing cast(toUUID(0) AS click_transaction_id_tmp_alter4665484246427899840, 'UUID’)..

    Может быть в обычных логах, кх должен писать название таблицы которую присоединяет
  • https://t.me/clickhouse_ru
    @alex_zelensky #200257 05:56 PM, 20 Jan 2021
    Базу указывает, при чем мы пробовали из метадаты папки этой базы пернести на время, не помогало. Такая же ошибка, но для следующей базы по порядку
  • click_transaction_id_tmp_alter - где такой префикс используете?
  • https://t.me/clickhouse_ru
    Вот именно, что нигде такого не используем. В коде нет такого
  • @aopetrov86 #200260 06:01 PM, 20 Jan 2021
    Вот это что-то возвращает? sudo find /var/lib/clickhouse/metadata -name "*.sql" | xargs grep click_transaction_id_tmp_alter
  • https://t.me/clickhouse_ru
    Ну хорошо, сколько таблиц в первой базе с ошибкой?

    ls -d /var/lib/clickhouse/data/*/*/* | grep mutation
  • https://t.me/clickhouse_ru
    @alex_zelensky #200262 06:01 PM, 20 Jan 2021
    Может есть какой-то игнорировать какие-то базы (мету переместить чтоли), чтобы вообще он запустился
  • https://t.me/clickhouse_ru
    можно добавить к .sql файлам .bak
    те .sql.bak
  • https://t.me/clickhouse_ru
    нет ничего
  • https://t.me/clickhouse_ru
    очень много, до пары тысяч
  • https://t.me/clickhouse_ru
    @unamedrus #200267 06:08 PM, 20 Jan 2021
    > validateColumnsDefaultsAndGetSampleBlock

    Судя по этому проблема у какого то DEFAULT значение.
  • @aopetrov86 #200268 06:09 PM, 20 Jan 2021
    Но тогда по идее по метаданным должно грепаться
  • https://t.me/clickhouse_ru
    @unamedrus #200269 06:10 PM, 20 Jan 2021
    click_transaction_id_tmp_alter скорее всего кх на лету генерирует при проверке и на самом деле в default такого не написано
  • https://t.me/clickhouse_ru
    @alex_zelensky #200270 06:10 PM, 20 Jan 2021
    А что сделать то? Как это игнорировать?
  • https://t.me/clickhouse_ru
    Найти таблицу, точно определить в чем проблема.
    Сделать так что бы кх игнорировал эту таблицу при старте (допустим дописать .bak)
    Запустить кх, потом подправить DDL если это нереплицированая таблица и сделать ATTACH TABLE
  • https://t.me/clickhouse_ru
    @alexeykolegov #200272 06:14 PM, 20 Jan 2021
    Joined.
  • @aopetrov86 #200273 06:14 PM, 20 Jan 2021
    Посмотрите выхлоп sudo find /var/lib/clickhouse/metadata -name "*.sql" | xargs grep 'UUID DEFAULT'
  • @aopetrov86 #200274 06:14 PM, 20 Jan 2021
    Где-то там должно быть странное дефолтное значение
  • @aopetrov86 #200275 06:15 PM, 20 Jan 2021
    Даже известно какое кстати: '0'
  • https://t.me/clickhouse_ru
    Привет! У нас такая же ситуация после обновления на '21.1.2.15'. Удалось выяснить в чем дело?
  • https://t.me/clickhouse_ru
    UUID DEFAULT между ними потенциально что то быть(заменить пробел на любой символ?)
  • @aopetrov86 #200278 06:17 PM, 20 Jan 2021
    Можно сначала погрепать UUID а потом DEFAULT
  • https://t.me/clickhouse_ru
    Не помогает, деактивируем одну базу, то же самое ругается на следующей базе по порядку, потом на следующей. 3 базы деактивировали, не в базе дело
  • @aopetrov86 #200280 06:18 PM, 20 Jan 2021
    sudo find /var/lib/clickhouse/metadata -name "*.sql" | xargs grep UUID | grep DEFAULT
  • https://t.me/clickhouse_ru
    @alex_zelensky #200281 06:18 PM, 20 Jan 2021
    Да, штук 20 записей:
    click_transaction_id UUID DEFAULT toUUID(0) COMMENT 'Click Transaction ID for Conversion',
  • https://t.me/clickhouse_ru
    Ну вот в них и проблема
  • @aopetrov86 #200283 06:19 PM, 20 Jan 2021
    Во
  • https://t.me/clickhouse_ru
    @unamedrus #200284 06:19 PM, 20 Jan 2021
    таблицы реплицированные?
  • https://t.me/clickhouse_ru
    нет
  • https://t.me/clickhouse_ru
    Можете руками исправить скрипты и убрать DEFAULT вообще

    тк по дефолту там и так будет 0000-00-00...
  • https://t.me/clickhouse_ru
    Вроде бы помогло для одной базы, меняем для всех 190 (оказалось). Очень странно, раньше работало это
  • https://t.me/clickhouse_ru
    @mikhailberg #200288 06:29 PM, 20 Jan 2021
    а напишие select cast(toUUID(0), ‘UUID’) - будет работать ? просто инттересно
  • https://t.me/clickhouse_ru
    Кх перезагружали с момента создания таблицы?

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

    получаеттся кх сам неявно делает каст дефолта в тип колонки ?
  • https://t.me/clickhouse_ru
    @alex_zelensky #200292 06:32 PM, 20 Jan 2021
    У нас '21.1.2.15’, делаем апдейты регулярно. Базы созданы были за последние 6 мес
  • @aopetrov86 #200293 06:32 PM, 20 Jan 2021
    | cast(toUUID(0), 'UUID') | version()|
    |------------------------------------|----------|
    |00000000-0000-0000-0000-000000000000|20.8.10.13|
  • https://t.me/clickhouse_ru
    Да, скорее всего так проще
    Допустим такая ситуация:
    col_name UInt32 DEFAULT some_uint8
  • https://t.me/clickhouse_ru
    @unamedrus #200295 06:33 PM, 20 Jan 2021
    Проще всего любые дефолты оборачивать в CAST
  • https://t.me/clickhouse_ru
    я так понял это в 21 + версии
  • https://t.me/clickhouse_ru
    @unamedrus #200297 06:34 PM, 20 Jan 2021
    SELECT
    cast(toUUID(0), 'UUID'),
    version()

    Received exception from server (version 21.1.1):
    Code: 48. DB::Exception: Received from localhost:9000. DB::Exception: Conversion between numeric types and UUID is not supported: While processing cast(toUUID(0), 'UUID'), version().
  • @aopetrov86 #200298 06:35 PM, 20 Jan 2021
    2021 | ClickHouse Documentation

    ClickHouse release v21.8, 2021-08-12 Upgrade Notes New version is using Map data type for system logs tables (system.que

  • @aopetrov86 #200299 06:36 PM, 20 Jan 2021
    Expression toUUID(N) no longer works. Replace with toUUID('00000000-0000-0000-0000-000000000000'). This change is motivated by non-obvious results of toUUID(N) where N is non zero.
  • @aopetrov86 #200300 06:36 PM, 20 Jan 2021
    Что-то типа этого случилось?
  • @aopetrov86 #200301 06:37 PM, 20 Jan 2021
    Анонсировано почему-то в 21.1.2.15 а сломалось уже в 21.1.1
  • https://t.me/clickhouse_ru
    потому что релиз версия была 20.1.2 а у меня напрямую с мастера гитхаба думаю
  • https://t.me/clickhouse_ru
    @mikhailberg #200303 06:39 PM, 20 Jan 2021
    не, ошибка в другом, в том что каст юида в юид не робит, а эта функция преобразования работает
    но вообще странная ошибка) мб чем-то мотивировано, конечно
  • @aopetrov86 #200304 06:39 PM, 20 Jan 2021
    И issue в анонсе нет...
  • https://t.me/clickhouse_ru
    Почему же?
    как раз сама функция и не работает, а каст это уже вторичное
  • https://t.me/clickhouse_ru
    @mikhailberg #200306 06:40 PM, 20 Jan 2021
    а не, вы правы
  • https://t.me/clickhouse_ru
    @mikhailberg #200307 06:40 PM, 20 Jan 2021
    да, сори)
  • https://t.me/clickhouse_ru
    @mikhailberg #200308 06:41 PM, 20 Jan 2021
    какой же классный чатик! ❤️
  • @aopetrov86 #200309 06:50 PM, 20 Jan 2021
    Вот отсюда ноги растут https://github.com/ClickHouse/ClickHouse/pull/18749
    Don't allow conversion between UUID and numeric types by alexey-milovidov · Pull Request #18749 · ClickHouse/ClickHouse

    Changelog category (leave one): Not for changelog (changelog entry is not required) Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): See https://click...

  • https://t.me/clickhouse_ru
    @alex_zelensky #200310 07:00 PM, 20 Jan 2021
    Блин, ребята, запустилось всё, 4 часа правда данные потеряли( но хотя бы запустилось
  • https://t.me/clickhouse_ru
    @alex_zelensky #200311 07:01 PM, 20 Jan 2021
    Дима, Саша, спасибо вам от души
  • https://t.me/clickhouse_ru
    Ну, могло быть и неприятнее.

    Репликация, тесты на стейдже перед выкатом и вставка через Kafka вас ждет :)
  • https://t.me/clickhouse_ru
    @alex_zelensky #200313 07:03 PM, 20 Jan 2021
    Уже все, по-любому. Знаете же как оно, вот вот сделаем, еще пару фич и будем инфраструктуру строить. И не успели
  • @aopetrov86 #200314 07:03 PM, 20 Jan 2021
    Тесты на стейдже это да. Мне 1 раза хватило чтобы их запилить 😀
  • https://t.me/clickhouse_ru
    @kbespalov #200315 07:29 PM, 20 Jan 2021
    Привет.

    Вопрос - есть поток событий:

    (user_id, time, event)

    нужно пользователю в UI быстро показывать события user_id=x и нам для аналитики уметь по time фильтровать.

    Лучше, чем две отдельных таблицы с разными PK ведь не получится сделать для этого?

    (user_id, time)
    (time, user_id)
  • https://t.me/clickhouse_ru
    Ну а сколько юников user_id, какие у вас обычно используются интервалы для фильтра по time
  • https://t.me/clickhouse_ru
    @kbespalov #200317 07:31 PM, 20 Jan 2021
    сотни тысяч, могут быть и миллионы
  • https://t.me/clickhouse_ru
    @kbespalov #200318 07:32 PM, 20 Jan 2021
    если бы uniq(user_id) исчислялся десятками можно было бы оставить как есть time, user_id ?
  • https://t.me/clickhouse_ru
    @unamedrus #200319 07:33 PM, 20 Jan 2021
    Смотря сколько вообще записей в день

    А так если десятки то

    (user_id, time)
  • https://t.me/clickhouse_ru
    @kbespalov #200320 07:33 PM, 20 Jan 2021
    понял о чем ты, спасибо
  • https://t.me/clickhouse_ru
    МНе вот кажется наоброт надо - time, user_id. дата же всегда нужна. Быстро показать события юзеру - ему ж наверняка надо или последние, или за период. За прошлый год ведь явно не надо?
  • https://t.me/clickhouse_ru
    Обычно есть партиционирование по месяцу, те уже больше месяца не будет выбрано.
    Плюс селективность по user_id будет лучше чем по datetime.
  • https://t.me/clickhouse_ru
    @kbespalov #200323 07:43 PM, 20 Jan 2021
    +
  • https://t.me/clickhouse_ru
    @kbespalov #200324 07:43 PM, 20 Jan 2021
    для аналитики все равно пользуемся разрешением месяц и больше
  • https://t.me/clickhouse_ru
    @kbespalov #200325 07:43 PM, 20 Jan 2021
    нам главное чтобы за 5 лет не читал
  • https://t.me/clickhouse_ru
    т.е. при наличии партиц по вреени КХ и без индекса справится?
  • https://t.me/clickhouse_ru
    Ну партишн прунниг должен отбросить партиции которые за пределом временного интервала, да
  • https://t.me/clickhouse_ru
    @1236463047 #200328 07:45 PM, 20 Jan 2021
    интересный вариант. Допилили бы уже explain - сколько бы вопросов отпало сразу )))))
  • https://t.me/clickhouse_ru
    Так есть же, даже в 20.8
  • https://t.me/clickhouse_ru
    @unamedrus #200330 07:46 PM, 20 Jan 2021
    Плюс всегда был
    set send_logs_level='trace';
    там все видно
  • https://t.me/clickhouse_ru
    @nafanaseva #200331 07:47 PM, 20 Jan 2021
    Joined.
  • https://t.me/clickhouse_ru
    @kbespalov #200332 07:48 PM, 20 Jan 2021
    Еще вопрос наверное очевидный - если искать по «вычисляемому» PK полю, то верно ли, что про индекс можно забыть?

    Был индекс по user_id, пытаются искать по hash(user_id) = x
  • https://t.me/clickhouse_ru
    @kbespalov #200333 07:50 PM, 20 Jan 2021
    часто видел в запросах условное time поле, которое участвует в PARTITION BY и PK ищут через toStartOfWeek(time) или что-то похожее
  • https://t.me/clickhouse_ru
    Охты, давно ж я не читал notes-ы... Спасибо
  • https://t.me/clickhouse_ru
    @unamedrus #200335 07:53 PM, 20 Jan 2021
    Если ORDER BY user_id то искать по hash(user_id) действительно не выйдет.
    Но это странный кейс на самом деле, обычно делают наоборот:
    ORDER BY hash(user_id) и ищут по user_id

    тогда можно WHERE hash(user_id) = hash('user_id') AND user_id = user_ud

    > часто видел в запросах условное time поле, которое участвует в PARTITION BY и PK ищут через toStartOfWeek(time) или что-то похожее

    PARTITION BY хранит не само значение функции поля а min-max значения этого поля встреченные в таблице,
    именно по этому можно писать в WHERE просто условие на time без преобразований
  • https://t.me/clickhouse_ru
    @kbespalov #200336 07:56 PM, 20 Jan 2021
    Хорошо, спасибо!
  • https://t.me/clickhouse_ru
    Из за того, что PARTITION KEY хранит min-max раньше от него не было смысла если в нем использовался модуль (user_id % 100),

    Относительно недавно это исправили
    https://github.com/ClickHouse/ClickHouse/pull/16253#issue-508046958

    По поводу использования toStartOfWeek(time) в WHERE не все так просто (если toStart* используется в ORDER BY в условии нужно писать ровно так же toStart*(column_from_pk) = '....' )
    https://github.com/ClickHouse/ClickHouse/issues/15257#issue-708510144
    Prune partition in verbatim way. by amosbird · Pull Request #16253 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @mvikharev #200338 07:56 PM, 20 Jan 2021
    Коллеги, всем привет. У нас есть задача - подливать в кликхаус инкрементально измерения SCD Type 1 из Postgresql. Мы уже активно используем словари, но появились таблицы побольше и хотим их в коллапсингмерж, решаем как доставлять попроще. Объем - миллионы строк в день. Выбираем между напилить свое решение на триггерах или дозаморочиться с настройкой дебезиум-кафка-КХ. Мб есть какие то другие/готовые велосипеды чтоб поменьше телодвижений?
  • @evgeniykuzmitskiy #200339 08:20 PM, 20 Jan 2021
    Joined.
  • а чем словари не подходят на большие таблицы? память? просто учитывая их встроенные рефреш удобней вряд ли будет
  • https://t.me/clickhouse_ru
    О, привет из чата гринплама))
    1. Сотни ГБ синкать долго
    2. Словари не сжимаются, память кончается
  • аха, салют
    №2. cache SSD подойдет имхо в самый раз

    >1. Сотни ГБ синкать долго
    нужно ли синкать моментально?
  • https://t.me/clickhouse_ru
    Ага, есть требование в задержке обновлений измерений порядка минут
    Ну и вообще как то стремно постоянно пересинкивать всю таблицу. постгрес сам по себе не шибко быстро такие объемы отдает,
  • ну, update_field
    т.е. в ПГ таблице иметь что то типа LAST_UPDATED, и будут вам инкрементально обновления данных подвозится
  • если и это никак - то уже как-то доп логику делать типа триггер в ПГ/вал/писать источником в два места/ писать в кафку и оттуда в два места... вот это все
  • https://t.me/clickhouse_ru
    один раз, кстати КХ позволяет алиасы из секции select использовать в where/groupby/order by /having

    SELECT arrayFirst(m -> m != '', reverse(groupArray(mailing_result))) as last_mailing_result
    FROM log_record
    having last_mailing_result LIKE 'хорошо';

    это удобно, но создает огромную попаболь из-за несовместимости с ansi sql
  • https://t.me/clickhouse_ru
    summingMt/AggregatingMT только такое могут через groupUniqArrayArray
  • https://t.me/clickhouse_ru
    в кх нет индексов группировки
  • https://t.me/clickhouse_ru
    Он позволяет и два раза использовать, но говорят, что даже использовать один раз может быть неэффективно. Из-за этого я и хотел продублировать функцию
    SELECT arrayFirst(m -> m != '', reverse(groupArray(mailing_result))) as last_mailing_result
    FROM log_record
    having last_mailing_result LIKE 'хорошо' AND last_mailing_result LIKE 'хорошо2';
  • https://t.me/clickhouse_ru
    insert_dedupicate=0
    кх дедуплицирует инсерты, читайте Replication
  • 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
    в mysql
  • https://t.me/clickhouse_ru
    @whatwhh #200358 10:29 PM, 20 Jan 2021
    Приветствую. Есть какой-то способ восстановить данные в зукипере, кроме пересоздания таблиц и аттача партишнов к ним?
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    нет, только attach partition
  • https://t.me/clickhouse_ru
    Так и думал( Спасибо!
  • https://t.me/clickhouse_ru
    https://github.com/Altinity/clickhouse-zookeeper-recovery

    Но применять на свой страх и риск(автоматизация данного процесса собственно)
    GitHub - Altinity/clickhouse-zookeeper-recovery

    Contribute to Altinity/clickhouse-zookeeper-recovery development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    А какие подводные?
  • https://t.me/clickhouse_ru
    @den_crane #200364 10:32 PM, 20 Jan 2021
    есть ксатти но не готов https://github.com/ClickHouse/ClickHouse/pull/13652
    New option to restore ZooKeeper metadata if it's lost.
    SYSTEM RESTORE REPLICA replica [ON CLUSTER cluster] by myrrc · Pull Request #13652 · 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
    Скрипт написан очень хорошим человеком, успешно восстановил кое где кластер, но это же софт и всегда могут быть какие то накладки.
  • https://t.me/clickhouse_ru
    Да, видел этот PR. Было бы хорошо, если бы сбой произошел после его завершения)
  • https://t.me/clickhouse_ru
    Понял, спасибо!
  • https://t.me/clickhouse_ru
    вы случайно пропгрейдились? это в последней версии убрали

    https://github.com/ClickHouse/ClickHouse/blob/master/CHANGELOG.md
    Expression toUUID(N) no longer works. Replace with toUUID('00000000-0000-0000-0000-000000000000'). This change is motivated by non-obvious results of toUUID(N) where N is non zero.
  • https://t.me/clickhouse_ru
    @1236463047 #200369 10:36 PM, 20 Jan 2021
    Денис, на "митапе" вы показывали:
    alter table update ... и если просто запустить - он что будет лопатить все партишены?
    а с новой версии можно добавить partition и тогда только в ней
    все так?
  • https://t.me/clickhouse_ru
    нет, я пытался объяснить, мутируют все парты, но перезаписываются (данные) только партах нужных по where , но метаданные меняются во всех, и хардлинками пересоздаютсся все файлы всех партов

    это проблема в больших инсталляциях у кого 10тыс партов и 100ни реплик
  • https://t.me/clickhouse_ru
    @den_crane #200371 10:38 PM, 20 Jan 2021
    там в ЗК просто взрыв происходит
  • https://t.me/clickhouse_ru
    @1236463047 #200373 10:40 PM, 20 Jan 2021
    а, ок
  • @KciNKh ↶ Reply to #200350 #200374 10:50 PM, 20 Jan 2021
    да, спасибо, так сделали
  • @1437973899 #200376 11:58 PM, 20 Jan 2021
    Joined.
  • 21 January 2021 (259 messages)
  • @demetranadya #200378 03:57 AM, 21 Jan 2021
    Можно из ключа сортировки поле удалять? И добавлять новое
  • https://t.me/clickhouse_ru
    @KiLEXst #200379 04:44 AM, 21 Jan 2021
    ALTER ключа сортировки — лёгкая операция, так как при одновременном добавлении нового столбца в таблицу и ключ сортировки не нужно изменять данные кусков (они остаются упорядоченными и по новому выражению ключа).
    MergeTree | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    выше писали только что изменение порядка ключа сортировки - сомнительная затея
  • version()
    20.8.5.45
    userlogin@host:~$
    userlogin@host:~$ clickhouse-client -h host -q "SELECT value FROM system.settings WHERE name LIKE 'input_format_null_as_default'"
    1
    userlogin@host:~$ clickhouse-client -h host -q "truncate table t"
    userlogin@host:~$
    userlogin@host:~$ clickhouse-client -h host -q "select * from t"
    userlogin@host:~$
    userlogin@host:~$ cat qqq
    1 \N
    2 0000-00-00 00:00:00.000000000
    3 \N
    4 2010-12-12 12:12:12.123123123
    userlogin@host:~$
    userlogin@host:~$ cat qqq | clickhouse-client -h host --query="INSERT INTO t (s,dt64) format TSV"
    Code: 27, e.displayText() = DB::Exception: Cannot parse input: expected '\n' before: '00:00.000000000\n3\t\\N\n4\t2010-12-12 12:12:12.123123123\n': (at row 1)

    Row 1:
    Column 0, name: s, type: UInt8, parsed text: "1"
    Column 1, name: dt64, type: DateTime64(9), parsed text: "<BACKSLASH>N"ERROR
    Code: 117, e.displayText() = DB::Exception: Unexpected NULL value of not Nullable type DateTime64(9) (version 20.8.5.45 (official build))

    , Stack trace (when copying this message, always include the lines below):

    0. Poco::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x18bb6380 in /usr/bin/clickhouse
    1. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0xe60c32d in /usr/bin/clickhouse
    2. ? @ 0xe64f5d2 in /usr/bin/clickhouse
    3. DB::TabSeparatedRowInputFormat::readRow(std::__1::vector<COW<DB::IColumn>::mutable_ptr<DB::IColumn>, std::__1::allocator<COW<DB::IColumn>::mutable_ptr<DB::IColumn> > >&, DB::RowReadExtension&) @ 0x1644f36b in /usr/bin/clickhouse
    4. DB::IRowInputFormat::generate() @ 0x16350d31 in /usr/bin/clickhouse
    5. DB::ISource::work() @ 0x162ccbdb in /usr/bin/clickhouse
    6. DB::InputStreamFromInputFormat::readImpl() @ 0x1628fe2d in /usr/bin/clickhouse
    7. DB::IBlockInputStream::read() @ 0x154668bd in /usr/bin/clickhouse
    8. DB::ParallelParsingBlockInputStream::parserThreadFunction(std::__1::shared_ptr<DB::ThreadGroupStatus>, unsigned long) @ 0x16294280 in /usr/bin/clickhouse
    9. ? @ 0x16294f04 in /usr/bin/clickhouse
    10. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0xe63a637 in /usr/bin/clickhouse
    11. ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()>(void&&, void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()&&...)::'lambda'()::operator()() const @ 0xe63adaa in /usr/bin/clickhouse
    12. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0xe639b47 in /usr/bin/clickhouse
    13. ? @ 0xe638093 in /usr/bin/clickhouse
    14. start_thread @ 0x76ba in /lib/x86_64-linux-gnu/libpthread-2.23.so
    15. /build/glibc-LK5gWL/glibc-2.23/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:111: clone @ 0x10741d in /usr/lib/debug/lib/x86_64-linux-gnu/libc-2.23.so
    (version 20.8.5.45 (official build))
    Code: 27. DB::Exception: Cannot parse input: expected '\n' before: '00:00.000000000\n3\t\\N\n4\t2010-12-12 12:12:12.123123123\n': (at row 1)

    Row 1:
    Column 0, name: s, type: UInt8, parsed text: "1"
    Column 1, name: dt64, type: DateTime64(9), parsed text: "<BACKSLASH>N"ERROR
    Code: 117, e.displayText() = DB::Exception: Unexpected NULL value of not Nullable type DateTime64(9) (version 20.8.5.45 (official build))
    userlogin@host:~$
    userlogin@host:~$ cat qqq | clickhouse-client -h host --input_format_null_as_default=1 --query="INSERT INTO t (s,dt64) format TSV"
    userlogin@host:~$
    userlogin@host:~$ clickhouse-client -h host -q "select * from t"
    1 2021-01-21 04:40:02 1970-01-01 00:00:00.000000000
    2 2021-01-21 04:40:02 1970-01-01 00:00:00.000000000
    3 2021-01-21 04:40:02 1970-01-01 00:00:00.000000000
    4 2021-01-21 04:40:02 2010-12-12 12:12:12.123123123
  • @957807795 #200385 06:33 AM, 21 Jan 2021
    [ODBC Data Sources]
    clickHouse = clickHouse

    [clickHouse]
    Driver = /opt/clickhouse-odbc-1.1.9-Linux/lib/libclickhouseodbc.so
    server = xxxxxxxxxxxxxx
    username = ananth
    password = xxxxxxxx
    port = 8123
    database = ananthdm
    uid = ananth
    # sslmode = allow
    trace = 1
    tracefile = /opt/clickhouse-odbc.log
  • @957807795 #200386 06:33 AM, 21 Jan 2021
    after specifying the specific database name it allowing all database for the users
  • @957807795 #200387 06:33 AM, 21 Jan 2021
    is there any configuration changes in user.xml fil e
  • @534320602 #200388 07:00 AM, 21 Jan 2021
    Joined.
  • @ViacheslavNefedov #200389 07:05 AM, 21 Jan 2021
    Всем добрый день! dBeaver не возвращает результаты explain select в clickhouse. Кто-то знает возможность убедить его возвращать? или может посмотреть результаты где-то в другом клиенте?
  • @iBubnov #200390 07:05 AM, 21 Jan 2021
    Всем привет, подскажите как работает внешний справочник? Например я подключил справочник из постгри, там табличка из 1-3кк записей. КХ поидее раз в какое-то время обновляет этот справочник. Получается он каждый раз гоняет вообще все данные из таблицы, вытаскивает и все перезаписывает или как-то работает только с новыми данными и частично удаляет?
  • Полностью гоняет.
  • А то что там 3кк данных, это ниче страшного?
  • @ramun25 #200393 07:09 AM, 21 Jan 2021
    Для словаря пофик. Но сам словарь в памяти держится, если у вас её много, то все норм.
  • @iBubnov #200394 07:09 AM, 21 Jan 2021
    Понял, спасибо!
  • https://t.me/clickhouse_ru
    https://clickhouse.tech/docs/ru/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-lifetime/
    полностью, но в некоторых случаях только в случае наличия изменений
    Обновление словарей | Документация ClickHouse

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

  • Там обновляется полностью, но только если invalidate query другой ответ вернул. Где-то пролетало, что какой-то движок (конкретная СУБД) может только изменения присылать, но где это видел-слышал - не помню. А может это вообще звон из другой деревни.
  • https://t.me/clickhouse_ru
    @KiLEXst #200397 07:14 AM, 21 Jan 2021
    движки https и executable позволяют ходить в словарь только по запрашиваемым ключам.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • @reflechant #200400 08:02 AM, 21 Jan 2021
    Я заметил, что когда делаются запросы с пагинацией, то те, у которых OFFSET достаточно большой, что в ответе не будет ни одной строки, выполняются фактически мгновенно (в system.query_log стоят нули и по времени, и по памяти). Но эти запросы подавались параллельно из нескольких потоков! (правда потоки создавались в порядке пагинации). Получается, что у Clickhouse есть какие-то хитрые оптимизации, которые дают такой эффект?
  • @Timooxaa #200401 08:09 AM, 21 Jan 2021
    Всем привет, написал тестовый сервис, который через jdbc ходит в CH. Сам запрос, с котором он идет, всегда select 1. Упираюсь в 10к qps и никак не могу разогнать выше, при этом сами запросы исполняются < 1-2мс. Кто-нибудь сталкивался с подобными случаями и если да, то как разгоняли qps? Может, есть какие-то магические настройки в самой бд. или что-то подобное?
  • https://t.me/clickhouse_ru
    У кликхауса большой оверхед на запросы, он разрабатывался под сотни рпс тяжёлых запросов
  • то есть использовать его как бд, в которую и пишут много много всего и выбирают много много всего, не лучшая идея?
  • https://t.me/clickhouse_ru
    @burov4j #200404 08:19 AM, 21 Jan 2021
    Писать много всего можно и нужно - но только большими пачками и не очень часто.
    Читать можно много, но опять же не часто
  • https://t.me/clickhouse_ru
    А вы опишите для начала что выбирают и как пишут
  • https://t.me/clickhouse_ru
    @burov4j #200406 08:20 AM, 21 Jan 2021
    кликхаус создан для относительно редких больших запросов
  • @GrouthHacker #200407 08:22 AM, 21 Jan 2021
    Коллеги, есть варианты оптимизировать запрос:
    SELECT user, countDistinct(article) as count from (SELECT article, arrayJoin(arraySlice(arraySort((x,y)->y, groupArray(user),groupArray(toUnixTimestamp(time))),1,10)) as user from db WHERE status='read' group by article) group by user order by count desc limit 25
    То есть, найти юзеров которые прочитали больше всего статей при условии что они были среди последних 10 юзеров прочитавших статью...

    Вариант выше кажется неоптимальным, и при некоторых условиях упирается в память
  • https://t.me/clickhouse_ru
    если вам надо 1000 запросов в секунду на чтение которые каждый должен по миллиарду строк фильтровать, это не лучший кейс =) и все это на одной машине

    то машина должна быть очень жирная (много RAM - 256\512 и много CPU 32\64)
  • https://t.me/clickhouse_ru
    писать надо большими батчами по 10-100 тыс, а лучше миллион записей в чанке, меньше плохая идея =)
    узнаете про Buffer \ clickhouse-bulk \ chproxy и т.п. костыли

    искать "одну запись" и юзать JOIN с множественными таблицами которые по миллиону записей и не пролазят в память, тоже на CPU и память попадете
  • @Timooxaa #200410 08:26 AM, 21 Jan 2021
    Пишется большими батчами с некоторыми интервалами, с этим проблем нет. А чтение - запросы сами простые, из разряда select count from where или select что-то from where. Все из одной таблицы выбирается. Сейчас тестирую на пустой бд, но планируется, что в ней будет на вскиду, пока что, до 100 миллионов записей.
  • @Timooxaa #200411 08:28 AM, 21 Jan 2021
    сервер, на которой бд, 24 ядра и много (не знаю сколько точно) памяти, с этим проблем нет, своими тестами максимум 8 ядер смог загрузить
  • https://t.me/clickhouse_ru
    50 миллионов записей это маленький объем для clickhouse

    =) одной машины хватит...
  • https://t.me/clickhouse_ru
    У нас похожий кейс.
    Используем кластер СН (2 шарда по 2 реплики), читаем около 1к рпс на бекенды (на СН около 3к рпс).
    Сервера жирные (48 ядер, 200+Гб оперативки, диски ссд по 1Тб), максимально нагружали сервера на 25% загрузки ЦПУ, дальше бекенды просто не выдерживали.
    Таблицы по 500+ млн
  • а вы как-то подкручивали сам кх? И чем ходите из бекенда в кх?
  • https://t.me/clickhouse_ru
    Пытаюсь найти статью ребят из Altinity team, где они проводили тесты на нагрузку, там давали и настройки некоторые.
    Под "чем ходите" Вы подразумеваете язык программирования? 🙂
  • ну, не прям язык, а способ. У меня это через jdbc, он может быть сыроватым еще и, например, на своей стороне не давать разогнать нагрузку
  • https://t.me/clickhouse_ru
    По нативному TCP протоколу
  • @77072141 #200418 08:51 AM, 21 Jan 2021
    Здравствуйте, коллеги.
    КХ не использует вторичные индексы. Каждый раз идёт фуллскан базы
  • @77072141 #200421 08:52 AM, 21 Jan 2021
    подскажите, пожалуйста, куда копать?
  • https://t.me/clickhouse_ru
    ClickHouse In the Storm. Part 1: Maximum QPS estimation

    May 2, 2019ClickHouse is an OLAP database for analytics, so the typical use scenario is processing a relatively small number of requests -- from several per hour to many dozens or even low hundreds per second --affecting huge ranges of data (gigabytes/millions of rows).But how it will behave in other scenarios? Let's try to use a steam-hammer to crack nuts, and check how ClickHouse will deal with thousands of small requests per second. This will help us to understand the range of possible use cases and limitations better.This post has two parts. The first part covers connectivity benchmarks and test setup. The next part covers maximum QPS in scenarios involving actual data.

  • https://t.me/clickhouse_ru
    индекс _packetDate смысла не имеет, т.к. у вас и так партиции по дате
  • https://t.me/clickhouse_ru
    @1236463047 #200424 08:55 AM, 21 Jan 2021
    И можно сам селект сюда - скрин мелкий очень
  • А какой индекс по вашему должен сработать?
  • а, я читал как раз недавно эту статью. Автор в ней пишет, что при select 1 запросе 13к достикает qps. Интересно, а это пик нагрузки? Если я, например, хочу получить хотя бы 30к qps, а лучше и все 50к, то это технически не возможно сделать?
  • https://t.me/clickhouse_ru
    Думаю вопрос в железе, ну и плюс если это один сервер, то Вы всё равно упретесь в какой-то предел.
    Где-то на хабре ещё читал, что если хотите чтобы СН обрабатывал больше запросов, сделайте кластер и балансируйте нагрузку на реплики.
  • https://t.me/clickhouse_ru
    Ну и в примере ребята "ходят" по хттп, по факту у меня по хттп перформанс реальных запросов был хуже из-за оверхеда хттп, по этому перешли на ТСР
  • https://t.me/clickhouse_ru
    @1236463047 #200429 09:03 AM, 21 Jan 2021
    Надо добавить к where packetDate
  • https://t.me/clickhouse_ru
    @1236463047 #200430 09:03 AM, 21 Jan 2021
    у вас packetDateTime
  • Если не ошибаюсь, то у меня в конечном итоге тоже через http идёт обращение
  • https://t.me/clickhouse_ru
    @1236463047 #200432 09:04 AM, 21 Jan 2021
    а его в ни в индексе, ни в партиции