• 01 August 2017 (127 messages)
  • @f1yegor #21584 06:18 AM, 01 Aug 2017
    Спам
  • https://t.me/clickhouse_ru
    нет, там идея в том что бы вернуть distinct - но после order by
    тоесть например уникальные ивенты, и к каждому ивенту дату первого хита
  • https://t.me/clickhouse_ru
    @degibenz #21586 06:26 AM, 01 Aug 2017
    /voteforban
  • https://t.me/clickhouse_ru
    @pavel_kozyrev #21587 06:28 AM, 01 Aug 2017
    /stat@combot
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #21585 #21589 06:29 AM, 01 Aug 2017
    Тогда вам нужен не DISTINCT, а LIMIT N BY
  • https://t.me/clickhouse_ru
    @kshvakov #21590 06:32 AM, 01 Aug 2017
    например
    SELECT * FROM events ORDER BY action_at ASC LIMIT 1 BY (hit_code)
  • @alexeysibirtsev #21591 06:33 AM, 01 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @kshvakov #21592 07:17 AM, 01 Aug 2017
    Поймали ограничение по памяти при вставке

    DB::Exception: Memory limit (for query) exceeded: would use 27.94 GiB (attempt to allocate chunk of 131072 bytes), maximum: 27.94 GiB.

    Делаем

    INSERT INTO table SELECT field1, ...fieldN FROM table2 WHERE action_date = '2017-08-01' ORDER BY action_at

    При этом вставка без сортировки отрабатывает отлично, собственно как и сам запрос
    SELECT COUNT() FROM (SELECT field1, ...fieldN FROM WHERE action_date = '2017-08-01' table2 ORDER BY action_at)

    настройки

    ┌─name───────────────────────────────┬─value───────┬─changed─┐
    │ max_bytes_before_external_group_by │ 20000000000 │ 1 │
    │ max_bytes_before_external_sort │ 20000000000 │ 1 │
    └────────────────────────────────────┴─────────────┴─────────┘

    max_insert_block_size/max_threads крутили, не помогает

    Что можно покрутить ещё ?
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #21593 07:21 AM, 01 Aug 2017
    Просто оставлю это здесь: https://db-engines.com/en/ranking
    DB-Engines Ranking

    Popularity ranking of database management systems.

  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #21593 #21594 07:23 AM, 01 Aug 2017
    "В перспективный стартап ищем SQLite DBA"
  • https://t.me/clickhouse_ru
    @Civiloid #21595 07:24 AM, 01 Aug 2017
    это ощущение от рейтинга )
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #21596 07:24 AM, 01 Aug 2017
    неее, от рейтинга нужен DBA на MS Access
  • https://t.me/clickhouse_ru
    На подобии этого
    https://clickhouse.yandex/docs/ru/query_language/queries.html#id8
    есть внешняя сортировка
    max_bytes_before_external_sort
  • https://t.me/clickhouse_ru
    @kshvakov #21598 08:22 AM, 01 Aug 2017
    у нас оно выставлено, с самим запросом работает (хотя он и так в пямять влазит), а на INSERT оно не влияет
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #21599 08:27 AM, 01 Aug 2017
    Возможно нужно создать issue чтобы влияло, или можно было повлиять
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #21600 08:28 AM, 01 Aug 2017
    Я на такое наталкивался, пришлось отказаться от прямой вставки. Можно попробовать выгрузить данные в отсортированом виде на диск, а потом с диска их вставить через clickhouse-client
  • https://t.me/clickhouse_ru
    @kshvakov #21601 08:35 AM, 01 Aug 2017
    на этот случай у нас есть свои костыли, но хочется, конечно, сделать "одним" запросом
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #21576 #21602 08:37 AM, 01 Aug 2017
    К сожалению при
    INSERT INTO table SELECT * FROM table2
    данные видны до окончания выполнения запроса, что иногда не очень удобно. Нет ли ручки которую можно покрутить чтоб исправить такое поведение ?
  • https://t.me/clickhouse_ru
    @peerclick #21603 10:46 AM, 01 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @captainDino95 #21604 11:09 AM, 01 Aug 2017
    Привет, кто нибудь хранит в кликхаусе деревья и каким шаблоном, таблицей связей?
  • @emptyname #21605 11:39 AM, 01 Aug 2017
    Не поддерживает ли формат (col1, col2, col3) IN ( (1,2,3) ) wildcard, типа (1, 2, *)?
  • https://t.me/clickhouse_ru
    @mrphelko ↶ Reply to #21605 #21606 11:41 AM, 01 Aug 2017
    наверно можно так IN (SELECT id FROM ids)
  • https://t.me/clickhouse_ru
    @mrphelko ↶ Reply to #21606 #21607 11:43 AM, 01 Aug 2017
    не так понял вопрос, только так col in () AND col2 IN() ...
  • Попробуйте ещё несколько уменьшить пороги на внешнюю сортировку и агрегацию. Например, в два раза.
  • https://t.me/clickhouse_ru
    @343206394 #21609 11:44 AM, 01 Aug 2017
    Может кто подскажет как на 3 серверах сделать распределенную таблицу с репликацией?
    Сделал 3 шарды и 2 реплики
    создал таблицы на нодах так
    1 » shard 1 replica 1, shard 2 replica 1
    2 » shard 2 replica 1, shard 1 replica 2
    1 » shard 2 replica 2, shard 3 replica 2
    Поверх этого сделал Распределенную таблицу с rand() в качестве ключа шардирования
    Как теперь проверить что все поднялось каак мне надо?
  • В целом нет. Есть некоторые ухищрения, но на них рассчитывать не стоит.
  • Обычно деревья (регионы, товарные категории) хранятся отдельно и подключаются в виде иерархического словаря.
  • Не поддерживает.
  • https://t.me/clickhouse_ru
    Посмотрите на тесты в репозитории, там есть пример перекрёстной репликации
  • https://t.me/clickhouse_ru
    @343206394 #21614 11:46 AM, 01 Aug 2017
    спсб
  • https://t.me/clickhouse_ru
    @343206394 #21615 11:46 AM, 01 Aug 2017
    у меня явно что-то не поднялось :) SELECT * FROM system.clusters

    SELECT *
    FROM system.clusters

    Ok.

    0 rows in set. Elapsed: 0.001 sec.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @343206394 #21617 11:50 AM, 01 Aug 2017
    спсб, буду разбираться.
    вопрос по распределенной таблице
    1. Читать можно с любого сервера рандомно или только с того где таблицу распределенную создали?
    2. Писать рандомно в низлежащие таблицы? А как оно перешардироваться будет или если в качестве ключа rand() то ляжет как положили?
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #21605 #21618 11:56 AM, 01 Aug 2017
    а что он должен делать?
  • @405251899 #21619 11:57 AM, 01 Aug 2017
    Joined.
  • @405251899 #21620 11:58 AM, 01 Aug 2017
    привет, как вы с геоданными работаете в кликхаусе? например, у меня есть широта и долгота и нужно в радиусе n всех найти // пока еще не использую кликхаус
  • https://t.me/clickhouse_ru
    @orantius #21621 12:01 PM, 01 Aug 2017
    ищем в эллипсе, примерно соответствущему этому кругу в декартовых координатах.
    pointInEllipses()
  • 1. Читать нужно из таблицы с движком Distributed. При этом можно создать такую таблицу на каждом сервере (так, чтобы структура кластера совпадала)
    2. Писать можно как в Distributed таблицу (тогда нужно указать выражение для шардирования), так и отдельно на каждый шард. Подробнее написано в документации: https://clickhouse.yandex/docs/ru/table_engines/distributed.html
  • https://t.me/clickhouse_ru
    @343206394 #21623 12:06 PM, 01 Aug 2017
    А создавать распределенную таблицу только на одном сервере и читать только с него
  • https://t.me/clickhouse_ru
    @343206394 #21624 12:07 PM, 01 Aug 2017
    или можно на каждом по распределенной таблице создать и читать со всех параллельно?
  • @kochetovnicolai #21625 12:08 PM, 01 Aug 2017
    можно на каждом
  • https://t.me/clickhouse_ru
    @343206394 #21626 12:08 PM, 01 Aug 2017
    круто
  • https://t.me/clickhouse_ru
    @343206394 #21627 12:09 PM, 01 Aug 2017
    спсб
  • https://t.me/clickhouse_ru
    @343206394 #21628 12:09 PM, 01 Aug 2017
    не могу понять почему в кластерах пусто
  • https://t.me/clickhouse_ru
    @343206394 #21629 12:09 PM, 01 Aug 2017
    cat /etc/clickhouse-server/remote_servers.xml
    <yandex>
    <remote_servers>
    <metrics>
    <shard>
    <!— Optional. Wheight for writing. Default is 1. —>
    <weight>1</weight>
    <!— Optional. Write to only 1 replic?. By default, false - write to all replics. —>
    <internal_replication>true</internal_replication>
    <replica>
    <host>10.1.1.251</host>
    <port>9000</port>
    </replica>
    <replica>
    <host>10.1.1.86</host>
    <port>9000</port>
    </replica>
    </shard>
  • https://t.me/clickhouse_ru
    @343206394 #21630 12:09 PM, 01 Aug 2017
    SELECT count(*)
    FROM Measures_Distributed

    Received exception from server:
    Code: 170. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Requested cluster 'metrics' not found.

    0 rows in set. Elapsed: 0.020 sec.

    :)
  • https://t.me/clickhouse_ru
    @343206394 #21631 12:09 PM, 01 Aug 2017
    SELECT *
    FROM system.clusters

    Ok.

    0 rows in set. Elapsed: 0.001 sec.

    :)
  • https://t.me/clickhouse_ru
    @343206394 #21632 12:09 PM, 01 Aug 2017
    сервер рестартовал
  • @milovidov_an #21633 12:10 PM, 01 Aug 2017
    Переместите файл remote_servers.xml в
    /etc/clickhouse-server/conf.d/
  • https://t.me/clickhouse_ru
    @343206394 #21634 12:11 PM, 01 Aug 2017
    понял, видимо пропустил в документации
  • https://t.me/clickhouse_ru
    @343206394 #21635 12:12 PM, 01 Aug 2017
    ура спсб
  • https://t.me/clickhouse_ru
    @343206394 #21636 12:12 PM, 01 Aug 2017
    SELECT *
    FROM system.clusters

    ┌─cluster─┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name──┬─host_address─┬─port─┬─is_local─┬─user────┬─default_database─┐
    │ metrics │ 1 │ 1 │ 1 │ 10.1.1.251 │ 10.1.1.251 │ 9000 │ 1 │ default │ │
    │ metrics │ 1 │ 1 │ 2 │ 10.1.1.86 │ 10.1.1.86 │ 9000 │ 1 │ default │ │
    │ metrics │ 2 │ 1 │ 1 │ 10.1.1.251 │ 10.1.1.251 │ 9000 │ 1 │ default │ │
    │ metrics │ 2 │ 1 │ 2 │ 10.1.1.145 │ 10.1.1.145 │ 9000 │ 1 │ default │ │
    │ metrics │ 3 │ 1 │ 1 │ 10.1.1.86 │ 10.1.1.86 │ 9000 │ 0 │ default │ │
    │ metrics │ 3 │ 1 │ 2 │ 10.1.1.145 │ 10.1.1.145 │ 9000 │ 0 │ default │ │
    └─────────┴───────────┴──────────────┴─────────────┴────────────┴──────────────┴──────┴──────────┴─────────┴──────────────────┘

    6 rows in set. Elapsed: 0.004 sec.
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    @ihard #21640 01:22 PM, 01 Aug 2017
    Подскажите, есть 2 сервера конфигурация 2 шарда и 2 реплики - хочу чтобы чтение было с обоих серверов. В таком конфиге ведь чтение не обязательно будет идти с обоих серверов, как задать и возможно ли чтобы чтение было с двух серверов по возможности ?
    <yandex>
    <remote_servers>
    <graphite>
    <shard>
    <replica>
    <host>node1</host>
    <port>9000</port>
    </replica>
    <replica>
    <host>node2</host>
    <port>9000</port>
    </replica>
    </shard>
    <shard>
    <replica>
    <host>node1</host>
    <port>9000</port>
    </replica>
    <replica>
    <host>node2</host>
    <port>9000</port>
    </replica>
    </shard>
    </graphite>
    </remote_servers>
    </yandex>
  • Если читаете из Distributed таблицы, то должно читаться со всех серверов.
  • https://t.me/clickhouse_ru
    @a1exm0 #21642 01:33 PM, 01 Aug 2017
    А у меня такой вопрос. Вот есть движок ReplacingMergeTree, а есть ли для него Replicated эквивалент? Для всего семейства движков MergeTree кроме Replacing нашёл упоминание в доке
  • https://t.me/clickhouse_ru
    Есть такой движок
  • https://t.me/clickhouse_ru
    @a1exm0 #21644 01:36 PM, 01 Aug 2017
    ReplicatedReplacingMergeTree?
  • https://t.me/clickhouse_ru
    @Krashuevina #21645 01:38 PM, 01 Aug 2017
    так точно
  • https://t.me/clickhouse_ru
    @ihard ↶ Reply to #21641 #21646 01:43 PM, 01 Aug 2017
    в доке указано что читать будет из любой доступной реплики - и это вполне могут быть реплики на одном сервере
  • https://t.me/clickhouse_ru
    @ihard #21647 01:45 PM, 01 Aug 2017
    вроде как есть параметр load_balancing и in_order - не очень понятно как правильно прописать их
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #21648 01:56 PM, 01 Aug 2017
    Всем привет, используем таблицу ReplicatedReplacingMergeTree для схлопывания строк, и вот интересно, может ли она схлопывать записи с одинаковыми версиями? На практике видим, что не схлопывает, так и задумано? Или это будет меняться?
  • @dveim ↶ Reply to #21648 #21649 02:23 PM, 01 Aug 2017
    а как из одинаковой версии понять, какую запись оставить, а какую выкинуть?
  • https://t.me/clickhouse_ru
    Наверно по этому и не нужно вставлять одинковые версии. В доке https://clickhouse.yandex/docs/ru/table_engines/replacingmergetree.html#replacingmergetree описано что можно использовать DateTime
  • @dveim ↶ Reply to #21650 #21651 02:26 PM, 01 Aug 2017
    ну, да, вопрос-то был про одинаковые версии :)
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #21652 02:26 PM, 01 Aug 2017
    Да, испольузем dateTime - но в одну секунду может быть две записи
  • https://t.me/clickhouse_ru
    @ihard ↶ Reply to #21640 #21653 02:26 PM, 01 Aug 2017
    а как в таком конфиге задатать верные макросы ? делал кто-нибудь ?
  • @dveim ↶ Reply to #21652 #21654 02:27 PM, 01 Aug 2017
    а миллисекунды?
  • https://t.me/clickhouse_ru
    DateTime - unix timestamp
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #21656 02:28 PM, 01 Aug 2017
    нет миллисекунд у КХ :(
  • @dveim ↶ Reply to #21655 #21657 02:28 PM, 01 Aug 2017
    я имел в виду "записывать ms отдельно"
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #21658 02:30 PM, 01 Aug 2017
    А куда сюда http://joxi.ru/zANGZyRilwRdZr записывать отдельно? Я бы попробовал заменить DateTime на UInt64 и переводить дату вставки в дату в милисекундах
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #21659 02:30 PM, 01 Aug 2017
    Если только использовать UInt в качестве версии где оно равно timestamp*1000
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #21660 02:31 PM, 01 Aug 2017
    Но опять же, а если эти значения одинаковые, вот вставили мы дубль случайно в терабайты данных?
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #21661 02:31 PM, 01 Aug 2017
    все, группировать по уникальности только?
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #21662 02:33 PM, 01 Aug 2017
    UInt64 может такое хранить https://clickhouse.yandex/docs/ru/data_types/int_uint.html#uint
    Т.е. можно конечно попробовать timestamp*1000 + что-то ещё зависящее от времени или версии строки
  • https://t.me/clickhouse_ru
    Подозреваю это не юзер-кейс ReplaceMergeTree и CH вообще
  • https://t.me/clickhouse_ru
    @vitalykhy #21664 02:49 PM, 01 Aug 2017
    доброго дня, не смог найти самостоятельно, а есть ли в кликхауз аналог уникального автоинкрементируемого поля?
  • https://t.me/clickhouse_ru
    Нет такого поля
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #21666 02:54 PM, 01 Aug 2017
    Только если на уровне приложение его генерировать и там же проверять уникальность. Сам CH никак не умеется автоинкреемнтить. Так же не отслеживается уникальность строк по какому-либо полю. Исключение - движки семейства MergeTree - ReplaceMergeTree, CollapsingMergeTree и т.п. Но они не делают в прямом смысле то, что ожидается от уникального поля
  • https://t.me/clickhouse_ru
    @vitalykhy #21667 02:55 PM, 01 Aug 2017
    спасибо за подробный ответ
  • https://t.me/clickhouse_ru
    Схлопывает же с одинаковыми версиями. Оставляет последнюю запись (видимо из кусочка с большим номером)
  • https://t.me/clickhouse_ru
    @rlomonosov #21669 02:57 PM, 01 Aug 2017
    Я ловил что не схлопывает только в случае когда в КХ заинсертили всего один раз. Тогда у него всего один чанк, он ничего ни с чем не мерджит, соотвественно и схлопывания одинаковых ключей не происходит
  • https://t.me/clickhouse_ru
    Т.е. в одном INSERT были одинаковые значения PKEY?
  • https://t.me/clickhouse_ru
    @rlomonosov #21671 02:58 PM, 01 Aug 2017
    да
  • https://t.me/clickhouse_ru
    @Krashuevina #21672 02:59 PM, 01 Aug 2017
    красиво, спасибо за информацию!
  • Если я правильно понимаю, то нужно указать параметр load_balancing = in_order (в настройках пользователя или через SET) и тогда реплики будут выбираться в порядке перечисления в конфигурационном файле
  • https://t.me/clickhouse_ru
    В разных. Просто два раза сделал один и тот запрос и одни и те же данные (в том числе версия тоже)
  • https://t.me/clickhouse_ru
    можно выполнить optimize table xxx partition 201708 final;
  • https://t.me/clickhouse_ru
    @rlomonosov #21676 03:02 PM, 01 Aug 2017
    со своим месяцем
  • https://t.me/clickhouse_ru
    и положить кластер)
  • replacing схлопывает версии только при мерже кусков. если есть 2 одинаковых куска, то и в select запросе данные бедут дублироваться. при мерже, если версия совпадет, выберется строка с последней версией.
  • https://t.me/clickhouse_ru
    Ну вы же хотите убедиться что схлопнет записи с одинаковой версией? Иначе ждите штатного мерджа
  • https://t.me/clickhouse_ru
    @ihard ↶ Reply to #21673 #21680 03:10 PM, 01 Aug 2017
    спасибо, стало понятнее ) осталось понять можно ли создавать конфигурацию с двумя шардами на 1 сервере во всех доках в макросах указывается 1 шард на сервер...
  • @423195266 #21681 03:23 PM, 01 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @qweran #21682 03:44 PM, 01 Aug 2017
    Привет!
    Есть задача:
    Хранить в clickhouse как оперативные данные (на серверах с SSD), так и архивные (серваки с HDD). Как это правильно реализовать? Как-то использовать Distributed-движок?
  • https://t.me/clickhouse_ru
    @343206394 #21683 04:32 PM, 01 Aug 2017
    Скажите это нормально?

    Запросы к 3 локальным таблицам
    1 rows in set. Elapsed: 0.381 sec. Processed 3.26 billion rows, 6.51 GB (8.53 billion rows/s., 17.07 GB/s.)
    1 rows in set. Elapsed: 0.372 sec. Processed 2.99 billion rows, 5.99 GB (8.05 billion rows/s., 16.11 GB/s.)
    1 rows in set. Elapsed: 0.513 sec. Processed 4.18 billion rows, 8.35 GB (8.14 billion rows/s., 16.28 GB/s.)

    3.26+2.99+4.18=10.43

    Запрос к распределенной
    1 rows in set. Elapsed: 1.176 sec. Processed 11.60 billion rows, 23.20 GB (9.86 billion rows/s., 19.73 GB/s.)
  • https://t.me/clickhouse_ru
    @343206394 #21684 04:33 PM, 01 Aug 2017
    10.43 != 11.60
  • https://t.me/clickhouse_ru
    @343206394 #21685 06:20 PM, 01 Aug 2017
    + Еще один вопрос.

    backgroung threads поставил в 16 в настройках потому как сластер начал отваливаться с too many parts
    смотрю в system.merges 0-2 записи, в parts 5000 или 7000 и растет а процессор не загружен
    почему КХ не мержит в 16 потков в срочном порядке?
  • https://t.me/clickhouse_ru
    Я, конечно, не знаю, что такое батчи. Можете ткнуть в меня ссылкой. Но таки получается, что если я буду делать живую аналитику на тыкдоме, то приложенько, которое будет у меня вызывать 20к вставок в секунду, просто положит сервер и всё. А обещалось как раз быстро вставлять.
    Таки а где ж оптимизатор умный, который будет там складывать, скажем в буфер, а потом вносить данные?
  • https://t.me/clickhouse_ru
    @343206394 #21687 06:53 PM, 01 Aug 2017
    батчи=пачками по 20000 в вашем случае
    и да есть Buffer в КХ, но лучше делать самому подготовку пачки на стороне приложения по краиней мере документация Buffer не рекомендует почему-то
  • https://t.me/clickhouse_ru
    @165386325 #21688 06:55 PM, 01 Aug 2017
    Ну, скажем, приложенько на пхп так едва ли сможет (готовить пачку). Не все ж могут себе купить чего-нибудь.
  • https://t.me/clickhouse_ru
    @165386325 #21689 06:55 PM, 01 Aug 2017
    Чот яндекс опять наврал.
  • https://t.me/clickhouse_ru
    @inv2004 ↶ Reply to #21688 #21690 06:55 PM, 01 Aug 2017
    Мне кажется надо Buffer.
  • https://t.me/clickhouse_ru
    @inv2004 #21691 06:56 PM, 01 Aug 2017
    Тут упомянули ещё какие-то внешние решения, которые собирают батчи, но желания не возникло пробовать. В целом буффер именно для этого.
  • https://t.me/clickhouse_ru
    @inv2004 #21692 06:57 PM, 01 Aug 2017
    Вставлял ~500к в секунду.
  • https://t.me/clickhouse_ru
    @inv2004 #21693 06:58 PM, 01 Aug 2017
    Помимо того, что вставлять в буфер, ещё удобно вставлять чанками через http
  • https://t.me/clickhouse_ru
    @inv2004 #21694 06:59 PM, 01 Aug 2017
    Получается так сказать два буфера , там уже за 3млн переваливает легко.
  • https://t.me/clickhouse_ru
    @inv2004 #21695 06:59 PM, 01 Aug 2017
    Это на буфере и простом mergetree
  • https://t.me/clickhouse_ru
    @165386325 #21696 06:59 PM, 01 Aug 2017
    ну так буфер ж не рекомендован. А я б не стал использовать то, что не рекомендовано производителем.
  • https://t.me/clickhouse_ru
    @165386325 #21697 07:00 PM, 01 Aug 2017
    Хотя... Я вообще не знаю, зачем писать о чём-то в доке, если есть предупреждение "не использовать"
  • https://t.me/clickhouse_ru
    @inv2004 #21698 07:00 PM, 01 Aug 2017
    Я точно не помню, но там вроде были описаны кейсы когда он не рекомендуется.
  • https://t.me/clickhouse_ru
    @inv2004 #21699 07:02 PM, 01 Aug 2017
    Если буферов 16, то порядок не сохраняется. Но по идее в mergetree он же восстановится?
  • https://t.me/clickhouse_ru
    @inv2004 #21700 07:05 PM, 01 Aug 2017
    Если я правильно понимаю, то проблемы полезут из других движков и из зоокипера, но там num_layers может поможет (не проверял).
  • https://t.me/clickhouse_ru
    @IlyaSinelnikov #21701 07:37 PM, 01 Aug 2017
    Буфер живет в памяти и при отключении питания ваши данные тютю. Со всеми вытекающими.
  • https://t.me/clickhouse_ru
    Мы из приложеньки на пхп бахаем через эту штуку, которая нам батчует всё - https://github.com/badoo/lsd
    GitHub - badoo/lsd: Live Streaming Daemon

    Live Streaming Daemon. Contribute to badoo/lsd development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @343206394 #21703 08:17 PM, 01 Aug 2017
    Опять наткнулся на 2017.08.01 20:16:24.814536 [ 189 ] <Error> HTTPHandler: Code: 252, e.displayText() = DB::Exception: Too much parts. Merges are processing significantly slower than inserts., e.what() = DB::Exception, Stack trace:
  • https://t.me/clickhouse_ru
    @343206394 #21704 08:18 PM, 01 Aug 2017
    background_pool_size увеличил до безобразия - не помогло
  • https://t.me/clickhouse_ru
    @343206394 #21705 08:20 PM, 01 Aug 2017
    сервера ничего не делают, процессоры простиавают и инсерты просели в 5 раз
  • https://t.me/clickhouse_ru
    @343206394 #21706 08:20 PM, 01 Aug 2017
    и что с этим делать непонятно
  • https://t.me/clickhouse_ru
    @343206394 #21707 08:21 PM, 01 Aug 2017
    интересно что это на кластере из 3 машин, 3 шарды по 2 реплики
  • https://t.me/clickhouse_ru
    @343206394 #21708 08:21 PM, 01 Aug 2017
    на одной машине когда поставил background_pool_size = 8 этого хватило чтобы мержи успевали
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @343206394 #21710 08:31 PM, 01 Aug 2017
    На скрине видно как после 8:08 где-то процессинг из Кафки стал рваным (лаг перестал снижатьс быстро) и в это же время КХ сервера начали курить
  • https://t.me/clickhouse_ru
    @343206394 #21711 08:31 PM, 01 Aug 2017
    Непорядок какой-то
  • https://t.me/clickhouse_ru
    @etkee ↶ Reply to #21688 #21712 10:46 PM, 01 Aug 2017
    приложение -> очередь -> наблюдатель очереди
  • У нас php успешно пишет в файлы TSV по 10 сек, и потом типа cron грузит в CH... уже год как и не напрягает...
  • 02 August 2017 (370 messages)
  • @408048729 #21719 05:03 AM, 02 Aug 2017
    Joined.
  • @renatko #21720 06:50 AM, 02 Aug 2017
    @garikanet что если на этапе загрузки в CH стало понятно, что с данными что-то не так? Не правильный тип поля, например. Как решаете?
    впрочем это касается не только php
  • У нас несколько ETL, в самом простом виде пишем в tsv заливаем, без особой проверки - данные не критичные и их потеря допустима.

    Другой etl - читает protobuf данные, потом преобразует в RowBinary

    У них всех есть очередь в простом варианте две папки - "ожидают" и "обработанные" - перемещение из одной в другую после успешной загрузки, если происходит ошибка то руками можно поправить и перезалить.
    Использование формата типа protobuf - решает проблему формата полей и структуры данных, позволяет версионность.
  • https://t.me/clickhouse_ru
    Вариант 1. Удаление таблицы и заливка данных заново
    Вариант 2. Deattach "битых" данных и заливка их заново
  • https://t.me/clickhouse_ru
    Вопрос скорее был в том, что делать когда данные УЖЕ в CH
  • https://t.me/clickhouse_ru
    @343206394 #21724 07:45 AM, 02 Aug 2017
    Позвольте повторить свои вопросы, потому как без ответов я застопорился совсем
  • https://t.me/clickhouse_ru
    @343206394 #21725 07:46 AM, 02 Aug 2017
    1 по кластеру.
    SELECT *
    FROM system.clusters

    ┌─cluster─┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name──┬─host_address─┬─port─┬─is_local─┬─user────┬─default_database─┐
    │ metrics │ 1 │ 1 │ 1 │ 10.1.1.251 │ 10.1.1.251 │ 9000 │ 1 │ default │ │
    │ metrics │ 1 │ 1 │ 2 │ 10.1.1.86 │ 10.1.1.86 │ 9000 │ 1 │ default │ │
    │ metrics │ 2 │ 1 │ 1 │ 10.1.1.251 │ 10.1.1.251 │ 9000 │ 1 │ default │ │
    │ metrics │ 2 │ 1 │ 2 │ 10.1.1.145 │ 10.1.1.145 │ 9000 │ 1 │ default │ │
    │ metrics │ 3 │ 1 │ 1 │ 10.1.1.86 │ 10.1.1.86 │ 9000 │ 0 │ default │ │
    │ metrics │ 3 │ 1 │ 2 │ 10.1.1.145 │ 10.1.1.145 │ 9000 │ 0 │ default │ │
    └─────────┴───────────┴──────────────┴─────────────┴────────────┴──────────────┴──────┴──────────┴─────────┴──────────────────┘

    6 rows in set. Elapsed: 0.050 sec.

    Тут вроде все ок, 3 шарды по 2 реплики
  • https://t.me/clickhouse_ru
    @343206394 #21726 07:47 AM, 02 Aug 2017
    а тут пишет что реплика 1

    SELECT * FROM system.replicas
    FORMAT Vertical

    zookeeper_path: /clickhouse/tables/measures/01
    replica_name: 1
    replica_path: /clickhouse/tables/measures/01/replicas/1
    columns_version: 0
    queue_size: 3
    inserts_in_queue: 0
    merges_in_queue: 3
    queue_oldest_time: 2017-08-02 07:44:40
    inserts_oldest_time: 0000-00-00 00:00:00
    merges_oldest_time: 2017-08-02 07:44:40
    oldest_part_to_get:
    oldest_part_to_merge_to: 20170210_20170216_42373_54709_5421
    log_max_index: 914493
    log_pointer: 914494
    last_queue_update: 2017-08-02 07:44:40
    absolute_delay: 0
    total_replicas: 1
    active_replicas: 1

    Так по 2 реплики или все таки по одной ?
  • https://t.me/clickhouse_ru
    @343206394 #21727 07:51 AM, 02 Aug 2017
    Вопрос номер два:

    Локальные запросы с 3 машин
    1 rows in set. Elapsed: 1.254 sec. Processed 9.56 billion rows, 19.13 GB (7.63 billion rows/s., 15.25 GB/s.)
    1 rows in set. Elapsed: 0.833 sec. Processed 7.38 billion rows, 14.75 GB (8.85 billion rows/s., 17.70 GB/s.)
    1 rows in set. Elapsed: 0.810 sec. Processed 6.80 billion rows, 13.59 GB (8.39 billion rows/s., 16.79 GB/s.)

    9.56+7.38+6.80=23.74

    Распределенный запрос
    1 rows in set. Elapsed: 2.310 sec. Processed 25.92 billion rows, 51.85 GB (11.22 billion rows/s., 22.44 GB/s.)

    Почему одно не равно другому?
  • https://t.me/clickhouse_ru
    @343206394 #21728 07:53 AM, 02 Aug 2017
    Вопрос номер три, последнии :)

    Что же все таки делать с 2017.08.01 20:16:24.814536 [ 189 ] <Error> HTTPHandler: Code: 252, e.displayText() = DB::Exception: Too much parts. Merges are processing significantly slower than inserts., e.what() = DB::Exception, Stack trace:
    Почему кластер перестает грузить машины и писать начинает очень медленно?
    Как его заставить мержить используя все ресурсы?
  • https://t.me/clickhouse_ru
    @343206394 #21729 07:55 AM, 02 Aug 2017
    Картинку повторю
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @kshvakov #21731 08:07 AM, 02 Aug 2017
    2) Он получил данные с 3-х машин, потом результат локально померджил (тоже строки)
    3) Вставляйте большими пачками не чаще чем раз в 1-2 секунды
  • https://t.me/clickhouse_ru
    @a1exm0 #21732 08:08 AM, 02 Aug 2017
    Привет, правильно ли я понимаю, что replacingMergeTree удаляет дубликат по соответствию составного primary ключа? Т.е если у меня составной ПК состоит из него лонгового id и даты, то mergeTree удалит дубликат, при соответствии и айди, и даты одновременно
  • https://t.me/clickhouse_ru
    @343206394 #21733 08:09 AM, 02 Aug 2017
    2) Так count же, как он так помержил что итоговая сумма разная получилась?
  • https://t.me/clickhouse_ru
    @343206394 #21734 08:10 AM, 02 Aug 2017
    3) вставляю пачками по 500000
  • https://t.me/clickhouse_ru
    @343206394 #21735 08:10 AM, 02 Aug 2017
    Увеличить до 1000000?
  • https://t.me/clickhouse_ru
    @kshvakov #21736 08:11 AM, 02 Aug 2017
    Уверены что оно одним блоком уходит, а не кучей insert into ?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #21733 #21737 08:12 AM, 02 Aug 2017
    сам COUNT правильно посчитан ?
  • https://t.me/clickhouse_ru
    @patrakovdg #21738 08:13 AM, 02 Aug 2017
    привет! а что за метрика ClickHouse.ProfileEvents.SelectedRanges ?
  • https://t.me/clickhouse_ru
    @343206394 #21739 08:13 AM, 02 Aug 2017
    Уверен что блоком иначе бы оно намного раньше умерло
  • https://t.me/clickhouse_ru
    @343206394 #21740 08:14 AM, 02 Aug 2017
    Count правильно? Не уверен что понял вопрос, извини. Ну сложил я 3 числа вроде правильно. А как КХ их посчитал я не уверен
  • https://t.me/clickhouse_ru
    @kshvakov #21741 08:18 AM, 02 Aug 2017
    стопаем запись, делаем
    SELECT COUNT() FROM distributed
    и на всех локальных
    SELECT COUNT() from local
    складываем числа с локальных и они должны сойтись с распределенной
  • https://t.me/clickhouse_ru
    @343206394 #21742 08:18 AM, 02 Aug 2017
    так это и делал
  • https://t.me/clickhouse_ru
    @343206394 #21743 08:18 AM, 02 Aug 2017
    сейчас повторю
  • https://t.me/clickhouse_ru
    @343206394 #21744 08:19 AM, 02 Aug 2017
    насчет записи
  • https://t.me/clickhouse_ru
    @kshvakov #21745 08:19 AM, 02 Aug 2017
    и что получилось ?
  • https://t.me/clickhouse_ru
    @343206394 #21746 08:19 AM, 02 Aug 2017
    вот так начинается
  • https://t.me/clickhouse_ru
    @343206394 #21747 08:19 AM, 02 Aug 2017
    2017-08-01 19:55:00,272 INFO [CHRawDataPullerThread_3] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_3: Inserted 500001 docs into store
    2017-08-01 19:55:00,904 INFO [CHRawDataPullerThread_7] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_7: Inserted 500003 docs into store
    2017-08-01 19:55:01,612 INFO [CHRawDataPullerThread_5] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_5: Inserted 500003 docs into store
    2017-08-01 19:55:02,462 INFO [CHRawDataPullerThread_2] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_2: Inserted 500001 docs into store
    2017-08-01 19:55:04,705 INFO [CHRawDataPullerThread_1] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_1: Inserted 500001 docs into store
    2017-08-01 19:55:05,590 INFO [CHRawDataPullerThread_6] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_6: Inserted 500002 docs into store
    2017-08-01 19:55:06,438 INFO [CHRawDataPullerThread_0] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_0: Inserted 500001 docs into store
  • https://t.me/clickhouse_ru
    @343206394 #21748 08:19 AM, 02 Aug 2017
    вот так потом с затыками
    2017-08-01 20:50:31,461 INFO [CHRawDataPullerThread_2] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_2: Inserted 500004 docs into store
    2017-08-01 20:50:31,521 INFO [CHRawDataPullerThread_6] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_6: Inserted 500000 docs into store
    2017-08-01 20:50:53,914 INFO [CHRawDataPullerThread_6] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_6: Inserted 500006 docs into store
    2017-08-01 20:50:53,980 INFO [CHRawDataPullerThread_0] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_0: Inserted 500002 docs into store
    2017-08-01 20:50:54,452 INFO [CHRawDataPullerThread_2] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_2: Inserted 500003 docs into store
  • https://t.me/clickhouse_ru
    @343206394 #21749 08:20 AM, 02 Aug 2017
    и на картинке выше видно что в это время сервера ничего не делают
  • https://t.me/clickhouse_ru
    @343206394 #21750 08:22 AM, 02 Aug 2017
    вот повторил
  • https://t.me/clickhouse_ru
    @343206394 #21751 08:22 AM, 02 Aug 2017
    1 rows in set. Elapsed: 0.780 sec. Processed 6.86 billion rows, 13.73 GB (8.80 billion rows/s., 17.61 GB/s.)
    1 rows in set. Elapsed: 0.851 sec. Processed 7.44 billion rows, 14.89 GB (8.74 billion rows/s., 17.49 GB/s.)
    1 rows in set. Elapsed: 1.087 sec. Processed 9.65 billion rows, 19.31 GB (8.88 billion rows/s., 17.77 GB/s.)

    6.86+7.44+9.65=23.95

    1 rows in set. Elapsed: 2.144 sec. Processed 26.17 billion rows, 52.35 GB (12.21 billion rows/s., 24.42 GB/s.)
  • https://t.me/clickhouse_ru
    @343206394 #21752 08:22 AM, 02 Aug 2017
    могу скриншотов наделать
  • https://t.me/clickhouse_ru
    @343206394 #21753 08:24 AM, 02 Aug 2017
    запросы такие
    select count(*) from Measures;
    и
    select count(*) from Measures_Distributed;
  • https://t.me/clickhouse_ru
    @343206394 #21754 08:30 AM, 02 Aug 2017
    Идеи? И что блин с этими мержами делать, видимо надо Алексея ждать. Сам не разберусь.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #21753 #21755 09:26 AM, 02 Aug 2017
    сами COUNT тоже не сошлись ? Measures_Distributed точно ходит на те сервера на которых руками запрос к локальным таблицам делали ?
  • https://t.me/clickhouse_ru
    @343206394 #21756 09:31 AM, 02 Aug 2017
    Да каунты не сошлись
  • https://t.me/clickhouse_ru
    @343206394 #21757 09:31 AM, 02 Aug 2017
    У меня всего 3 сервера сейчас. Выше я выложил как clusters выглядит.
  • https://t.me/clickhouse_ru
    @343206394 #21758 09:32 AM, 02 Aug 2017
    Выкладывать как таблицы создавал?
  • https://t.me/clickhouse_ru
    @343206394 #21759 10:11 AM, 02 Aug 2017
    Добавил еще 2 распределенные таблицы. Они указывают на те же реплицированные. Вот результаты.
    Что-то я в замешательстве все больше

    ubuntu@pprod-spm-ch-3:~$ curl 'pprod-spm-ch-3:8123?query=select+count(*)+from+default.Measures_Distributed;'
    27006115772
    ubuntu@pprod-spm-ch-3:~$ curl 'pprod-spm-ch-4:8123?query=select+count(*)+from+default.Measures_Distributed;'
    22433347800
    ubuntu@pprod-spm-ch-3:~$ curl 'pprod-spm-ch-5:8123?query=select+count(*)+from+default.Measures_Distributed;'
    24140419001
  • https://t.me/clickhouse_ru
    @343206394 #21760 10:18 AM, 02 Aug 2017
    Запросы к 3 серверам.

    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    27641774875
    25349551940
    24191925958
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    27062961884 »»»»» УМЕНЬШИЛОСЬ КОЛ-ВО? КАК ТАК?
    22478516014
    21899703023
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #21760 #21761 10:21 AM, 02 Aug 2017
    у тебя точно нет проблем с репликами? например они дико отстают или еще что-то такое?
  • https://t.me/clickhouse_ru
    @Civiloid #21762 10:21 AM, 02 Aug 2017
    for i in {1..3}; do curl 'localhost:8123?query=select+count(*)+from+default.metricstats;'; done
    127850185240
    127850185240
    127850185240
  • https://t.me/clickhouse_ru
    @Civiloid #21763 10:22 AM, 02 Aug 2017
    тоже запрос на распределенную таблицу, поверх replicated merge tree
  • https://t.me/clickhouse_ru
    @343206394 #21764 10:22 AM, 02 Aug 2017
    Как проверить что реплтки не отстают?
  • https://t.me/clickhouse_ru
    @343206394 #21765 10:22 AM, 02 Aug 2017
    В system.replicas delay = 0
  • https://t.me/clickhouse_ru
    @343206394 #21766 10:24 AM, 02 Aug 2017
    SELECT absolute_delay
    FROM system.replicas
    FORMAT Vertical

    Row 1:
    ──────
    absolute_delay: 0

    1 rows in set. Elapsed: 0.001 sec.
  • https://t.me/clickhouse_ru
    @Civiloid #21767 10:24 AM, 02 Aug 2017
    а версия КХ какая?
  • https://t.me/clickhouse_ru
    @343206394 #21768 10:25 AM, 02 Aug 2017
    где глянуть (извини не знаю)
  • https://t.me/clickhouse_ru
    @343206394 #21769 10:25 AM, 02 Aug 2017
    На всех
  • https://t.me/clickhouse_ru
    @Civiloid #21770 10:25 AM, 02 Aug 2017
    Vladimir у меня такое же поведение странное было когда у меня на одной из старых версий машинка с одной из реплик сдохла, но вроде как это уже тоже не так
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #21768 #21771 10:25 AM, 02 Aug 2017
    select version()
  • https://t.me/clickhouse_ru
    @Civiloid #21772 10:25 AM, 02 Aug 2017
    например
  • https://t.me/clickhouse_ru
    @Civiloid #21773 10:26 AM, 02 Aug 2017
    и проверь сразу на всех железках
  • https://t.me/clickhouse_ru
    @343206394 #21774 10:26 AM, 02 Aug 2017
    На всех
    1.1.54245
  • https://t.me/clickhouse_ru
    @Civiloid #21775 10:26 AM, 02 Aug 2017
    это вроде последний stable, да
  • https://t.me/clickhouse_ru
    @Civiloid #21776 10:27 AM, 02 Aug 2017
    ну тогда ждем когда @milovidov_an или @the_real_jkee или еще кто из разработчиков (или близких к ним людей) посмотрит
  • https://t.me/clickhouse_ru
    @343206394 #21777 10:27 AM, 02 Aug 2017
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+version();'; done;
    1.1.54245
    1.1.54245
    1.1.54245
  • https://t.me/clickhouse_ru
    @343206394 #21778 10:28 AM, 02 Aug 2017
    Да жду их. Без кластера все вроде ок было. А тут началось :)
  • https://t.me/clickhouse_ru
    @343206394 #21779 10:29 AM, 02 Aug 2017
    Реально очень похоже что что-то с репликами
  • https://t.me/clickhouse_ru
    @343206394 #21780 10:30 AM, 02 Aug 2017
    потому как числа прыгают но вариантов только 2
  • https://t.me/clickhouse_ru
    @343206394 #21781 10:30 AM, 02 Aug 2017
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    27062961884
    25349551940
    24191925958
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    27641774875
    22478516014
    21899703023
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    27641774875
    25349551940
    21899703023
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    27641774875
    22478516014
    24191925958
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    27641774875
    22478516014
    21899703023
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    27641774875
    22478516014
    21899703023
  • https://t.me/clickhouse_ru
    @343206394 #21782 10:31 AM, 02 Aug 2017
    Может дело в том что я на каждой машине создавал по 2 таблицы такие?

    CREATE TABLE IF NOT EXISTS Measures
    (
    account UInt32,
    id UInt32,
    date Date,
    timestamp UInt32,
    value Float32,
    tags Nested (
    name UInt32,
    value UInt32
    )
    ) Engine = ReplicatedMergeTree('/clickhouse/tables/measures/02', '2',date, (account, id, timestamp), 8192);
    CREATE TABLE IF NOT EXISTS Measures
    (
    account UInt32,
    id UInt32,
    date Date,
    timestamp UInt32,
    value Float32,
    tags Nested (
    name UInt32,
    value UInt32
    )
    ) Engine = ReplicatedMergeTree('/clickhouse/tables/measures/03', '2',date, (account, id, timestamp), 8192);
  • https://t.me/clickhouse_ru
    @343206394 #21783 10:31 AM, 02 Aug 2017
    ну тоесть они шардами и репликми отличались только
  • https://t.me/clickhouse_ru
    @Civiloid #21784 10:35 AM, 02 Aug 2017
    а ты уверен что они у тебя обе созданы? )
  • https://t.me/clickhouse_ru
    @Civiloid #21785 10:35 AM, 02 Aug 2017
    кажется что с одним именем нельзя
  • https://t.me/clickhouse_ru
    @343206394 #21786 10:35 AM, 02 Aug 2017
    может не обе
  • https://t.me/clickhouse_ru
    @343206394 #21787 10:36 AM, 02 Aug 2017
    как на 3 сервера раскидать 3 шарда с 2 репликами по другому не придумал
  • https://t.me/clickhouse_ru
    @343206394 #21788 10:36 AM, 02 Aug 2017
    Могу все пересоздать если кто подскажет как
  • https://t.me/clickhouse_ru
    @343206394 #21789 10:36 AM, 02 Aug 2017
    :)
  • https://t.me/clickhouse_ru
    @Civiloid #21790 10:37 AM, 02 Aug 2017
    названия таблиц поменяй (ИМХО)
  • https://t.me/clickhouse_ru
    @Civiloid #21791 10:37 AM, 02 Aug 2017
    но я боюсь ты дистрибьютед на них так просто не натянешь уже
  • https://t.me/clickhouse_ru
    @343206394 #21792 10:37 AM, 02 Aug 2017
    А как тогда в Распределенной их указать?
  • https://t.me/clickhouse_ru
    @343206394 #21793 10:38 AM, 02 Aug 2017
    CREATE TABLE default.Measures_Distributed ( account UInt32, id UInt32, date Date, timestamp UInt32, value Float32, tags.name Array(UInt32), tags.value Array(UInt32)) ENGINE = Distributed(metrics, \'default\', \'Measures\', rand())
  • Как-то странно создаются таблицы. По-логике, 2-я совсем не должна была создаться, так как IF NOT EXISTS, и имя совпадает с первой.
  • https://t.me/clickhouse_ru
    @343206394 #21795 10:44 AM, 02 Aug 2017
    Согласен
  • https://t.me/clickhouse_ru
    @343206394 #21796 10:44 AM, 02 Aug 2017
    что-то намудрил
  • https://t.me/clickhouse_ru
    @343206394 #21797 10:45 AM, 02 Aug 2017
    дайте рецепт как на 3 серверах получить 3 шарды с 2 репликами для каждой
  • https://t.me/clickhouse_ru
    @343206394 #21798 10:45 AM, 02 Aug 2017
    Неужели у всех 6 серверов :)
  • https://t.me/clickhouse_ru
    @343206394 #21799 10:45 AM, 02 Aug 2017
    можно наверное в разних БД создавать
  • https://t.me/clickhouse_ru
    @343206394 #21800 10:46 AM, 02 Aug 2017
    но это изврат наверное какой-то
  • https://t.me/clickhouse_ru
    @343206394 #21801 10:46 AM, 02 Aug 2017
    и распределенную не натянуть
  • @kochetovnicolai #21802 10:47 AM, 02 Aug 2017
    Точно не уверен, что возможно. Попытаюсь уточнить. В любом случае, создавать надо 1 таблицу, а параметры реплики\шарда указывать в подствновке {shard} и {replica}, иначе что-то странное будет.
  • https://t.me/clickhouse_ru
    @343206394 #21803 10:50 AM, 02 Aug 2017
    Спсб
  • https://t.me/clickhouse_ru
    @343206394 #21804 10:51 AM, 02 Aug 2017
    Добавлю 4 сервер тогда и пока сделаю 2*2
    Но очень хочется читать сразу с 4 а не с 2 как тут получится
  • https://t.me/clickhouse_ru
    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
    @343206394 #21806 10:54 AM, 02 Aug 2017
    Все таки с разными бд, я думал это изврат
  • https://t.me/clickhouse_ru
    @343206394 #21807 10:54 AM, 02 Aug 2017
    а бд указали в распределенной как '' и оно заработало?
    Спсб
  • https://t.me/clickhouse_ru
    Да, у меня так срабатывало
  • https://t.me/clickhouse_ru
    @343206394 #21809 10:55 AM, 02 Aug 2017
    Уря-уря
  • https://t.me/clickhouse_ru
    @343206394 #21810 10:55 AM, 02 Aug 2017
    ушел все дропать
  • @kochetovnicolai #21811 10:55 AM, 02 Aug 2017
    да, действительно, судя по тесту, я был неправ :)
  • https://t.me/clickhouse_ru
    @343206394 #21812 10:55 AM, 02 Aug 2017
    !!! Спсб
  • https://t.me/clickhouse_ru
    @343206394 #21813 10:56 AM, 02 Aug 2017
    Alex a вы случаем не знаете что с too many parts делать?
  • https://t.me/clickhouse_ru
    @343206394 #21814 10:56 AM, 02 Aug 2017
    батчи до 1M увеличивать?
  • https://t.me/clickhouse_ru
    @343206394 #21815 10:56 AM, 02 Aug 2017
    Все таки немног втранно что КХ ничего не делает при этом (при том что parts мержить надо)
  • https://t.me/clickhouse_ru
    @vasya_toropov #21816 11:19 AM, 02 Aug 2017
    Помнится была какая-то настроечка которую советовали увеличить в таких случаях.
  • https://t.me/clickhouse_ru
    @343206394 #21817 11:20 AM, 02 Aug 2017
    background threads pool?
  • https://t.me/clickhouse_ru
    @343206394 #21818 11:20 AM, 02 Aug 2017
    Поставил аж 64 - нифига
  • https://t.me/clickhouse_ru
    @343206394 #21819 11:21 AM, 02 Aug 2017
    может магическое число 8192 увеличить
  • https://t.me/clickhouse_ru
    @vasya_toropov #21820 11:21 AM, 02 Aug 2017
    Только что ответил внутри, из-за чего может быть ошибка Too much parts. Скопирую сюда:

    Может быть несколько причин, почему такое происходит:

    1. Данные не успевают мержатся, но всё-таки мержатся. Это будет видно по наличию большого количества одновременных мержей.
    Запрос SELECT * FROM system.merges,
    метрика ClickHouse.Metrics.Merge в Графите.
    В этом случае может помочь увеличение размера пачки.

    2. Данные не мержатся из-за того, что превышено некоторое ограничение. В последней версии ограничение на суммарный размер кусков, которые можно мержить - 100 GB. На практике мы убедились, что это плохо - если за месяц больше 10 ТБ данных, то это приводит к тому, что есть несколько сотен кусков, которые не мержатся. Скоро увеличим по-умолчанию, а пока можно увеличить вручную - я скажу, как.
    Чтобы проверить - нужно посмотреть на размеры кусков: SELECT * FROM system.parts WHERE active

    3. Данные не мержатся из-за бага. Суть в том, что среди реплик выбирается одна реплика-лидер, и именно она решает, какие мержи нужно делать. Раньше было много проблем - например, реплика-лидер могла отставать и не видеть куски для мержей. Или одна реплика могла уступить лидерство, а другая долго не брать его, из-за того, что это требует захвата некоторых блокировок. Все эти проблемы мы исправили и больше не наблюдали :) Но похожие вещи всё-равно могут быть.
    Чтобы проверить - надо посмотреть на число одновременных мержей, так же, как написано выше. Если мержей нет - значит подозрение на такую проблему.
  • https://t.me/clickhouse_ru
    @vasya_toropov #21821 11:24 AM, 02 Aug 2017
    Сейчас есть проблема, что при объёме данных больше 10 ТБ в месяц, куски плохо мержатся, из-за выставленных настроек по-умолчанию. Если это ваш случай, то можно прописать в config.xml в секции merge_tree, max_bytes_to_merge_at_max_space_in_pool побольше (по-умолчанию - 100 ГБ, можно увеличить до 500 ГБ, например).
  • https://t.me/clickhouse_ru
    max_bytes_to_merge_at_max_space_in_pool
  • https://t.me/clickhouse_ru
    @343206394 #21823 11:26 AM, 02 Aug 2017
    У меня похлже случай что merges пустая
  • https://t.me/clickhouse_ru
    @343206394 #21824 11:26 AM, 02 Aug 2017
    и сервер простаивает
  • https://t.me/clickhouse_ru
    @343206394 #21825 11:27 AM, 02 Aug 2017
    по крайней мере я много раз делал селект и в 50% случаях ничего не возвращалось
  • https://t.me/clickhouse_ru
    @343206394 #21826 11:27 AM, 02 Aug 2017
    увеличу до 500000000000
  • https://t.me/clickhouse_ru
    @343206394 #21827 11:53 AM, 02 Aug 2017
    ubuntu@pprod-spm-ch-3:~$ cat /etc/clickhouse-server/conf.d/remote_servers.xml
    <remote_servers>
    <metrics>
    <shard>
    <!— Optional. Wheight for writing. Default is 1. —>
    <weight>1</weight>
    <!— Optional. Write to only 1 replic?. By default, false - write to all replics. —>
    <internal_replication>true</internal_replication>
    <replica>
    <default_database>shard_1</default_database>
    <host>10.1.1.251</host>
    <port>9000</port>
    </replica>
    <replica>
    <default_database>shard_1</default_database>
    <host>10.1.1.86</host>
    <port>9000</port>
    </replica>
    </shard>
  • https://t.me/clickhouse_ru
    @343206394 #21828 11:53 AM, 02 Aug 2017
    2017.08.02 11:48:11.231828 [ 35 ] <Error> HTTPHandler: Code: 170, e.displayText() = DB::Exception: Requested cluster 'metrics' not found, e.what() = DB::Exception, Stack trace:
  • https://t.me/clickhouse_ru
    @343206394 #21829 11:53 AM, 02 Aug 2017
    Это после рестарта
  • https://t.me/clickhouse_ru
    @343206394 #21830 12:01 PM, 02 Aug 2017
    я болван, пофиксил
  • https://t.me/clickhouse_ru
    @343206394 #21831 12:06 PM, 02 Aug 2017
    Пересоздал как в рецепте на питоне с одтельными бд дла каждой шарды
  • https://t.me/clickhouse_ru
    @343206394 #21832 12:07 PM, 02 Aug 2017
    все равно count пляшет
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    30670267
    40000954
    30670267
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    30670267
    35331001
    36669049
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    30670267
    45999736
    26000314
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    30670267
    40000954
    41339002
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    30670267
    30670267
    36669049
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    31003969
    46332908
    41672704
  • https://t.me/clickhouse_ru
    @343206394 #21833 12:07 PM, 02 Aug 2017
    Что касается мержей то вот
    SELECT count(*)
    FROM system.parts

    ┌─count()─┐
    │ 4117 │
    └─────────┘

    1 rows in set. Elapsed: 0.014 sec. Processed 4.12 thousand rows, 805.87 KB (293.92 thousand rows/s., 57.53 MB/s.)

    :) select count(*) from system.merges;

    SELECT count(*)
    FROM system.merges

    ┌─count()─┐
    │ 0 │
    └─────────┘

    1 rows in set. Elapsed: 0.001 sec.
  • https://t.me/clickhouse_ru
    @343206394 #21834 12:07 PM, 02 Aug 2017
    И кол-во частей растет
  • https://t.me/clickhouse_ru
    @343206394 #21835 12:10 PM, 02 Aug 2017
    SELECT count(*)
    FROM system.parts
    WHERE active

    ┌─count()─┐
    │ 2638 │
    └─────────┘

    1 rows in set. Elapsed: 0.011 sec. Processed 2.64 thousand rows, 517.82 KB (245.53 thousand rows/s., 48.19 MB/s.)
  • https://t.me/clickhouse_ru
    @343206394 #21836 12:11 PM, 02 Aug 2017
    Размеры кусков (часть небольшая)

    │ 238744 │
    │ 150295 │
    │ 45537 │
    │ 1877 │
    │ 3497620 │
    │ 45097735 │
    │ 100445291 │
    │ 25183453 │
    │ 24205009 │
    │ 8025090 │
    │ 2813436 │
    │ 2776275 │
    │ 640824 │
    │ 2951712 │
    │ 45963162 │
    │ 103841374 │
    │ 29787212 │
    │ 35136577 │
    │ 670064 │
    │ 661817 │
    │ 694306 │
    │ 675514 │
    │ 675479 │
    │ 1969 │
    │ 1659 │
    │ 1482 │
    │ 1385 │
    │ 1635 │
    │ 1326 │
    │ 1641 │
  • https://t.me/clickhouse_ru
    @343206394 #21837 12:12 PM, 02 Aug 2017
    SELECT bytes
    FROM system.parts
    WHERE active
    ORDER BY bytes DESC
    LIMIT 20

    ┌─────bytes─┐
    │ 103841374 │
    │ 100445291 │
    │ 45963162 │
    │ 45097735 │
    │ 35136577 │
    │ 29787212 │
    │ 27960524 │
    │ 25183453 │
    │ 24205009 │
    │ 21057918 │
    │ 18070983 │
    │ 10042797 │
    │ 6931969 │
    │ 3497620 │
    │ 3056593 │
    │ 2951712 │
    │ 2716754 │
    │ 757982 │
    │ 757828 │
    │ 748188 │
    └───────────┘
  • https://t.me/clickhouse_ru
    Кол-во parts уменьшается, значит мерджы идут
  • https://t.me/clickhouse_ru
    @343206394 #21839 12:13 PM, 02 Aug 2017
    cначала они и вчера шли
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #21840 12:13 PM, 02 Aug 2017
    Возможно ваши реплики и шарды с разной скоростью обрабатывают данные - потому и отличия в COUNT
  • https://t.me/clickhouse_ru
    @343206394 #21841 12:13 PM, 02 Aug 2017
    а потом через 3-4 часа
  • https://t.me/clickhouse_ru
    @343206394 #21842 12:13 PM, 02 Aug 2017
    когда колво достигло около 20000 все заглохло
  • https://t.me/clickhouse_ru
    @343206394 #21843 12:14 PM, 02 Aug 2017
    Давайте останавлю вставку и проверим через минуту
  • https://t.me/clickhouse_ru
    Значит фоновые мерджи, при ваших настройках, закончились. Это штатное поведение
  • @dr_gavrikov #21845 12:15 PM, 02 Aug 2017
    Коллеги, всем привет. Получается, что нельзя использовать условные операторы https://clickhouse.yandex/docs/ru/functions/conditional_functions.html?highlight=%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%BD%D1%8B%D0%B9 с NamedParameterJdbcTemplate

    я когда написал в запросе (model_id != 0 ? model_id : cluster_id) AS model_id, у меня возникла бага

    org.springframework.dao.InvalidDataAccessApiUsageException: Not allowed to mix named and traditional ? placeholders. You have 2 named parameter(s) and 2 traditional placeholder(s) in statement
  • https://t.me/clickhouse_ru
    @343206394 #21846 12:16 PM, 02 Aug 2017
    штатное поведение когда ничего не вставляет потому как пишет что много частей и при этом процессор ничего не делает (см картинку выше)?
  • https://t.me/clickhouse_ru
    Можно писать if(cond, then, else) и тогда такого не будет
  • https://t.me/clickhouse_ru
    @343206394 #21848 12:17 PM, 02 Aug 2017
    вот после остановки вставки через минуту примерно
  • https://t.me/clickhouse_ru
    @343206394 #21849 12:17 PM, 02 Aug 2017
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    197847333
    265166333
    197847333
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    257339801
    142501192
    209820192
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    197847333
    209820192
    257339801
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    257339801
    257339801
    205673865
  • @dr_gavrikov #21850 12:17 PM, 02 Aug 2017
    а норм
  • @dr_gavrikov #21851 12:17 PM, 02 Aug 2017
    сча напишу
  • https://t.me/clickhouse_ru
    По моему опыту, если писать большими пачками, в один поток - всё нормально мерджиться.
    Ждать минуту - мало, поскольку примерный интервал старта меджей - 8-10 минут. При этом все не мерджиться. Т.е. процесс мерджей - дело не 1-2 минут
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #21853 12:20 PM, 02 Aug 2017
    Особенно если "заливать" все данные заново, мерджи могу и полчаса идти, опять же записит какие батчи и какие данные вставляете
  • https://t.me/clickhouse_ru
    @343206394 #21854 12:20 PM, 02 Aug 2017
    тоесть пока идут мержи возвращать неправильные данные это штатное поведение?
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #21855 12:20 PM, 02 Aug 2017
    Я обычно по iotop смотрю что мерджи идут
  • https://t.me/clickhouse_ru
    @343206394 #21856 12:20 PM, 02 Aug 2017
    Так мержи это второй вопрос
  • https://t.me/clickhouse_ru
    @343206394 #21857 12:21 PM, 02 Aug 2017
    самое главное что count разное возвращает
  • https://t.me/clickhouse_ru
    @343206394 #21858 12:21 PM, 02 Aug 2017
    ubuntu@pprod-spm-ch-3:~$ for i in seq 1 5; do curl 'pprod-spm-ch-3:8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    202826595
    209820192
    143334127
    150327724
    259506058
  • https://t.me/clickhouse_ru
    @343206394 #21859 12:22 PM, 02 Aug 2017
    SELECT count(*)
    FROM default.Measures_Distributed

    ┌───count()─┐
    │ 207007187 │
    └───────────┘

    1 rows in set. Elapsed: 0.073 sec. Processed 207.01 million rows, 414.01 MB (2.84 billion rows/s., 5.67 GB/s.)

    :) select count(*) from default.Measures_Distributed;

    SELECT count(*)
    FROM default.Measures_Distributed

    ┌───count()─┐
    │ 259839933 │
    └───────────┘

    1 rows in set. Elapsed: 0.333 sec. Processed 259.84 million rows, 519.68 MB (781.28 million rows/s., 1.56 GB/s.)

    :) select count(*) from default.Measures_Distributed;

    SELECT count(*)
    FROM default.Measures_Distributed

    ┌───count()─┐
    │ 200347465 │
    └───────────┘

    1 rows in set. Elapsed: 0.374 sec. Processed 200.35 million rows, 400.69 MB (536.11 million rows/s., 1.07 GB/s.)
  • https://t.me/clickhouse_ru
    @343206394 #21860 12:22 PM, 02 Aug 2017
    это как понимать?
  • https://t.me/clickhouse_ru
    Пробуйте прям ручками зайти на реплики и шарды и там посчитать
  • https://t.me/clickhouse_ru
    @Civiloid #21862 12:22 PM, 02 Aug 2017
    Vladimir а из локальных таблиц значения стабильные?
  • https://t.me/clickhouse_ru
    @343206394 #21863 12:22 PM, 02 Aug 2017
    сек
  • https://t.me/clickhouse_ru
    @343206394 #21864 12:27 PM, 02 Aug 2017
    В локальных таблицах все стабильно
  • https://t.me/clickhouse_ru
    @343206394 #21865 12:27 PM, 02 Aug 2017
    но по репликам данные не совпадают
  • https://t.me/clickhouse_ru
    @343206394 #21866 12:27 PM, 02 Aug 2017
    и вот такое есть
  • https://t.me/clickhouse_ru
    @343206394 #21867 12:27 PM, 02 Aug 2017
    SELECT *
    FROM system.replicas
    FORMAT Vertical

    Row 1:
    ──────
    database: shard_1
    table: Measures
    engine: ReplicatedMergeTree
    is_leader: 0
    is_readonly: 0
    is_session_expired: 0
    future_parts: 2
    parts_to_check: 0
    zookeeper_path: /clickhouse/tables/measures/01
    replica_name: 1
    replica_path: /clickhouse/tables/measures/01/replicas/1
    columns_version: 0
    queue_size: 6471
    inserts_in_queue: 5087
    merges_in_queue: 1384
    queue_oldest_time: 2017-08-02 12:04:23
    inserts_oldest_time: 2017-08-02 12:04:23
    merges_oldest_time: 2017-08-02 12:06:45
    oldest_part_to_get: 20161013_20161013_3_3_0
    oldest_part_to_merge_to: 20160727_20160727_4_103_1
    log_max_index: 9997
    log_pointer: 9998
    last_queue_update: 2017-08-02 12:26:00
    absolute_delay: 1343
    total_replicas: 2
    active_replicas: 2
  • https://t.me/clickhouse_ru
    @343206394 #21868 12:28 PM, 02 Aug 2017
    absolute_delay: 1343 » это в каких единицах?
  • https://t.me/clickhouse_ru
    @343206394 #21869 12:29 PM, 02 Aug 2017
    Почему оно после остановки вставки не догоняет если даже и есть рассинхронизация
  • https://t.me/clickhouse_ru
    @343206394 #21870 12:30 PM, 02 Aug 2017
    Неужели за 10 мин вставки так расколбасило.
  • https://t.me/clickhouse_ru
    @343206394 #21871 12:30 PM, 02 Aug 2017
    absolute_delay: 1554
    Увеличивается, хотя я с кластером вообще ничего не делаю сейчас
  • https://t.me/clickhouse_ru
    @343206394 #21872 12:31 PM, 02 Aug 2017
    SELECT count(*)
    FROM system.parts AS active

    ┌─count()─┐
    │ 7816 │
    └─────────┘

    1 rows in set. Elapsed: 0.033 sec. Processed 7.82 thousand rows, 1.54 MB (237.76 thousand rows/s., 46.76 MB/s.)

    :) select * from system.merges;

    SELECT *
    FROM system.merges

    Ok.

    0 rows in set. Elapsed: 0.001 sec.

    :)
  • https://t.me/clickhouse_ru
    @343206394 #21873 12:31 PM, 02 Aug 2017
    Мержей нет
  • https://t.me/clickhouse_ru
    @343206394 #21874 12:31 PM, 02 Aug 2017
    Parts дофига
  • https://t.me/clickhouse_ru
    @343206394 #21875 12:32 PM, 02 Aug 2017
    Приехали...
  • https://t.me/clickhouse_ru
    @Civiloid #21876 12:35 PM, 02 Aug 2017
    Vladimir а 7816 кусков за какое время набралось?
  • https://t.me/clickhouse_ru
    @Civiloid #21877 12:35 PM, 02 Aug 2017
    то есть в какой момент их было 0?
  • https://t.me/clickhouse_ru
    @343206394 #21878 12:35 PM, 02 Aug 2017
    10 мин
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #21878 #21879 12:35 PM, 02 Aug 2017
    то есть за 10 минут было 7816 инсертов (минимум)?
  • https://t.me/clickhouse_ru
    @Civiloid #21880 12:35 PM, 02 Aug 2017
    13 в секунду в среднем
  • https://t.me/clickhouse_ru
    тут нет описание
    https://clickhouse.yandex/docs/ru/system_tables/system.replicas.html

    По коду либо милисекунды, либо секунды
  • https://t.me/clickhouse_ru
    @Civiloid #21882 12:35 PM, 02 Aug 2017
    не считая то что таки смержилось
  • https://t.me/clickhouse_ru
    Это плохо, CH становиться плохо при таком кол-ве инсертов
  • https://t.me/clickhouse_ru
    @343206394 #21884 12:36 PM, 02 Aug 2017
    2017-08-02 12:14:04,683 INFO [CHRawDataPullerThread_0] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_0: Inserted 500005 docs into store
    2017-08-02 12:14:04,706 INFO [CHRawDataPullerThread_5] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_5: Inserted 500003 docs into store
    2017-08-02 12:14:04,867 INFO [CHRawDataPullerThread_6] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_6: Inserted 500000 docs into store
    2017-08-02 12:14:06,182 INFO [CHRawDataPullerThread_2] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_2: Inserted 500007 docs into store
    2017-08-02 12:14:07,362 INFO [CHRawDataPullerThread_4] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_4: Inserted 500003 docs into store
    2017-08-02 12:14:07,400 INFO [CHRawDataPullerThread_8] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_8: Inserted 500006 docs into store
    2017-08-02 12:14:08,967 INFO [CHRawDataPullerThread_7] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_7: Inserted 500000 docs into store
    2017-08-02 12:14:10,025 INFO [CHRawDataPullerThread_3] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_3: Inserted 500012 docs into store
    2017-08-02 12:14:12,184 INFO [CHRawDataPullerThread_1] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_1: Inserted 500002 docs into store
    2017-08-02 12:14:12,699 INFO [CHRawDataPullerThread_5] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_5: Inserted 500000 docs into store
    2017-08-02 12:14:12,709 INFO [CHRawDataPullerThread_0] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_0: Inserted 500004 docs into store
    2017-08-02 12:14:13,012 INFO [CHRawDataPullerThread_6] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_6: Inserted 500000 docs into store
    2017-08-02 12:14:14,096 INFO [CHRawDataPullerThread_2] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_2: Inserted 500003 docs into store
    2017-08-02 12:14:14,915 INFO [CHRawDataPullerThread_4] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_4: Inserted 500013 docs into store
    2017-08-02 12:14:15,618 INFO [CHRawDataPullerThread_8] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_8: Inserted 500002 docs into store
    2017-08-02 12:14:16,807 INFO [CHRawDataPullerThread_7] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_7: Inserted 500004 docs into store
    2017-08-02 12:14:18,303 INFO [CHRawDataPullerThread_3] com.sematext.spm.clickhouse.CHRawDataPuller$Companion$PullerThread:123 - CHRawDataPullerThread_3: Inserted 500011 docs into store
  • https://t.me/clickhouse_ru
    @343206394 #21886 12:37 PM, 02 Aug 2017
    Вот лог встявлятеля
  • https://t.me/clickhouse_ru
    @343206394 #21887 12:37 PM, 02 Aug 2017
    вставляет пачки по 500к
  • посмотрел по коду, там секунды
  • https://t.me/clickhouse_ru
    @343206394 #21889 12:38 PM, 02 Aug 2017
    вот встявляло
  • https://t.me/clickhouse_ru
    @343206394 #21890 12:38 PM, 02 Aug 2017
    не 10 мин, больше
  • https://t.me/clickhouse_ru
    По такому логу я бы сказал, что вставка идет в несколько потоком. Попробуйте сделать в один поток, с небольшим таймаутом после каждой вставки
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @343206394 #21893 12:39 PM, 02 Aug 2017
    >По такому логу я бы сказал, что вставка идет в несколько потоком. Попробуйте сделать в один поток, с небольшим таймаутом после каждой вставки
    хм
    так а если у меня такой поток от пользователей
  • https://t.me/clickhouse_ru
    @343206394 #21894 12:39 PM, 02 Aug 2017
    тут вопрос что не видно куда упирается КХ
  • https://t.me/clickhouse_ru
    Всё равно нужно через некий батчер группировать данные и делать одни запрос
  • https://t.me/clickhouse_ru
    Упирает в то, что слишком много одновременных вставок. Так делать не советуют, лучше одну большую, чем несколько маленьких
  • https://t.me/clickhouse_ru
    @343206394 #21897 12:40 PM, 02 Aug 2017
    5-6 в секунду не выглядит критическим
  • https://t.me/clickhouse_ru
    @343206394 #21898 12:40 PM, 02 Aug 2017
    ок
  • https://t.me/clickhouse_ru
    @343206394 #21899 12:40 PM, 02 Aug 2017
    увеличу размер батча до 2 млн
  • https://t.me/clickhouse_ru
    Тут люди писали что вливают по 7 милионов строк в секунду - работает
  • https://t.me/clickhouse_ru
    @343206394 #21901 12:41 PM, 02 Aug 2017
    вот и я о том же
  • https://t.me/clickhouse_ru
    @343206394 #21902 12:41 PM, 02 Aug 2017
    где-то затык и надо понять где
  • https://t.me/clickhouse_ru
    @a1exm0 ↶ Reply to #21895 #21903 12:41 PM, 02 Aug 2017
    Скажите, а какие параметры должны быть по времени и по размеру батча? Я просто сейчас тестирую своё приложение и в кх пропадают записи, этого не может быть из-за частой многопоточной вставки ?
  • https://t.me/clickhouse_ru
    @343206394 #21904 12:42 PM, 02 Aug 2017
    и нифига не понятно почему absolute_delay: 2284 растет когда всавки нет
  • https://t.me/clickhouse_ru
    Затык в том, что при каждой вставке делается достаточно много действий с данными. Чтобы CH не помирал от большого кол-ва данных - делайте свой батчер или берите готовый и делайте однопоточную вставку
  • https://t.me/clickhouse_ru
    @343206394 #21906 12:43 PM, 02 Aug 2017
    и почему КХ не мержит ничего хотя есть что и вставка приосановлена
  • https://t.me/clickhouse_ru
    @343206394 #21907 12:43 PM, 02 Aug 2017
    SELECT count(*)
    FROM system.parts AS active

    ┌─count()─┐
    │ 7816 │
    └─────────┘

    1 rows in set. Elapsed: 0.028 sec. Processed 7.82 thousand rows, 1.54 MB (276.94 thousand rows/s., 54.46 MB/s.)

    :) select count(*) from system.merges;

    SELECT count(*)
    FROM system.merges

    ┌─count()─┐
    │ 0 │
    └─────────┘

    1 rows in set. Elapsed: 0.001 sec.
  • https://t.me/clickhouse_ru
    Нужно больше данных, что значит пропадают? Измените вставку так, чтобы вставлять не чаще раза в секунду в один поток. Размер батча - не меньше 1 000 строк
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #21890 #21909 12:44 PM, 02 Aug 2017
    ну вот должно быть 100 минут
  • https://t.me/clickhouse_ru
    @343206394 #21910 12:44 PM, 02 Aug 2017
    "делайте свой батчер"
    Я не очень понимаю
    Я ж показываю что батчами встявляется по 500к
  • https://t.me/clickhouse_ru
    @Civiloid #21911 12:44 PM, 02 Aug 2017
    Vladimir вроде бы (я могу ошибаться) что в таком случаи советуют брать buffer таблицы и через них качать данные
  • https://t.me/clickhouse_ru
    @Civiloid #21912 12:44 PM, 02 Aug 2017
    если нет возможности свой батчер сделать
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #21910 #21913 12:45 PM, 02 Aug 2017
    ну так у вас по рассчетам выходит 10+ вставок в секунду
  • https://t.me/clickhouse_ru
    @Civiloid #21914 12:45 PM, 02 Aug 2017
    а вы говорите что одна
  • https://t.me/clickhouse_ru
    @Civiloid #21915 12:45 PM, 02 Aug 2017
    значит ваш батчер не батчер
  • https://t.me/clickhouse_ru
    @343206394 #21916 12:45 PM, 02 Aug 2017
    как это?
  • https://t.me/clickhouse_ru
    @343206394 #21917 12:45 PM, 02 Aug 2017
    код показать?
  • https://t.me/clickhouse_ru
    Этот делай - это какая разница между неким последним инсером и текущем временем (сюдя по коду)
  • https://t.me/clickhouse_ru
    @a1exm0 ↶ Reply to #21908 #21919 12:46 PM, 02 Aug 2017
    Пропадает, значит, что вставляю n, а оказывается в базе n - m. Вставляю Батчами по 2000 штук, в 8 потоков, вставка происходит раз 10 минут, но из-за 8 потоков, вставки могут прилететь одновременно
  • https://t.me/clickhouse_ru
    @343206394 #21920 12:46 PM, 02 Aug 2017
    тогда ок c delay понятно
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #21916 #21921 12:46 PM, 02 Aug 2017
    ну вот так это
  • https://t.me/clickhouse_ru
    @Civiloid #21922 12:47 PM, 02 Aug 2017
    ты сказал что за ~10 минут набежало 7000 кусков
  • https://t.me/clickhouse_ru
    Кючевое - не делать паралельные вставки
  • https://t.me/clickhouse_ru
    @Civiloid #21924 12:47 PM, 02 Aug 2017
    7000/600
  • https://t.me/clickhouse_ru
    @Civiloid #21925 12:47 PM, 02 Aug 2017
    даст количество вставок в секунду
  • https://t.me/clickhouse_ru
    @Civiloid #21926 12:47 PM, 02 Aug 2017
    батчер должен быть перед КХ по сути
  • https://t.me/clickhouse_ru
    @Civiloid #21927 12:47 PM, 02 Aug 2017
    а не у клиента
  • https://t.me/clickhouse_ru
    @Civiloid #21928 12:47 PM, 02 Aug 2017
    альтернативно - попробуйте буферные таблицы взять и поставить их перед Replicated
  • https://t.me/clickhouse_ru
    @Civiloid #21929 12:47 PM, 02 Aug 2017
    то есть Distributed -> Buffer -> Replicated
  • https://t.me/clickhouse_ru
    @Civiloid #21930 12:48 PM, 02 Aug 2017
    может быть поможет
  • https://t.me/clickhouse_ru
    @Civiloid #21931 12:48 PM, 02 Aug 2017
    или как минимум учлушит ситуацию
  • https://t.me/clickhouse_ru
    Тот же совет, сделать вставку однопоточной - например в несколько потоко ставлять в buffer таблицы, а потом за раз INSERT .. SELECT
  • https://t.me/clickhouse_ru
    Подозрительно мелкий размер частей. Как будто мелкими инсертами сыпят в кх.
  • https://t.me/clickhouse_ru
    @Civiloid #21934 12:48 PM, 02 Aug 2017
    но там есть особенности
  • https://t.me/clickhouse_ru
    @343206394 #21935 12:49 PM, 02 Aug 2017
    каждая строка это где-то 5-6 int32 и один float 32
  • https://t.me/clickhouse_ru
    @a1exm0 ↶ Reply to #21932 #21936 12:49 PM, 02 Aug 2017
    Понятно, спасибо. Грустно
  • https://t.me/clickhouse_ru
    @343206394 #21937 12:52 PM, 02 Aug 2017
    Ну я не знаю. Отсюда вроде понятно что батчи не меньше чем bulkSize

    val insertCount = insert(dataRow.row)

    count += insertCount
    i += insertCount

    if (count >= bulkSize) {
    flushTo(st)
    LOG.info("$name: Inserted $count docs into store")
    count = 0
    i = 0
    st = repo.prepareNewBatchStatement()
    }
  • https://t.me/clickhouse_ru
    @343206394 #21938 12:54 PM, 02 Aug 2017
    Совсем не понимаю почему в много потоков писать нехорошо?
    Ну как рекомендация спасибо, но это ненормально как-то
  • https://t.me/clickhouse_ru
    То есть примерно 14Мб на пачку. Не очень верится что они ужимаются кликхаусом до полутора килобайт.
  • https://t.me/clickhouse_ru
    @343206394 #21940 12:54 PM, 02 Aug 2017
    ну я не знаю как вам доказать
  • https://t.me/clickhouse_ru
    @343206394 #21941 12:55 PM, 02 Aug 2017
    я готов предоставить все что вас убедит
  • https://t.me/clickhouse_ru
    @343206394 #21942 12:55 PM, 02 Aug 2017
    может это поможет решить вопрос
  • https://t.me/clickhouse_ru
    @Civiloid #21943 12:58 PM, 02 Aug 2017
    Vladimir ты графитные метрики с него собираешь? Если да, покажи что в ClickHouse.ProfileEvents.InsertQuery
  • https://t.me/clickhouse_ru
    Я вывел такие правила работы со вставкой в CH:
    - однопоточная вставка через некий батчер. Несколько источников логов (приложения, клиенты, логи), один вставщик в CH
    - размер вставки от 10к, меньше часто не имеет смысла
  • https://t.me/clickhouse_ru
    @Civiloid #21945 12:58 PM, 02 Aug 2017
    и они же где-то в табличках в system есть
  • https://t.me/clickhouse_ru
    @343206394 #21946 12:58 PM, 02 Aug 2017
    метрики не собираю
  • https://t.me/clickhouse_ru
    @Civiloid #21947 12:58 PM, 02 Aug 2017
    system.events
  • https://t.me/clickhouse_ru
    @343206394 #21948 12:58 PM, 02 Aug 2017
    сейчас в табличке посмотрю
  • https://t.me/clickhouse_ru
    @343206394 #21949 01:00 PM, 02 Aug 2017
    eсть такое
  • https://t.me/clickhouse_ru
    @343206394 #21950 01:00 PM, 02 Aug 2017
    │ InsertedRows │ 435003976 │
    │ InsertedBytes │ 28657505480 │
  • https://t.me/clickhouse_ru
    @343206394 #21951 01:00 PM, 02 Aug 2017
    │ DelayedInserts │ 288 │
    │ RejectedInserts │ 43 │
  • https://t.me/clickhouse_ru
    @343206394 #21952 01:01 PM, 02 Aug 2017
    │ SelectQuery │ 560 │
    │ InsertQuery │ 1300 │
  • https://t.me/clickhouse_ru
    @Civiloid #21953 01:01 PM, 02 Aug 2017
    Vladimir curl "localhost:8123?query=select+value+from+system.events+where+event='InsertQuery'"; sleep 60; curl "localhost:8123?query=select+value+from+system.events+where+event='InsertQuery'";
  • https://t.me/clickhouse_ru
    @Civiloid #21954 01:01 PM, 02 Aug 2017
    сделай так
  • https://t.me/clickhouse_ru
    @Civiloid #21955 01:01 PM, 02 Aug 2017
    разница между ними будет количество инсертов за минуту
  • https://t.me/clickhouse_ru
    @343206394 #21956 01:02 PM, 02 Aug 2017
    сейчас вставку включу
  • https://t.me/clickhouse_ru
    @343206394 #21957 01:03 PM, 02 Aug 2017
    пока оно стартует
  • https://t.me/clickhouse_ru
    @343206394 #21958 01:03 PM, 02 Aug 2017
    не мержит почему пока есть возможность? :)
  • https://t.me/clickhouse_ru
    Мерджит не сразу, стартует примено раз в 8-10 минут. На то они и фоновые мерджи
  • https://t.me/clickhouse_ru
    @Civiloid #21960 01:04 PM, 02 Aug 2017
    INSERTS=$(curl "localhost:8123?query=select+value+from+system.events+where+event='InsertQuery'" 2>/dev/null); while :; do NEW_INSERTS=$(curl "localhost:8123?query=select+value+from+system.events+where+event='InsertQuery'" 2>/dev/null); DELTA=$((NEW_INSERTS-INSERTS)); echo "${DELTA} inserts/min"; sleep 60; INSERTS=${NEW_INSERTS}; done
  • https://t.me/clickhouse_ru
    @Civiloid #21961 01:04 PM, 02 Aug 2017
    Vladimir вот такое вот запусти
  • https://t.me/clickhouse_ru
    @Civiloid #21962 01:04 PM, 02 Aug 2017
    будет показывать тебе инсерты в минуту )
  • https://t.me/clickhouse_ru
    @Civiloid #21963 01:04 PM, 02 Aug 2017
    с некоторой точностью, но все ж
  • https://t.me/clickhouse_ru
    @343206394 #21964 01:05 PM, 02 Aug 2017
    ubuntu@pprod-spm-ch-3:~$ curl "localhost:8123?query=select+value+from+system.events+where+event='InsertQuery'"; sleep 60; curl "localhost:8123?query=select+value+from+system.events+where+event='InsertQuery'";
    1365
    1430
  • https://t.me/clickhouse_ru
    @Civiloid #21965 01:05 PM, 02 Aug 2017
    Vladimir ну вот у тебя что-то не так с батчером
  • https://t.me/clickhouse_ru
    @Civiloid #21966 01:05 PM, 02 Aug 2017
    он не батчит их нифига
  • https://t.me/clickhouse_ru
    @343206394 #21967 01:05 PM, 02 Aug 2017
    откуда такой вывод
  • https://t.me/clickhouse_ru
    @343206394 #21968 01:05 PM, 02 Aug 2017
    65 в минуту
  • https://t.me/clickhouse_ru
    @343206394 #21969 01:05 PM, 02 Aug 2017
    много?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #21967 #21970 01:05 PM, 02 Aug 2017
    а, ты не дельту показал
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #21968 #21971 01:06 PM, 02 Aug 2017
    не, 65 в минуту в целом нормально должно быть
  • https://t.me/clickhouse_ru
    @343206394 #21972 01:06 PM, 02 Aug 2017
    так оно и работало на одной машине
  • https://t.me/clickhouse_ru
    @343206394 #21973 01:06 PM, 02 Aug 2017
    как 3 поставил так и поломалось
  • https://t.me/clickhouse_ru
    @Civiloid #21974 01:07 PM, 02 Aug 2017
    Vladimir а без репликации работает?
  • https://t.me/clickhouse_ru
    @Civiloid #21975 01:07 PM, 02 Aug 2017
    если просто 3 машины и distributed
  • https://t.me/clickhouse_ru
    @343206394 #21976 01:07 PM, 02 Aug 2017
    не пробовал.
    я ж не могу все варианты перебрать
  • https://t.me/clickhouse_ru
    @343206394 #21977 01:07 PM, 02 Aug 2017
    ubuntu@pprod-spm-ch-3:~$ INSERTS=$(curl "localhost:8123?query=select+value+from+system.events+where+event='InsertQuery'" 2>/dev/null); while :; do NEW_INSERTS=$(curl "localhost:8123?query=select+value+from+system.events+where+event='InsertQuery'" 2>/dev/null); DELTA=$((INSERTS-NEW_INSERTS)); echo "${DELTA} inserts/min"; sleep 60; INSERTS=${NEW_INSERTS}; done
    0 inserts/min
    -60 inserts/min
    -67 inserts/min
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #21976 #21978 01:07 PM, 02 Aug 2017
    просто может проблемы с сетью какие-то жестокие?
  • https://t.me/clickhouse_ru
    @343206394 #21979 01:07 PM, 02 Aug 2017
    не может быть
  • https://t.me/clickhouse_ru
    @343206394 #21980 01:08 PM, 02 Aug 2017
    все в одной стойке на AWS
  • https://t.me/clickhouse_ru
    @343206394 #21981 01:08 PM, 02 Aug 2017
    пинги минимальные
  • https://t.me/clickhouse_ru
    @Civiloid #21982 01:08 PM, 02 Aug 2017
    почему не может - виртуалки могут оверселится довольно жестко
  • https://t.me/clickhouse_ru
    @343206394 #21983 01:08 PM, 02 Aug 2017
    PING 10.1.1.86 (10.1.1.86) 56(84) bytes of data.
    64 bytes from 10.1.1.86: icmp_seq=1 ttl=64 time=0.220 ms
    64 bytes from 10.1.1.86: icmp_seq=2 ttl=64 time=0.221 ms
    64 bytes from 10.1.1.86: icmp_seq=3 ttl=64 time=0.218 ms
  • https://t.me/clickhouse_ru
    @Civiloid #21984 01:08 PM, 02 Aug 2017
    что говорит iperf между хостами?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #21983 #21985 01:08 PM, 02 Aug 2017
    ну это отлично что 84 байта передаются 0.2мс
  • https://t.me/clickhouse_ru
    @Civiloid #21986 01:08 PM, 02 Aug 2017
    а что говорит iperf?
  • https://t.me/clickhouse_ru
    @Civiloid #21987 01:09 PM, 02 Aug 2017
    берешь iperf на двух хостах
  • https://t.me/clickhouse_ru
    @Civiloid #21988 01:09 PM, 02 Aug 2017
    на одном iperf -s (или iperf3 -s)
  • https://t.me/clickhouse_ru
    @Civiloid #21989 01:09 PM, 02 Aug 2017
    на втором клиента в bidirectional mode
  • https://t.me/clickhouse_ru
    @Civiloid #21990 01:09 PM, 02 Aug 2017
    и смотришь какая полоса
  • https://t.me/clickhouse_ru
    @343206394 #21991 01:09 PM, 02 Aug 2017
    так
  • https://t.me/clickhouse_ru
    @343206394 #21992 01:09 PM, 02 Aug 2017
    sudo apt install iperf поставил
  • https://t.me/clickhouse_ru
    @343206394 #21993 01:09 PM, 02 Aug 2017
    дальше помедленнее плиз
  • https://t.me/clickhouse_ru
    @343206394 #21994 01:10 PM, 02 Aug 2017
    я не совсем с этим всем на ты
  • https://t.me/clickhouse_ru
    @Civiloid #21995 01:12 PM, 02 Aug 2017
    iperf -s
  • https://t.me/clickhouse_ru
    @Civiloid #21996 01:12 PM, 02 Aug 2017
    на одном хосте
  • https://t.me/clickhouse_ru
    @Civiloid #21997 01:12 PM, 02 Aug 2017
    на другом iperf -c IP_хоста_где_уже_запущен_iperf
  • https://t.me/clickhouse_ru
    @343206394 #21998 01:13 PM, 02 Aug 2017
    ^Cubuntu@pprod-spm-ch-3:~$ iperf -c 10.1.1.86
    —----------------------------------------------------------
    Client connecting to 10.1.1.86, TCP port 5001
    TCP window size: 325 KByte (default)
    —----------------------------------------------------------
    [ 3] local 10.1.1.251 port 44254 connected with 10.1.1.86 port 5001
    [ ID] Interval Transfer Bandwidth
    [ 3] 0.0-10.0 sec 5.81 GBytes 4.99 Gbits/sec
  • https://t.me/clickhouse_ru
    @Civiloid #21999 01:13 PM, 02 Aug 2017
    а если клиент с -R ? чтоб и обратно проверить
  • https://t.me/clickhouse_ru
    @Civiloid #22000 01:14 PM, 02 Aug 2017
    -c IP -R
  • https://t.me/clickhouse_ru
    @343206394 #22001 01:15 PM, 02 Aug 2017
    ubuntu@pprod-spm-ch-3:~$ iperf -c 10.1.1.86 -R
    —----------------------------------------------------------
    Client connecting to 10.1.1.86, TCP port 5001
    TCP window size: 325 KByte (default)
    —----------------------------------------------------------
    [ 3] local 10.1.1.251 port 46066 connected with 10.1.1.86 port 5001
    [ ID] Interval Transfer Bandwidth
    [ 3] 0.0-10.0 sec 5.82 GBytes 4.99 Gbits/sec
  • https://t.me/clickhouse_ru
    @tellef #22002 01:15 PM, 02 Aug 2017
    -c ip -d
  • https://t.me/clickhouse_ru
    @Civiloid #22003 01:16 PM, 02 Aug 2017
    Vladimir о, еще глупый вопрос - у тебя хостнеймы указаны в КХ же, да?
  • https://t.me/clickhouse_ru
    @Civiloid #22004 01:16 PM, 02 Aug 2017
    попробуй по хостнейму клиентом iperf'а
  • https://t.me/clickhouse_ru
    @Civiloid #22005 01:16 PM, 02 Aug 2017
    мало ли что
  • https://t.me/clickhouse_ru
    @343206394 #22006 01:17 PM, 02 Aug 2017
    не, у меня там ip
  • https://t.me/clickhouse_ru
    @Civiloid #22007 01:18 PM, 02 Aug 2017
    ок, ну ок, теперь про сеть можно пока верить что она работает нормально
  • https://t.me/clickhouse_ru
    @343206394 #22008 01:18 PM, 02 Aug 2017
    ^Cubuntu@pprod-spm-ch-3:~$ iperf -c 10.1.1.86 -d
    —----------------------------------------------------------
    Server listening on TCP port 5001
    TCP window size: 85.3 KByte (default)
    —----------------------------------------------------------
    —----------------------------------------------------------
    Client connecting to 10.1.1.86, TCP port 5001
    TCP window size: 1.17 MByte (default)
    —----------------------------------------------------------
    [ 5] local 10.1.1.251 port 47844 connected with 10.1.1.86 port 5001
    [ 4] local 10.1.1.251 port 5001 connected with 10.1.1.86 port 44896
    [ ID] Interval Transfer Bandwidth
    [ 5] 0.0-10.0 sec 5.81 GBytes 4.99 Gbits/sec
    [ 4] 0.0-10.0 sec 5.81 GBytes 4.99 Gbits/sec
  • https://t.me/clickhouse_ru
    @Civiloid #22009 01:18 PM, 02 Aug 2017
    а что ради интереса - до ZK все также ок?
  • https://t.me/clickhouse_ru
    @343206394 #22010 01:18 PM, 02 Aug 2017
    5 мин отойду , невтерпеж :D
  • https://t.me/clickhouse_ru
    @343206394 #22011 01:26 PM, 02 Aug 2017
    ZK на тех же 3 машинах
    это может не суперправильно но это тест у меня.
    ZK пишет в другой диск тоже SSD
  • https://t.me/clickhouse_ru
    @343206394 #22012 01:28 PM, 02 Aug 2017
    сделал батчи по 1.5M
  • https://t.me/clickhouse_ru
    @343206394 #22013 01:28 PM, 02 Aug 2017
    стало писать по 25-30 раз в минуту
  • https://t.me/clickhouse_ru
    @343206394 #22014 01:29 PM, 02 Aug 2017
    -26 inserts/min
    -25 inserts/min
  • https://t.me/clickhouse_ru
    @343206394 #22015 01:32 PM, 02 Aug 2017
    Вот это необяснимо, да?
    ubuntu@pprod-spm-ch-3:~$ for i in seq 1 5; do curl 'pprod-spm-ch-3:8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    156501169
    156501169
    227514652
    152327963
    223507989
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #22015 #22016 01:33 PM, 02 Aug 2017
    да, это выглядит как будто он читает из разного набора реплик
  • https://t.me/clickhouse_ru
    @Civiloid #22017 01:33 PM, 02 Aug 2017
    и количество кусков у тебя необъяснимо
  • https://t.me/clickhouse_ru
    @Civiloid #22018 01:34 PM, 02 Aug 2017
    при таком количестве инсертов их должно быть меньше намного, а мержей больше
  • https://t.me/clickhouse_ru
    @343206394 #22019 01:34 PM, 02 Aug 2017
    у меня на этой цифре зависло
  • https://t.me/clickhouse_ru
    @343206394 #22020 01:34 PM, 02 Aug 2017
    SELECT count(*)
    FROM system.parts AS active

    ┌─count()─┐
    │ 7982 │
    └─────────┘
  • https://t.me/clickhouse_ru
    @343206394 #22021 01:34 PM, 02 Aug 2017
    и никуда не двигается
  • https://t.me/clickhouse_ru
    @343206394 #22022 01:35 PM, 02 Aug 2017
    из разного набора реплик да, но они должны сходится
  • https://t.me/clickhouse_ru
    @343206394 #22023 01:35 PM, 02 Aug 2017
    Можно я выложу как создавал и конфиги свои? может заметно будет где ошибка?
  • https://t.me/clickhouse_ru
    @343206394 #22024 01:39 PM, 02 Aug 2017
    Это что значит?
    2017.08.02 13:38:46.570499 [ 6589 ] <Error> InterserverIOHTTPHandler: Code: 221, e.displayText() = DB::Exception: No interserver IO endpoint named DataPartsExchange:/clickhouse/tables/measures/02/replicas/2, e.what() = DB::Exception, Stack trace:
    2017.08.02 13:38:46.592134 [ 83 ] <Error> DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 33, e.displayText() = DB::Exception: Cannot read all data, e.what() = DB::Exception, Stack trace:
    2017.08.02 13:38:46.592190 [ 102 ] <Error> DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 33, e.displayText() = DB::Exception: Cannot read all data, e.what() = DB::Exception, Stack trace:
    2017.08.02 13:38:46.610775 [ 125 ] <Error> DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 33, e.displayText() = DB::Exception: Cannot read all data, e.what() = DB::Exception, Stack trace:
    2017.08.02 13:38:46.618404 [ 6589 ] <Error> InterserverIOHTTPHandler: Code: 221, e.displayText() = DB::Exception: No interserver IO endpoint named DataPartsExchange:/clickhouse/tables/measures/01/replicas/2, e.what() = DB::Exception, Stack trace:
    2017.08.02 13:38:46.626119 [ 6583 ] <Error> InterserverIOHTTPHandler: Code: 221, e.displayText() = DB::Exception: No interserver IO endpoint named DataPartsExchange:/clickhouse/tables/measures/02/replicas/2, e.what() = DB::Exception, Stack trace:
  • https://t.me/clickhouse_ru
    @343206394 #22025 01:39 PM, 02 Aug 2017
    replica 2 недоступна?
  • https://t.me/clickhouse_ru
    @343206394 #22026 01:45 PM, 02 Aug 2017
    В ZK вроде есть такой путь
    [zk: localhost:2181(CONNECTED) 8] ls /clickhouse/tables/measures/02/replicas/2
    [is_active, columns, max_processed_insert_time, host, parts, flags, log_pointer, min_unprocessed_insert_time, queue]
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22027 01:53 PM, 02 Aug 2017
    Я бы попробовал собрать кластер без шардов, только реплики. А только потом сделать Disturbed
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22028 01:53 PM, 02 Aug 2017
    Причем на части данных, для скорости
  • https://t.me/clickhouse_ru
    @343206394 #22029 01:55 PM, 02 Aug 2017
    тоесть 1 шарду в remote server указать и 2 реплики для нее?
    писать в любую 1 локальную таблицу?
  • https://t.me/clickhouse_ru
    @olomix #22030 01:56 PM, 02 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22031 02:01 PM, 02 Aug 2017
    Я имею в виду, что может быть сначала разобраться с репликацией? Убедиться, что данные доходят до каждой реплики. А потом уже пилить данные на шарды
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22032 02:01 PM, 02 Aug 2017
    И разбираться с распределенными запросами
  • https://t.me/clickhouse_ru
    @343206394 #22033 02:01 PM, 02 Aug 2017
    Имеет смысл
    Не думал что столько глаблей сразу встречу просто.
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22034 02:03 PM, 02 Aug 2017
    В CH репликация и шардирование - это скорее конструктор, чем готовое решение. Такой подход позволяет гибко настроить схему под нужную задачу
  • https://t.me/clickhouse_ru
    @343206394 #22035 02:26 PM, 02 Aug 2017
    Просто 2 реплики синхронизируются быстро
  • https://t.me/clickhouse_ru
    @343206394 #22036 02:26 PM, 02 Aug 2017
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 4; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    67500250
    67500250
    ubuntu@pprod-spm-ch-3:~$
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 4; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    142048934
    142048934
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 4; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    142488667
    142490947
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 4; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    142500364
    142500364
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 4; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    142500364
    142500364
  • https://t.me/clickhouse_ru
    @343206394 #22037 02:27 PM, 02 Aug 2017
    сейчас верну распределенность
  • https://t.me/clickhouse_ru
    @343206394 #22038 02:28 PM, 02 Aug 2017
    Интересно что количество parts не растет и все успевает мержиться
  • https://t.me/clickhouse_ru
    Попробуйте залить все данные. Может проблема появиться после некого объема данных
  • https://t.me/clickhouse_ru
    @343206394 #22040 02:30 PM, 02 Aug 2017
    давай на ты пожалуйста
  • https://t.me/clickhouse_ru
    @343206394 #22041 02:30 PM, 02 Aug 2017
    ок
  • https://t.me/clickhouse_ru
    @343206394 #22042 02:30 PM, 02 Aug 2017
    сделаю как ты сказал
  • https://t.me/clickhouse_ru
    @343206394 #22043 02:45 PM, 02 Aug 2017
    Вставилось около 300М строк и все было ок. Кол-во parts не превышало 100 мержить успевало
  • https://t.me/clickhouse_ru
    @343206394 #22044 02:45 PM, 02 Aug 2017
    Переделал на Distributed и с первых секунд начались проблемы
  • https://t.me/clickhouse_ru
    @343206394 #22045 02:48 PM, 02 Aug 2017
    Вот создание таблиц
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @343206394 #22047 02:49 PM, 02 Aug 2017
    Вот remote_servers.xml
  • https://t.me/clickhouse_ru
    @343206394 #22048 02:49 PM, 02 Aug 2017
  • https://t.me/clickhouse_ru
    @343206394 #22049 02:49 PM, 02 Aug 2017
    Где-то тут ошибка
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22050 03:02 PM, 02 Aug 2017
    Опять же, попробуй более простое распределение данных, например на две половинки
  • https://t.me/clickhouse_ru
    Сложно сказать, я пока не пробовал реплицировать и шардировать на CH. В твоей схеме три шарда, сделай два
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22052 03:05 PM, 02 Aug 2017
    Как минимум, почему тут http://joxi.ru/RmzNOePtWVpO8m пусто? Вот что в доке http://joxi.ru/gmvzZ3Pix05Z5m
  • https://t.me/clickhouse_ru
    @343206394 #22053 03:06 PM, 02 Aug 2017
    там выше говориличто если тут пусто то берет БД из remote servers
  • https://t.me/clickhouse_ru
    @343206394 #22054 03:06 PM, 02 Aug 2017
    вот этот пример кидали
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22056 03:07 PM, 02 Aug 2017
    А вставляешь ты в распределенную таблицу или приложением в каждый шард?
  • https://t.me/clickhouse_ru
    @343206394 #22057 03:08 PM, 02 Aug 2017
    в распределенную
  • https://t.me/clickhouse_ru
    @343206394 #22058 03:10 PM, 02 Aug 2017
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+shard_1.measures;'; done;
    29669439
    61325190
  • https://t.me/clickhouse_ru
    @343206394 #22059 03:11 PM, 02 Aug 2017
    реплика в случае распределенной очень сильно отстает
  • https://t.me/clickhouse_ru
    @343206394 #22060 03:11 PM, 02 Aug 2017
    Я бы даже сказал не отстает а в 2 раза больше результаты показывает одна из реплик
  • https://t.me/clickhouse_ru
    @343206394 #22061 03:12 PM, 02 Aug 2017
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+shard_1.measures;'; done;
    40169007
    81393576
  • https://t.me/clickhouse_ru
    @Civiloid #22062 03:16 PM, 02 Aug 2017
    Vladimir ты шлешь напрямую в сервера или в распределенную таблицу?
  • https://t.me/clickhouse_ru
    @343206394 #22063 03:16 PM, 02 Aug 2017
    в распределенную
  • https://t.me/clickhouse_ru
    @343206394 #22064 03:19 PM, 02 Aug 2017
    еще я вижу много такого в логах
    но что это и почему не понятно
    2017.08.02 15:18:58.384768 [ 4262 ] <Error> InterserverIOHTTPHandler: Code: 221, e.displayText() = DB::Exception: No interserver IO endpoint named DataPartsExchange:/clickhouse/tables/02/measures/replicas/2, e.what() = DB::Exception, Stack trace:
    2017.08.02 15:18:58.396931 [ 39 ] <Error> DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 33, e.displayText() = DB::Exception: Cannot read all data, e.what() = DB::Exception, Stack trace:
    2017.08.02 15:18:58.519827 [ 4270 ] <Error> InterserverIOHTTPHandler: Code: 221, e.displayText() = DB::Exception: No interserver IO endpoint named DataPartsExchange:/clickhouse/tables/02/measures/replicas/2, e.what() = DB::Exception, Stack trace:
    2017.08.02 15:18:58.535047 [ 102 ] <Error> DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 33, e.displayText() = DB::Exception: Cannot read all data, e.what() = DB::Exception, Stack trace:
    2017.08.02 15:18:58.542597 [ 4262 ] <Error> InterserverIOHTTPHandler: Code: 221, e.displayText() = DB::Exception: No interserver IO endpoint named DataPartsExchange:/clickhouse/tables/02/measures/replicas/2, e.what() = DB::Exception, Stack trace:
    2017.08.02 15:18:58.553679 [ 49 ] <Error> DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 33, e.displayText() = DB::Exception: Cannot read all data, e.what() = DB::Exception, Stack trace:
  • https://t.me/clickhouse_ru
    @343206394 #22065 03:39 PM, 02 Aug 2017
    Сделал кластер без реплик, теперь распределенная таблица возвращает синхрнизированние данные
  • https://t.me/clickhouse_ru
    @343206394 #22066 03:39 PM, 02 Aug 2017
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    69892767
    70000700
    70000700
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    70500703
    70500703
    70500703
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    71491774
    71495408
    71496055
  • https://t.me/clickhouse_ru
    @343206394 #22067 03:46 PM, 02 Aug 2017
    Что мы имеем:
    1. Реплицированная таблица работает и реплики не отстают друг от друга. Проблем с мержем нету system.parts всегда маленькое.
    2. Распределенная таблицв работает, все 3 распределенные таблицы (на разных серверах) поверх одних и тех же Merge таблиц возвращают одинаковые данные. Появляется проблема с system.parts. Через 10 мин работы видно такое
    SELECT count(*)
    FROM system.parts

    ┌─count()─┐
    │ 6150 │
    └─────────┘

    1 rows in set. Elapsed: 0.021 sec. Processed 6.15 thousand rows, 1.21 MB (290.54 thousand rows/s., 57.03 MB/s.)
    3. Распределенная таблица поверх реплицированных как по схеме тут (шарды а разных БД чтобы можно было создать таблицы с одинаковыми именами) https://github.com/yandex/ClickHouse/blob/master/dbms/tests/integration/test_cross_replication/test.py
    не работает. Есть и проблема с system.parts как в пункте 2, так и данные вазвращаются несогласованные от каждой распределенной таблицы

    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    197847333
    209820192
    257339801
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    257339801
    257339801
    205673865

    Алексей может у Вас есть идеи что в моих руках и голове не так?.
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data.

  • https://t.me/clickhouse_ru
    @x4mmm ↶ Reply to #21268 #22068 04:11 PM, 02 Aug 2017
    Привет! А можешь поподробнее рассказать про подкладывание в private? Туда можно положить как-то чтобы оно само в libdbms.a дописалось или нужно другой lib*.a делать?
  • https://t.me/clickhouse_ru
    @343206394 #22069 04:55 PM, 02 Aug 2017
    С распределенной таблицей начались проблемы с мержем, кто угадает время по картинке?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @343206394 #22071 05:30 PM, 02 Aug 2017
    А вот еще интересная статистика system.events показывает
    │ InsertedRows │ 4711779888 │

    А таблицы показывают

    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    3190003655
    3190003947
    3190004375

    Вставку я прекратил 3 мин назад а кол-во строк растет
  • https://t.me/clickhouse_ru
    @343206394 #22072 05:30 PM, 02 Aug 2017
    Где-то очередь на полтора миллиарда строк?
  • https://t.me/clickhouse_ru
    @343206394 #22073 05:34 PM, 02 Aug 2017
    Через 2 мин стабилизировалось на такой цифре
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    3286834653
    3286834653
    3286834653
  • https://t.me/clickhouse_ru
    @343206394 #22074 05:36 PM, 02 Aug 2017
    Почему не бъется с InsertedRows и почему вообще после прекращения вставки количество строк росло 2 мин непонятно. Неужели так забуфферизировало.
    Я тут всех запарил чувствую, простите, ответов так и не понаходил
  • https://t.me/clickhouse_ru
    @inv2004 #22075 05:43 PM, 02 Aug 2017
    Мне наоборот нравится, так как такое потенциально у каждого может легко вылезти. И прежде чем в прод выдавать чтото про такое надо знать. Я тоже хотел вставлять намного чаще чем раз в секунду.
  • https://t.me/clickhouse_ru
    @343206394 #22076 05:44 PM, 02 Aug 2017
    спсб за поддержку, ушел на перекур (не курю :) )
  • https://t.me/clickhouse_ru
    @inv2004 #22077 05:45 PM, 02 Aug 2017
    А ты не пробовал через буфер с num_layers=1 ?
  • https://t.me/clickhouse_ru
    @inv2004 #22078 05:46 PM, 02 Aug 2017
    Я бы очень хотел избежать внешних батчеров, когда есть внутренний механизм.
  • Я чаще чем раз в секунду вставляю и все норм. 6-7 миллионов строк в минуту получается
  • @pookieShmukie #22080 06:03 PM, 02 Aug 2017
    Лью в 100 потоков
  • https://t.me/clickhouse_ru
    @343206394 #22081 06:39 PM, 02 Aug 2017
    >Я чаще чем раз в секунду вставляю и все норм. 6-7 миллионов строк в минуту получается
    Я тоже чаще в вставлял и вопросов не было. Все началось при репликации + шардирование
  • https://t.me/clickhouse_ru
    @343206394 #22082 06:39 PM, 02 Aug 2017
    >А ты не пробовал через буфер с num_layers=1 ?
    не пробовал. тут вопрос не в том как сделать, а почему оно не мержит само интенсивно когда проессоры простаивают
  • https://t.me/clickhouse_ru
    @343206394 #22083 06:41 PM, 02 Aug 2017
    Ну и чехарда с count() при репликации и шардировании, и увеличение кол-ва строк после того как инсерты застопились 2 мин назад. Много непонятного какого-то
  • https://t.me/clickhouse_ru
    @343206394 #22084 06:42 PM, 02 Aug 2017
    Я вот сейчас до перекура поставил пачки по 3млн и ушел. Стабилизировалось все на таких цифрах
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+system.parts;'; done;
    5701
    4866
    4734
  • https://t.me/clickhouse_ru
    @343206394 #22085 06:43 PM, 02 Aug 2017
    Меня устраивает впринципе, гдавное что стабилизировалось и перестало отдавать ошибки
  • https://t.me/clickhouse_ru
    @343206394 #22086 06:45 PM, 02 Aug 2017
    Неохота делать 2*2 на 4 серверах. Не могу никак понть почему 3*2 на 3 не работает.
    2*2 и серверов больше и читать только с 2 в одном запросе, минусы одни
  • https://t.me/clickhouse_ru
    @vasya_toropov #22087 06:49 PM, 02 Aug 2017
    Кажется что всё проблемы от вставки через Distributed-таблицу. Насколько я помню, кто-то писал что в Яндекс.Метрике используют вставку напрямую в локальные таблицы. И вставка через Distributed не рекомендуется.
  • https://t.me/clickhouse_ru
    @343206394 #22088 06:52 PM, 02 Aug 2017
    А как это согласуется с тем что если Distrinuted поверх нереплицированных таблиц то все более менее ок?
  • @304247510 #22090 07:45 PM, 02 Aug 2017
    Joined.
  • 03 August 2017 (109 messages)
  • @375429559 #22092 03:05 AM, 03 Aug 2017
    Joined.
  • @tsionyx #22093 04:24 AM, 03 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @MakhmutovDev #22094 06:18 AM, 03 Aug 2017
    Всем привет, в документации сказано "We do not recommend storing floating-point numbers in tables.", а какие есть альтернативы?
  • integer
  • https://t.me/clickhouse_ru
    @MakhmutovDev #22096 06:19 AM, 03 Aug 2017
    а как быть не целой частью числа?
  • https://t.me/clickhouse_ru
    @MakhmutovDev #22097 06:19 AM, 03 Aug 2017
    хранить в отдельных колонках?)
  • @VesninAndrey #22098 06:20 AM, 03 Aug 2017
    Умножать же. Если 2 знака после запятой - на 100.
  • @VesninAndrey #22099 06:20 AM, 03 Aug 2017
    3 - на 1000 и тд
  • https://t.me/clickhouse_ru
    @MakhmutovDev #22100 06:20 AM, 03 Aug 2017
    спасибо, действительно
  • https://t.me/clickhouse_ru
    @n_mitrofanov #22105 08:55 AM, 03 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @MakhmutovDev #22106 08:57 AM, 03 Aug 2017
    извините, не сразу увидел что используется slf4j
  • https://t.me/clickhouse_ru
    @343206394 #22107 09:00 AM, 03 Aug 2017
    А может кто толком объяснить почему int32 пердпочтительнее float 32?
  • @vstakhov #22108 09:04 AM, 03 Aug 2017
    лучше жмется
  • @vstakhov #22109 09:04 AM, 03 Aug 2017
    у float всегда будет шум
  • https://t.me/clickhouse_ru
    @343206394 #22110 09:04 AM, 03 Aug 2017
    понял
  • IEEE 754
  • https://t.me/clickhouse_ru
    @343206394 #22112 09:04 AM, 03 Aug 2017
    спсб
  • https://t.me/clickhouse_ru
    @raspavel #22113 09:17 AM, 03 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @raspavel #22114 09:18 AM, 03 Aug 2017
    Привет! Хочу в clickhouse создать табличку типа set, которая содержит информацию об обновлениях в таблицах. Чтобы она содержала 2 столбца: table_name, update_id. То есть чтобы я мог быстро проверить, закачались ли данные в таблицы. Движок SET как я понял, не подойдет, в нем нет возможности проверить вхождение строки в таблицу. Какой движок юзать?
  • https://t.me/clickhouse_ru
    Почему именно set?
  • https://t.me/clickhouse_ru
    @raspavel #22116 09:27 AM, 03 Aug 2017
    Все что мне нужно - это добавлять запись в таблицу и проверять, существует ли данная запись в таблице. Пара table_name+update_id уникальна. Можно даже слить их в один стобец.
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22117 09:28 AM, 03 Aug 2017
    А чем обычный поиск с WHERE непоходит?
  • https://t.me/clickhouse_ru
    @raspavel #22118 09:39 AM, 03 Aug 2017
    Подойдет. Я просто первый раз столкнулся с clickhouse, не знаю, с каким движком создать таблицу эту.
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22119 09:41 AM, 03 Aug 2017
    Советую прочитать документацию, всю, её там не так много
  • @z0mbig #22120 09:59 AM, 03 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @raspavel #22121 10:05 AM, 03 Aug 2017
    Так я читал. LOG, TINYLOG - для временных данных, одноразовой записи. Не подходит. MergeTree нужна колонка DATE. JOIN, MERGE,SET,MEMORY для другого предназначены. Выходит, я не могу создать обычную таблицу =(
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22122 10:07 AM, 03 Aug 2017
    Конечно. потому что CH - СУБД, заточенная под аналитику, в ней нет обычных таблиц
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22123 10:07 AM, 03 Aug 2017
    И выборки вида "выбрать список пользователей по списку id-ок" в CH скорее всего будут работать очень медленно
  • Возможно, имеет смысл писать во внешний источник (например, mysql) и подключить его как словарь. Но такое решение может медленно работать.
  • https://t.me/clickhouse_ru
    Где тут
    https://clickhouse.yandex/docs/ru/table_engines/tinylog.html
    это написано? Пробуйте, экспериментируйте
  • https://t.me/clickhouse_ru
    @hagen1778 #22126 01:25 PM, 03 Aug 2017
    Всем привет! Кто-то использует лимиты для доступа к КХ? А именно max_memory_usage, max_execution_time, max_concurrent_queries_for_user ?
  • https://t.me/clickhouse_ru
    @tkostyan #22127 02:35 PM, 03 Aug 2017
    Всем привет.

    Я правильно понимаю, что нет возможности добавить новый столбец в таблицу и одновременно добавить его в первичный ключ? В документации написано только про удаление и изменение:

    "Отсутствует возможность удалять столбцы, входящие в первичный ключ или ключ для сэмплирования (в общем, входящие в выражение ENGINE). Изменение типа у столбцов, входящих в первичный ключ возможно только в том случае, если это изменение не приводит к изменению данных (например, разрешено добавление значения в Enum или изменение типа с DateTime на UInt32)."

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

    "Если возможностей запроса ALTER не хватает для нужного изменения таблицы, вы можете создать новую таблицу, скопировать туда данные с помощью запроса INSERT SELECT, затем поменять таблицы местами с помощью запроса RENAME, и удалить старую таблицу."
  • https://t.me/clickhouse_ru
    @343206394 #22128 02:37 PM, 03 Aug 2017
    Потребует пересортировки и перезаписи всего существующего на диск КМК поэтому и нету
  • Да, иначе пришлось бы перестраивать индекс.
  • https://t.me/clickhouse_ru
    @343206394 #22130 02:39 PM, 03 Aug 2017
    Николай а не смотрели вчера мои конфиги? Может у вас есть идею почему 3 шарды с репликацией на 3 серверах у меня так странно себя ведут?
  • https://t.me/clickhouse_ru
    @Krashuevina #22131 02:40 PM, 03 Aug 2017
    Подскажите, пожалуйста, что можно предпринять - растёт system.replication_queue. При этом CPU на машине - гора, в диск тоже не упирается. background_pool_size выставили в 48
  • https://t.me/clickhouse_ru
    @tkostyan #22132 02:43 PM, 03 Aug 2017
    Спасибо!
  • Конфиги на вид кажутся нормальными. То, что расходятся цифры для Distributed таблицы тоже объяснимо, так как данные сначала пишутся на диск, а потом отдельным потоком передаются на остальные реплики. Вот почему не проходят мержи - пока неясно.
  • https://t.me/clickhouse_ru
    @343206394 #22134 02:47 PM, 03 Aug 2017
    Так подождите
  • https://t.me/clickhouse_ru
    @343206394 #22135 02:48 PM, 03 Aug 2017
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    197847333
    209820192
    257339801
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    257339801
    257339801
    205673865
  • https://t.me/clickhouse_ru
    @343206394 #22136 02:48 PM, 03 Aug 2017
    Вот это объяснимо?
  • https://t.me/clickhouse_ru
    @343206394 #22137 02:48 PM, 03 Aug 2017
    Можно попробнее плиз
  • @kochetovnicolai #22138 02:49 PM, 03 Aug 2017
    запись сейчас идет или на какое-то время остановлена?
  • https://t.me/clickhouse_ru
    @343206394 #22139 02:50 PM, 03 Aug 2017
    сейчас все пересобрано на кластер без реплик
  • https://t.me/clickhouse_ru
    @343206394 #22140 02:50 PM, 03 Aug 2017
    и все ок
  • https://t.me/clickhouse_ru
    @343206394 #22141 02:52 PM, 03 Aug 2017
    я писал выше
    1. 2 реплики - все ок, не рассинхронизируются
    2. 3 шарды все ок
    3. 3 шарды по 2 реплики - непонятночто
    Такое ощущение что оно путает реплики для разных шард
    Но никто ошибку в конфигах не нашел
  • https://t.me/clickhouse_ru
    @343206394 #22142 02:53 PM, 03 Aug 2017
    Сидим ждем Алексей. Ну и сейчас все грохну и соберу 2*2 на 4 машинках и посмотрю
  • https://t.me/clickhouse_ru
    +1. Возможно CH нельзя использовать так, как ты хочешь (баг или фича)
  • https://t.me/clickhouse_ru
    @343206394 #22144 02:57 PM, 03 Aug 2017
    согласен, но должен быть выход.
  • могу предположить, что в случае 2-х реплик при запросе всегда бралась реплика из локальной машины. а когда появились 3 шарда по 2 реплики, то получался шард, не имеющий локальной реплики, из-за чего ходили на 2 другие машины при разных запросах. но точно сказать не берусь
  • https://t.me/clickhouse_ru
    @343206394 #22146 03:07 PM, 03 Aug 2017
    > бралась реплика из локальной машины
    я делал 2 распределенные таблици на каждой локальной и сравнивал - все ок, + балансировщик rand опять же, так чт не думаю что в этом дело
  • https://t.me/clickhouse_ru
    @343206394 #22147 03:09 PM, 03 Aug 2017
    на какие бы машины не ходил скакать на 20% результаты не должны наверное.
    я грешу на конфигирацию
  • @vludv ↶ Reply to #22131 #22148 03:12 PM, 03 Aug 2017
    А в колонке exception из system.replication_queue что-нибудь написано? Также интересуют postpone_reason
  • https://t.me/clickhouse_ru
    SELECT
    count(),
    type
    FROM system.replication_queue
    GROUP BY type

    ┌─count()─┬─type────────┐
    │ 180 │ MERGE_PARTS │
    │ 4091 │ GET_PART │
    └─────────┴─────────────┘
  • https://t.me/clickhouse_ru
    @Krashuevina #22150 03:57 PM, 03 Aug 2017
    из них с postpone_reason - всего 30
  • https://t.me/clickhouse_ru
    @343206394 #22151 03:59 PM, 03 Aug 2017
    Если кому интересно, то поставил кластер 2*2.
    Вставляю пачками по 2М (вроде как больше 1М вставлять не имеет смысла потому как КХ побъет все равно, но все же) около 40М в минуту
    Все работает ок. Рассинхронизации нет (совсем маленькая из-за реплик) + system.parts более менее стабилизируются на 5000-10000 тысячах (после большого мержа с 10000 падает на 5000 на всех серверах).
    Все хорошо короче.
    Чисто ради спортивного интереса непонятно что происходит в слечае 3 серверов
  • https://t.me/clickhouse_ru
    Причины postpone:
    Not executing log entry for part 20170730_20170730_851_859_1 because its size (22.21 MiB) is greater than current maximum (4.23 MiB)
    Not merging into part 20170730_20170730_775_807_3 because part 20170730_20170730_807_807_0 is not ready yet (log entry for that part is being processed).
  • @vludv ↶ Reply to #22150 #22153 04:03 PM, 03 Aug 2017
    А в поле last_exception есть что-нибудь?
  • интересно, спасибо! попробую разобраться
  • https://t.me/clickhouse_ru
    @raspavel #22155 04:03 PM, 03 Aug 2017
    Подскажите, товарищи: в какой-то момент clickhouse-server, работавший в докере перестал отвечать. Совсем. Удалил все контейнеры, образы. Все равно не отвечает.
    docker run -it --rm --link some-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server
    ClickHouse client version 1.1.54245.
    Connecting to clickhouse-server:9000.
    Code: 209. DB::NetException: Timeout exceeded while reading from socket (172.17.0.2:9000)
  • https://t.me/clickhouse_ru
    SELECT *
    FROM system.replication_queue
    WHERE last_exception != ''

    Ok.

    0 rows in set. Elapsed: 0.026 sec. Processed 16.43 thousand rows, 3.70 MB (626.63 thousand rows/s., 141.33 MB/s.)
  • @vludv #22157 04:05 PM, 03 Aug 2017
    Это на одной реплике так или на обеих? Сеть (dstat) загружена?
  • https://t.me/clickhouse_ru
    @Krashuevina #22158 04:07 PM, 03 Aug 2017
    сеть не загружена
  • https://t.me/clickhouse_ru
    @Krashuevina #22159 04:08 PM, 03 Aug 2017
    на обеих репликах одинаковые значения
  • @vludv #22160 04:10 PM, 03 Aug 2017
    Тогда select * from system.merges FORMAT Vertical
  • https://t.me/clickhouse_ru
    @catless #22161 04:26 PM, 03 Aug 2017
    Joined.
  • @104788667 #22162 05:11 PM, 03 Aug 2017
    Joined.
  • @104788667 #22163 05:22 PM, 03 Aug 2017
    Всем привет, вопрос можно ли в кластере описывать приоритет реплик? Есть 3 сервера в кластере (конфиг https://pastebin.com/wLYr0VT2 ), таблица ReplicatedReplacingMergeTree шардирована на 3 части по ним, причем на каждом сервере также есть вторая база, которая хранит еще одну реплику другого шарда (перекрестная репликация). При погашении одного сервера находится сервер с репликой погашенного шарда и все ок, но вот при возвращении погашенного сервера в строй его шард не становтся активным. А хотелось бы (чтобы запросы параллельно считались на трех серверах а не на двух).
  • @kochetovnicolai #22164 05:39 PM, 03 Aug 2017
    есть настройка load_balancing: https://clickhouse.yandex/docs/ru/operations/settings/settings.html#load-balancing . возможно, возвращенный шард не выбирается из-за большого числа ошибок
  • https://t.me/clickhouse_ru
    @Ihor_kasianov #22165 05:45 PM, 03 Aug 2017
    https://github.com/yandex/ClickHouse/issues/127
    Сейчас нельзя создавать вьюхи с подзапросами

    Может кто в курсе, есть ли в планах фикс этой баги?
    Problem with INSERT if having a VIEW with subqueries & AS keyword #127

    That&#39;s a really strange one! When you create a view (let&#39;s call it test_stats) that has a subquery with multiple tables (test1 and test2) combined using UNION ALL clause, and the first tabl...

  • @65607471 #22166 06:41 PM, 03 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @343206394 #22167 07:16 PM, 03 Aug 2017
    Пришел с прогулки, поломалась вставка,через 2 часа куча такого посыпалось
    2017.08.03 19:15:38.688909 [ 187 ] <Error> InterserverIOHTTPHandler: Code: 221, e.displayText() = DB::Exception: No interserver IO endpoint named DataPartsExchange:/clickhouse/tables/01/measures/replicas/2, e.what() = DB::Exception, Stack trace:
    2017.08.03 19:15:38.702824 [ 340 ] <Error> DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 33, e.displayText() = DB::Exception: Cannot read all data, e.what() = DB::Exception, Stack trace:
    2017.08.03 19:15:38.967668 [ 600 ] <Error> InterserverIOHTTPHandler: Code: 221, e.displayText() = DB::Exception: No interserver IO endpoint named DataPartsExchange:/clickhouse/tables/01/measures/replicas/2, e.what() = DB::Exception, Stack trace:
  • https://t.me/clickhouse_ru
    @343206394 #22168 07:16 PM, 03 Aug 2017
    Данные рассинхронизировались
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    3299260074
    3362685583
    3381671392
  • https://t.me/clickhouse_ru
    @343206394 #22169 07:17 PM, 03 Aug 2017
    И вот
    SELECT
    count(),
    type
    FROM system.replication_queue
    GROUP BY type

    ┌─count()─┬─type────────┐
    │ 348 │ MERGE_PARTS │
    │ 1679 │ GET_PART │
    └─────────┴─────────────┘

    2 rows in set. Elapsed: 0.010 sec. Processed 2.03 thousand rows, 803.80 KB (200.41 thousand rows/s., 79.47 MB/s.)
  • https://t.me/clickhouse_ru
    @Civiloid #22170 07:17 PM, 03 Aug 2017
    а глупый вопрос - у тебя же zookeeper в качестве zookeeper'а?
  • https://t.me/clickhouse_ru
    @Civiloid #22171 07:17 PM, 03 Aug 2017
    никаких странных zetcd?
  • https://t.me/clickhouse_ru
    @Civiloid #22172 07:17 PM, 03 Aug 2017
    и версия ЗК - 3.4.10?
  • Какие отзывы, кстати? Ну, кроме того, что это очень странно)
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #22173 #22174 07:18 PM, 03 Aug 2017
    тут в соседнем канале кто-то жаловался что он не работает адекватно )
  • https://t.me/clickhouse_ru
    @Civiloid #22175 07:19 PM, 03 Aug 2017
    @i_cant_use_4_symbol_nick как раз на всякое непредсказуемое поведение под нагрузкой жаловались люди
  • https://t.me/clickhouse_ru
    @orantius #22176 07:19 PM, 03 Aug 2017
    а уже 3.4.10 есть?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #22176 #22177 07:19 PM, 03 Aug 2017
    ага
  • https://t.me/clickhouse_ru
    @Civiloid #22178 07:19 PM, 03 Aug 2017
    30 March, 2017: release 3.4.10 available
  • Понятно, спасибо.
    Сомневаюсь, чтобы у кого-то zetcd в хайлоаде
  • https://t.me/clickhouse_ru
    @343206394 #22180 07:20 PM, 03 Aug 2017
    >а глупый вопрос - у тебя же zookeeper в качестве zookeeper'а?
    он самый. 3.4.9
  • https://t.me/clickhouse_ru
    @343206394 #22181 07:20 PM, 03 Aug 2017
    │ MERGE_PARTS │ Not executing log entry for part 20170210_20170216_12252_12406_4 because another log entry for covering part 20170210_20170216_0_12408_2704 is being processed.
  • https://t.me/clickhouse_ru
    @343206394 #22182 07:20 PM, 03 Aug 2017
    │ MERGE_PARTS │ Not executing log entry for part 20170710_20170726_11915_12259_13 because another log entry for covering part 20170710_20170731_4666_12268_74 is being processed.
  • https://t.me/clickhouse_ru
    @343206394 #22183 07:20 PM, 03 Aug 2017
    │ MERGE_PARTS │ │
    │ MERGE_PARTS │ │
    │ MERGE_PARTS │ │
    │ GET_PART │ Not executing log entry for part 20170106_20170117_12268_12268_0 because another log entry for covering part 20170106_20170117_0_12358_1190 is being processed. │
    │ GET_PART │ Not executing log entry for part 20170106_20170117_12270_12270_0 because another log entry for covering part 20170106_20170117_0_12358_1190 is being processed. │
    │ MERGE_PARTS │ Not executing log entry for part 20170210_20170216_0_11893_2692 because another log entry for covering part 20170210_20170216_0_11956_2695 is being processed. │
    │ MERGE_PARTS │ │
    │ MERGE_PARTS │ Not executing log entry for part 20170620_20170630_0_12107_2959 because another log entry for covering part 20170620_20170630_0_12284_2962 is being processed. │
    │ MERGE_PARTS │ Not executing log entry for part 20170620_20170630_12214_12224_1 because another log entry for covering part 20170620_20170630_0_12284_2962 is being processed.
  • https://t.me/clickhouse_ru
    @343206394 #22184 07:26 PM, 03 Aug 2017
    Сыплет вот этим
    2017.08.03 19:26:01.956741 [ 602 ] <Error> DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 33, e.displayText() = DB::Exception: Cannot read all data, e.what() = DB::Exception, Stack trace:

    0. clickhouse-server(StackTrace::StackTrace()+0x16) [0x29b2626]
    1. clickhouse-server(DB::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)+0x1f) [0x10b079f]
    2. clickhouse-server(DB::DataPartsExchange::Fetcher::fetchPartImpl(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)+0x1cc7) [0x2bb1cb7]
    3. clickhouse-server(DB::DataPartsExchange::Fetcher::fetchPart(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, bool)+0x76) [0x2bb2766]
    4. clickhouse-server(DB::StorageReplicatedMergeTree::fetchPart(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, unsigned long)+0x25a) [0x2a98b1a]
    5. clickhouse-server(DB::StorageReplicatedMergeTree::executeLogEntry(DB::ReplicatedMergeTreeLogEntry const&)+0x1bcf) [0x2a9b35f]
    6. clickhouse-server() [0x2a9d22d]
    7. clickhouse-server(DB::ReplicatedMergeTreeQueue::processEntry(std::function<std::shared_ptr<zkutil::ZooKeeper> ()>, std::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&, std::function<bool (std::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&)>)+0x4a) [0x2b263da]
    8. clickhouse-server(DB::StorageReplicatedMergeTree::queueTask()+0x150) [0x2a88930]
    9. clickhouse-server(DB::BackgroundProcessingPool::threadFunction()+0x3dc) [0x2b74edc]
    10. clickhouse-server() [0x36d9f1f]
    11. /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7fb04ab606ba]
    12. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7fb04a1813dd]
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @343206394 #22186 07:36 PM, 03 Aug 2017
    Вставляли мы вставляли (одна запись в Кафке = 6 записей в КХб тоесть вставляли бодро, по млн в сек). Потом CPU упало и вставлять перестали.
  • https://t.me/clickhouse_ru
    @343206394 #22187 07:37 PM, 03 Aug 2017
    Вот это по 1-2 за пару минут сокращается (такими темпами будет сокращаться до завтра)
    SELECT
    count(),
    type
    FROM system.replication_queue
    GROUP BY type

    ┌─count()─┬─type────────┐
    │ 347 │ MERGE_PARTS │
    │ 1666 │ GET_PART │
    └─────────┴─────────────┘

    2 rows in set. Elapsed: 0.009 sec. Processed 2.01 thousand rows, 842.50 KB (219.60 thousand rows/s., 91.91 MB/s.)
  • https://t.me/clickhouse_ru
    @343206394 #22188 07:59 PM, 03 Aug 2017
    В ZK куча такого, но ничено с уровнем ERROR
    2017-08-03 17:27:57,298 [myid:1] - INFO [ProcessThread(sid:1 cport:-1)::PrepRequestProcessor@596] - Got user-level KeeperException when processing sessionid:0x15da651c5ea0003 type:multi cxid:0x59974cf0 zxid:0x50058052f txntype:-1 reqpath:n/a aborting remaining multi ops. Error Path:/clickhouse/tables/01/measures/blocks/8002449562181767356_7724958680224753627 Error:KeeperErrorCode = NodeExists for /clickhouse/tables/01/measures/blocks/8002449562181767356_7724958680224753627

    2017-08-03 19:44:31,096 [myid:1] - INFO [ProcessThread(sid:1 cport:-1)::PrepRequestProcessor@649] - Got user-level KeeperException when processing sessionid:0x15da651c5ea0001 type:setData cxid:0x598ef13a zxid:0x500682323 txntype:-1 reqpath:n/a Error Path:/clickhouse/tables/02/measures/block_numbers/201610/block-0000000702 Error:KeeperErrorCode = NoNode for /clickhouse/tables/02/measures/block_numbers/201610/block-0000000702
  • https://t.me/clickhouse_ru
    @343206394 #22189 08:01 PM, 03 Aug 2017
    На вот такое OPTIMIZE TABLE measures PARTITION 201707 FINAL

    Выдает
    127.0.0.1. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Too much simultaneous queries. Maximum: 100.
  • https://t.me/clickhouse_ru
    @343206394 #22190 08:03 PM, 03 Aug 2017
    Я проде один запрос отправляю :) Он может размножается внутри
  • https://t.me/clickhouse_ru
    @343206394 #22191 08:04 PM, 03 Aug 2017
    Вставку давно отрубил а очередь не двигается на вставку
    SELECT *
    FROM system.replicas
    FORMAT Vertical

    Row 1:
    ──────
    database: default
    table: measures
    engine: ReplicatedMergeTree
    is_leader: 0
    is_readonly: 0
    is_session_expired: 0
    future_parts: 0
    parts_to_check: 0
    zookeeper_path: /clickhouse/tables/01/measures
    replica_name: 1
    replica_path: /clickhouse/tables/01/measures/replicas/1
    columns_version: 0
    queue_size: 1995
    inserts_in_queue: 1649
    merges_in_queue: 346
    queue_oldest_time: 2017-08-03 18:49:23
    inserts_oldest_time: 2017-08-03 18:49:23
    merges_oldest_time: 2017-08-03 18:52:05
    oldest_part_to_get: 20170502_20170502_11683_11683_0
    oldest_part_to_merge_to: 20170502_20170502_11678_11866_8
    log_max_index: 113596
    log_pointer: 113597
    last_queue_update: 2017-08-03 19:29:24
    absolute_delay: 4502
    total_replicas: 2
    active_replicas: 2

    1 rows in set. Elapsed: 0.003 sec.
  • https://t.me/clickhouse_ru
    @inv2004 #22192 08:06 PM, 03 Aug 2017
    Это при 2х2?
  • https://t.me/clickhouse_ru
    @343206394 #22193 08:07 PM, 03 Aug 2017
    да
  • https://t.me/clickhouse_ru
    @343206394 #22194 08:07 PM, 03 Aug 2017
    SELECT *
    FROM system.clusters

    ┌─cluster─┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name──┬─host_address─┬─port─┬─is_local─┬─user────┬─default_database─┐
    │ metrics │ 1 │ 1 │ 1 │ 10.1.1.251 │ 10.1.1.251 │ 9000 │ 1 │ default │ │
    │ metrics │ 1 │ 1 │ 2 │ 10.1.1.145 │ 10.1.1.145 │ 9000 │ 1 │ default │ │
    │ metrics │ 2 │ 1 │ 1 │ 10.1.1.86 │ 10.1.1.86 │ 9000 │ 0 │ default │ │
    │ metrics │ 2 │ 1 │ 2 │ 10.1.1.94 │ 10.1.1.94 │ 9000 │ 0 │ default │ │
    └─────────┴───────────┴──────────────┴─────────────┴────────────┴──────────────┴──────┴──────────┴─────────┴──────────────────┘

    4 rows in set. Elapsed: 0.001 sec.
  • https://t.me/clickhouse_ru
    @343206394 #22195 08:08 PM, 03 Aug 2017
    Почему 2 с is_local 1 и 2 с 0? Что это вообще за флаг?
  • https://t.me/clickhouse_ru
    @343206394 #22196 08:14 PM, 03 Aug 2017
    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
    @343206394 #22197 08:15 PM, 03 Aug 2017
    Если у шарда стоит is_local=1, то это просто означает, что IP машинки к которой вы сейчас подключились совпадает с одним из IP реплик данного шарда (с поправкой на мое замечание касательно default_database).
  • https://t.me/clickhouse_ru
    @343206394 #22198 08:19 PM, 03 Aug 2017
    Есть вообще у кого работает распределенная реплицированная таблица под постоянной нагрузкой (но вставки не чаще раза в секунду)?
    Или это только в теории работает и у ребят из Яндекса?
  • Может не понял суть вопроса, у нас +- 15krps в кластер 6ти нод в хетзнере - 3реплики 3 шарда - год полет нормальный
  • @garikanet #22200 08:30 PM, 03 Aug 2017
    Схема - как я описывал в статье на хабре
  • https://t.me/clickhouse_ru
    @343206394 #22201 08:31 PM, 03 Aug 2017
    15krps мало.
  • https://t.me/clickhouse_ru
    @343206394 #22202 08:33 PM, 03 Aug 2017
    хотя может у вас строки большие.
    вот у меня не заводится. работает пару часов и дохнет
  • https://t.me/clickhouse_ru
    @343206394 #22203 08:39 PM, 03 Aug 2017
    Господа разработчики КХ пожалуйста сжальтесь надо мной и давате все пофиксим завтра :)
    Спокойной ночи всем.
  • @104788667 #22204 09:15 PM, 03 Aug 2017
    че-т load_balancing не помогает при выборе лидирующей реплики при восстановлении упавшего сервера
  • 04 August 2017 (316 messages)
  • https://t.me/clickhouse_ru
    @343206394 #22209 05:54 AM, 04 Aug 2017
    За ночь ничего не восстановилось/синхронизировалось.
  • https://t.me/clickhouse_ru
    @343206394 #22210 05:55 AM, 04 Aug 2017
    Буду сносить, ставить перед 4 серверами балансер и писать в локальные таблицы
  • https://t.me/clickhouse_ru
    @343206394 #22211 05:55 AM, 04 Aug 2017
    может это спасет.
  • У меня 4 шарда по 2 реплики и все ок
  • https://t.me/clickhouse_ru
    @343206394 #22213 07:16 AM, 04 Aug 2017
    пересоздал таблицы с такими же именами и сейчас в логах такое
    2017.08.04 07:15:26.221481 [ 3 ] <Trace> Measures_Distributed.Distributed.DirectoryMonitor: Started processing /mnt/local/clickhouse/data/data/default/Measures_Distributed/default@10%2E1%2E1%2E86:9000,default@10%2E1%2E1%2E94:9000/4000.bin
    2017.08.04 07:15:26.576287 [ 3 ] <Trace> Measures_Distributed.Distributed.DirectoryMonitor: Finished processing /mnt/local/clickhouse/data/data/default/Measures_Distributed/default@10%2E1%2E1%2E86:9000,default@10%2E1%2E1%2E94:9000/4000.bin
    2017.08.04 07:15:26.576309 [ 3 ] <Trace> Measures_Distributed.Distributed.DirectoryMonitor: Started processing /mnt/local/clickhouse/data/data/default/Measures_Distributed/default@10%2E1%2E1%2E86:9000,default@10%2E1%2E1%2E94:9000/4002.bin
    2017.08.04 07:15:26.947365 [ 3 ] <Trace> Measures_Distributed.Distributed.DirectoryMonitor: Finished processing /mnt/local/clickhouse/data/data/default/Measures_Distributed/default@10%2E1%2E1%2E86:9000,default@10%2E1%2E1%2E94:9000/4002.bin
    2017.08.04 07:15:26.947388 [ 3 ] <Trace> Measures_Distributed.Distributed.DirectoryMonitor: Started processing /mnt/local/clickhouse/data/data/default/Measures_Distributed/default@10%2E1%2E1%2E86:9000,default@10%2E1%2E1%2E94:9000/4004.bin
  • https://t.me/clickhouse_ru
    @343206394 #22214 07:16 AM, 04 Aug 2017
    походу очнулось и начало что-то старое процессить
  • https://t.me/clickhouse_ru
    @343206394 #22215 07:17 AM, 04 Aug 2017
    >У меня 4 шарда по 2 реплики и все ок
    У меня первые 2 часа тоже было все ок под большой нагрузкой
    А потом пошло все р разнос.
    Расскажите подробнее что и сколько пишите
  • На каждом сервере реплицируемая локальная таблица + поверх нее распределенная таблица. Когда потребуется перезаливка данных (такое иногда бывает, да), пишу в 100 потоков, примерно 6-7 млн в минуту (быстрее не получается, т.к. батчи совершенно разных размеров получаются от 10 строк до 1 000 000 строк), пишутся в основном интовые данные + несколько текстовых колонок. Такая нагрузка продолжается примерно в течение 3-4х часов. В это же время (наливки данных в КХ) происходят регулярные запросы на селекты, примерно по 10-15 запросов в секунду.
  • @pookieShmukie #22217 07:22 AM, 04 Aug 2017
    При этом все работает, CPU адекватный, IO тоже, сеть практически не кушается за счет gzip.
  • @pookieShmukie #22218 07:23 AM, 04 Aug 2017
    Было пару кейсов когда КХ жрал просто немеренное кол-во CPU и целая нода виртуализации падала, но это было из-за неверных настроек самой виртуалки.
  • @pookieShmukie #22219 07:24 AM, 04 Aug 2017
    Даже после таких падений в последствии запуска ноды, данные синхронизировались и никакого рассинхрона нет. Версия сервера 1.1.54246 собранная руками.
  • @pookieShmukie #22220 07:24 AM, 04 Aug 2017
    Три инстанса ZK поднято для репликации
  • https://t.me/clickhouse_ru
    @343206394 #22221 07:29 AM, 04 Aug 2017
    У меня все очень похоже. 3 зукипера.
    4 ноды, пишу 40-50млн в минуту пачками. 2 шарда по 2 реплики
    2 часа все писало и было ок
    потом что-то слетело, писать перестало и пошло рассинхронизироваться
    запись остановил.
    за ночь ничего не синхронизировалось.
  • https://t.me/clickhouse_ru
    @343206394 #22222 07:29 AM, 04 Aug 2017
    Вы пишите в распределенную таблицу?
  • @pookieShmukie #22223 07:29 AM, 04 Aug 2017
    А какими пачками пишите?
  • @pookieShmukie #22224 07:29 AM, 04 Aug 2017
    Да
  • https://t.me/clickhouse_ru
    @343206394 #22225 07:29 AM, 04 Aug 2017
    пачки по 2млн
  • https://t.me/clickhouse_ru
    @343206394 #22226 07:29 AM, 04 Aug 2017
    где-то 20-25 вставок в мин
  • @pookieShmukie #22227 07:29 AM, 04 Aug 2017
    Должно быть норм. А PK большой?
  • https://t.me/clickhouse_ru
    @343206394 #22228 07:30 AM, 04 Aug 2017
    3 колонки
  • https://t.me/clickhouse_ru
    @343206394 #22229 07:30 AM, 04 Aug 2017
    дата и 2 интовые
  • @pookieShmukie #22230 07:30 AM, 04 Aug 2017
    А гранулярность большая?
  • https://t.me/clickhouse_ru
    @343206394 #22231 07:30 AM, 04 Aug 2017
    8192
  • https://t.me/clickhouse_ru
    @343206394 #22232 07:30 AM, 04 Aug 2017
    Или вы не про это?
  • @pookieShmukie #22233 07:31 AM, 04 Aug 2017
    Не, я имел ввиду разброс значений индекса большой?
  • https://t.me/clickhouse_ru
    @343206394 #22234 07:31 AM, 04 Aug 2017
    опять не понял
  • @pookieShmukie #22235 07:31 AM, 04 Aug 2017
    Например есть ClientID и их может быть миллион, а может быть 3 )
  • https://t.me/clickhouse_ru
    @343206394 #22236 07:32 AM, 04 Aug 2017
    в индексе есть таймстамп
  • @pookieShmukie #22237 07:32 AM, 04 Aug 2017
    Я не так выразился ) Не проснулся
  • @pookieShmukie #22238 07:32 AM, 04 Aug 2017
    Как интовое поле?
  • https://t.me/clickhouse_ru
    @343206394 #22239 07:32 AM, 04 Aug 2017
    или я
  • https://t.me/clickhouse_ru
    @343206394 #22240 07:32 AM, 04 Aug 2017
    да
  • https://t.me/clickhouse_ru
    @343206394 #22241 07:33 AM, 04 Aug 2017
    CREATE TABLE IF NOT EXISTS measures
    (
    account UInt32,
    id UInt32,
    date Date,
    timestamp UInt32,
    value Float32,
    tags Nested (
    name UInt32,
    value UInt32
    )
    ) Engine = ReplicatedMergeTree('/clickhouse/tables/01/measures', '1',date, (account, id, timestamp), 8192);
  • @pookieShmukie #22242 07:33 AM, 04 Aug 2017
    Мне кажется лучше сделать DateTime, хотя могу ошибаться
  • https://t.me/clickhouse_ru
    @343206394 #22243 07:33 AM, 04 Aug 2017
    но тогда мои запросы медленно пойдут
  • @pookieShmukie #22244 07:33 AM, 04 Aug 2017
    Почему?
  • https://t.me/clickhouse_ru
    @343206394 #22245 07:33 AM, 04 Aug 2017
    я ж не зря время добавил
  • @pookieShmukie #22246 07:34 AM, 04 Aug 2017
    Я имею ввиду перевести колонку timestamp в тип DateTime
  • https://t.me/clickhouse_ru
    @343206394 #22247 07:34 AM, 04 Aug 2017
    аа
  • @pookieShmukie #22248 07:34 AM, 04 Aug 2017
    А не UInt32 )
  • https://t.me/clickhouse_ru
    @343206394 #22249 07:34 AM, 04 Aug 2017
    вы имеете в виду тип поменять?
  • @pookieShmukie #22250 07:34 AM, 04 Aug 2017
    Да
  • https://t.me/clickhouse_ru
    @343206394 #22251 07:34 AM, 04 Aug 2017
    думаю ничего не изменится
  • @pookieShmukie #22252 07:34 AM, 04 Aug 2017
    Это чисто предположение
  • https://t.me/clickhouse_ru
    @343206394 #22253 07:34 AM, 04 Aug 2017
    а на чем основанное?
  • https://t.me/clickhouse_ru
    @343206394 #22254 07:34 AM, 04 Aug 2017
    интуиция?
  • @pookieShmukie #22255 07:35 AM, 04 Aug 2017
    Для КХ мне кажется роднее будет то, что связано как раз таки со временем )
  • @pookieShmukie #22256 07:35 AM, 04 Aug 2017
    Типа того )
  • https://t.me/clickhouse_ru
    @343206394 #22257 07:35 AM, 04 Aug 2017
    понял
  • @pookieShmukie #22258 07:35 AM, 04 Aug 2017
    Вам данные нужно сортировать по таймштампу или фильтровать?
  • https://t.me/clickhouse_ru
    @343206394 #22259 07:36 AM, 04 Aug 2017
    тут такая штука, мне сегодня или в пон давать ответ пойдет КХ в прод или нет
    а тут с кластером повылазило куча всего и ответов нет
    поэтому на интуицию не могу полагаться
    мне с этим жить потом пару лет минимум
  • https://t.me/clickhouse_ru
    @343206394 #22260 07:36 AM, 04 Aug 2017
    сортировать и фильтровать
  • Мне кажется лучше так
    ReplicatedMergeTree('/clickhouse/tables/01/measures', '1',date, (account, date ), 8192);
  • @garikanet #22262 07:37 AM, 04 Aug 2017
    убрать лишнее из ключа
  • https://t.me/clickhouse_ru
    @343206394 #22263 07:37 AM, 04 Aug 2017
    так это не лишнее
  • @pookieShmukie #22264 07:37 AM, 04 Aug 2017
    Печально. Я бы на вашем месте все таки поигрался со структурой таблиц и по пробовал бы по разному строить запросы
  • https://t.me/clickhouse_ru
    @343206394 #22265 07:37 AM, 04 Aug 2017
    Ребята я ж в ключ id тоже не просто так добавил
  • https://t.me/clickhouse_ru
    @343206394 #22266 07:38 AM, 04 Aug 2017
    а мотому как быстрый скан по ключу и времени нужен
  • https://t.me/clickhouse_ru
    @343206394 #22267 07:38 AM, 04 Aug 2017
    если я уберу то что эт ополучится
  • @garikanet #22268 07:38 AM, 04 Aug 2017
    составной int ключь + дата ( без времени ) - так пробуйте
  • https://t.me/clickhouse_ru
    @343206394 #22269 07:38 AM, 04 Aug 2017
    да и не должна ХЛ БД парать от нагрузки и так непонятно себя везти
  • https://t.me/clickhouse_ru
    @343206394 #22270 07:39 AM, 04 Aug 2017
    ок допустим без времени сделал
    записалось 2 месяца данных надо выбрать 3 часа
    сканить все 2 месяца?
  • @garikanet #22271 07:39 AM, 04 Aug 2017
    ClickHouse Primary Keys

    Recently I dived deep into ClickHouse. ClickHouse is column-store database by Yandex with great performance for analytical queries. For…

  • https://t.me/clickhouse_ru
    @343206394 #22272 07:39 AM, 04 Aug 2017
    Я что то не понимаю или?
  • @pookieShmukie #22273 07:40 AM, 04 Aug 2017
    Так три часа выбрать можно через тот же prewhere
  • @pookieShmukie #22274 07:40 AM, 04 Aug 2017
    А потом уже все остальное выкидывать
  • @pookieShmukie #22275 07:41 AM, 04 Aug 2017
    например по account и timestamp сделать prewhere
  • @pookieShmukie #22276 07:41 AM, 04 Aug 2017
    ну если только там есть другие условия
  • https://t.me/clickhouse_ru
    @343206394 #22277 07:41 AM, 04 Aug 2017
    тоесть вы хотите сказать что выкинув время и оставив только дату в PK я получу такую же скорость запросов?
  • @pookieShmukie #22278 07:41 AM, 04 Aug 2017
    Думаю да
  • @pookieShmukie #22279 07:42 AM, 04 Aug 2017
    Я сталкивался с кейсами когда по разному построенный запрос работал тоже по разному
  • @pookieShmukie #22280 07:42 AM, 04 Aug 2017
    но результат был одинаковый
  • @pookieShmukie #22281 07:42 AM, 04 Aug 2017
    причем разница была в десятки, а то и сотни раз )
  • @garikanet #22282 07:43 AM, 04 Aug 2017
    Если вы не использете date - скорость падает в десятки / сотни раз
  • @pookieShmukie #22283 07:43 AM, 04 Aug 2017
    Кстати статья, которую скинули выше даст понимание того как КХ работает с индексом и появится более-менее нормальное представление как запросы строить
  • @garikanet #22284 07:43 AM, 04 Aug 2017
    В статье @f1yegor все расписал
  • https://t.me/clickhouse_ru
    @343206394 #22285 07:43 AM, 04 Aug 2017
    Попробовать можно конечно, но согласитесь должно работать и без всего этого и как то стремно брать в прод с таким поведением.
    Надо или победить изначальную схему или отказываться. Бог знает на что я еще натолкнусь.
  • @pookieShmukie #22286 07:44 AM, 04 Aug 2017
    Ну блин ) Любую БД можно сложить, даже ХЛ, если с ней неправильно обращаться )
  • @pookieShmukie #22287 07:44 AM, 04 Aug 2017
    Тут нужно понять почему это произошло )
  • @garikanet #22288 07:44 AM, 04 Aug 2017
    Значит используйте Vertica )))
  • @pookieShmukie #22289 07:45 AM, 04 Aug 2017
    Igor Str правильно говорит, что отфильтровав данные по дате, которая в PK есть, останется не так много строк для обработки, там уже делайте что хотите )
  • https://t.me/clickhouse_ru
    @343206394 #22290 07:45 AM, 04 Aug 2017
    Что значиит сложить?
    Я понимаю если бы сторость просела
    Но не так же умирать
  • @garikanet #22291 07:45 AM, 04 Aug 2017
    Вы заставили базу делать очень много лишних действий с таким ключем
  • @pookieShmukie #22292 07:47 AM, 04 Aug 2017
    Я как то 5 колонок натолкал в пк ) в том числе и таймштамп, потом разобрался с пк и все ок стало
  • https://t.me/clickhouse_ru
    @343206394 #22293 07:48 AM, 04 Aug 2017
    Ок давайте попробую по порядку
    1. убираем время из ключа
    2. добавляем дату
    3. переписываем запрос
    можно переписать на этом примере?
    SELECT (avg(value)), toInt64(timestamp/60)*60 as granularity FROM Measures_Distributed where account=169 and id=109 and timestamp>1501596000 and timestamp<1501740000 and arrayElement(tags.value,indexOf(tags.name,4))=11724 group by granularity order by granularity
  • @garikanet #22294 07:49 AM, 04 Aug 2017
    Добавьте в where date=today() - просто дату
  • @garikanet #22295 07:49 AM, 04 Aug 2017
    и взлетит
  • @garikanet #22296 07:49 AM, 04 Aug 2017
    Решение у меня - нужно последние 48 часов

    event_date>=today()-2 AND timepoint_hour>=now()-(60*60*48)
  • https://t.me/clickhouse_ru
    @343206394 #22297 07:49 AM, 04 Aug 2017
    так
    CREATE TABLE IF NOT EXISTS measures
    (
    account UInt32,
    id UInt32,
    date Date,
    timestamp UInt32,
    value Float32,
    tags Nested (
    name UInt32,
    value UInt32
    )
    ) Engine = ReplicatedMergeTree('/clickhouse/tables/01/measures', '1',date, (account, id, date), 8192);
  • https://t.me/clickhouse_ru
    @343206394 #22298 07:50 AM, 04 Aug 2017
    ?
  • @garikanet #22299 07:51 AM, 04 Aug 2017
    Да попробуйте так + еще можно попробовать ID выкинуть - зависит что меньше будет сканится
  • @garikanet #22300 07:51 AM, 04 Aug 2017
    (account, date, id)
  • https://t.me/clickhouse_ru
    @343206394 #22301 07:51 AM, 04 Aug 2017
    id порядка 2 тысяц
    date 5-10
  • https://t.me/clickhouse_ru
    @343206394 #22302 07:52 AM, 04 Aug 2017
    data вперед
  • @pookieShmukie #22303 07:52 AM, 04 Aug 2017
    У меня сейчас в пк всего три колонки, дата в самом начале стоит, потом все остальное
  • https://t.me/clickhouse_ru
    @343206394 #22304 07:53 AM, 04 Aug 2017
    дата это включая день или только месяц?
  • https://t.me/clickhouse_ru
    @343206394 #22305 07:54 AM, 04 Aug 2017
    мне наверное тоже ее логично вначала поставить тк ее вариативность меньше чем у остальных
  • @pookieShmukie #22306 07:54 AM, 04 Aug 2017
    Дата включя день
  • @pookieShmukie #22307 07:55 AM, 04 Aug 2017
    Все таки рекомендую вот эту статью почитать https://groups.google.com/forum/#!topic/clickhouse/eUrsP30VtSU. Алексей тут очень подробно рассказывает как работают ПК в КХ
  • @pookieShmukie #22308 07:55 AM, 04 Aug 2017
    Это даже не статья, а ответ )
  • https://t.me/clickhouse_ru
    @343206394 #22309 07:55 AM, 04 Aug 2017
    Спсб попробую сейчас. Но все таки разобраться в тем что у меня было до этого надо.
    Иначе никакой гарантии что с новой схемой оно не помрет через какое-то время
  • https://t.me/clickhouse_ru
    @343206394 #22310 07:55 AM, 04 Aug 2017
    пошел читать, спсб
  • @pookieShmukie #22311 07:56 AM, 04 Aug 2017
    Это как напихать в мускуль 10 индексов и писать туда тонну данных и не понимать почему скорость вставки данных просела )
  • https://t.me/clickhouse_ru
    @343206394 #22312 07:56 AM, 04 Aug 2017
    Так понимаете было пы понятно если бы скорость просела
  • https://t.me/clickhouse_ru
    @343206394 #22313 07:56 AM, 04 Aug 2017
    меня пугает что оно умерло вовсе
  • https://t.me/clickhouse_ru
    @343206394 #22314 07:57 AM, 04 Aug 2017
    вставлять не дает
  • https://t.me/clickhouse_ru
    @343206394 #22315 07:57 AM, 04 Aug 2017
    мержи не идут
  • https://t.me/clickhouse_ru
    @343206394 #22316 07:57 AM, 04 Aug 2017
    опримизация не помогает
  • https://t.me/clickhouse_ru
    @343206394 #22317 07:57 AM, 04 Aug 2017
    что в тако случае на проде делать?
  • @pookieShmukie #22318 07:58 AM, 04 Aug 2017
    Просто получается так, что КХ после вставки нужно отсортировать данные по ПК и разложить в нужные партиции
  • https://t.me/clickhouse_ru
    @343206394 #22319 07:58 AM, 04 Aug 2017
    Я даже таблици дропнуть пол часа не мог
  • https://t.me/clickhouse_ru
    @343206394 #22320 07:58 AM, 04 Aug 2017
    засыпало лог ошибками
  • https://t.me/clickhouse_ru
    @343206394 #22321 07:58 AM, 04 Aug 2017
    ок
  • @pookieShmukie #22322 07:58 AM, 04 Aug 2017
    И из-за того, что там таймштамп и порядка 40 миллионов строк вставляется за минуту, то операция достаточно тяжелая )
  • https://t.me/clickhouse_ru
    @343206394 #22323 07:58 AM, 04 Aug 2017
    я все понимаю, но ложиться без возможности восстановления не должно
  • @pookieShmukie #22324 07:58 AM, 04 Aug 2017
    Это безусловно так, да )
  • https://t.me/clickhouse_ru
    @343206394 #22325 08:01 AM, 04 Aug 2017
    надеюсь мы поняли друг друга
    я возможно неправильно использовал
    неправильно сконфигурировал
    при всем при этом 1 сервер работал как часы даже с временем в ключе без вопросов неделю
    как только сделал кластер все поотваливалось
    Так что я пока очень скептически отношусь к дате в ключе
    И мне интересно неужели разработчикам КХ не итнересно почему 1 нода работает а 3-4 нет :)
  • @garikanet #22326 08:05 AM, 04 Aug 2017
    У многих тут кластера работают на ура
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22327 08:05 AM, 04 Aug 2017
    "Так что я пока очень скептически отношусь к дате в ключе" - зря, это придумали разработчики CH, а им виднее
  • https://t.me/clickhouse_ru
    @343206394 #22328 08:06 AM, 04 Aug 2017
    Это все хорошо но объяснить почему работал 1 а не работают 4 в кластере никто не может
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22329 08:06 AM, 04 Aug 2017
    Создайте в google group или на гитхабе CH описание проблемы, думаю тогда разработчики пояснят
  • https://t.me/clickhouse_ru
    @343206394 #22330 08:07 AM, 04 Aug 2017
    Хорошии совет спасибо
  • https://t.me/clickhouse_ru
    @343206394 #22331 08:07 AM, 04 Aug 2017
    интерактивно конечно намного удобнее но видимо не получится
  • https://t.me/clickhouse_ru
    @343206394 #22332 08:40 AM, 04 Aug 2017
    А можно как-то производительность синхронизации реплик увеличить?
    А то вот это все время растет
    queue_size: 1077
    inserts_in_queue: 900
    merges_in_queue: 177
  • https://t.me/clickhouse_ru
    @343206394 #22333 08:40 AM, 04 Aug 2017
    сеть и процессор почти не загружены
  • https://t.me/clickhouse_ru
    @343206394 #22334 08:51 AM, 04 Aug 2017
    queue_size: 3228
    inserts_in_queue: 2684
    merges_in_queue: 544

    И все сдохло опять
    Сейчас писал не в распределеннют таблицу а в локальные 4 через лоад балансер
  • @pookieShmukie #22335 09:14 AM, 04 Aug 2017
    А структура таблицы поменялась?
  • https://t.me/clickhouse_ru
    @343206394 #22336 09:15 AM, 04 Aug 2017
    в этом тесте нет
    5 мин назад запустил с такой структурой
  • https://t.me/clickhouse_ru
    @343206394 #22337 09:15 AM, 04 Aug 2017
    CREATE TABLE IF NOT EXISTS measures
    (
    account UInt32,
    id UInt32,
    date Date,
    timestamp UInt32,
    value Float32,
    tags Nested (
    name UInt32,
    value UInt32
    )
    ) Engine = ReplicatedMergeTree('/clickhouse/tables/01/measures', '1',date, (date, account, id), 8192);
  • https://t.me/clickhouse_ru
    @343206394 #22338 09:16 AM, 04 Aug 2017
    надо подождать теперь часа 2
  • https://t.me/clickhouse_ru
    @343206394 #22339 09:16 AM, 04 Aug 2017
    в прошлый раз легло где-то через 2-2.5
  • https://t.me/clickhouse_ru
    @343206394 #22340 09:17 AM, 04 Aug 2017
    сейчас вставляю обратно через распределенную таблицу
  • https://t.me/clickhouse_ru
    @taroff #22341 09:17 AM, 04 Aug 2017
    не поделитесь, как вы хотите выборки по tags делать? Это фулскан будет, т.к. они не могут быть в ключе.
  • https://t.me/clickhouse_ru
    @343206394 #22342 09:18 AM, 04 Aug 2017
    так запрос же есть вверху
  • https://t.me/clickhouse_ru
    @343206394 #22343 09:18 AM, 04 Aug 2017
    филскана нет вроде как
  • https://t.me/clickhouse_ru
    @343206394 #22344 09:18 AM, 04 Aug 2017
    по крайней мере запросы отрабатывают быстро
  • https://t.me/clickhouse_ru
    @343206394 #22345 09:19 AM, 04 Aug 2017
    и кол-во обработанных строк говорит что не фулскан
  • https://t.me/clickhouse_ru
    @taroff #22346 09:19 AM, 04 Aug 2017
    м, ну имею ввиду если в запросе вообще не будет полей из 1 pkey или если запрос по pk все равно вернет тонну данных
  • https://t.me/clickhouse_ru
    @taroff #22347 09:19 AM, 04 Aug 2017
    или такого не будет
  • https://t.me/clickhouse_ru
    @taroff #22348 09:19 AM, 04 Aug 2017
    скажем получить все уник таги
  • https://t.me/clickhouse_ru
    @343206394 #22349 09:20 AM, 04 Aug 2017
    а вот без времени в ключе у меня будет все плохо с запросами походу
    потому как придется 60 миллиардов строк сканить за день
  • https://t.me/clickhouse_ru
    @343206394 #22350 09:20 AM, 04 Aug 2017
    мне такие запросы не надо
  • https://t.me/clickhouse_ru
    @343206394 #22351 09:20 AM, 04 Aug 2017
    а так да они будут фулскан
  • https://t.me/clickhouse_ru
    @343206394 #22352 09:21 AM, 04 Aug 2017
    я на это сознательно иду
  • https://t.me/clickhouse_ru
    @taroff #22353 09:21 AM, 04 Aug 2017
    понял, спс
  • https://t.me/clickhouse_ru
    @343206394 #22354 09:25 AM, 04 Aug 2017
    Тем кто советовал убрать время из ключа будет интересно наверное
    было
    2400 rows in set. Elapsed: 0.043 sec. Processed 3.17 million rows, 170.50 MB (73.01 million rows/s., 3.92 GB/s.)
    стало
    966 rows in set. Elapsed: 0.642 sec. Processed 16.49 million rows, 823.10 MB (25.67 million rows/s., 1.28 GB/s.)

    Видно что просяду я неплохо по производительности, я бы даже сказал неприемлемо (кратно количество строк для сканирования возросло)
  • @pookieShmukie #22355 09:32 AM, 04 Aug 2017
    А запрос какой?
  • https://t.me/clickhouse_ru
    @343206394 #22356 09:34 AM, 04 Aug 2017
    SELECT (avg(value)), toInt64(timestamp/60)*60 as granularity FROM Measures_Distributed where account=169 and id=109 and arrayElement(tags.value,indexOf(tags.name,4))=11724 and date>'2017-08-01' group by granularity order by granularity
  • https://t.me/clickhouse_ru
    @343206394 #22357 09:34 AM, 04 Aug 2017
    + таймстампы
  • @pookieShmukie #22358 09:40 AM, 04 Aug 2017
    Только сейчас заметил, что в первом случае прочитано меньше строк
  • @pookieShmukie #22359 09:40 AM, 04 Aug 2017
    Попробуйте prewhere date > '2017-08-01'
  • @pookieShmukie #22360 09:40 AM, 04 Aug 2017
    и убрать date из where
  • https://t.me/clickhouse_ru
    @343206394 #22361 09:40 AM, 04 Aug 2017
    ок
  • https://t.me/clickhouse_ru
    @343206394 #22362 09:43 AM, 04 Aug 2017
    SELECT (avg(value)), toInt64(timestamp/60)*60 as granularity FROM Measures_Distributed where account=169 and id=109 and timestamp>1501664400 and timestamp<1501837200 and arrayElement(tags.value,indexOf(tags.name,4))=11724 and date>'2017-08-01' group by granularity order by granularity
    535 rows in set. Elapsed: 0.223 sec. Processed 8.17 million rows, 519.13 MB (36.62 million rows/s., 2.33 GB/s.)

    SELECT (avg(value)), toInt64(timestamp/60)*60 as granularity FROM Measures_Distributed prewhere date>'2017-08-01' where account=169 and id=109 and timestamp>1501664400 and timestamp<1501837200 and arrayElement(tags.value,indexOf(tags.name,4))=11724 group by granularity order by granularity
    535 rows in set. Elapsed: 0.267 sec. Processed 8.15 million rows, 518.63 MB (30.50 million rows/s., 1.94 GB/s.)
  • https://t.me/clickhouse_ru
    @343206394 #22363 09:43 AM, 04 Aug 2017
    не помогло
  • @pookieShmukie #22364 09:44 AM, 04 Aug 2017
    Ну как не помогло :) В 2.5 раза быстрее заработало )
  • https://t.me/clickhouse_ru
    @343206394 #22365 09:45 AM, 04 Aug 2017
    и на порядок медленней чем было со временем (учитываем что данных сейчас кот наплакал)
  • @pookieShmukie #22366 09:45 AM, 04 Aug 2017
    И не совсем понимаю профита от toInt64(timestamp/60)*60
  • https://t.me/clickhouse_ru
    @343206394 #22367 09:46 AM, 04 Aug 2017
    это ни на что не влияет
  • https://t.me/clickhouse_ru
    @343206394 #22368 09:46 AM, 04 Aug 2017
    осталось как мусор
  • @pookieShmukie #22369 09:47 AM, 04 Aug 2017
    Оооо, я вижу там timestamp в where
  • @pookieShmukie #22370 09:47 AM, 04 Aug 2017
    Пропустил
  • https://t.me/clickhouse_ru
    @343206394 #22371 09:47 AM, 04 Aug 2017
    это плохо?
  • https://t.me/clickhouse_ru
    @343206394 #22372 09:51 AM, 04 Aug 2017
    3 мин как остановлена вставка а колво все пляшет
  • https://t.me/clickhouse_ru
    @343206394 #22373 09:51 AM, 04 Aug 2017
    ubuntu@pprod-spm-ch-3:/mnt/local$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    805047373
    805047373
    805047373
    ubuntu@pprod-spm-ch-3:/mnt/local$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    805047373
    805047373
    811021532
    ubuntu@pprod-spm-ch-3:/mnt/local$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    805047373
    805047373
    805047373
    ubuntu@pprod-spm-ch-3:/mnt/local$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    811021532
    805047373
    805047373
    ubuntu@pprod-spm-ch-3:/mnt/local$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    805047373
    805047373
    811021532
    ubuntu@pprod-spm-ch-3:/mnt/local$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    805047373
    805047373
    805047373
  • https://t.me/clickhouse_ru
    @343206394 #22374 09:54 AM, 04 Aug 2017
    Ппц, оно сойдетс или нет ваши ставки, ахаха
    ubuntu@pprod-spm-ch-3:/mnt/local$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    811021532
    805047373
    805047373
    ubuntu@pprod-spm-ch-3:/mnt/local$ for i in seq 3 5; do curl 'pprod-spm-ch-'$i':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    811021532
    805047373
    805047373
  • @pavel_maksimow #22376 10:00 AM, 04 Aug 2017
    Всем привет. Подскажите пожалуйста, в чем причина такой ошибки при установке? (ubuntu16)
  • https://t.me/clickhouse_ru
    @rheinx #22377 10:01 AM, 04 Aug 2017
    Там вроде clickhouse-server-base если не ошибаюсь.
  • https://t.me/clickhouse_ru
    @rheinx #22378 10:01 AM, 04 Aug 2017
    Посмотри в выводе apt search clickhouse-server
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @IlyaSinelnikov #22380 10:01 AM, 04 Aug 2017
    Спецы по КХ, подскажите пожалуйста. Есть данные, у данных есть два поля, по которым хочется искать независимо друг от друга (иногда по первому полю, иногда по второму), искать хочется очевидно как можно быстрее.
    Какую лучше использовать схему в КХ? Составной ключ врядли поможет. Делать 2 таблицы с разными primary keys и в итоге дублировать данные? Еще как-то?
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #22380 #22381 10:03 AM, 04 Aug 2017
    Поиск по составному все равно быстрее будет чем фуллскан.
  • https://t.me/clickhouse_ru
    @orantius #22382 10:03 AM, 04 Aug 2017
    если у вас два вида range запросов, то быстрее всего будет две таблицы. а вы пробовали хотя бы один вариант?
  • https://t.me/clickhouse_ru
    @orantius #22383 10:04 AM, 04 Aug 2017
    но вообще надо смотреть, какие данные, какие запросы. может вам проще две вьюхи сагрегиовать сразу.
  • https://t.me/clickhouse_ru
    @IlyaSinelnikov #22384 10:04 AM, 04 Aug 2017
    сейчас две таблицы, всё летает, но смущает дублирование данных
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22385 10:05 AM, 04 Aug 2017
    Покажите пример запросов
  • https://t.me/clickhouse_ru
    поэтому пока остановились на двух таблицах с разными PK
  • https://t.me/clickhouse_ru
    @orantius #22387 10:06 AM, 04 Aug 2017
    память дешевая, а геморрой дорогой.
  • https://t.me/clickhouse_ru
    SELECT
    ftype,
    count() AS c
    FROM ...
    WHERE vexists = 1
    GROUP BY ftype
    ORDER BY c DESC

    такое например
  • https://t.me/clickhouse_ru
    @IlyaSinelnikov #22389 10:10 AM, 04 Aug 2017
    в where может быть любое из двух интересующих полей
  • https://t.me/clickhouse_ru
    +1. Авторы CH советую дублировать данные, если это улучшает производительность
  • https://t.me/clickhouse_ru
    @IlyaSinelnikov #22391 10:12 AM, 04 Aug 2017
    Ззначит мы на верном пути :)
  • https://t.me/clickhouse_ru
    @IlyaSinelnikov #22392 10:12 AM, 04 Aug 2017
    спасибо
  • https://t.me/clickhouse_ru
    @alex_p_7 #22393 10:16 AM, 04 Aug 2017
    /subscribe
  • https://t.me/clickhouse_ru
    Так же возможно вам поможет это https://clickhouse.yandex/docs/ru/table_engines/aggregatingmergetree.html
  • https://t.me/clickhouse_ru
    @IlyaSinelnikov #22395 10:22 AM, 04 Aug 2017
    спасибо, посмотрю
  • https://t.me/clickhouse_ru
    @peerclick #22396 10:25 AM, 04 Aug 2017
    Добрый день , может есть у кого TCP коннектор для php ?
  • На сколько мне известно именно TCP нет. По крайней мере я не встречал
  • А чем вас curl не устраивает ?
  • https://t.me/clickhouse_ru
    @peerclick #22399 10:30 AM, 04 Aug 2017
    ограничение по кол-ву передаваемых данных
  • @449809365 #22400 10:46 AM, 04 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #22399 #22401 10:53 AM, 04 Aug 2017
    там, вроде, нет особых ограничений
  • @IgnisDivine #22402 12:11 PM, 04 Aug 2017
    Joined.
  • @IgnisDivine #22403 12:13 PM, 04 Aug 2017
    Добрый день, ребят можете кто-нибудь помочь как можно узнать статистику по таблице? Вроде того какая колонка больше всего занимает или где запрос тормозит
  • https://t.me/clickhouse_ru
    @orantius #22404 12:17 PM, 04 Aug 2017
    select * from system.columns where table = ?
  • @IgnisDivine #22405 12:20 PM, 04 Aug 2017
    спасибо больоше :)
  • https://t.me/clickhouse_ru
    @captainDino95 #22406 12:33 PM, 04 Aug 2017
    кто-то сталкивался с проблемой, что нужно сложить стринговые айдишники (цифры и буквы) более компактно?
  • https://t.me/clickhouse_ru
    @captainDino95 #22407 12:34 PM, 04 Aug 2017
    а то уж больно много места отжирают
  • https://t.me/clickhouse_ru
    @orantius #22408 12:35 PM, 04 Aug 2017
    фиксированной длины?
  • @IgnisDivine #22409 12:35 PM, 04 Aug 2017
    Стринговые в плане строка в которой шестнадцатеричные числа
  • @IgnisDivine #22410 12:35 PM, 04 Aug 2017
    ага
  • @IgnisDivine #22411 12:35 PM, 04 Aug 2017
    Для примера: 57cc2540558c52333c563a5c
  • https://t.me/clickhouse_ru
    @orantius #22412 12:36 PM, 04 Aug 2017
    fixedstring(16)
  • @vstakhov #22413 12:36 PM, 04 Aug 2017
    я бы в какой int128 перевел
  • @IgnisDivine #22414 12:36 PM, 04 Aug 2017
    А не подскажешь пожалйуста чем этот способ лучше?
  • @vstakhov #22415 12:37 PM, 04 Aug 2017
    или как он там, uuid
  • @IgnisDivine #22416 12:37 PM, 04 Aug 2017
    А разве есть такой тип? Я вродде только смотрел. Возможно я что-тто упустил
  • https://t.me/clickhouse_ru
    @etkee #22417 12:37 PM, 04 Aug 2017
    на два инта64 должно биться
  • @vstakhov #22418 12:37 PM, 04 Aug 2017
    я видел как минимум pull request с ним
  • @IgnisDivine #22419 12:38 PM, 04 Aug 2017
    я сейчас поиском по документации прошел и нет такого типа(
  • https://t.me/clickhouse_ru
    @captainDino95 #22420 12:38 PM, 04 Aug 2017
    не задокументировали еще
  • @IgnisDivine #22421 12:40 PM, 04 Aug 2017
    В любом случае спасибо! Будем пробовать)
  • https://t.me/clickhouse_ru
    @343206394 #22422 12:42 PM, 04 Aug 2017
    К вопросу что выгоднее int (*1000 например) или float
    ┌─table────┬─name──┬─type───┬─data_compressed_bytes─┬─data_uncompressed_bytes─┬─marks_bytes─┬──compression_rate─┐
    │ measures │ value │ UInt64 │ 929445698 │ 5363178392 │ 1309648 │ 5.770297719964271 │
    └──────────────────────┴───────┴────────┴───────────────────────┴─────────────────────────┴─────────────┴───────┘
    ┌─table────┬─name──┬─type────┬─data_compressed_bytes─┬─data_uncompressed_bytes─┬─marks_bytes─┬──compression_rate─┐
    │ measures │ value │ Float32 │ 2518338746 │ 6651819960 │ 3248576 │ 2.641352348076846 │
    └──────────┴───────┴─────────┴───────────────────────┴─────────────────────────┴─────────────┴───────────────────┘
  • https://t.me/clickhouse_ru
    @etkee #22423 12:42 PM, 04 Aug 2017
    если у вас хэш, то его вывод на самом деле просто набор байтов, и ничего лучше чем перевести в fixedstring, переведя обратно в реальные байты, нельзя придумать
  • https://t.me/clickhouse_ru
    @343206394 #22424 12:43 PM, 04 Aug 2017
    Я бы сказал что компрессия работает отлично и пофиг что использовать или нужно мерять на выших данных.
    Но однозначно советовать предостерегся бы
  • @MacBookernyak #22425 12:43 PM, 04 Aug 2017
    ,3,000-+
  • @IgnisDivine #22426 01:04 PM, 04 Aug 2017
    спасибо! Будем пробовать и эксперементировать, если кому интересны будут результаты то потом опишем :)
  • https://t.me/clickhouse_ru
    Данные досинхронизировались или так же пляшут?
  • https://t.me/clickhouse_ru
    @343206394 #22428 01:31 PM, 04 Aug 2017
    Плясали час
  • https://t.me/clickhouse_ru
    @343206394 #22429 01:34 PM, 04 Aug 2017
    Потом все снес нафиг и в N раз все сначала начал
    Единственное что изменил это поменял в конфиге ip на hostname (Александр Ярославцев посоветовал за что ему большое спасибо, объяснить ни он ни я толком не можем, но вроде помогло, тьфутьфутьфу)
    3 часа прошло, залило 5 млрд данных
    Все синхронно пока, очередь на вставку не растет
    Ошибок нет
    Parts пляшкт вокруг
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 6; do curl 'pprod-spm-ch-'$i'.us.sematext.com:8123?query=select+count(*)+from+system.parts;'; done;
    5843
    6111
    5713
    5910

    ЗЫ: Вернул timestamp в первичный ключ (без него тоска по запросам, не вижу преград почему он должен мешать). Пишу опять в распределенную таблицу, 2 шарды 2 реплики 4 сервера
  • https://t.me/clickhouse_ru
    @343206394 #22430 01:39 PM, 04 Aug 2017
    ubuntu@pprod-spm-ch-3:~$ for i in seq 3 6; do curl 'pprod-spm-ch-'$i.us.sematext.com':8123?query=select+count(*)+from+default.Measures_Distributed;'; done;
    5339916169
    5339916169
    5339916169
    5339916169
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @343206394 #22432 01:43 PM, 04 Aug 2017
    Растущее потребление процессора при небольшом падении скорости вставки как я понимаю мержи.
    И это клево ибо объяснимо
  • @pookieShmukie #22433 01:44 PM, 04 Aug 2017
    Слава богу работает :) Возможно где то в кишках самого КХ есть трабл с хостнеймами. Он возможно берет хостнейм самой машины, а в конфиге кластера прописаны айпишники, но при просмотре таблицы clusters если мне не изменяет память показываются локальные хостнеймы...короче каша там какая то :) Так что лучше использовать хостнеймы вместо айпишек
  • @pookieShmukie #22434 01:45 PM, 04 Aug 2017
    У меня были проблемы с репликацией и именно это помогло
  • https://t.me/clickhouse_ru
    @343206394 #22435 01:46 PM, 04 Aug 2017
  • https://t.me/clickhouse_ru
    @343206394 #22436 01:47 PM, 04 Aug 2017
    (offtop надо Ленина с пальцем добавить в телеграмм, заморскии этот человек зачем-то тут добавлен)
  • @390465886 #22442 02:08 PM, 04 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @tkostyan #22446 03:36 PM, 04 Aug 2017
    Немного нестандартный вопрос: можно ли как-то ограничить использование диска по скорости при выполнении запросов? В голову приходит только ionice для сервера и опция --max_threads у клиента. Есть ли ещё какие-то настройки, которые можно покрутить?
  • https://t.me/clickhouse_ru
    @IlyaSinelnikov #22447 04:02 PM, 04 Aug 2017
    Вопрос по arrayJoin. Есть таблица bar с полем foo типа Array(FixedString(16)).
    Селект вида "SELECT notEmpty(foo) ? arrayJoin(foo) : toFixedString('', 16) FROM bar" приводит к "<Error> executeQuery: Code: 368, e.displayText() = DB::Exception: Bad cast from type N2DB12ColumnStringE to N2DB17ColumnFixedStringE" на сервере.

    Версия 1.1.54245. Есть какие-либо другие варианты как сделать так, чтобы при использовании arrayJoin() можно было получить хотя бы одну запись в селекте, если массив foo пустой?
  • https://t.me/clickhouse_ru
    @IlyaSinelnikov #22448 04:11 PM, 04 Aug 2017
    При этом клиент отваливается со своим исключением - Exception on client:
    Code: 89. DB::Exception: Unknown compression method: 105: while receiving packet from clickhouse-server:9000, 172.17.0.3
  • @vladislavadv #22449 04:38 PM, 04 Aug 2017
    Всем привет.

    А никто не занимется разработкой модуля clickhouse для rsyslog?
  • @vladislavadv #22450 04:39 PM, 04 Aug 2017
    Появилась мысля, собирать access логи с всех серверов в кликхаус
  • @sr_maks1 ↶ Reply to #22450 #22451 04:43 PM, 04 Aug 2017
    А для чего если. Есть ведь например тот же graylog
  • @vladislavadv #22452 04:49 PM, 04 Aug 2017
    Наверное лень тратить время на инсталляцию\изучение грейлога. =)
  • @SobakaRU #22453 04:50 PM, 04 Aug 2017
    Joined.
  • Ставится докер за "5 минут"
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #22454 #22455 04:58 PM, 04 Aug 2017
    Не все любят смузи)
  • @pookieShmukie #22456 04:58 PM, 04 Aug 2017
    Ну блин )
  • https://t.me/clickhouse_ru
    мы собираем так логи через rsyslogd. Он пересылает на сервис, который уже пишет логи в КХ
  • https://t.me/clickhouse_ru
    @hagen1778 #22458 05:33 PM, 04 Aug 2017
    ну и таким же способом собираются логи с других приложений
  • @vladislavadv #22459 05:33 PM, 04 Aug 2017
    Сервис самописный?
  • https://t.me/clickhouse_ru
    @hagen1778 #22460 05:36 PM, 04 Aug 2017
    да, 200 строчек на го
  • https://t.me/clickhouse_ru
    @whale_nik #22461 05:36 PM, 04 Aug 2017
    Joined.
  • Сейчас прочитал полностью ваши сообщения за сегодня.

    "No interserver IO endpoint" - это говорит о том, что соединение идёт не с репликой, а с каким-то другим сервером. Как будто перепутаны адреса. Для разбирательства надо смотреть полную конфигурацию кластера - какие есть серверы, с какими адресами, какие реплики на них созданы. Есть ли на сервере, где выводится такой лог, реплика с именем ноды /clickhouse/tables/01/measures/replicas/2 ? Если нет, то можно ли догадаться, почему на неё идёт запрос?

    Реплики анонсируют свои адреса, по которым к ним могут обращаться другие реплики, в ZK в ноде .../host. Туда прописывается FQDN сервера, такой как он сам это определяет (аналогично результату команды hostname -f). Возможно, если что-то не так с конфигурацией сети, это приведёт к подобным эффектам.
  • Да, FixedString(16) - лучший вариант. Главное не хранить в обычном String в текстовом виде.
  • Действительно, неверно работает. Надо разбираться.
  • https://t.me/clickhouse_ru
    @inv2004 ↶ Reply to #22432 #22465 06:17 PM, 04 Aug 2017
    А что в итоге - просто смена ip на host решила вообще всё?
  • @milovidov_an #22466 06:21 PM, 04 Aug 2017
    И вопрос, замена где именно.
    Варианты:
    1. В interserver_http_host:
    <!-- Hostname that is used by other replicas to request this server.
    If not specified, than it is determined analoguous 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>
    -->
    (обычно его не требуется менять вообще, по-умолчанию берётся FQDN)

    2. В конфигурации кластера для Distributed таблиц в секции remote_servers (влияет только на работу Distributed таблиц, но не на процесс репликации).

    3. Где-то в системе.
  • Вам спасибо, что помогли!

    Правда тот же вопрос остаётся - когда у вас что-то не так работало, и вы заменили IP-адреса на имена, то где конкретно потребовалась эта замена, и с какими симптомами не работало?
  • У меня не работала репликация впринципе. В логе были ошибки о том, что нода не найдена (не помню только где именно, в зк или кх логах). Кто-то из команды кх ответил мне и мы разобрались в проблеме, решение помогло!
  • Если нужно конкретней, то могу поднять архивы :)
  • https://t.me/clickhouse_ru
    Завел issue
  • https://t.me/clickhouse_ru
    @IlyaSinelnikov #22471 06:33 PM, 04 Aug 2017
    А есть вариант как это сейчас обойти?
  • @milovidov_an #22472 06:38 PM, 04 Aug 2017
    Можно преобразовать FixedString в String.
    Пример:

    CREATE TABLE test.array_fixedstring (x Array(FixedString(16))) ENGINE = Memory
    INSERT INTO test.array_fixedstring VALUES (['hello', 'world'])

    SELECT notEmpty(x) ? arrayJoin(x) : toFixedString('', 16) FROM test.array_fixedstring
    - не работает.

    SELECT notEmpty(x) ? arrayJoin(arrayMap(a -> toString(a), x)) : '' FROM test.array_fixedstring
    - работает.
  • Если нода не найдена - значит всё не работает сразу. А у Владимира кейс, что работало, а потом перестало. Может быть изменилась конфигурация сети?
  • Мы с ним общались днем, на обном сервере все ок работало, потом он поднял кластер и начались проблемы, причем он пытался сделать кросс-репликацию, которая у него не завелась
  • @pookieShmukie #22475 06:42 PM, 04 Aug 2017
    Вобщем после конфигурации кластера с хостнеймами вместо ip адресов проблема вроде решилась. По крайней мере он больше не говорил о проблемах
  • @DeamonMV #22476 06:46 PM, 04 Aug 2017
    Привет всем.
    хотел два вопроса задать
    - есть таблица в которой 20 полей поиск идет по одному полю, из этой таблице нужно только 3 поля
    будет ли идти поиск быстрее если таблицу сократить до 3 полей, включая поле по которому идет поиск?
    я правильно понимаю что чуда не произойдет и скорость поиска будет такой же?
    - насколько быстрее будет проходить запрос если данные поместить в РАМ?
    Спасибо
  • https://t.me/clickhouse_ru
    @inv2004 ↶ Reply to #22476 #22477 06:50 PM, 04 Aug 2017
    1) если они не выбираются и не читаются, то разницы вообще не должно быть.
  • https://t.me/clickhouse_ru
    @inv2004 ↶ Reply to #22476 #22478 06:52 PM, 04 Aug 2017
    2) На тяжелых запросах не проверял, но использование uncomressed_cache сокращало время мелких запросов не так сильно как хотелось бы, что-то типа 34ms -> 26ms. Но я думаю тут не только на выборку время потрачено.
  • @milovidov_an #22479 06:53 PM, 04 Aug 2017
    > - насколько быстрее будет проходить запрос если данные поместить в РАМ?

    Как правило, существенно быстрее. В общем случае зависит от сложности запроса и от производительности дисковой подсистемы. Вручную помещать данные в оперативку обычно не требуется, так как используется page cache, что позволяет иметь "горячие" данные в оперативке.
  • @DeamonMV #22480 06:55 PM, 04 Aug 2017
    Спасибо.
  • https://t.me/clickhouse_ru
    @inv2004 #22481 06:58 PM, 04 Aug 2017
    А можно вопрос по исходникам? Из MergeTreeReader можно где-то извлечь номер строки? С ходу не так просто оказывается как представлялось, так как похоже, что если seek, то надо считать. Хотел чтобы каждый Block имел номер начальной строки.
  • @milovidov_an #22482 07:10 PM, 04 Aug 2017
    С одной стороны надо учитывать, что строки постоянно переупорядочиваются при слияниях. Это ограничивает применимость номера строки, хотя польза всё-равно есть для некоторых приложений.

    Также вопрос, нужен ли именно номер, или только некоторое значение, которое соответствует порядку строк. Второе проще.

    Совсем простым способом добавить номер строки в MergeTreeReader не получится, но в принципе, добавить не так уж сложно. Нужно всего лишь прокинуть туда минимальный номер строки в каждом part-е, который вычислять из размера меньших по порядку part-ов.
  • Было бы полезно получить номер строки именно в выдаче. Например я выбираю строки с сортировкой, агрегацией и пр. и хочу использовать номер строки в результирующем ответе, например 1,2,3,4 для дальнейших манипуляций
  • https://t.me/clickhouse_ru
    @inv2004 #22484 07:17 PM, 04 Aug 2017
    Я думал что это всё учтено в read_rows_after_current_mark, но похоже нет.
  • @pookieShmukie #22485 07:17 PM, 04 Aug 2017
    Для манипуляций именно в КХ, не на уроне приложения
  • @milovidov_an #22486 07:17 PM, 04 Aug 2017
    Это можно получить так:

    SELECT rowNumberInAllBlocks(), * FROM (your query)
  • https://t.me/clickhouse_ru
    @inv2004 ↶ Reply to #22485 #22487 07:18 PM, 04 Aug 2017
    Те номер строки в readImpl ? Это именно то что я добиваюсь.
  • оО я думал, что эта функция по другому работает. Результат детерменирован?
  • @pookieShmukie #22489 07:19 PM, 04 Aug 2017
    Я имею ввиду, что при распределенном чтении, номер строки будет всегда одинаковый при одинаковом результате?
  • Да, у меня были кейсы, когда в процессе агрегации мне нужно было использовать номер строки именно в результирующем наборе данных. Не номер строки где то в БД целиком, типа 231, 444, 572, а именно 1,2,3 и т.д.
  • @pookieShmukie #22491 07:20 PM, 04 Aug 2017
    Если в результате будет 100 строк, то нумерация должна быть от 1 до 100
  • https://t.me/clickhouse_ru
    @inv2004 #22492 07:21 PM, 04 Aug 2017
    Номер строки в блоке - это по сути range от 0-32k на каждый блок? (кроме краёв). Тогда если это + начальную строку блока, то будет то что надо.
  • @pookieShmukie #22493 07:21 PM, 04 Aug 2017
    Я полагаю это можно очень просто добавить, но моих навыков в cpp недостаточно :) Поэтому остается либо ждать, либо все таки начинать разбираться и потом присылать PR
  • Если в подзапросе есть детерминированный ORDER BY, то да.
  • Использовать в процессе агрегации номер строки, который получился бы в результате, нет возможности.
  • Имеется ввиду другое. Например

    select avg, rowNumber() from (select avg(value) as avg from table group by column)
  • @pookieShmukie #22497 07:25 PM, 04 Aug 2017
    Типа как то так. И на выходе я например получаю

    avg rowNumber()
    12 1
    33 2
    23 3
    77 4
  • @pookieShmukie #22498 07:25 PM, 04 Aug 2017
    Но я думаю, будет не совсем честно делать такую функцию, которая работает только поверх агрегации
  • @pookieShmukie #22499 07:25 PM, 04 Aug 2017
    Лишний раз заворачивать в подзапрос - не совсем удобно
  • Есть функции rowNumberInBlock, blockNumber, rowNumberInAllBlocks.

    Результат работы всех этих функций зависит от того, на какой стадии в конвейере выполнения запроса они выполняются, от разбиения данных на блоки при обработке. А blockNumber, rowNumberInAllBlocks - ещё и от порядка обработки блоков.

    rowNumberInBlock даёт номер строки в блоке. Начиная с нуля. Для каждого блока независимо.
  • https://t.me/clickhouse_ru
    Да, сам в шоке.
  • https://t.me/clickhouse_ru
    @inv2004 ↶ Reply to #22498 #22502 07:26 PM, 04 Aug 2017
    Опять же, мне кажется, что прокидывать номер строки в readImpl было бы супер, а rowNumber просто возвращала бы это число. Лучше чем виртуальная колонка i кажется. Ну и главное, это шаг в сторону window-join или window-функций.
  • Кстати, как там дела? Данны до сих пор льются без проблем?
  • https://t.me/clickhouse_ru
    1 На всех машинках задал hostname
    2 Прописал в dns
    3 Поменял ip на имена в remote servers
    все
  • https://t.me/clickhouse_ru
    @inv2004 ↶ Reply to #22504 #22505 07:29 PM, 04 Aug 2017
    Понять бы что это было, ну или какие признаки, так как не ясна ни проблема ни объяснение решения :)
  • https://t.me/clickhouse_ru
    @343206394 #22506 07:30 PM, 04 Aug 2017
    Так да
  • https://t.me/clickhouse_ru
    @343206394 #22507 07:30 PM, 04 Aug 2017
    Вопрос открыт
  • https://t.me/clickhouse_ru
    @343206394 #22508 07:30 PM, 04 Aug 2017
    Хорошо что заработало но почему непонятно
  • https://t.me/clickhouse_ru
    @343206394 #22509 07:31 PM, 04 Aug 2017
    все что делал и тестил писал тут в режиме реального времени и конфиги выкладывал
  • https://t.me/clickhouse_ru
    @343206394 #22510 07:31 PM, 04 Aug 2017
    могу history из сервера выложить :)
  • Я думаю есть смысл это оформить в issue с описанием временного решения до тех пор пока не разберутся и не пофиксят, что бы другие в такое не впарывались
  • https://t.me/clickhouse_ru
    @343206394 #22512 07:37 PM, 04 Aug 2017
    Сейчас пришел все ок
    Влило 9млрд строк и продолжает работать
    очередей нет
    parts до 1000.
    зы конфигурация сети не менялась (чуть что все это запускалось AWS VPN)
  • https://t.me/clickhouse_ru
    @343206394 #22513 07:38 PM, 04 Aug 2017
    Вот тут видно как мы выгребли интенсивно все из Кафки что там было и пошли выгребать со скоростью вставки
  • Если в SELECT условия с большей гранулярностью, чем дни (например, пол дня), то разумно иметь время в первичном ключе.

    При этом в запросах следует писать условия и на время (первичный ключ) и на ключ даты, который обязательный для MergeTree. Ключ даты отвечает за выбор кусков для чтения. Для каждого куска будет просканирован какой-то (хоть минимальный) объём записей, поэтому отсутствие условия на дату негативно влияет на latency.

    Если в первичном ключе есть timestamp с точностью до секунд, то указывать в нём что-то после timestamp бесполезно. То есть, первичный ключ будет заканчиваться на timestamp.
  • https://t.me/clickhouse_ru
  • @milovidov_an #22516 07:40 PM, 04 Aug 2017
    > parts до 1000

    Имеет смысл смотреть SELECT count() FROM system.parts WHERE active
    - условие на active выбирает куски, которые активные для запросов. Остальные куски некоторое время держатся после мержей, а потом удаляются.

    Или даже так:

    SELECT partition, count() FROM system.parts WHERE active GROUP BY partition ORDER BY partition
  • https://t.me/clickhouse_ru
    @343206394 #22517 07:41 PM, 04 Aug 2017
    я делал так
    SELECT bytes FROM system.parts WHERE active order by bytes desc limit 2000;
  • https://t.me/clickhouse_ru
    @343206394 #22518 07:43 PM, 04 Aug 2017
    Если в первичном ключе есть timestamp с точностью до секунд, то указывать в нём что-то после timestamp бесполезно. То есть, первичный ключ будет заканчиваться на timestamp.
    такое бесполезно?
    (zzz, timestamp, ddd, yyy)?
    А если дисперсия ddd огромна?
  • @milovidov_an #22519 07:44 PM, 04 Aug 2017
    Может быть полезна в очень редких случаях - если за одну секунду - для конкретного значения zzz, timestamp есть хотя бы миллионы записей. Только тогда условие на ddd позволит эффективно пропускать диапазоны в рамках конкретного zzz, timestamp.
  • https://t.me/clickhouse_ru
    @343206394 #22520 07:45 PM, 04 Aug 2017
    Ок, вроде все понятно
    Спсб
  • https://t.me/clickhouse_ru
    @343206394 #22521 07:45 PM, 04 Aug 2017
    Если хотите могу вернуть IP и будет возможность посмотреть что за баг был
    Только не сегодня плиз
  • У нас была похожая проблема, когда при установке нового сервера была помещена какая-то запись в /etc/hosts, потом она была не нужна, но осталась. И через некоторое время эта запись стала неверной.
  • https://t.me/clickhouse_ru
    @343206394 #22524 07:59 PM, 04 Aug 2017
    Пока детально непонятно но рецепт такое
    1. Если у вас растет очередь на вставки в реплики ( select * from system.replicas format Vertical » inserts_in_queue: 0)

    2. Если у вас растат неконтролируемо количество parts (SELECT partition, count() FROM system.parts WHERE active GROUP BY partition ORDER BY partition)
    3. Если у вас куча такого в логах

    2017.08.04 10:13:12.511175 [ 39 ] <Debug> default.measures (StorageReplicatedMergeTree): Fetching part 20161202_20161207_104_104_0 from /clickhouse/tables/02/measures/replicas/2
    2017.08.04 10:13:12.511362 [ 39 ] <Trace> ReadWriteBufferFromHTTP: Sending request to http://localhost:9009/?endpoint=DataPartsExchange:%2Fclickhouse%2Ftables%2F02%2Fmeasures%2Freplicas%2F2&part=20161202_20161207_104_104_0&shard=&compress=false
    2017.08.04 10:13:12.511506 [ 4079 ] <Trace> InterserverIOHTTPHandler-factory: HTTP Request for InterserverIOHTTPHandler-factory. Method: POST, Address: 127.0.0.1:32894, User-Agent: none
    2017.08.04 10:13:12.511534 [ 4079 ] <Trace> InterserverIOHTTPHandler: Request URI: ?endpoint=DataPartsExchange:%2Fclickhouse%2Ftables%2F02%2Fmeasures%2Freplicas%2F2&part=20161202_20161207_104_104_0&shard=&compress=false
    2017.08.04 10:13:12.519303 [ 4079 ] <Error> InterserverIOHTTPHandler: Code: 221, e.displayText() = DB::Exception: No interserver IO endpoint named DataPartsExchange:/clickhouse/tables/02/measures/replicas/2, e.what() = DB::Exception, Stack trace:

    0. clickhouse-server(StackTrace::StackTrace()+0x16) [0x29b2626]
    1. clickhouse-server(DB::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)+0x1f) [0x10b079f]
    2. clickhouse-server(DB::InterserverIOHTTPHandler::processQuery(Poco::Net::HTTPServerRequest&, Poco::Net::HTTPServerResponse&)+0xbc8) [0x10cdd28]
    3. clickhouse-server(DB::InterserverIOHTTPHandler::handleRequest(Poco::Net::HTTPServerRequest&, Poco::Net::HTTPServerResponse&)+0x4b) [0x10ce98b]
    4. clickhouse-server(Poco::Net::HTTPServerConnection::run()+0x2fe) [0x32bf69e]
    5. clickhouse-server(Poco::Net::TCPServerConnection::start()+0xf) [0x32b47af]
    6. clickhouse-server(Poco::Net::TCPServerDispatcher::run()+0x13b) [0x32babeb]
    7. clickhouse-server(Poco::PooledThread::run()+0xb7) [0x3525be7]
    8. clickhouse-server(Poco::ThreadImpl::runnableEntry(void*)+0xa5) [0x34f1c25]
    9. /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7f16979386ba]
    10. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7f1696f593dd]

    2017.08.04 10:13:12.530746 [ 39 ] <Error> DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 33, e.displayText() = DB::Exception: Cannot read all data, e.what() = DB::Exception, Stack trace:
  • https://t.me/clickhouse_ru
    @343206394 #22525 07:59 PM, 04 Aug 2017


    Vladimir Tretyakov, [04.08.17 12:13]
    0. clickhouse-server(StackTrace::StackTrace()+0x16) [0x29b2626]
    1. clickhouse-server(DB::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)+0x1f) [0x10b079f]
    2. clickhouse-server(DB::DataPartsExchange::Fetcher::fetchPartImpl(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)+0x1cc7) [0x2bb1cb7]
    3. clickhouse-server(DB::DataPartsExchange::Fetcher::fetchPart(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, bool)+0x76) [0x2bb2766]
    4. clickhouse-server(DB::StorageReplicatedMergeTree::fetchPart(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, unsigned long)+0x25a) [0x2a98b1a]
    5. clickhouse-server(DB::StorageReplicatedMergeTree::executeLogEntry(DB::ReplicatedMergeTreeLogEntry const&)+0x1bcf) [0x2a9b35f]
    6. clickhouse-server() [0x2a9d22d]
    7. clickhouse-server(DB::ReplicatedMergeTreeQueue::processEntry(std::function<std::shared_ptr<zkutil::ZooKeeper> ()>, std::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&, std::function<bool (std::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&)>)+0x4a) [0x2b263da]
    8. clickhouse-server(DB::StorageReplicatedMergeTree::queueTask()+0x150) [0x2a88930]
    9. clickhouse-server(DB::BackgroundProcessingPool::threadFunction()+0x3dc) [0x2b74edc]
    10. clickhouse-server() [0x36d9f1f]
    11. /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7f16979386ba]
    12. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7f1696f593dd]
    Смотрите что-то с именами или IP серверов
    Перепроверьте что ничего подозрительного нет в /etc/hosts что /etc/hostname прописанно правильно и в конфигах CH тоже все имена правильные.
  • https://t.me/clickhouse_ru
    @inv2004 #22526 08:04 PM, 04 Aug 2017
    Ok. А можно повтор вопроса тогда старого: window-join и подобного пока даже в далёких планах нет? Ну чтоб не ковыряться напрасно если вдруг.
  • Нет в планах до конца года.
  • https://t.me/clickhouse_ru
    @inv2004 #22528 08:11 PM, 04 Aug 2017
    Те в следующем году может уже будет обсуждение. Ясно, спасибо.
  • @pookieShmukie #22529 08:44 PM, 04 Aug 2017
    В этом вроде как update / delete планируется впилить
  • @pookieShmukie #22530 08:44 PM, 04 Aug 2017
    Судя по roadmap
  • https://t.me/clickhouse_ru
    @retardust #22531 09:27 PM, 04 Aug 2017
    Вот это было бы просто неоценимо
  • https://t.me/clickhouse_ru
    Тоже очень ждем. Но согласно роадмапу это вроде q1 2018
  • https://t.me/clickhouse_ru
    @inv2004 #22533 10:10 PM, 04 Aug 2017
    update / delete наверняка будут по партишенам. Сейчас тоже самое можно, но немного больше движений. После того как будет деление по дням - ещё проще.
  • 05 August 2017 (85 messages)
  • https://t.me/clickhouse_ru
    Подождем - увидим. Хотя конечно хотелось бы заранее узнать как оно планируется.
  • https://t.me/clickhouse_ru
    @BloodJazMan #22539 06:48 AM, 05 Aug 2017
    Всем привет, не сделал ли случайно кто нибудь уже какую нибудь систему у правления конфигами clickhouse ?
    ну вот типовая задача "добавить ноду в кластер"?
    там же надо везде прописывать в config.xml <remote_servers>? может это кто-то автоматизировал уже?
  • @pookieShmukie #22540 07:16 AM, 05 Aug 2017
    Произвольное партиционирование и update, delete строк и я готов буду поклоняться Алексею и команде )
  • https://t.me/clickhouse_ru
    Вот нам бы тоже именно такое. Хотя мы и просто на update/delete согласны. :)
  • @pookieShmukie #22542 07:20 AM, 05 Aug 2017
    У нас просто получается так, что факты мы вычисляем и периодически пишем в мускуль из-за отсутствия собственно обновления и удаления строк. У нас очень хитрая логика вычисления фактов и некоторые агрегации приходится делать в mysql, который к слову не очень хорошо себя ведет в этом направлении
  • https://t.me/clickhouse_ru
    Makefile)
  • https://t.me/clickhouse_ru
    каждый раз когда русскоязычный программист в русскоязычном чате импульсивно и неконструктивно включает sarcasm mode, в мире появляется еще 100 китайских программистов, которые в итоге таки напишут кривой и косой ИИ, который оставит детей именно этого программиста без средств к существованию, либо именно этого программиста без работы ;)
  • :D :D :D
  • https://t.me/clickhouse_ru
    это был не сарказм. Makefile может решить Ваши проблемы без написания дополнительного ПО
  • https://t.me/clickhouse_ru
    ну так то и обычный bash все эти проблемы решит, да, я даже знаю как, но знаете, как то за 20 лет устал уже как то дубасить все что вижу вокруг одним и тем же молотком, хочется какой нибудь более специфичный 3Д принтер
  • https://t.me/clickhouse_ru
    @BloodJazMan #22548 08:52 AM, 05 Aug 2017
    с другой стороны, если вы пришлете ссылку на github с примером Makefile который хотя бы приблизительно решает задачу "раскидать новый config.xml" на 10-20 хостов полученных из zookeeper, то буду благодарен
  • @lexa_work #22549 08:54 AM, 05 Aug 2017
    может тут всеж смотреть на что-то вроде ansible/puppet/chef?
  • @lexa_work #22550 08:54 AM, 05 Aug 2017
    мы делаем это с помощью ansible
  • https://t.me/clickhouse_ru
    вот прекрасно, это я хотел услышать. а вы случайно не публикуете роли для этого ansible для управления clickhouse ?
  • https://t.me/clickhouse_ru
    @BloodJazMan #22552 08:55 AM, 05 Aug 2017
    где нибудь в github?
    или там все "проектно-специфическое" оторвать не получится?
  • @lexa_work #22553 08:55 AM, 05 Aug 2017
    ды... пока не доводилось. не уверен что мои роли прям достойны общественного внимания в виде гитхаб репы
  • @lexa_work #22554 08:55 AM, 05 Aug 2017
    но если интерес есть...
  • @lexa_work #22555 08:56 AM, 05 Aug 2017
    вообще там никакой особой специфика CH нет
  • https://t.me/clickhouse_ru
    @BloodJazMan #22556 08:56 AM, 05 Aug 2017
    Интерес есть
  • @lexa_work #22557 08:56 AM, 05 Aug 2017
    и наше внутренней специфики нет
  • @lexa_work #22558 08:56 AM, 05 Aug 2017
    и есть еще что улучшать
  • @lexa_work #22559 08:56 AM, 05 Aug 2017
    но в общем вполне рабочее
  • @lexa_work #22560 08:56 AM, 05 Aug 2017
    сегодня постараюсь выложить тогда и закину сюда ссыль
  • https://t.me/clickhouse_ru
    @BloodJazMan #22561 08:58 AM, 05 Aug 2017
    ну почему нет?
    ну вот типичная задача "добавить ноду в кластер"
    она же требует чего то вроде
    1) катим роль на новую ноду, указав ей zookeeper
    2) ждем когда CH на новой ноде появится в Zookeper
    3) генерим по zookeper новый config.xml в части remote_servers
    4) раскатываем этот xml по всем нодам
    5) ждем когда CH на всех нодах перечитает конфиг (или шлем sighub ?)
  • @lexa_work #22562 09:00 AM, 05 Aug 2017
    ты хочешь прям роль по добавлению узла в кластер?
  • @lexa_work #22563 09:00 AM, 05 Aug 2017
    почему ты хочешь из зукипера брать конфиг?
  • @lexa_work #22564 09:00 AM, 05 Aug 2017
    не очень понимаю
  • @lexa_work #22565 09:00 AM, 05 Aug 2017
    почему не из текущего инвентори ansible
  • https://t.me/clickhouse_ru
    @BloodJazMan #22566 09:02 AM, 05 Aug 2017
    да, согласен, мысль более правильная юзать inventory ansible
    там же не обязательно чтобы в config.xml все хосты были "живыми", надо просто общую конфигурацию кластера генерть
  • https://t.me/clickhouse_ru
    @ihard #22567 09:27 AM, 05 Aug 2017
    подскажите зачем в кроне после установки clickhouse такая задача:
    */10 * * * * root /etc/init.d/clickhouse-server condstart 1>/dev/null 2>&1
  • @lexa_work #22568 09:56 AM, 05 Aug 2017
    как я понял, это такой вотчдог простой
  • @lexa_work #22569 09:56 AM, 05 Aug 2017
    который переподнимает CH если тот упал
  • https://t.me/clickhouse_ru
    @Alexey_VK #22570 10:02 AM, 05 Aug 2017
    Добрый день. Помогите, пожалуйста, с импортом.
    Импортирую TabSeparated таблицу с городами, выгруженными из MySQL.
    Встречаются Null-значения для столбца регионов (UInt32) и столбцов с их именами (String).
    В тексте импортируемого файла они как "\N". Как их загрузить?
    Может, можно как-то поддержку Null у столбцов указывать? Движок таблицы сейчас Log
    Возникает следующая ошибка:

    # zcat _cities.txt.gz | clickhouse-client —query="INSERT INTO geodata._cities_log FORMAT TabSeparated"
    Code: 27. DB::Exception: Cannot parse input: expected \t before: \\N\tМосква\t\\N\t\\N\tМосква\t\\N\t\\N\tМосква\t\\N\t\\N\tМосква\t\\N\t\\N\tМосква\t\\N\t\\N\tМосква\t\\N\t\\N\tМосква\t\\N\t\\N\tМосква\t\\N\t\\N\tМо▒: (at row 1)

    Row 1:
    Column 0, name: city_id, type: UInt32, parsed text: "1"
    Column 1, name: country_id, type: UInt32, parsed text: "1"
    Column 2, name: important, type: UInt8, parsed text: "1"
    Column 3, name: region_id, type: UInt32, ERROR: text "<BACKSLASH>N<TAB>Мос▒" is not like UInt32
  • https://t.me/clickhouse_ru
    @Alexey_VK #22571 10:13 AM, 05 Aug 2017
    ClickHouse вообще умеет Null ?
  • Можно, где то в тестах в репозитории кх есть пример с nullable колонками, но они еще в бете (последняя информация была такой). Точно не могу скинуть как сделать nullable, с телефонп не совсем удобно искать
  • https://t.me/clickhouse_ru
    Спасибо, Александр, будем посмотреть
  • @pookieShmukie #22575 10:16 AM, 05 Aug 2017
    Нашел
  • https://t.me/clickhouse_ru
    @Alexey_VK #22576 10:17 AM, 05 Aug 2017
    Синтаксис понял, спасибо большое!
  • @pookieShmukie #22577 10:17 AM, 05 Aug 2017
    Я лично нулы не использую, пишу 0 или пустую строку
  • https://t.me/clickhouse_ru
    Я явно указываю дефолты: для чисел 0, длядат - 0000-00-00 и т.п
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22579 10:42 AM, 05 Aug 2017
    Для колонок, где нет значений
  • https://t.me/clickhouse_ru
    @Alexey_VK #22580 10:46 AM, 05 Aug 2017
    Прокатило с Nullable(UInt32) и Nullable(String). А что, можно было при импорте указать, какое значение на какое менять?
  • https://t.me/clickhouse_ru
    @ihard ↶ Reply to #22569 #22581 10:47 AM, 05 Aug 2017
    Спасибо!
  • https://t.me/clickhouse_ru
    @ihard #22582 10:55 AM, 05 Aug 2017
    Подскажите по движку GraphiteMergeTree он удаляет старые данные которые по дате больше максимального retension или это руками нужно удалять патриции?
  • https://t.me/clickhouse_ru
    @BloodJazMan #22583 10:58 AM, 05 Aug 2017
    кто нибудь работал с этим драйвером
    https://github.com/kshvakov/clickhouse
    в кластере?

    там можно как нибудь сделать запрос на создание локальных таблиц в каждой ноде кластера?
    GitHub - ClickHouse/clickhouse-go: Golang driver for ClickHouse

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

  • https://t.me/clickhouse_ru
    @BloodJazMan #22584 10:59 AM, 05 Aug 2017
    просто драйвер от ROI-stat не умеет авторизацию... а драйвер от Кирила, похоже любой запрос пробрасывает только на одну ноду из кластера?
  • https://t.me/clickhouse_ru
    Для UInt - 0
    Для Date - 0000-00-00
    Для строк - ''
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22586 11:17 AM, 05 Aug 2017
    "а драйвер от Кирила, похоже любой запрос пробрасывает только на одну ноду из кластера" - чтобы запрос задействовал весь кластер, нужно делать его к Disturbed-таблице
  • https://t.me/clickhouse_ru
    и какой синтаксис для таких преобразований при импорте? в каком запросе указывается такое соответствие?
  • https://t.me/clickhouse_ru
    В коде, который генерирует данные
  • https://t.me/clickhouse_ru
    @Alexey_VK #22590 11:24 AM, 05 Aug 2017
    т.е. в коде MySQL ? чё-то не хочется
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22591 11:24 AM, 05 Aug 2017
    Тогда jdbc-драйвер не будет подставлять \N для пустых колонок
  • https://t.me/clickhouse_ru
    Опишите, как данные попадают из MySQL в CH
  • https://t.me/clickhouse_ru
    Они выгружаются в файл силами mysqldump с ключом —tab, что означает в ClickHouse TabSeparated values.
    Далее гзипуются и передаются на vps. И импортируются так
    zcat _cities.txt.gz | clickhouse-client —query="INSERT INTO geodata._cities_log FORMAT TabSeparated"
    Задача эта уже решена, если что, правильным созданием таблицы - с полями, позволяющими Null.
    Т.е. помощи уже пока не нужно.
    Сейчас проблема в том, что оперативки VPS у не хватает, так что буду скриптить разбиение данных на части.
    Далее вангуется проблема с переносом из Log в MergeTree, т.к. там не нужное доп.поле EventDate.
  • https://t.me/clickhouse_ru
    Хорошо. По поводу перехода на MergeTree - вообще нет никакого поля с датой?
  • https://t.me/clickhouse_ru
    да, нету. И функцией её не хочет ипортировать.
    Тренировался на регионах (их меньше) и такое не прокатило:
    INSERT INTO geodata._regions SELECT today() as EventDate, * FROM geodata._regions_log;
    таблицы отличаются только движком и отсутствием даты в _regions_log

    INSERT INTO geodata._regions SELECT
    today() AS EventDate,
    *
    FROM geodata._regions_log

    Ok.

    0 rows in set. Elapsed: 0.025 sec. Processed 3.72 thousand rows, 1.48 MB (150.20 thousand rows/s., 59.73 MB/s.)

    :)
  • https://t.me/clickhouse_ru
    @Alexey_VK #22596 11:41 AM, 05 Aug 2017
    при этом селект отдельно от инсерта - работает
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22597 11:42 AM, 05 Aug 2017
    Может попробовать сделать дефолт для EventDate
    https://clickhouse.yandex/docs/ru/query_language/queries.html#id2
    Типа такого

    CREATE TABLE ...

    (
    EventDate DEFAULT today()
    ...
    ) Engine=MergeTree(...)
    ?
    А при интсерте в запросе с INSERT INTO указать явно все столбцы, без EventDate
  • https://t.me/clickhouse_ru
    @Alexey_VK #22598 11:43 AM, 05 Aug 2017
    последнее пробовал - результат такой же. А пересоздать таблицу попробую, спасибо
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22599 11:44 AM, 05 Aug 2017
    Правда могут возникнуть проблемы с партицирование, поскольку при ручной заливке данных у всех строк будет одна и та же дата
  • https://t.me/clickhouse_ru
    @Alexey_VK #22600 11:44 AM, 05 Aug 2017
    я ещё не понял, что такое партицирование, поэтому пока не вижу проблем)))
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22601 11:48 AM, 05 Aug 2017
    Почитайте, зачем нужно поле EventDate

    https://clickhouse.yandex/docs/ru/table_engines/mergetree.html
    , возможно при небольшом размере данных, один большой "кусочек" не будет проблемой
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22602 11:50 AM, 05 Aug 2017
    Вот ещё на тему партиций
    https://clickhouse.yandex/docs/ru/query_language/queries.html?highlight=%D0%BF%D0%B0%D1%80%D1%82%D0%B8%D1%86%D0%B8%D1%8F#id5
  • https://t.me/clickhouse_ru
    @Alexey_VK #22603 11:52 AM, 05 Aug 2017
    Спасибо. В первом описании ещё и слово "семплирование" используется, поэтому слово "партицирование" пока для меня недоступно) Я как-то с этими словами в музыке больше знаком. Боюсь, придётся исходники читать.
  • https://t.me/clickhouse_ru
    @Alexey_VK #22605 02:19 PM, 05 Aug 2017
    Добрый день. А как так получается, что по айди ищет, а по строке нет ( = и LIKE ) ? Значение строки при этом называет идентификатором. Что я делаю не так?

    select city_id, name_ru from _cities_log where city_id=1 limit 1

    SELECT
    city_id,
    name_ru
    FROM _cities_log
    WHERE city_id = 1
    LIMIT 1

    ┌─city_id─┬─name_ru─┐
    │ 1 │ Москва │
    └─────────┴─────────┘

    1 rows in set. Elapsed: 0.017 sec. Processed 65.54 thousand rows, 2.06 MB (3.77 million rows/s., 118.61 MB/s.)

    :) select city_id, name_ru from _cities_log where name_ru="Москва" limit 1

    SELECT
    city_id,
    name_ru
    FROM _cities_log
    WHERE name_ru = Москва
    LIMIT 1

    Received exception from server:
    Code: 47. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Unknown identifier: Москва.

    0 rows in set. Elapsed: 0.031 sec.
  • https://t.me/clickhouse_ru
    Кавычки должны быть одинарные

    select city_id, name_ru from _cities_log where name_ru='Москва' limit 1
  • https://t.me/clickhouse_ru
    @Alexey_VK #22607 02:23 PM, 05 Aug 2017
    получилось, спасибо!
  • Create table on cluster
  • @pookieShmukie #22609 04:11 PM, 05 Aug 2017
    Кх добавили ddl
  • https://t.me/clickhouse_ru
    @klimenko_aa #22610 04:21 PM, 05 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @ddpechkin #22611 04:21 PM, 05 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @Har01d #22612 05:11 PM, 05 Aug 2017
    Всем привет! Столкнулись с проблемой — не можем найти решение. Стал зависать один запрос с FINAL по CollapsingMergeTree, доходит до 9% с хорошей скоростью и всё. KILL QUERY он не убивается, по таймауту не отлетает, так и висит. Спасает только рестарт сервера. В err.log ничего нет, куда копать? Без FINAL он выполняется.
  • @maks_elizarov #22613 05:20 PM, 05 Aug 2017
    Joined.
  • Это интересно. Какая версия сервера?
  • @pookieShmukie #22615 06:02 PM, 05 Aug 2017
    Кстати, final не меняет состояние данных в таблице? Я имею ввиду он не как optimize срабатывает?
  • @milovidov_an #22616 06:08 PM, 05 Aug 2017
    Не меняет.
  • https://t.me/clickhouse_ru
    @Har01d #22617 06:10 PM, 05 Aug 2017
    1.1.54262
  • https://t.me/clickhouse_ru
    @Har01d #22618 06:11 PM, 05 Aug 2017
    Есть ещё сервер 1.1.54198, там почти такие же данные, такой проблемы нет.
  • https://t.me/clickhouse_ru
    @Har01d #22619 06:14 PM, 05 Aug 2017
    Если запрос немного упростить, то он вообще на 0% встаёт
  • @milovidov_an #22620 06:16 PM, 05 Aug 2017
    Да, это проблема той testing версии. Можете обновить на последний testing и проблема исправится.
  • https://t.me/clickhouse_ru
    @Har01d #22621 06:26 PM, 05 Aug 2017
    Спасибо, попробуем :)
  • https://t.me/clickhouse_ru
    @kshvakov #22622 06:44 PM, 05 Aug 2017
    @milovidov_an , добрый вечер. Вот есть желание добавить в драйвер поддержку сжатия, можно "на пальцах" обяснить как оно работает, т.е. что писать/читать ?
  • @milovidov_an #22623 07:00 PM, 05 Aug 2017
    Насколько я помню, сжимаются блоки с данными Native формата, а всё остальное (всякие номера пакетов и т. п.) передаётся без сжатия.

    Сжатые данные устроены так. Они представляют собой набор сжатых фреймов. Каждый фрейм имеет следующий вид: чексумма (16 байт), идентификатор алгоритма сжатия (1 байт), размер сжатых данных (4 байта, little endian, размер не включает в себя чексумму, но включает в себя остальные 9 байт заголовка), размер несжатых данных (4 байта, little endian), затем сжатые данные. Идентификатор алгоритма: 0x82 - lz4, 0x90 - zstd. Чексумма - CityHash128 из CityHash версии 1.0.2, вычисленный от сжатых данных с учётом 9 байт заголовка.

    См. CompressedReadBufferBase, CompressedWriteBuffer,
    utils/compressor, TCPHandler.
  • https://t.me/clickhouse_ru
    @kshvakov #22624 07:04 PM, 05 Aug 2017
    Спасибо большое
  • 06 August 2017 (34 messages)
  • @ngnixx #22628 04:17 AM, 06 Aug 2017
    Joined.
  • @skvazh #22630 06:49 AM, 06 Aug 2017
    Joined.
  • @pookieShmukie #22631 08:41 AM, 06 Aug 2017
    А кто подскажет как через insert values записать Nested? Просто как массив передавать?
    Типа [[val, val], [val, val]]?
  • @pookieShmukie #22632 08:53 AM, 06 Aug 2017
    Разобрался :)
  • https://t.me/clickhouse_ru
    @Vagabondan #22633 09:38 AM, 06 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @umaxfun #22634 01:40 PM, 06 Aug 2017
    (Оффтоп) А кто-то настраивал интеграцию метрики с КХ? У меня вообще никак не заводится :( Что я могу делать не так? https://github.com/yndx-metrika/logs_api_integration/issues/9
    Другая ошибка а разборе данных · Issue #9 · yndx-metrika/logs_api_integration

    Добрый день, Столкнулись с проблемой: при загрузке КХ не может разобрать входные данные. DB::Exception: Cannot parse input: expected \n before: \tym:s:date\tym:s:dateTime\tym:s:goalsID\tym:s:isNewU...

  • https://t.me/clickhouse_ru
    @alanbondarchuk #22635 01:42 PM, 06 Aug 2017
    ну только вчера пробовал не было проблем, мб версия кликхауса влияет?
  • https://t.me/clickhouse_ru
    @umaxfun #22636 01:44 PM, 06 Aug 2017
    у меня 1.1.54164 на дев тачке
  • https://t.me/clickhouse_ru
    @alanbondarchuk #22637 01:44 PM, 06 Aug 2017
    python 2.7.10
    ClickHouse 1.1.54245
  • https://t.me/clickhouse_ru
    @umaxfun #22638 01:45 PM, 06 Aug 2017
    попробую обновиться
  • https://t.me/clickhouse_ru
    @umaxfun #22639 01:48 PM, 06 Aug 2017
    Причем структуру скрипт норм создал, а данные не хочет грузить
  • https://t.me/clickhouse_ru
    @ascher #22640 02:51 PM, 06 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @umaxfun #22641 02:53 PM, 06 Aug 2017
    скачал кусок с метрики запросом wget https://api-metrika.yandex.ru/management/v1/counter/3199561/logrequest/194328/part/1/download?auth_token=xxx -O c1, загружается руками cat c1 | sed "1d" | clickhouse-client --query="insert into qwe1.hits_all FORMAT TabSeparated" :) видимо вопрос к скрипту загрузки
  • @pookieShmukie #22642 06:47 PM, 06 Aug 2017
    При вставке CSV форматом получаю ошибку:

    Cannot parse quoted string: expected opening quote: (at row 1)
    Row 1:
    Column 0, name: EventDate, type: Date, parsed text: "<DOUBLE QUOTE>2017-06-15<DOUBLE QUOTE>"
    Column 1, name: EventTime, type: DateTime, parsed text: "<DOUBLE QUOTE>2017-06-15 23:00:30<DOUBLE QUOTE>"
    Column 2, name: EventType, type: String, parsed text: "<DOUBLE QUOTE>EntitiesAggregationStarted<DOUBLE QUOTE>"
    Column 3, name: Tags.Name, type: Array(String), parsed text: "<DOUBLE QUOTE>[<SINGLE QUOTE>CourseId<SINGLE QUOTE>, <SINGLE QUOTE>Facts<SINGLE QUOTE>]<DOUBLE QUOTE>"
    Column 4, name: Tags.Value, type: Array(String), parsed text: <EMPTY>ERROR

    Вот собственно строка:

    "2017-06-15","2017-06-15 23:00:30","EntitiesAggregationStarted","['CourseId', 'Facts']","['2', ['result','progress']]"

    Я правильно понял, что почему то КХ не может спарсить открывающиеся кавычки? Только вопрос почему, если все обернуто кавычками.
  • https://t.me/clickhouse_ru
    @ierusalimcom #22643 06:50 PM, 06 Aug 2017
    Кавычки двойные нужны а не одинарные
  • @pookieShmukie #22644 06:52 PM, 06 Aug 2017
    Т.е. везде вообще должны быть двойные?
  • @pookieShmukie #22645 06:52 PM, 06 Aug 2017
    У меня одинарные внутри двойных
  • @pookieShmukie #22646 06:52 PM, 06 Aug 2017
    "['2', ['result','progress']]" - вот например
  • https://t.me/clickhouse_ru
    @ierusalimcom #22647 06:52 PM, 06 Aug 2017
    Там кавычки не взаимозаменяемые
  • @pookieShmukie #22648 06:53 PM, 06 Aug 2017
    Что-то какой то бред. Если у меня будет там формат колонки String в котором одинарные кавычки, то я их не смогу вписать что ли? )
  • https://t.me/clickhouse_ru
    @ierusalimcom #22649 06:55 PM, 06 Aug 2017
    Может заслэшить?
  • @milovidov_an #22650 07:04 PM, 06 Aug 2017
    ['2', ['result','progress']]
    - это получается не Array(String), так как в массиве разные типы элементов - сначала идёт строка '2', а потом ещё один массив.
  • Блин, вот дурень. Сори за беспокойство! Сейчас поправлю и проверю, спасибо!
  • @425492335 #22652 08:01 PM, 06 Aug 2017
    Joined.
  • @vladislavadv #22653 08:41 PM, 06 Aug 2017
    Всем привет.

    А подскажите, плиз, задача - сделать топ сайтов по посещаемости и узнать позицию нужного сайта в этом топе.

    select site,count() as cnt,if(site='aaa.ru',1,0) as outsite from table group by site order by cnt

    так получаем топ.

    А как можно узнать позицию, допустим сайта aaa.ru?

    В голову приходят только варианты с join с system.numbers, но что указать в using не понятно.

    Переменные в КХ, вроде как отсутствуют.

    Получается единственный вариант - выгрузка всего топа на клиент и там определение позиции?
  • @vladislavadv #22654 08:48 PM, 06 Aug 2017
    О! Нашел rowNumberInAllBlocks, похоже то что нужно
  • https://t.me/clickhouse_ru
    @maxlapshin #22655 08:48 PM, 06 Aug 2017
    о, точняк
  • @vladislavadv #22656 09:10 PM, 06 Aug 2017
    Теперь интереснее задача.
    А как получить не только позицию, а 3 сайты выше в топе и 3 ниже?

    Пока только такое в голову приходит...

    https://pastebin.com/DBVnQVNZ

    Правильно ли я понимаю, что в этом случае нагрузка будет х3, по сравнению, с вариантом выгрузки всего топа на клиент?
  • https://t.me/clickhouse_ru
    @maxlapshin #22657 09:11 PM, 06 Aug 2017
    мне кажется, что уже разумно как-то с блоками поиграть
  • @vladislavadv #22658 09:13 PM, 06 Aug 2017
    т.е. в сторону runningAccumulate?
  • @milovidov_an #22659 09:13 PM, 06 Aug 2017
    Я бы лучше на стороне клиента сделал простую пост-обработку.
  • @vladislavadv #22660 09:14 PM, 06 Aug 2017
    топ 3м записей получается, мне кажется по сети будет больно тянуть такой объем
  • @milovidov_an #22661 09:16 PM, 06 Aug 2017
    Сохраните топ во временную таблицу. А потом уже несложный запрос будет.
  • @vladislavadv #22662 09:22 PM, 06 Aug 2017
    О! Отличный план. Спасибо!
    Что-то был уверен, что в clickhouse еще нет сессий
  • 07 August 2017 (88 messages)
  • https://t.me/clickhouse_ru
    @nonono_no #22667 03:24 AM, 07 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @MakhmutovDev #22669 04:21 AM, 07 Aug 2017
    Привет всем, как вы обходитесь без autoincrement? имеете внешний счетчик? или тупо SELECT MAX(id) from t перед BATCH insert :)
  • https://t.me/clickhouse_ru
    @valyala ↶ Reply to #22669 #22670 05:17 AM, 07 Aug 2017
    В наших таблицах нет колонки id
  • https://t.me/clickhouse_ru
    @MakhmutovDev #22671 05:18 AM, 07 Aug 2017
    может у других есть?
  • @milovidov_an #22672 05:19 AM, 07 Aug 2017
    У нас есть столбец с id, но он не autoincrement, а некий идентификатор, генерирующийся снаружи на разных машинах независимо.
  • https://t.me/clickhouse_ru
    @MakhmutovDev #22673 05:29 AM, 07 Aug 2017
    random int64?)
  • https://t.me/clickhouse_ru
    @MakhmutovDev #22674 05:30 AM, 07 Aug 2017
    а понял
  • https://t.me/clickhouse_ru
    @MakhmutovDev #22675 05:30 AM, 07 Aug 2017
    считай просто внешний счетчик..
  • https://t.me/clickhouse_ru
    @MakhmutovDev #22676 05:33 AM, 07 Aug 2017
    во время ETL думал изменять логику equality сущности
  • https://t.me/clickhouse_ru
    @MakhmutovDev #22677 05:34 AM, 07 Aug 2017
    и соотвественно в таком случаи я уже не смогу опираться на айди из исходной системы
  • https://t.me/clickhouse_ru
    @MakhmutovDev #22678 05:37 AM, 07 Aug 2017
    так как CH это не транзакционная БД, то видимо надо писать только с одного потока если использовать workaround SELECT MAX(id) from t?
  • https://t.me/clickhouse_ru
    @MakhmutovDev #22679 05:37 AM, 07 Aug 2017
    чтобы исключить конфликт по id
  • @milovidov_an #22680 05:41 AM, 07 Aug 2017
    MAX(id) FROM t будет медленно работать - full scan.

    Есть несколько вариантов, как сделать инкрементный идентификатор:
    1. Хранить счётчик в отдельной системе (например, в Redis);
    2. На разных серверах, которые записывают данные, иметь смещение и множитель, и генерировать идентификаторы с учётом этого;
  • https://t.me/clickhouse_ru
    @inv2004 ↶ Reply to #22680 #22681 05:42 AM, 07 Aug 2017
    А если id - в primary key первый?
  • @milovidov_an #22682 05:42 AM, 07 Aug 2017
    Не поможет - нет оптимизации для такого случая.
  • https://t.me/clickhouse_ru
    @inv2004 #22683 05:43 AM, 07 Aug 2017
    Max(...) не смотрит на индексы? Надо issue завести наверное.
  • https://t.me/clickhouse_ru
    @MakhmutovDev #22684 05:44 AM, 07 Aug 2017
    Спасибо за полезную информацию
  • Да, не смотрит.
  • https://t.me/clickhouse_ru
    Там типы полей для версии браузера криво заданы
  • Я из файла вставляю данные
  • https://t.me/clickhouse_ru
    в файле версия браузера 21.0 а для нее в python коде например заведен INT

    - "ym:s:browserMajorVersion": "UInt16",
    - "ym:s:browserMinorVersion": "UInt16",
    + "ym:s:browserMajorVersion": "String",
    + "ym:s:browserMinorVersion": "String",
  • https://t.me/clickhouse_ru
    @BloodJazMan #22690 07:58 AM, 07 Aug 2017
    ch_types.json
    смотрите
  • Вы наверное меня с кем то спутали :) Я не использую python и ничего связанного с логами метрики :)
  • https://t.me/clickhouse_ru
    @qweran ↶ Reply to #22691 #22692 08:00 AM, 07 Aug 2017
    Зато у тебя были проблемы с репликацией) как в итоге решил вопрос? Прописал хостнейм вместо айпишников?
  • У меня была проблема с тем, что нода КХ биндилась на локальный хостнейм, а в конфиге были прописаны айпишники и из-за этого какая то фигня была в ЗК и самом КХ.
  • @pookieShmukie #22695 08:30 AM, 07 Aug 2017
    А так, да, прописал хостнеймы и настроил зону просто, что бы серевра друг о друге знали.
  • https://t.me/clickhouse_ru
    @qweran ↶ Reply to #22694 #22696 08:30 AM, 07 Aug 2017
    Да. Вчера с таким же столкнулся.
  • @pookieShmukie #22697 08:33 AM, 07 Aug 2017
    Была подобная проблема у Виталия Третьякова, но у него была проблема накапливания тасков репликации и мерджи проходили очень медленно. Прописывание хостнеймов в конфигах помогло решить проблему.
  • @MolchanovAV #22698 09:00 AM, 07 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @qweran ↶ Reply to #22697 #22699 09:14 AM, 07 Aug 2017
    Спасибо. Почитал.
  • @pookieShmukie #22701 09:26 AM, 07 Aug 2017
    SegFault, здравствуйте! :)
  • @pookieShmukie #22702 09:26 AM, 07 Aug 2017
    2017.08.07 12:20:02.827582 [ 2011721 ] <Error> BaseDaemon: ########################################
    2017.08.07 12:20:02.827603 [ 2011721 ] <Error> BaseDaemon: (from thread 57) Received signal Segmentation fault (11).
    2017.08.07 12:20:02.827608 [ 2011721 ] <Error> BaseDaemon: Address: NULL pointer.
    2017.08.07 12:20:02.835943 [ 2011721 ] <Error> BaseDaemon: 1. clickhouse-server(DB::Context::addExternalTable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<DB::IStorage>)+0x22e) [0x298bd1e]
    2017.08.07 12:20:02.835950 [ 2011721 ] <Error> BaseDaemon: 2. clickhouse-server(DB::TCPHandler::receiveData()+0x3ce) [0x10cb5fe]
    2017.08.07 12:20:02.835955 [ 2011721 ] <Error> BaseDaemon: 3. clickhouse-server(DB::TCPHandler::receivePacket()+0x1e1) [0x10cb9f1]
    2017.08.07 12:20:02.835961 [ 2011721 ] <Error> BaseDaemon: 4. clickhouse-server(DB::TCPHandler::readData(DB::Settings const&)+0x1a9) [0x10cbd79]
    2017.08.07 12:20:02.835966 [ 2011721 ] <Error> BaseDaemon: 5. clickhouse-server(DB::TCPHandler::runImpl()+0x7ea) [0x10cca1a]
    2017.08.07 12:20:02.835976 [ 2011721 ] <Error> BaseDaemon: 6. clickhouse-server(DB::TCPHandler::run()+0x2b) [0x10cd45b]
    2017.08.07 12:20:02.835981 [ 2011721 ] <Error> BaseDaemon: 7. clickhouse-server(Poco::Net::TCPServerConnection::start()+0xf) [0x32c6a3f]
    2017.08.07 12:20:02.835986 [ 2011721 ] <Error> BaseDaemon: 8. clickhouse-server(Poco::Net::TCPServerDispatcher::run()+0x13b) [0x32cce7b]
    2017.08.07 12:20:02.835991 [ 2011721 ] <Error> BaseDaemon: 9. clickhouse-server(Poco::PooledThread::run()+0xb7) [0x3537ee7]
    2017.08.07 12:20:02.835996 [ 2011721 ] <Error> BaseDaemon: 10. clickhouse-server(Poco::ThreadImpl::runnableEntry(void*)+0xa5) [0x3503f25]
    2017.08.07 12:20:02.836001 [ 2011721 ] <Error> BaseDaemon: 11. /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7f40369d46ba]
  • @pookieShmukie #22703 09:27 AM, 07 Aug 2017
    Сделал DLL на создание реплицируемой таблицы и на двух нодах вот такая штука вылезла
  • @pookieShmukie #22704 09:27 AM, 07 Aug 2017
    Помог рестарт сервера
  • @pookieShmukie #22705 09:27 AM, 07 Aug 2017
    Причем с этим сегфолтом сервер запущен, но приконнектиться не дает
  • https://t.me/clickhouse_ru
    @Civiloid #22706 09:27 AM, 07 Aug 2017
    Тут точно сразу версию кх спросят
  • @pookieShmukie #22707 09:28 AM, 07 Aug 2017
    Причем у меня 8 серверов и всегда на разных такая фигня
  • @pookieShmukie #22708 09:28 AM, 07 Aug 2017
    Версия 1.1.54246
  • @pookieShmukie #22709 09:30 AM, 07 Aug 2017
    Проблема возможно в том, что таблица уже существует и как то некорректно эксепшен обрабатывается
  • @pookieShmukie #22710 09:32 AM, 07 Aug 2017
    И вот опять такая петрушка :)

    CREATE TABLE statements_log ON CLUSTER statements AS r_statements_log ENGINE = Distributed(statements, cursometr, r_statements_log, rand())

    И опять ноды отваливаются
  • @pookieShmukie #22711 09:33 AM, 07 Aug 2017
    Только теперь ошибка другая

    2017.08.07 12:30:55.692625 [ 501 ] <Error> BaseDaemon: ########################################
    2017.08.07 12:30:55.692670 [ 501 ] <Error> BaseDaemon: (from thread 434) Received signal Segmentation fault (11).
    2017.08.07 12:30:55.692869 [ 501 ] <Error> BaseDaemon: Address: 0x31
    2017.08.07 12:30:55.705141 [ 501 ] <Error> BaseDaemon: 1. clickhouse-server(std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<DB::IStorage> >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<DB::IStorage> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<DB::IStorage> > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<DB::IStorage> > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0xa7) [0x229a6c7]
    2017.08.07 12:30:55.705157 [ 501 ] <Error> BaseDaemon: 2. clickhouse-server(DB::ProcessList::addTemporaryTable(DB::ProcessListElement&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<DB::IStorage>)+0x264) [0x2942d74]
    2017.08.07 12:30:55.705167 [ 501 ] <Error> BaseDaemon: 3. clickhouse-server(DB::Context::addExternalTable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<DB::IStorage>)+0x22e) [0x298bd1e]
    2017.08.07 12:30:55.705191 [ 501 ] <Error> BaseDaemon: 4. clickhouse-server(DB::TCPHandler::receiveData()+0x3ce) [0x10cb5fe]
    2017.08.07 12:30:55.705197 [ 501 ] <Error> BaseDaemon: 5. clickhouse-server(DB::TCPHandler::receivePacket()+0x1e1) [0x10cb9f1]
    2017.08.07 12:30:55.705203 [ 501 ] <Error> BaseDaemon: 6. clickhouse-server(DB::TCPHandler::readData(DB::Settings const&)+0x1a9) [0x10cbd79]
    2017.08.07 12:30:55.705209 [ 501 ] <Error> BaseDaemon: 7. clickhouse-server(DB::TCPHandler::runImpl()+0x7ea) [0x10cca1a]
    2017.08.07 12:30:55.705214 [ 501 ] <Error> BaseDaemon: 8. clickhouse-server(DB::TCPHandler::run()+0x2b) [0x10cd45b]
    2017.08.07 12:30:55.705220 [ 501 ] <Error> BaseDaemon: 9. clickhouse-server(Poco::Net::TCPServerConnection::start()+0xf) [0x32c6a3f]
    2017.08.07 12:30:55.705225 [ 501 ] <Error> BaseDaemon: 10. clickhouse-server(Poco::Net::TCPServerDispatcher::run()+0x13b) [0x32cce7b]
    2017.08.07 12:30:55.705229 [ 501 ] <Error> BaseDaemon: 11. clickhouse-server(Poco::PooledThread::run()+0xb7) [0x3537ee7]
    2017.08.07 12:30:55.705236 [ 501 ] <Error> BaseDaemon: 12. clickhouse-server(Poco::ThreadImpl::runnableEntry(void*)+0xa5) [0x3503f25]
    2017.08.07 12:30:55.705240 [ 501 ] <Error> BaseDaemon: 13. /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7f6b1fb0a6ba]
  • @pookieShmukie #22712 09:33 AM, 07 Aug 2017
    А через apt обновляться безопасно? Вроде бы недавно была какая то проблема со сломанным пакетом
  • https://t.me/clickhouse_ru
    Перед выполнением команды, не проверяли, есть ли на всех нодах таблица custometr?
  • @pookieShmukie #22714 09:37 AM, 07 Aug 2017
    Да, это продакшен кластер
  • @pookieShmukie #22715 09:37 AM, 07 Aug 2017
    Везде есть, причем после перезапуска сервера КХ на ноде запрос проходит, но отваливается на других нодах :) Рандомно причем и всегда только на двух нодах из разных шардов
  • https://t.me/clickhouse_ru
    @raspavel #22716 11:36 AM, 07 Aug 2017
    Привет! Какой каноничный способ записи в питоне большого pandas.DataFrame в КХ? Просто разбивать на куски и отправлять post запросом?
  • @vstakhov #22717 11:38 AM, 07 Aug 2017
    у меня выходило быстрее сконвертить это в csv и пайпом отправить через clickhouse-client
  • @vstakhov #22718 11:38 AM, 07 Aug 2017
    не претендую, впрочем, на каноничность
  • https://t.me/clickhouse_ru
    @miptgirl ↶ Reply to #22716 #22719 11:38 AM, 07 Aug 2017
    Привет, я обычно разбиваю на куски по 10-100К строк и заливаю.
  • @vstakhov #22720 11:39 AM, 07 Aug 2017
    типа, df.to_csv(p.stdin)
  • @vstakhov #22721 11:42 AM, 07 Aug 2017
    проблема в заливке по http была в ужасной неэффективности перехода pandas -> python string
  • @mrmnightt #22722 12:31 PM, 07 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @Denchik2007 #22723 12:42 PM, 07 Aug 2017
    ни у кого подобного канала по hive нет?)
  • https://t.me/clickhouse_ru
    @alexfed90 #22724 12:49 PM, 07 Aug 2017
    тоже +1 к hive каналу
  • https://t.me/clickhouse_ru
    @alexfed90 #22725 12:49 PM, 07 Aug 2017
    может сделаем его тогда?)
  • https://t.me/clickhouse_ru
    @finio #22726 12:52 PM, 07 Aug 2017
    Link

    Global community around Data / Artificial Intelligence / Machine Learning

  • https://t.me/clickhouse_ru
    @finio #22727 12:53 PM, 07 Aug 2017
    есть чатик датасаентологов
  • https://t.me/clickhouse_ru
    это не то)
  • https://t.me/clickhouse_ru
    @alexfed90 #22729 01:11 PM, 07 Aug 2017
    Ребята, а где можно увидеть что в кликхаусе добавили алиасы? какие-то новости есть где-то?
  • https://t.me/clickhouse_ru
    @alexfed90 #22730 01:12 PM, 07 Aug 2017
    https://clickhouse.yandex/docs/ru/query_language/queries.html?highlight=%D0%B0%D0%BB%D0%B8%D0%B0%D1%81
    тут только про столбец почему-то упоминание
  • https://t.me/clickhouse_ru
    @orantius #22731 01:17 PM, 07 Aug 2017
    добавили алиасы чего?
  • https://t.me/clickhouse_ru
    @alexfed90 #22732 01:21 PM, 07 Aug 2017
    select * from table t;
  • @f1yegor #22733 01:23 PM, 07 Aug 2017
    clickhouse-scala-client released at sonatype https://oss.sonatype.org/content/repositories/public/com/crobox/
  • @danton0v #22734 01:24 PM, 07 Aug 2017
    Изменения с версии 1.1.54236 до 1.1.54244
    Новые возможности:
    * Распределённые DDL (например, CREATE TABLE ON CLUSTER)
    * Реплицируемый запрос ALTER TABLE CLEAR COLUMN IN PARTITION
    * Движок таблиц Dictionary (доступ к данным словаря в виде таблицы)
    * Движок баз данных Dictionary (в такой базе автоматически доступны Dictionary-таблицы для всех подключённых внешних словарей)
    * Возможность проверки необходимости обновления словаря путём отправки запроса в источник
    * Qualified имена столбцов
    * Квотирование идентификаторов двойными кавычками
    * Сессии в HTTP интерфейсе
    * Запрос OPTIMIZE Replicated таблицы теперь можно выполнять не только на лидере
  • @danton0v ↶ Reply to #22729 #22735 01:25 PM, 07 Aug 2017
    вот новость
  • @danton0v #22736 01:25 PM, 07 Aug 2017
    это называется "Qualified имена столбцов"
  • https://t.me/clickhouse_ru
    @alexfed90 #22737 01:25 PM, 07 Aug 2017
    спасибо
  • @f1yegor #22738 01:28 PM, 07 Aug 2017
    dictionary engine/tables в документацию еще не попали?
  • https://t.me/clickhouse_ru
    @shuttie #22739 02:07 PM, 07 Aug 2017
    Joined.
  • @pookieShmukie #22740 03:35 PM, 07 Aug 2017
    А поверх дикшенари движка можно агрегации проводить? ) пробовал кто?
  • @r_v_tch #22741 05:02 PM, 07 Aug 2017
    Joined.
  • @pookieShmukie #22742 06:27 PM, 07 Aug 2017
    А при использовании движка Dictionary в качестве таблицы и последующие выборки данных из этой таблицы производят чтение из внешнего словаря каждый раз при запросе в таблицы? Или данные как то кешируются?
  • @milovidov_an #22743 06:28 PM, 07 Aug 2017
    Кэшируются во всех случаях.
    Для flat, hashed словарей - читаются данные из оперативки.
    Для cached словарей - тоже, при чем, читается ровно то, что находится в кэше, а не все данные из источника.
  • @pookieShmukie #22744 06:29 PM, 07 Aug 2017
    Супер. Но все равно словарь может работать медленней чем "источник", если рассматривать MySQL в качестве источника.
  • @pookieShmukie #22745 06:29 PM, 07 Aug 2017
    Просто например простой запрос на avg по таблице в MySQL работает в 3 раза быстрее. Это связано с тем, что все таки данные в один поток из кеша читаются?
  • @kochetovnicolai #22746 06:43 PM, 07 Aug 2017
    Одной из причин может быть проблема с промахами в кеше. Если кратко, запрос работает в 2 этапа: 1) собирает все ключи в текущем кеше и 2) делает запросы для пачки ключей.

    Если между этими этапами некоторые ключи выгрузились из кеша, произойдет повторное обращение м MySQL.
  • Не совсем понял про второй запрос. Например я делаю запрос select * from test (где test это словарь) и получается будет запрос в MySQL все равно происходить, что бы проверить все ли ключи на месте?
  • @kochetovnicolai #22748 06:53 PM, 07 Aug 2017
    запрос к MySQL будет происходить, если в кеше перестали быть некоторые ключи. Если из кеша ничего не выгрузилось между 1) и 2), то запросов не будет
  • Ааа, так понятней )а чисто теоретически есть смысл использовать такие костыли для агрегации небольших таблиц в которых 2-5 миллионов строк и есть ли возможная деградация скорости выполнения запроса при увеличении размера словаря?
  • @kochetovnicolai #22750 06:59 PM, 07 Aug 2017
    Деградация скорости, безусловно, возможна :) Чем больше словарь, тем чаще будут промахи в кеше. В целом, движок Dictionary изначально сделан для отладочных целей.
  • @pookieShmukie #22751 07:03 PM, 07 Aug 2017
    Просто у нас такой кейс, что факты приходится вычислять из сырых данных в силу определенной логики, после вычисления фактов уже делается агрегация по посчитанным фактам (строятся отчеты), а в силу того, что с апдейтами пока проблема в КХ, приходится использовать не совсем подходящие для этого инструменты. Вот я и подумал, смастерить костыль для агрегации внутри КХ, но данные брать из словарей :) Видимо это безсмысленно. Хотя, безусловно, я думаю запросы сложнее чем select avg(attempts) будут в КХ работать быстрее чем в MySQL.
  • @pookieShmukie #22752 07:04 PM, 07 Aug 2017
    Я думаю поиграться с ReplacingMergeTree в качестве таблицы с фактами (конечными) и после пересчета фактов уже записывать новые данные в таблицу. У нас сейчас не так много строк с посчитанными фактами, поэтому я думаю можно использовать FINAL, учитывая, что все таки 8 серверов в кластере.
  • @pookieShmukie #22753 07:07 PM, 07 Aug 2017
    Исходных данных по которым считаются факты порядка миллиарда событий. После поступления новых событий, мы пересчитываем факты (например прогресс изучения дистанционного курса, который считается по дереву и может иметь еще средне взвешенные, или кол-во успешных попыток прохождения теста с учетом начала попытки и времени окончания и это все по разным таблицам лежит, что в конечном счете джоинится и агрегируется)
  • У нас сейчас есть похожая задача - возможность подключения внешних таблиц напрямую (CREATE TABLE ... ENGINE = MySQL или табличная функция: SELECT ... FROM mysql(...)). Эту задачу сейчас делает коллега из другого отдела ради эксперимента.
  • @pookieShmukie #22755 07:12 PM, 07 Aug 2017
    Блин, это было бы просто шикарно! Очень не хватает чего то, что позволило бы обнолять данные, т.к. именно возможности агрегации данных просто...просто нет слов :) И хочется именно КХ использоать для таких нужд.
  • Если все пройдет успешно, то было бы очень кстати иметь такую возможность под рукой :)
  • +1 vote!
  • https://t.me/clickhouse_ru
    @rheinx #22758 09:11 PM, 07 Aug 2017
    И превратится clickhouse в spark где основное время занимает забор данных из хранилища )))
  • 08 August 2017 (100 messages)
  • @garikanet #22762 06:22 AM, 08 Aug 2017
    Обновил Tabix Build 17.08.1 [20170808]
    Fix:
    - Ошибки ERR_RESPONSE_HEADERS_TOO_BIG
    - Мерцание таблицы
    - Имя таблицы содержит точку
    - Заработал Export to TSV
    - Не oтрисовывались графики
    - Прочие мелочи
  • https://t.me/clickhouse_ru
    @343206394 #22763 06:56 AM, 08 Aug 2017
    Доброе утро. При хранении строк очень эффективно иметь словарь и хранить значения в словаре а указатели в таблице КХ.
    Может кто объяснить почему так не сделано и может есть планы?
  • Это как раз таки есть
  • https://t.me/clickhouse_ru
    @343206394 #22765 07:03 AM, 08 Aug 2017
    Интересно
  • https://t.me/clickhouse_ru
    @343206394 #22766 07:03 AM, 08 Aug 2017
    Почему тогда при замене строк на целые и внешнем словаре использование диска сокращаетс в разы
  • https://t.me/clickhouse_ru
    @343206394 #22767 07:04 AM, 08 Aug 2017
    должно не сильно изменится по идее
  • @alekseevgena #22768 07:17 AM, 08 Aug 2017
    Здравствуйте. Переносили ZK с одно кластера на другой.
    Остановили КХ
    Перенесли все данные из ноды /clickhouse c одного ZK на другой
    Прописали в настройках КХ новый кластер ZK
    Запустили КХ.
  • @alekseevgena #22769 07:17 AM, 08 Aug 2017
    Сейчас при вставке в одну из талиц вот такая ошибка
  • @alekseevgena #22770 07:18 AM, 08 Aug 2017
    причём вставка удачно проходит, вставляем в дистрибутед таблицу, а вот данные не появляются
  • @alekseevgena #22771 07:18 AM, 08 Aug 2017
    не подскажете как исправить?
  • @pookieShmukie #22772 07:23 AM, 08 Aug 2017
    Ну прочитать идентификатор все таки дешевле, учитывая, что сжатие работает лучше, а данные словаря закешированы в оперативке
  • Данных нет на реплике или на шарде?
  • Судя по этой ошибке не видно ноду зк из кх, если я правильно понял
  • @pookieShmukie #22775 07:26 AM, 08 Aug 2017
    Проверьте статус ноды зк для начала
  • @alekseevgena #22776 07:26 AM, 08 Aug 2017
    не очень понял вопроса, но вот я сделал запрос на максимальную дату по всем репликам, в локальные таблицы, она заканчивает ровно в тот момент когда мы стопнули КХ
  • @alekseevgena #22777 07:26 AM, 08 Aug 2017
    я проверял, там действительно её нет
  • @alekseevgena #22779 07:29 AM, 08 Aug 2017
    в старом кластере это нода была, но КХ писал что типа нода существует. Мы решили грохнуть. Сейчас пишет что нет ноды. В принципе вернуть ноду не проблема, но как восстановить запись?
  • @pookieShmukie #22780 07:29 AM, 08 Aug 2017
    Т.е. по факту данные не пишутся сейчас никуда? Рестартить сервера не пробовали?
  • @pookieShmukie #22781 07:29 AM, 08 Aug 2017
    Очевидно убрать дохлую ноду зк из настроек
  • @pookieShmukie #22782 07:29 AM, 08 Aug 2017
    Если нода не заведена в кластер зк
  • @alekseevgena #22783 07:30 AM, 08 Aug 2017
    не не, я не про реплику ZK, а ноду в ZK
  • @alekseevgena #22784 07:30 AM, 08 Aug 2017
    путь /clickhouse/tables/{SHARD}/billy_securitylog/block_numbers/201708/block-*
  • @pookieShmukie #22785 07:30 AM, 08 Aug 2017
    Дак и я про нее. У вас кластер зк и эта нода была не в кластере?
  • @alekseevgena #22786 07:31 AM, 08 Aug 2017
    cам то ZK в порядке
  • @pookieShmukie #22787 07:31 AM, 08 Aug 2017
    Сама по себе болталась?
  • @pookieShmukie #22788 07:32 AM, 08 Aug 2017
    Попрбуйте все таки убрать из конфига кх старую ноду зк, которая недоступна
  • @alekseevgena #22789 07:32 AM, 08 Aug 2017
    не, что в старом кластере ZK что в новом было пять серверов ZK. Нода всмысле путь в ZK
  • @pookieShmukie #22790 07:32 AM, 08 Aug 2017
    Ааааа
  • @alekseevgena #22791 07:33 AM, 08 Aug 2017
    по версии ZK как раз всё в порядке
  • @alekseevgena #22792 07:34 AM, 08 Aug 2017
    вопрос именно как заставить КХ начать писать в такой ситуации. Причём у нас не одна табличка с репликами в них всё нормально пишется, а вот с этой беда какая то случилась
  • Я с таким не сталкивался ( придется ждать ответа, либо эксперементировать )
  • Подскажите, а что за мониторинг ZK используете?
  • @alekseevgena #22795 08:17 AM, 08 Aug 2017
    это самописный
  • @alekseevgena #22796 08:18 AM, 08 Aug 2017
    но вроде в опенсорс скоро выложат
  • @Evanushechkin #22797 08:18 AM, 08 Aug 2017
    отлично бы было
  • @alekseevgena #22799 08:51 AM, 08 Aug 2017
    короче путём эксперементов решился вопрос
  • @alekseevgena #22800 08:52 AM, 08 Aug 2017
    вернул взад ноду /clickhouse/tables/{SHARD}/billy_securitylog/block_numbers/201708/
  • @alekseevgena #22801 08:52 AM, 08 Aug 2017
    КХ стал писать что нода /clickhouse/tables/{SHARD}/billy_securitylog/block_numbers/201708/block- существует
  • @alekseevgena #22802 08:52 AM, 08 Aug 2017
    грохнул все ноды /clickhouse/tables/{SHARD}/billy_securitylog/block_numbers/201708/block*
  • @alekseevgena #22803 08:53 AM, 08 Aug 2017
    запись пошла
  • @garikanet #22804 09:33 AM, 08 Aug 2017
    DB::Exception: Size of filter doesn't match size of column..

    Кто то знает как побороть такую ошибку

    Такой запрос проходит
    SELECT * FROM sm.views WHERE create_date=today() and url_domain ='smi2.ru' LIMIT 1

    А вот такой падает с ошибкой
    SELECT * FROM sm.views WHERE create_date=today() and url_domain ='smi2.net' LIMIT 1
    Отличие только в url_domain
  • @pookieShmukie #22805 09:34 AM, 08 Aug 2017
    А там не fixed string?
  • @pookieShmukie #22806 09:35 AM, 08 Aug 2017
    Просто такое только в одном месте есть в КХ
    https://github.com/yandex/ClickHouse/blob/master/dbms/src/Columns/ColumnFixedString.cpp
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data.

  • @pookieShmukie #22807 09:35 AM, 08 Aug 2017
    Хотя нет, есть и в других колонках
  • @pookieShmukie #22808 09:36 AM, 08 Aug 2017
    А в логах КХ посмотрите трейс, там должно быть написано откуда именно такое валится
  • @pookieShmukie #22809 09:36 AM, 08 Aug 2017
    И будет более понятно
  • попробуйте сделать
    SET preferred_max_column_in_block_size_bytes = 0
    и перезапустить запрос.

    Какая версия ClickHouse?
  • Trace
    https://gist.github.com/isublimity/7e28cd3f335210a4d3ce56fe2ac4059f

    1. clickhouse-server(DB::Exception::Exception(std::string const&, int)+0x1f) [0x1046ebf]
  • @garikanet #22812 09:48 AM, 08 Aug 2017
    Формат колонки String
  • Не помогло
  • @garikanet #22814 09:51 AM, 08 Aug 2017
    Разобрался - у нас в таблице FixedString - и в них hex данные - если их не извлекать ошибки нет
  • видимо это
  • @garikanet #22816 09:53 AM, 08 Aug 2017
    Буду разбираться в сырцах и что мы напихали в CH
    Спасибо за наводку
  • @kochetovnicolai #22817 09:53 AM, 08 Aug 2017
    и все-таки какая версия CH?
  • @garikanet #22818 09:55 AM, 08 Aug 2017
    ClickHouse 1.1.54262 testing
  • https://t.me/clickhouse_ru
    @vladenisov #22819 10:07 AM, 08 Aug 2017
    а можно как-нибудь сконвертить строку в массив символов? типа splitByChar, только без первого аргумента
  • теоретически, обновление до 1.1.54266 должно помочь
  • 👏👍 помогло )
  • @vkudrik #22822 11:50 AM, 08 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @Sfinks80 #22823 12:04 PM, 08 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @shuttie #22824 12:48 PM, 08 Aug 2017
    а как выглядит рекомендованный способ размазывания данных по кластеру с т.з. clickhouse? Вот, к примеру, у меня есть 4 ноды. Как я понял из документации, по-хорошему, я делаю 2 шарда, у каждого 2 реплики. Но тогда, в общем случае, если я запускаю тажелый запрос, то только 2 из 4х нод будут его процессить, остальные будут стоять и ничего не делать.
  • https://t.me/clickhouse_ru
    @shuttie #22825 12:49 PM, 08 Aug 2017
    возможно ли для таких случаев сделать 4 шарда по 2 реплики, но намазать это на кластер из 4х нод?
  • https://t.me/clickhouse_ru
    @frisbeeman #22826 12:51 PM, 08 Aug 2017
    А будут только единичные запросы или какой-то поток?
  • https://t.me/clickhouse_ru
    @shuttie #22827 12:52 PM, 08 Aug 2017
    я намек про throughtput понял. запросов будет поток, но весьма жиденький. поэтому между latency/throughtput хотелось бы выбрать latency.
  • https://t.me/clickhouse_ru
    @shuttie #22828 01:01 PM, 08 Aug 2017
    а то как я понял из активного гуглежа, такой сетап возможен, но через попу: https://github.com/yandex/ClickHouse/issues/508
    DB::Exception: Cannot read all data · Issue #508 · yandex/ClickHouse

    I cann't read some introduction from https://clickhouse.yandex/reference_en.html# have some document about building a distributed multiple servers environment ?

  • https://t.me/clickhouse_ru
    @ssheremeta #22829 02:13 PM, 08 Aug 2017
    Добрый день! Подскажите, можно как-то в КХ добиться функционала FIRTST/LAST агрегаций?
  • https://t.me/clickhouse_ru
    @shuttie #22830 02:23 PM, 08 Aug 2017
    мне всегда казалось, что first/last агрегации недетерминированы, так как данные хз в какой последовательности будут читаться. а какой use-case для этого?
  • https://t.me/clickhouse_ru
    Если недетерминированно, то есть any и anyLast.
  • https://t.me/clickhouse_ru
    @ssheremeta #22832 02:28 PM, 08 Aug 2017
    спасибо!
  • @sr_maks1 ↶ Reply to #22734 #22833 05:28 PM, 08 Aug 2017
    А есть докер либо пакетик? Попытался обновить image - up to date. Что я делаю не так?
  • @sr_maks1 #22834 05:29 PM, 08 Aug 2017
    Кто нибудь поставил новую версию? Если да - то каким способом?
  • https://t.me/clickhouse_ru
    @inv2004 #22835 05:46 PM, 08 Aug 2017
    А mark указывает на строку сжатых данных или разжатых?
  • @danton0v #22836 05:47 PM, 08 Aug 2017
    Andrey расскажет, он ставил :)
  • https://t.me/clickhouse_ru
    Как обычно, выкачав с репозитория Яндекс
  • yandex/ClickHouse

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

  • @sr_maks1 ↶ Reply to #22837 #22839 06:33 PM, 08 Aug 2017
    То есть готового пакета как и готового image нет и неизвестно когда будет?
  • https://t.me/clickhouse_ru
    @etkee #22840 06:35 PM, 08 Aug 2017
    http://repo.yandex.ru/clickhouse/xenial/pool/main/c/clickhouse/ вроде там версии более свежие, чем указанная 244
  • @sr_maks1 #22841 06:50 PM, 08 Aug 2017
    Спасибо!!
  • @sr_maks1 #22842 07:59 PM, 08 Aug 2017
    :) select timezone();

    SELECT timezone()

    ┌─timezone()─┐
    │ Zulu │
    └────────────┘
    Ребят а где выставить? пробовал в config.xml timezone
  • @milovidov_an #22843 08:00 PM, 08 Aug 2017
    Разве в конфиге не работает?
  • @sr_maks1 #22844 08:01 PM, 08 Aug 2017
    <?xml version="1.0"?>
    <yandex>
    <logger>
    <level>trace</level>
    <log>/var/log/clickhouse-server/clickhouse-server.log</log>
    <errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>
    <size>1000M</size>
    <count>10</count>
    </logger>

    <timezone>UTC</timezone>
  • @sr_maks1 ↶ Reply to #22843 #22845 08:02 PM, 08 Aug 2017
    может не там прописал?
  • @milovidov_an #22846 08:02 PM, 08 Aug 2017
    Но UTC - это и есть Zulu.
  • @milovidov_an #22847 08:03 PM, 08 Aug 2017
    Сервер выводит некое каноническое имя, которое для UTC равно Zulu.
  • @sr_maks1 ↶ Reply to #22846 #22848 08:03 PM, 08 Aug 2017
    странно)) спасибо. просто привык UTC
  • @sr_maks1 #22849 08:27 PM, 08 Aug 2017
    Ребят подскажите а где можно про Dictionary table посмотреть?
  • @milovidov_an #22850 08:27 PM, 08 Aug 2017
    Самое простое:

    CREATE DATABASE dictionaries ENGINE = Dictionary
  • https://t.me/clickhouse_ru
    @inv2004 #22851 08:30 PM, 08 Aug 2017
    Признаться тоже не очень понятно что это за энджин. Это просто по сути виртуальный слепок куска dictionaries из конфига?
  • @sr_maks1 ↶ Reply to #22850 #22852 08:34 PM, 08 Aug 2017
    а посложнее? Просто это отдельная таблица не связанная со словарями или же можно указать словарь из которого она берет значения?
  • @milovidov_an #22853 08:36 PM, 08 Aug 2017
    Это пример, как создать базу данных, в которой автоматически содержатся таблицы для словарей.
  • @milovidov_an #22854 08:36 PM, 08 Aug 2017
    Также таблицы для словарей можно создавать и по отдельности.
  • https://t.me/clickhouse_ru
    @freeseacher #22855 08:51 PM, 08 Aug 2017
    Господа, а есть какойто формат TabSeparatedGziped.
    хочу вытащить одну табличку, 18 гигов в кх, а в TabSeparated уже 340 гигов. и судя по бегунку это только 70%.
  • https://t.me/clickhouse_ru
    @umaxfun #22856 09:13 PM, 08 Aug 2017
    Можно стримить в гзип, вероятно.
  • https://t.me/clickhouse_ru
    @freeseacher #22857 09:14 PM, 08 Aug 2017
    ну если формата нету то так и придется делать
  • https://t.me/clickhouse_ru
    @umaxfun #22858 09:16 PM, 08 Aug 2017
    Не за компом, чтобы проверить, но типа «кх-клиент -ку “селект * фром интернет формат табсепарэйтед“ | gzip > результат.tsv.gz» должно сработать в какой-то вариации
  • https://t.me/clickhouse_ru
    @umaxfun #22859 09:17 PM, 08 Aug 2017
    Если вы понимаете, о чем я
  • Формата нет. Формат и сжатие независимы.
  • https://t.me/clickhouse_ru
    @freeseacher #22861 10:15 PM, 08 Aug 2017
    да. сотворил уже гадость на базе btrfs с онлайн сжатием.
  • https://t.me/clickhouse_ru
    @freeseacher #22862 10:15 PM, 08 Aug 2017
    спасибо
  • 09 August 2017 (68 messages)
  • @3334085 #22868 05:43 AM, 09 Aug 2017
    @milovidov_an спам опять :(
  • https://t.me/clickhouse_ru
    @umaxfun ↶ Reply to #22861 #22869 06:49 AM, 09 Aug 2017
    Какой командой заработало?
  • https://t.me/clickhouse_ru
    @vasya_toropov #22870 06:53 AM, 09 Aug 2017
    Есть же clickhouse-compressor.
  • https://t.me/clickhouse_ru
    @vasya_toropov #22871 06:53 AM, 09 Aug 2017
    Проверил, вот так работает:

    $ clickhouse-client --query 'SELECT * FROM test FORMAT Native' | clickhouse-compressor > test.compressed
    $ cat test.compressed | clickhouse-compressor -d | clickhouse-client --query 'INSERT INTO test FORMAT Native'
  • https://t.me/clickhouse_ru
    @shuttie #22872 07:22 AM, 09 Aug 2017
    а что мешает вместо clickhouse-compressor использовать любой другой сжимальщик? Я даже не знал о таких проблемах, жил себе с "... | pv | zstd > table.csv.zstd" и "cat table.zstd | pv | zstd -d | clickhouse-client --query ..."
  • https://t.me/clickhouse_ru
    @vasya_toropov #22873 08:08 AM, 09 Aug 2017
    Да в принципе ничего. Разве что сжатие должно получиться ровно такое же как внутри кх. Удобнее ориентироваться какой размер в итоге получится.
  • https://t.me/clickhouse_ru
    mkfs.btrfs ;) compression=lzo
  • https://t.me/clickhouse_ru
    @freeseacher #22875 08:29 AM, 09 Aug 2017
    Кх клиент в докер-компоузе не удобно туда пайпы фигачить.
  • https://t.me/clickhouse_ru
    @dvolodin #22876 08:32 AM, 09 Aug 2017
    Для ENGINE = Distributed() ZK нужен вообще?
  • https://t.me/clickhouse_ru
    @erzentd ↶ Reply to #22874 #22877 08:39 AM, 09 Aug 2017
    да это можно было и в fstab
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #22876 #22878 08:44 AM, 09 Aug 2017
    ZK нужен для репликации. Остальное работает без него
  • https://t.me/clickhouse_ru
    @dvolodin #22879 08:45 AM, 09 Aug 2017
    то есть если мы буферизуем, шардируем и реплицируем внешним процессом, можно использовать CH без ZK?
  • https://t.me/clickhouse_ru
    @freeseacher #22880 08:48 AM, 09 Aug 2017
    DDL же еще
  • https://t.me/clickhouse_ru
    @shuttie #22881 08:48 AM, 09 Aug 2017
    как я понял, если ваш собственный репликатор умеет обрабатывать падения нод (к примеру, если реплика легла, а потом поднялась через час, то залить в нее пропущенные данные), то зк и не нужен.
  • https://t.me/clickhouse_ru
    @shuttie #22882 08:51 AM, 09 Aug 2017
    в противном случае будет рассинхронизация реплик, тлен и тоска.
  • https://t.me/clickhouse_ru
    @dvolodin #22883 08:52 AM, 09 Aug 2017
    ну да, если реплика легла и запись остановилась, в очереди сохранит
  • https://t.me/clickhouse_ru
    @Krashuevina #22884 08:54 AM, 09 Aug 2017
    А посоветуйте, пожалуйста, оптимизации для компрессии.
    Импортирую данные в CH из ORC. В ORC данные лежат в одной таблице, занимают 10G.
    В CH данные лежат в 450 таблицах, занимают 30Gb. Что следует покрутить? Уже очень обидно за такую сильную разницу.
  • https://t.me/clickhouse_ru
    А почему не хранить так же в одной таблице? Зачем разделать на 450 таблиц? Если потом нужно будет сджоинить данные - скорее всего либо не получиться. либо будет медленно работать
  • https://t.me/clickhouse_ru
    @Krashuevina #22886 08:59 AM, 09 Aug 2017
    Эвенты различаются аттрибутивков
  • https://t.me/clickhouse_ru
    @Krashuevina #22887 08:59 AM, 09 Aug 2017
    *аттрибутивкой
  • https://t.me/clickhouse_ru
    @Krashuevina #22888 08:59 AM, 09 Aug 2017
    в ORC это Map<String,String>
  • https://t.me/clickhouse_ru
    @Krashuevina #22889 08:59 AM, 09 Aug 2017
    в CH - отдельные таблицы и колонки для эвентов
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22890 09:00 AM, 09 Aug 2017
    В CH есть Nested-колонки
    https://clickhouse.yandex/docs/ru/data_types/nested_data_structures/nested.html
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22891 09:01 AM, 09 Aug 2017
    По сути это вложеная таблица
  • https://t.me/clickhouse_ru
    @Krashuevina #22892 09:02 AM, 09 Aug 2017
    Т.е. вы предлагаете под каждый тип эвента завести вложенную структуру?
  • https://t.me/clickhouse_ru
    @Krashuevina #22893 09:03 AM, 09 Aug 2017
    Меня вот это смущает:
    Работоспособность запроса ALTER для элементов вложенных структур данных, является сильно ограниченной.
  • https://t.me/clickhouse_ru
    @Krashuevina #22894 09:03 AM, 09 Aug 2017
    Т.к. у эвентов иногда происходит добавление/удаление полей
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #22895 09:04 AM, 09 Aug 2017
    А как в ORC это происходит? Разве можно менять колонки в файле?
  • https://t.me/clickhouse_ru
    Если их не десятки тысяч - это может быть вариантом
  • https://t.me/clickhouse_ru
    В ORC новые аттрибуты конкретных событий появляются в Map<String,String> - т.е. туда можно класть что угодно. Из документации CH не вполне ясно - можно ли безболезненно добавлять/удалять колонки вложенных структур
  • https://t.me/clickhouse_ru
    Можете попробовать колонку типа String и писату туда сериализованый json. CH ограничено умеет работать с json-данными
  • https://t.me/clickhouse_ru
    Попахивает write-only данными :)
  • https://t.me/clickhouse_ru
    @orantius #22900 10:12 AM, 09 Aug 2017
    еще можно nested (keys: array (string), values array(string))
  • https://t.me/clickhouse_ru
    @Krashuevina #22901 10:13 AM, 09 Aug 2017
    а массивы нельзя в MergeTree :(
  • https://t.me/clickhouse_ru
    @alanbondarchuk #22902 06:35 PM, 09 Aug 2017
    всем привет, подскажите как имея таблицу hits_all от logs api с date и datetime у каждого хита посчитать среднюю продолжительность нахождения на сайте? принцип, ссылки, или может запрос есть под рукой - все пригодится
  • https://t.me/clickhouse_ru
    @feriat #22903 06:39 PM, 09 Aug 2017
    @miptgirl
    Будет непросто. Может лучше сразу скачать вместо хитов визиты?
  • https://t.me/clickhouse_ru
    да) благодарю не углядел что там есть длительность визита
  • Не понял, что имеется ввиду. Конечно массивы можно иметь в таблицах типа MergeTree.
  • https://t.me/clickhouse_ru
    Насколько оправдано будет хранить такие данные в колонке в виде сериализованного json?
  • @milovidov_an #22907 07:05 PM, 09 Aug 2017
    По поводу, почему данные могут занимать меньше в ORC формате. Это может зависить от настроек сжатия. Если при использовании ORC, сжатие более сильное, чем lz4 - займёт меньше. Чтобы включить в ClickHouse более сильное сжатие, можно поменять настройку compression в config,xml, например, так:

    <compression>
    <case>
    <method>zstd</method>
    </case>
    </compression>

    - включит сжатие zstd при всех фоновых мержах.
  • @milovidov_an #22908 07:06 PM, 09 Aug 2017
    Вторая возможная причина - изменение самой структуры данных.
    450 таблиц - это плохо.

    450 таблиц типа MergeTree будут работать, а при использовании ReplicatedMergeTree, на таком количестве могут постепенно начаться всякие проблемы. Дело в том, что каждая таблица типа ReplicatedMergeTree - довольно тяжёлый объект.
  • @milovidov_an #22909 07:08 PM, 09 Aug 2017
    Полностью динамические свойства можно хранить в Nested(name String, value String). Но если атрибутов всё-таки не слишком много (сотни), то можно держать отдельные столбцы для каждого. Не стоит беспокоиться, если значения будут сильно разреженными.
  • JSON обычно неоправданно, так как неудобно доставать оттуда всякое.
    Оправданно в редких случаях - если изначально был JSON и мы совсем не можем заранее разобрать его структуру, и для нас более-менее без разницы, что внутри.
  • https://t.me/clickhouse_ru
    @343206394 #22911 07:09 PM, 09 Aug 2017
    А есть ли разница в части загрузки КХ и ЗК
    1 таблица из 100 реплицируемых шард
    или
    100 таблиц с одной реплицируемой шардой
    ?
  • Не полностью понял вопрос. Имеется ввиду по одной таблице на каждом сервере, но вопрос в том, делать ли много шардов или много реплик?
  • https://t.me/clickhouse_ru
    @343206394 #22913 07:15 PM, 09 Aug 2017
    Вопрос такой что есть 200 серверов.
    Я могу сделать 100 таблиц каждая по 2 реплики и 1 шарде
    А могу сделать 1 таблицу со 100 шардами и 2 репликами.
    (понятно что это просто по 1 локальной таблице в итоге на сервере)
    так вот будет ли разной нагрузка на КХ и ЗК или нет
  • @milovidov_an #22914 07:17 PM, 09 Aug 2017
    Тоже не совсем понятно. Дело в том, что нет понятия "шарда для таблицы". Таблицы на разных шардах живут независимо и работают вместе лишь при запросах из Distributed таблицы.
  • https://t.me/clickhouse_ru
    @343206394 #22915 07:18 PM, 09 Aug 2017
    понял, значит ответ на мой некорректный вопрос - нагрузка будет одинакова тк физичести это будет все теже 100 таблиц с 2 репликами в обоих случаях
  • @milovidov_an #22916 07:24 PM, 09 Aug 2017
    Да.
  • https://t.me/clickhouse_ru
    @inv2004 #22917 09:29 PM, 09 Aug 2017
    А я правильно понимаю, что в запакованном блоке mark может указывать на любую позицию по сути. т.е. mark in compressed file вовсе не возрастающий? так как архиватор может перемешать блоки? Я пока просто блоки пытаюсь выставить последовательно (не part)
  • @milovidov_an #22918 09:34 PM, 09 Aug 2017
    Засечки в индексе строго возрастают.
    Mark представляет собой пару:
    - смещение в файле до начала сжатого фрейма, где есть искомые данные;
    - смещение в разжатом фрейме до данных.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @inv2004 #22920 09:37 PM, 09 Aug 2017
    Но mark.in_compressed не может служить идентификатором очередности? Я просто ожидал, что он расти будет. Что-то не так понял видимо.
  • @milovidov_an #22921 09:41 PM, 09 Aug 2017
    Для разных столбцов в засечках разные смещения.

    Если рассматривать один столбец:
    - в нём у каждой следующей засечки смещение в сжатом файле больше или равно предыдущему. А пара (смещение в сжатом файле, смещение в разжатом фрейме) лексикографически больше.

    Для разных кусков данных (parts) будут разные файлы, и смещения в них никак не связаны.

    При параллельной обработке запроса, даже один файл может читаться сразу в разных местах.
  • https://t.me/clickhouse_ru
    @inv2004 #22923 09:43 PM, 09 Aug 2017
    Ок, спасибо, я понял что оно все же должно расти, попытаюсь понять почему не вижу этого. Я выбрал только по одной нитке вроде.
  • @milovidov_an #22924 09:43 PM, 09 Aug 2017
    Да, [ 13 ] - это номер потока. Он один. В остальном я не понял, что вы вывели.
  • https://t.me/clickhouse_ru
    @inv2004 #22925 09:45 PM, 09 Aug 2017
    Я в seekToMark вывел mark.offset_in_compressed. остальные строчки - не важно. Надо наверное ещё индекс марка посмотреть сейчас, может в нём дело.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @inv2004 #22927 09:49 PM, 09 Aug 2017
    Ага, спасибо, немного понятнее, сами индексы Марков не последовательно.
  • @milovidov_an #22928 09:51 PM, 09 Aug 2017
    mark.offset_in_uncompressed
    - для мелких столбцов часто равен нулю за счёт "выравнивания сжатых блоков по засечкам". В остальном никакого утверждения о монотонности нет.

    Пример, что такое засечка.
    Все несжатые данные файла:
    [-------------------------------]
    ^ ^
    индекс указывает сюда.

    Данные сжимаются.
    Вот такие получились фреймы для сжатия:

    [---------][---------][---------]
    ^ ^

    Они сжались как-то так:
    [~~~][~~~~~~][~~]
    ^ ^
    offset_in_compressed_file будет указывать сюда - на начала сжатых фреймов в файле.

    [---------]
    ^
    [---------]
    ^
    А offset_in_decompressed_block будет указывать сюда - на позицию данных внутри фрейма.
  • https://t.me/clickhouse_ru
    @inv2004 #22929 09:53 PM, 09 Aug 2017
    Я извиняюсь, опечатался тут в чате. Я в compressed смотрел. И его имел ввиду, да, uncompressed 0
  • https://t.me/clickhouse_ru
    @inv2004 #22930 09:55 PM, 09 Aug 2017
    Могут две засечки указывать на один фрейм?
  • https://t.me/clickhouse_ru
    @inv2004 #22931 09:55 PM, 09 Aug 2017
    Например одинаковые данные и упаковалось в один блок. Или будет два блока? Те три блока выше упаковаться в два.
  • @milovidov_an #22932 09:57 PM, 09 Aug 2017
    Могут. Есть минимальный размер сжатого фрейма - 64 KB и максимальный - 1 MB.
    Допустим, столбец имеет тип UInt8, index_granularity = 8192. Тогда в один сжатый фрейм попадут целых 8 засечек.
  • https://t.me/clickhouse_ru
    @inv2004 #22933 09:58 PM, 09 Aug 2017
    Но они будут иметь разный uncompressed. А могут ли непоследовательные marks указывать на один in_compressed? Если могут - то это все усложняет.
  • @milovidov_an #22934 10:01 PM, 09 Aug 2017
    > Но они будут иметь разный uncompressed.

    > А могут ли непоследовательные marks указывать на один in_compressed?
    Не совсем корректный вопрос.

    Могут ли marks для одного part, для одного столбца быть не монотонными, если рассматривать лексикографическое сравнение - нет.

    Попробуйте посмотреть .mrk файлы напрямую. Эти файлы не сжаты. Там подряд уложены пары offset_in_compressed_file, offset_in_decompressed_block. И то, и другое - это UInt64, little endian.
  • https://t.me/clickhouse_ru
    @inv2004 #22935 10:05 PM, 09 Aug 2017
    Ага. Спасибо что ответили, так как вникнуть во внутренности быстро и легко пока не удалось.
  • @siroco_spb #22936 10:08 PM, 09 Aug 2017
    Joined.
  • 10 August 2017 (26 messages)
  • @pavel_maksimow #22939 05:51 AM, 10 Aug 2017
    Всем привет. Подскажите пожалуйста, в чем причина ошики. Использую библиотеку pandahouse. Работают только запросы show. В бд и sql я совсем новичок, только что установил БД. Спасибо!
  • @pookieShmukie #22940 06:11 AM, 10 Aug 2017
    Уберите из запроса format tsv, надо что бы остался только create database test1
  • @220921201 #22941 07:20 AM, 10 Aug 2017
    Joined.
  • @zpavel #22942 07:21 AM, 10 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @caligo8658 #22943 07:24 AM, 10 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    Спасибо за ответ, Алексей! Перечитал доку, там написано про многомерные
  • https://t.me/clickhouse_ru
    т.е. вы предлагаете писать в одну таблицу все события, но для каждого типа события завести отдельный столбец под их аттрибутивку?
  • https://t.me/clickhouse_ru
    Уже почувствовали :) Zookeeper взлетел только после перевода на SSD, иначе - все IOPS сжирал
  • @pavel_maksimow #22947 07:59 AM, 10 Aug 2017
    @FacedSID спасибо
  • @f1yegor #22948 08:46 AM, 10 Aug 2017
    привет. как сделать SELECT arrayJoin([1, 2, 3] AS src) AS dst, 'Hello', src но чтобы если массив пустой - строчка не пропадала, а было как при left join?
  • SELECT arrayJoin(empty(array) ? ['empty'] : array)
  • @pookieShmukie #22950 09:00 AM, 10 Aug 2017
    Можно попробовать так, но в таком случае на пустых массивах будет одна строчка с empty, но на этот случай можно сделать проверку далее в запросе
  • https://t.me/clickhouse_ru
    @orantius #22951 09:03 AM, 10 Aug 2017
    select 'hello',z from system.one left array join range(rand()%3) as z
  • @f1yegor #22952 09:06 AM, 10 Aug 2017
    спасибо, отлично
  • https://t.me/clickhouse_ru
    @taroff #22953 10:52 AM, 10 Aug 2017
    Добрый день! Подскажите, можно ли как-то выбрать последние вставленные N строк? Если делать order by time|date DESC, то он фуллскан делает, сортировку точнее на весь набор данных, это долго понятно
  • https://t.me/clickhouse_ru
    @shuttie #22954 10:57 AM, 10 Aug 2017
    а если лимит по дате поставить, к примеру, за последний день/час, тогда скан будет только по последним партам.
  • https://t.me/clickhouse_ru
    @shuttie #22955 10:59 AM, 10 Aug 2017
    как я понимаю, ch читает данные с диска (и других нод) параллельно из многих мест сразу. с учетом этого понять что из прочитанного - последние N строк, но без сортировки, довольно затруднительно.
  • @sr_maks1 ↶ Reply to #22853 #22956 07:20 PM, 10 Aug 2017
    И что с этим делать?) Алексей где можно посмотреть прочесть более подробно
  • Движок таблиц Dictionary предназначен для интроспекции - чтобы можно было удобно посмотреть содержимое словаря. А также полезен для запросов, где нужно найти что-нибудь в словаре необычным образом.
  • @sr_maks1 ↶ Reply to #22957 #22958 07:28 PM, 10 Aug 2017
    А сам словарь не нужно указывать?
  • @sr_maks1 #22959 07:28 PM, 10 Aug 2017
    Я имею ввиду датасорс для данной таблицы
  • @milovidov_an #22960 07:28 PM, 10 Aug 2017
    Таблицы типа Dictionary можно создать двумя способами:
    1. По отдельности, с помощью CREATE TABLE ... ENGINE = Dictionary(dict_name).
    2. Таблицы для всех словарей сразу. Это работает с помощью создания специальной базы данных. CREATE DATABASE name ENGINE = Dictionary
    Это самый простой способ, так как никаких аргументов указывать не нужно.
  • @milovidov_an #22961 07:29 PM, 10 Aug 2017
    Сами словари должны быть заранее объявлены в конфигурационных файлах, как обычно.
  • @sr_maks1 #22962 07:29 PM, 10 Aug 2017
    Огромное спасибо!
  • @373268593 #22963 07:44 PM, 10 Aug 2017
    Joined.
  • @f1yegor #22965 11:23 PM, 10 Aug 2017
    +1
  • 11 August 2017 (83 messages)
  • https://t.me/clickhouse_ru
    @neiwick #22966 06:25 AM, 11 Aug 2017
    Всем привет. А кто-то вливал в обычную таблицу с MergeTree через JDBC драйвер больше 2кк строчек в секунду? Я конечно еще не до конца разобрался куда уперся в моем случае, пока гоняю тесты и подкручиваю связку в разных местах, но хочется понять, это потолок, или можно выше прыгнуть?
    Лью через RowBinaryStream, косяки с лонгами обошел, сериализацию и отправку стрингов на своей стороне подкрутил, и на первый взгляд проблем больше нет.
    Строчки по 66 байт, но на локалхосте результаты примерно такие же, поэтому кажется что это не диск и не сеть, чуть позже проверю точнее.
  • https://t.me/clickhouse_ru
    @ewgeniyk #22967 06:34 AM, 11 Aug 2017
    Всем привет. Подскажите, можно ли сделать materialized-вьюху, которая будет аккумулировать в себе данные двух таблиц по одному и тому же where ?
  • @IgnisDivine #22968 07:20 AM, 11 Aug 2017
    @neiwick Порядок данных важен? Если нет то пробовал ли ты разбить данные на куски и пихать в несколько потоков? Мы так у себя справились с задержками. В безопасные 190 потоков льем кучу данных
  • https://t.me/clickhouse_ru
    @neiwick #22969 07:25 AM, 11 Aug 2017
    Абсолютно не важен, спасибо! При таком способе заливки получается утилизировать сеть?
  • https://t.me/clickhouse_ru
    @vigilov #22970 08:04 AM, 11 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #22967 #22971 09:06 AM, 11 Aug 2017
    Смотря как делать, по сути ClickHouse просто создаст таблицу с именем (.inner.ваше_вью) и как в таблицу так и во вью можно будет сделать insert и записать туда данные. Когда происходит insert в целевую таблицу, то берется вставляемый блок данных и к нему применяется ваш запрос, поэтому теоретически (и не совсем понятно для чего) можно вставить данные, но, опятьже, там местами всё поломано, например https://github.com/yandex/ClickHouse/issues/127
    Problem with INSERT if having a VIEW with subqueries & AS keyword #127

    That&#39;s a really strange one! When you create a view (let&#39;s call it test_stats) that has a subquery with multiple tables (test1 and test2) combined using UNION ALL clause, and the first tabl...

  • https://t.me/clickhouse_ru
    @ewgeniyk ↶ Reply to #22971 #22972 09:08 AM, 11 Aug 2017
    На самом деле все просто - есть две совершенно тождественные таблицы с данными, просто они посуточно чередуются. И я хотел узнать можно ли над ними создать одну вьюху, которая будет по определенному where читать из двух таблиц и возвращать общий массив результатов
  • https://t.me/clickhouse_ru
    @kshvakov #22973 09:09 AM, 11 Aug 2017
    материализованное вью не читают данные из таблиц
  • https://t.me/clickhouse_ru
    @kshvakov #22974 09:11 AM, 11 Aug 2017
    там создается отдельная таблица в которую пишутся данные к которым применен запрос указанный во вью
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #22972 #22975 09:14 AM, 11 Aug 2017
    а обычное view вполне себе можно создать
  • https://t.me/clickhouse_ru
    @ewgeniyk ↶ Reply to #22975 #22976 09:32 AM, 11 Aug 2017
    ну как устроены вьюхи я представляю, я о другом говорил - как сделать как раз в рамках запроса в одну вьюху результаты из двух таблиц
  • @pavlov_m #22977 09:32 AM, 11 Aug 2017
    А через UNION данные не заходят?
  • https://t.me/clickhouse_ru
    @Sfinks80 #22978 09:52 AM, 11 Aug 2017
    Всем привет!
    Скажите, кто-то работал с КХ из go?
    Наткнулся на вроде как баг, не пойму чей он. Вроде на КХ запросы выполняются, поэтому подозреваю, что это на его стороне.
    Пытаюсь сделать мультилайн-инсерт (4 строки по 5 полей).
    if transaction, err = db.ClickHouseClient.Begin(); err != nil {
    log.Error(fmt.Errorf("Can't start transaction: %v", err))
    return
    }
    if stmt, err = transaction.Prepare(sql); err != nil {
    log.Error(fmt.Errorf("Can't prepare statment (%s): %v", sql, err))
    transaction.Rollback()
    return
    }
    if _, err = stmt.Exec(data...); err != nil {
    log.Error(fmt.Errorf("Can't execute statment (%s) with data (%v): %v", sql, data, err))
    transaction.Rollback()
    return
    }
    если data - это []interface{} из 20 элементов, то получаю ответ, что ожидается 5
    [clickhouse][begin] tx=false, data=false
    [clickhouse][prepare] INSERT INTO events (uid, pid, event, geodata, created_at) FORMAT VALUES (?,?,?,?,?),(?,?,?,?,?),(?,?,?,?,?),(?,?,?,?,?)
    [clickhouse][send query] INSERT INTO events (uid, pid, event, geodata, created_at) FORMAT VALUES
    [clickhouse][rollback] tx=true, data=true
    [clickhouse]-> ping
    2017/08/11 12:05:56 [err] Can't execute statment (INSERT INTO events (uid, pid, event, geodata, created_at) FORMAT VALUES (?,?,?,?,?),(?,?,?,?,?),(?,?,?,?,?),(?,?,?,?,?)) with data ([WXOsS2b6HKVar5J3 10 h_view RU74Челябинск 2017-08-11 12:05:44.144234036 +0300 +03 WXOsS2b6HKVar5J3 1 h_view RU74Челябинск 2017-08-11 12:05:45.216646508 +0300 +03 WXOsS2b6HKVar5J3 10 h_view RU74Челябинск 2017-08-11 12:05:46.242552452 +0300 +03 WXOsS2b6HKVar5J3 1 h_view RU74Челябинск 2017-08-11 12:05:47.160877142 +0300 +03]): block: expected 5 arguments (columns: uid, pid, event, geodata, created_at), got 20
    [clickhouse][stmt] close
    а если передаю не правильное количество аргументов (слайс слайсов интерфейсов 5х4), то он уже ожидает 20, а получил 4
    `
  • https://t.me/clickhouse_ru
    @Sfinks80 #22979 09:52 AM, 11 Aug 2017
    Т.е. стейтмент не меняется, но КХ ожидает то 5, то 20
  • https://t.me/clickhouse_ru
    @Sfinks80 #22980 09:53 AM, 11 Aug 2017
    Can't execute statment (INSERT INTO events (uid, pid, event, geodata, created_at) FORMAT VALUES (?,?,?,?,?),(?,?,?,?,?),(?,?,?,?,?),(?,?,?,?,?)) with data ([[WXOsS2b6HKVar5J3 1 h_view RU74Челябинск 2017-08-11 11:41:16.08478083 +0300 +03] [WXOsS2b6HKVar5J3 10 h_view RU74Челябинск 2017-08-11 11:41:17.096437511 +0300 +03] [WXOsS2b6HKVar5J3 1 h_view RU74Челябинск 2017-08-11 11:41:17.983410114 +0300 +03] [WXOsS2b6HKVar5J3 10 h_view RU74Челябинск 2017-08-11 11:41:18.864966974 +0300 +03]]): sql: expected 20 arguments, got 4
  • https://t.me/clickhouse_ru
    @Sfinks80 #22981 09:54 AM, 11 Aug 2017
    разные куски кода проверяют разные вещи
    block: expected 5 arguments, got 20
    sql: expected 20 arguments, got 4
    и вот это go проверяет или КХ?
  • https://t.me/clickhouse_ru
    @vigilov #22982 10:00 AM, 11 Aug 2017
    Привет! Заметил странное поведение. Когда заливаю данные через Distributed (insert into some_distibuted select * from other_table), одним большим батчем, то происходит OutOfMemory. Distributed связан с SummingMergeTree. Если заливать по частям, то происходит некоректный подсчет Summing поля, если не дождаться пока Distributed не закончит рассылку по всем нодам и начать заливку следующего батча. Из документации не понятно данное поведение (и OutOfMemory и неправильный подсчет Summing поля), поэтому предполагаю что это бага
  • https://t.me/clickhouse_ru
    @kshvakov #22983 10:00 AM, 11 Aug 2017
    это Go проверяет, сейчас посмотрю
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #22978 #22984 10:04 AM, 11 Aug 2017
    Как говорил Джобс: "Вы держите его неправильно"

    делайте

    INSERT INTO events VALUES (?, ?, ?, ?, ?)

    Далее в цикле забиваете данные через execute (у вас получится 4 итерации по 5 значений) и Commit который отошлет блок данных на сервер
  • https://t.me/clickhouse_ru
    @Sfinks80 #22985 10:08 AM, 11 Aug 2017
    а как же рекомендация из мануала при использовании репликации вставлять данные пачками не чаще раза в секунду? 4 инсерта по одной строке - это ж не 1 инсерт 4х строк
  • https://t.me/clickhouse_ru
    @kshvakov #22986 10:09 AM, 11 Aug 2017
    нет, он копит данные в буфере, рулится настройкой block_size, если "строк" больше бъет на блоки и отправляет до финального commit, commit зафаксирует все данные которые остались в буфере
  • https://t.me/clickhouse_ru
    @Sfinks80 #22987 10:15 AM, 11 Aug 2017
    иными словами: на стороне КХ в пределах одной транции 1 инсерт N строк и N инсертов по 1 строке - это одно и то же. Я верно понял?
  • https://t.me/clickhouse_ru
    @kshvakov #22988 10:17 AM, 11 Aug 2017
    нет, это все рулится на стороне драйвера, в большинстве случаев (до установленноего размера block_size) данные на сервер передадутся 1-м блоком в котором будет n-е количество строк
  • https://t.me/clickhouse_ru
    @Sfinks80 #22989 10:20 AM, 11 Aug 2017
    надо поснифить трафик
  • https://t.me/clickhouse_ru
    @kshvakov #22990 10:21 AM, 11 Aug 2017
    зачем ?
  • https://t.me/clickhouse_ru
    @Sfinks80 #22991 10:23 AM, 11 Aug 2017
    потому что если драйвер отправит одним блоком insert();insert();insert() а не insert(),(),() это будет не то. На сколько я знаю.
  • https://t.me/clickhouse_ru
    @kshvakov #22992 10:24 AM, 11 Aug 2017
    он не отправит
    insert (), (), ()
    там данные не в текстовом формате передаются
  • https://t.me/clickhouse_ru
    @Sfinks80 #22993 10:26 AM, 11 Aug 2017
    Оо... Тогда тем более надо )
  • https://t.me/clickhouse_ru
    @kshvakov #22994 10:29 AM, 11 Aug 2017
    Если вам интересно что там я могу рассказать и сэкономить вам время ;)
  • https://t.me/clickhouse_ru
    @ElenaWie #22995 10:43 AM, 11 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @Sfinks80 #22996 11:38 AM, 11 Aug 2017
    С удовольствием послущаю! ))
  • https://t.me/clickhouse_ru
    @degibenz #22997 11:52 AM, 11 Aug 2017
    +1
  • https://t.me/clickhouse_ru
    @kshvakov #22998 12:04 PM, 11 Aug 2017
    Если гошный драйвер используется через стандартный интерфейс Го, то при вызове Begin не создается транзакция, просто соединение закрепляется за стейтментом, при Prepare запрос "обрезается" до VALUES и отправляется на сервер, сервер передает метаинформацию о колонках которые он ожидает, Execute пишет в буферы колонок которые при Commit или при приделе размера блока (в строках) сливаются в один бинарный блок данных и отправляются на сервер, Commit отправляет данные из беферов, если там еще что-то осталось и шлет "пустой" блок данных чтоб сообщить серверу что все данные отправлены
  • https://t.me/clickhouse_ru
    @kshvakov #22999 12:06 PM, 11 Aug 2017
    во "второй" версии драйвера буферов на стороне драйвера будет еще чуть больше чтоб не гонять мелкие пакеты по сети, но со стороны интерфейса там ничего не поменяется
  • https://t.me/clickhouse_ru
    @IlyaSinelnikov #23000 12:12 PM, 11 Aug 2017
    вот это кстати вынесло мозг при первых попытках вставлять данные в КХ из Го
    хотя это конечно скорее минус database/sql, который не предоставляет интерфейса для батчинга - приходится вот такую магию применять
  • https://t.me/clickhouse_ru
    @Sfinks80 #23001 12:13 PM, 11 Aug 2017
    Мдемс... Откровение, однако! Огромное спасибо!
  • https://t.me/clickhouse_ru
    @kshvakov #23002 12:15 PM, 11 Aug 2017
    begin/commit вполне себе батчер ) а так, во второй версии будет более дружественныи интерфейс чтоб можно было работать вобход database/sql от которого очень сильный оверхед если нужно вставлять много данных
  • https://t.me/clickhouse_ru
    @Sfinks80 #23003 12:27 PM, 11 Aug 2017
    Т.е. в моем случае, если я шлю не правильное количество аргументов, то он тупо считает количество знаков вопроса, видит 20 и щлет меня сразу - чувак, мне надо 20 аргументов
    А если я шлю 20 аргументов, то локальную проверку я прохожу, затем он шлет запрос на сервер, сервер ему отвечает, что надо 5 полей, и он такой - чувак, мне надо 5.
    так получается?
  • https://t.me/clickhouse_ru
    @kshvakov #23004 12:29 PM, 11 Aug 2017
    как-то так
  • https://t.me/clickhouse_ru
    @Sfinks80 #23005 12:29 PM, 11 Aug 2017
    хотя он вроде уже после Prepare и до Exec должен знать, что нужно 5.....
  • https://t.me/clickhouse_ru
    @kshvakov #23006 12:31 PM, 11 Aug 2017
    он знает, после Prepare он знает какие колонки нужны и в дебаге даже об этом пишет
  • https://t.me/clickhouse_ru
    @kshvakov #23007 12:32 PM, 11 Aug 2017
    в Exec гошный database/sql спрашивает какое количество аргуметов нужно и если оно не совпадает, то он выкидывает ошибку
  • @a_beloglazov #23008 12:36 PM, 11 Aug 2017
    Всем привет!

    У нас есть запрос:

    SELECT
    ...
    FROM
    (
    SELECT ... - тут запрос который выдает > RAM
    этот запрос никак не получается ограничить, потому что он по сути является большим словарем
    с количеством > 10 млрд записей
    ) AS a
    ANY INNER JOIN
    (
    SELECT ... - тут запрос который выдает не очень много данных
    ) AS b
    USING ключ;

    Разумеется, в результате выполнения такого запроса в различных вариациях мы получаем ошибку
    с превышением memory limit

    И причина тоже нам понятна, CH загружает каждый подзапрос участвующий в JOIN в RAM и сам JOIN выполняет уже в RAM,
    и вообще это не та сторона CH, в которой он хорош.

    Тем не менее, какими методами можно завести этот запрос, если убрать очевидное решение с созданием
    большой денормализованной таблицы?
  • https://t.me/clickhouse_ru
    @Sfinks80 #23009 12:37 PM, 11 Aug 2017
    я про это же.
    Откуда ж, если я шлю 4 аргумента, берется: sql: expected 20 arguments, got 4?
    Это так же происходит уже после Prepare
  • https://t.me/clickhouse_ru
    @agent0smith #23010 12:55 PM, 11 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @kshvakov #23011 01:09 PM, 11 Aug 2017
    он считает
    ?
    как плейсхолдеры, надо будет поправить поведение
  • https://t.me/clickhouse_ru
    @kshvakov #23012 01:10 PM, 11 Aug 2017
    можно сюда написать https://github.com/kshvakov/clickhouse/issues чтоб я не забыл
  • https://t.me/clickhouse_ru
    @vasiliyozerov #23013 01:35 PM, 11 Aug 2017
    Всем привет, подскажите как правильно убить мертвую реплику?
    Вроде в зукипере прибил, но при этом

    🙂 optimize table stats

    OPTIMIZE TABLE stats

    Received exception from server:
    Code: 999. DB::Exception: Received from localhost:9000, 127.0.0.1. zkutil::KeeperException. zkutil::KeeperException: Can't get data for node /clickhouse/tables/0/stats/replicas/2/host: node doesn't exist (no node).
  • https://t.me/clickhouse_ru
    @vasiliyozerov #23014 01:39 PM, 11 Aug 2017
    а при записи выдает 2017.08.11 15:25:33.291647 [ 113 ] <Error> executeQuery: Code: 252, e.displayText() = DB::Exception: Too much parts. Merges are processing significantly slower than inserts., e.what() = DB::Exception
  • https://t.me/clickhouse_ru
    @vasiliyozerov #23015 01:39 PM, 11 Aug 2017
    кто-нибудь сталкивался?
  • https://t.me/clickhouse_ru
    @Sfinks80 ↶ Reply to #23012 #23016 01:46 PM, 11 Aug 2017
    Я не мастер issues писать. Но кое как написал
  • https://t.me/clickhouse_ru
    @kshvakov #23017 01:50 PM, 11 Aug 2017
    ok
  • https://t.me/clickhouse_ru
    @Sfinks80 #23018 02:30 PM, 11 Aug 2017
    Оперативно ))
  • https://t.me/clickhouse_ru
    @b0ch4r0v #23019 02:37 PM, 11 Aug 2017
    при прочих равных - SummingMergeTree vs AggregatingMergeTree
    у какого движка будет выше производительность, лучше потребление памяти, другие ньюансы/недостатки использования?
    может есть бенчмарки?
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #23008 #23020 02:41 PM, 11 Aug 2017
    а отдельно первый подзапрос у вас отрабатывает? и правильно я понимаю, что после джойна, у вас агрегации нет?
  • https://t.me/clickhouse_ru
    @qweran #23021 04:06 PM, 11 Aug 2017
    Привет!
    Я правильно понимаю, что возможности указывать query_id при использовании jdbc вообще нет?
  • https://t.me/clickhouse_ru
    @qweran #23022 04:08 PM, 11 Aug 2017
    Хочется отслеживать ход выполнения запроса из приложения. Никто не сталкивался с таким?
  • @pavlov_m #23023 04:26 PM, 11 Aug 2017
    Тут два пути, если по HTTP то можно принимать хедеры прогресса. Другой путь использовать system.queries
  • @pavlov_m #23024 04:26 PM, 11 Aug 2017
    и запрашивать информацию по запросу
  • @pavlov_m #23025 04:28 PM, 11 Aug 2017
    или не system.queries... хм
  • https://t.me/clickhouse_ru
    @qweran ↶ Reply to #23025 #23026 04:28 PM, 11 Aug 2017
    system.processes, наверное
  • @pavlov_m #23027 04:29 PM, 11 Aug 2017
    да
  • @pavlov_m #23028 04:29 PM, 11 Aug 2017
    верно
  • @pavlov_m #23029 04:30 PM, 11 Aug 2017
    по параметрам total_rows_approx / read_rows. Поправьте если не прав
  • https://t.me/clickhouse_ru
    @qweran ↶ Reply to #23029 #23030 04:32 PM, 11 Aug 2017
    Да. Только проблема в задании query_id. Можно, конечно, отслеживать параметр "query".
  • @pavlov_m #23031 04:32 PM, 11 Aug 2017
    если по HTTP то query_id можно указать
  • https://t.me/clickhouse_ru
    @qweran ↶ Reply to #23031 #23032 04:33 PM, 11 Aug 2017
    Это да. Я думал, может, есть незадокументированный способ)
  • @pavlov_m #23033 04:34 PM, 11 Aug 2017
    а по какому протоколу происходит у вас общение?
  • https://t.me/clickhouse_ru
    @qweran ↶ Reply to #23033 #23034 04:35 PM, 11 Aug 2017
    jdbc драйвер
  • https://t.me/clickhouse_ru
    @vinkonst #23035 04:42 PM, 11 Aug 2017
    Joined.
  • @garikanet #23036 07:05 PM, 11 Aug 2017
    Подскажите в логах ошибка
    <Error> history_ctp_avg.Distributed.DirectoryMonitor: Code: 53, e.displayText() = DB::Exception: Received from 1111.211.211.11:9000. DB::Exception: Type mismatch for column shame_level. Column has type UInt32, got type UInt8. Stack trace:

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

    Решение: пересоздать таблицу через временную таблицу ?
  • @milovidov_an #23037 07:35 PM, 11 Aug 2017
    Можно удалить лишь некоторые файлы из data-директории таблицы. Посмотрите - там лежат файлы .bin, и по их содержимому, наверное, легко определить, находятся ли там данные с неправильной структурой.
  • Спасибо,попробую
  • https://t.me/clickhouse_ru
    @inv2004 #23039 09:25 PM, 11 Aug 2017
    Вопрос, опять по внутренностям. Как происходит агрегация при группировке - собираются бакеты и потом они преобразуются в блок и опять мерджатся?
  • @milovidov_an #23040 09:27 PM, 11 Aug 2017
    Агрегация устроена так: идём по строкам и кладём всё в хэш-таблицу. Ключи агрегации - ключ хэш-таблицы, а состояния агрегатных функций - значение хэш-таблицы.
    Параллельная агрегация устроена так: в каждом потоке независимо агрегируем разные части данных. Потом мержим вместе все хэш-таблицы с состояниями в одну.
    Есть много деталей.
  • https://t.me/clickhouse_ru
    @inv2004 #23041 09:28 PM, 11 Aug 2017
    В данный момент я просто from_mark сохраняю в блок - довольно просто. И потом, на основании него выбираю значение при мердже. Для простого случая вроде нормально. Теперь задача для group by протащить как-то этот from_mark в новый блок.
  • https://t.me/clickhouse_ru
    @inv2004 #23042 09:29 PM, 11 Aug 2017
    Мерджим каждый ключ хэша создавая новый блок? Похоже не так просто, тут уже и арена похоже используется. Попробую понять по коду.
  • @milovidov_an #23043 09:33 PM, 11 Aug 2017
    В конце из хэш-таблицы создаются блоки результата. В простом случае создаётся один большой блок (когда размер результата маленьких). В остальных случаях создаётся некоторое количество блоков, разбиение на которые определяется хэш-функцией от ключей.

    А что и как хотелось бы протащить? У тебя есть исходные номера строк, но после агрегации исходных строк уже нет. Можно считать уже агрегатные функции - min(row_number), max(row_number) и т. п.
  • @milovidov_an #23044 09:34 PM, 11 Aug 2017
    Агрегация - довольно сложный код - много деталей, может быть трудно разобраться.
  • https://t.me/clickhouse_ru
    @inv2004 #23045 09:35 PM, 11 Aug 2017
    Номеров строк нет. Есть from_mark , который я кладу в блок, который потом сохраняю в данные при addImpl и использую при merge чтобы понимать порядок блоков. Для простого селекта это работает.
  • https://t.me/clickhouse_ru
    @inv2004 #23046 09:37 PM, 11 Aug 2017
    А вот когда происходит агрегация, то блоки пересоздаются и я этот from_mark теряю. (это же я и выше написал). Соответственно думаю правильно ли вообще такое протаскивать, и если да, то как.
  • https://t.me/clickhouse_ru
    @inv2004 #23047 09:39 PM, 11 Aug 2017
    Т.е. в данный момент функция select lastEx(number) from test, где number - первичный ключ. Оно работает быстрее argMax и результат детерминирован в отличие от anyLast. Но пока без group by.
  • https://t.me/clickhouse_ru
    @inv2004 ↶ Reply to #23043 #23048 09:52 PM, 11 Aug 2017
    Получается надо в агрегацию включать данные о строках - не очень просто и удобно. Да и вообще кажется что строки после агрегации не нужны же.
  • 12 August 2017 (14 messages)
  • После первой же стадии агрегации (когда данные кладутся в хэш-таблицу), порядок блоков теряется. Данные становятся почти случайным образом перемешаны. Из этих данных потом составляются новые блоки, которые по порядку уже никак не соответствуют старым.

    Порядок можно было бы сохранять для некоторых частных случаев агрегаций. Например, когда делается агрегация по первичному ключу. Но у нас эти случаи не рассматриваются отдельно.
  • https://t.me/clickhouse_ru
    @stirch #23050 02:43 AM, 12 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @BloodJazMan #23051 08:09 AM, 12 Aug 2017
    доброе утро всем
    а вот если я создаю Distirubted DDL CREATE TABLE IF NOT EXISTS ... ON CLUSTER

    а через неделю подключаю в нее новую ноду в существующий шард, таблица на новой ноде будет создана автоматически?
  • @pookieShmukie #23052 08:11 AM, 12 Aug 2017
    Нет, на новой ноде нужно будет вручную добавлять таблицу
  • @pookieShmukie #23053 08:11 AM, 12 Aug 2017
    Можно так же запросом по кластеру
  • https://t.me/clickhouse_ru
    @BloodJazMan #23054 08:14 AM, 12 Aug 2017
    спасибо
  • @igorl86 #23055 08:55 PM, 12 Aug 2017
    всем привет, подскажите плиз, может ли AggregatingMergeTree содержать обычные колонки, не состоящие в PK, или их надо тоже заворачивать в аггрегат anyState()?
  • @igorl86 #23056 08:55 PM, 12 Aug 2017
    вроде тесты показывают что может, но вдруг чего
  • @milovidov_an #23057 09:03 PM, 12 Aug 2017
    Из кода:

    For columns that are not part of the primary key and which do not have the AggregateFunction type, when merged, the first value is selected.
  • @igorl86 #23058 09:04 PM, 12 Aug 2017
    спасибо! буду глядеть в код в следующий раз
  • @vstakhov #23059 09:09 PM, 12 Aug 2017
    а Content-Encoding: gzip давно поддерживается?
  • @milovidov_an #23060 09:09 PM, 12 Aug 2017
    Давно. Если правильно помню - больше года.
  • @vstakhov #23061 09:10 PM, 12 Aug 2017
    у меня у юзеров стоит, к примеру, 1.1.54190
  • @vstakhov #23062 09:11 PM, 12 Aug 2017
    пардон, забыл про git tag, вопрос снят
  • 13 August 2017 (39 messages)
  • https://t.me/clickhouse_ru
    @kmarenov #23063 11:04 AM, 13 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @Alexey_VK #23064 11:47 AM, 13 Aug 2017
    Добрый день. А как в CH вытаскивать кол-во строк селекта, несмотря на лимит?
    т.е. делать то, что в mysql позволяет постраничную навигацию делать.
    Пример на MySQL:
    SELECT SQL_CALC_FOUND_ROWS name FROM countries LIMIT 10,20;
    а затем для получения кол-ва ещё запрос
    SELECT FOUND_ROWS()
  • https://t.me/clickhouse_ru
    @Alexey_VK #23065 12:00 PM, 13 Aug 2017
    ща придумал count() использовать, но, может, что-то проще есть?
  • https://t.me/clickhouse_ru
    @Alexey_VK #23066 12:07 PM, 13 Aug 2017
    я понял, почему такая тишина. Не потому, что воскресенье, а потому что кликхаус так не умеет. На LIMIT 10,20 он мне выдал 20 строк. Поправьте, плиз, меня, если я ошибаюсь
  • Есть такая возможность
  • На счет именно клиента не знаю, но через http интерфейс есть такая возможность
  • @pookieShmukie #23069 12:09 PM, 13 Aug 2017
    Я точно не помню какой параметр в ответе по http, но он там есть 100%
  • @pookieShmukie #23070 12:10 PM, 13 Aug 2017
    На счет jdbc драйвера не могу сказать
  • https://t.me/clickhouse_ru
    @Alexey_VK #23071 12:10 PM, 13 Aug 2017
    спасибо, Александр, поищу.
    выше я не прав был, если чо) LIMIT OFFSET, SIZE, так что всё ок) 20 строчек и должно было быть
  • @vladislavadv #23072 08:13 PM, 13 Aug 2017
    Всем привет.

    Подскажите. плиз, а как работать с temp таблицами, используя http интерфейс?
  • @vladislavadv #23073 08:14 PM, 13 Aug 2017
    что-то в документации ничего похожего не вижу
  • @vladislavadv #23074 08:16 PM, 13 Aug 2017
    несколько заросов через ; как я понимаю нельзя(ошибка Multi-statements are not allowed)
  • @vladislavadv #23075 08:16 PM, 13 Aug 2017
    А если подряд выполнять тогда ошибка "There is no session"
  • нужно передвать файл целиком с описанием структуры
  • @pookieShmukie #23077 08:17 PM, 13 Aug 2017
    пример можно посмотреть в http клиенте от the-tinerbox или smi2
  • @pookieShmukie #23078 08:18 PM, 13 Aug 2017
    можно сразу несколько файлов грузить на сервер и использовать в качестве временной таблицы
  • @vladislavadv #23079 08:19 PM, 13 Aug 2017
    А что значит файл с описанием структуры?

    У меня примерно такая задача

    create temporary table tmp as select очень большой и сложный селект

    а потом сделать из нее несколько селектов
  • @vladislavadv #23080 08:19 PM, 13 Aug 2017
    Через консольный клиент все работает. А через http - не понимаю. как выполнить все запросы в рамках одной сессии
  • @vladislavadv #23081 08:21 PM, 13 Aug 2017
    В доке smi2 про это ни слова нет.
    В доке clickhouse нашел след фразу:

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

    Не уверен, что это оно. Сейчас попробую в него какую-нибудь чушь передать )
  • @vladislavadv #23082 08:27 PM, 13 Aug 2017
    Не прокатило
    Code: 115, e.displayText() = DB::Exception: Unknown setting session_id, e.what() = DB::Exception
  • @vladislavadv #23083 08:31 PM, 13 Aug 2017
    Похоже причина в версии кх. Попробуем завтра обновить
  • @vladislavadv #23084 09:01 PM, 13 Aug 2017
    После добавление в smi2 конфиг
    'settings' => ['session_id' =>Helper::getUuid4()]

    Все заработало. Было бы круто, если бы кто-нибудь это добавил в доку(как кликхауса, так и smi2)
  • @vladislavadv #23085 09:02 PM, 13 Aug 2017
    Вопрос, а нужно ли эти сессии как-то убивать? Или они сами через какой-то timeout умрут?
  • @412439595 #23086 10:20 PM, 13 Aug 2017
    Joined.
  • Сами, по-умолчанию таймаут 60 секунд. Таймаут можно изменить параметром session_timeout до некоторого максимального значения, определённого в конфиге.
  • @vladislavadv #23088 10:28 PM, 13 Aug 2017
    И uuid4 в значении - ок?
  • @milovidov_an #23089 10:28 PM, 13 Aug 2017
    Да. Можно использовать любую строку.
  • @vladislavadv #23090 10:29 PM, 13 Aug 2017
    Отлично. Спасибо!
  • @vladislavadv #23091 10:30 PM, 13 Aug 2017
    Еще вопрос, а функции которая возвращает номер недели как я понимаю нет?

    А то получается вот такая странная конструкция:))

    case 2: // Month
    $whereForTop[] = "toMonth(`date`) = toMonth(now())";
    break;
    case 3: // Week
    $whereForTop[] = "`date` >= toDate(now())-(toDayOfWeek(toDate(now()))-1) ";
  • @milovidov_an #23092 10:31 PM, 13 Aug 2017
    Есть функция toMonday - округлить до понедельника. Она так называется, потому что есть страны, где неделя начинается в другой день.
  • @vladislavadv #23093 10:33 PM, 13 Aug 2017
    Кстати, а как лучше будет:
    toMonth(`date`) = toMonth(now())
    или
    date >=toStartOfMonth(now())

    или оптимизатору все-равно?
  • @vladislavadv #23094 10:34 PM, 13 Aug 2017
    Хотя, первый вариант все-равно косячный. Если года разные.
  • @vladislavadv #23095 10:34 PM, 13 Aug 2017
    сорри
  • @milovidov_an #23096 10:34 PM, 13 Aug 2017
    Да, пишите toStartOfMonth.
  • @vladislavadv #23097 10:34 PM, 13 Aug 2017
    Спасибо. Передаем на toMonday\toStartOfMonth. :)
  • @milovidov_an #23098 10:34 PM, 13 Aug 2017
    Оптимизатору должно быть всё равно, мы добавляли такую функциональность. Но на всякий случай проверьте, обрабатывают ли оба запроса одинаковое количество строк - это пишет clickhouse-client.
  • @vladislavadv #23099 10:38 PM, 13 Aug 2017
    WHERE date >= toStartOfMonth(now())

    ┌──count()─┐
    │ 73822851 │

    1 rows in set. Elapsed: 0.026 sec. Processed 73.82 million rows, 147.65 MB (2.80 billion rows/s., 5.60 GB/s.)

    WHERE toMonth(date) = toMonth(now())
    ┌──count()─┐
    │ 73822851 │

    1 rows in set. Elapsed: 0.068 sec. Processed 73.82 million rows, 147.65 MB (1.09 billion rows/s., 2.18 GB/s.)

    При повторных запусках, на варианте с WHERE toMonth(date) = toMonth(now())
    скорость стабильно ниже.
  • @milovidov_an #23100 10:39 PM, 13 Aug 2017
    Запросы одинаковым образом используют индекс. Но сравнение date с константной проще, чем вычисление месяца.
  • @vladislavadv #23101 10:40 PM, 13 Aug 2017
    логично. Еще раз спасибо!:)
  • 14 August 2017 (76 messages)
  • @rostegozavr #23102 03:11 AM, 14 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @x4mmm #23103 06:47 AM, 14 Aug 2017
    Подскажите, пожалуйста, по коду: вот у меня есть Block полученный от сервера, как мне его проще всего нарезать на строчки типа char**. Парсить то, что было на входе WriteBuffer?
  • https://t.me/clickhouse_ru
    Алексей, спасибо! Качество компрессии выросло в 2 раза!
  • @garikanet #23105 08:30 AM, 14 Aug 2017
    Подскажите по session_id ( хочу в драйвере прикрутить ) и TEMPORARY TABLE

    - Эти таблицы можно удалить через DROP TABLE ? У меня не получается - посылаю запрос на CREATE , потом на DROP с указанием session_id - ошибка

    - Из доки : "- временные таблицы исчезают после завершения сессии; в том числе, при обрыве соединения" - получается нельзя использовать несколько соединений подряд с одним session_id , нужно постоянно держать connection ?
  • https://t.me/clickhouse_ru
    @kshvakov #23106 08:34 AM, 14 Aug 2017
    присоединяюсь к вопросу, т.к. при работе с нативным протоколом таже проблема, нет возможности удалять временные таблицы, а разрывать соединение каждый раз не очень удобно
  • https://t.me/clickhouse_ru
    @Alexey_VK #23107 08:48 AM, 14 Aug 2017
    Привет. Про LEFT JOIN. Может, кому пригодится.
    Вложенные запросы пришлось написать вместо просто таблиц, т.к. алиасы не работают так, как в MySQL.

    ✅ Так работает (вывожу регионы и страны с айдишниками):
    :) SELECT region_id, region_name, country_id, country_name FROM (SELECT region_id, name_ru as region_name, country_id FROM _regions_log WHERE 1=1 LIMIT 0,10) ANY LEFT JOIN (SELECT country_id, name_ru as country_name FROM _countries) USING(country_id) ORDER BY region_name LIMIT 0,10

    SELECT
    region_id,
    region_name,
    country_id,
    country_name
    FROM
    (
    SELECT
    region_id,
    name_ru AS region_name,
    country_id
    FROM _regions_log
    WHERE 1 = 1
    LIMIT 0, 10
    )
    ANY LEFT JOIN
    (
    SELECT
    country_id,
    name_ru AS country_name
    FROM _countries
    ) USING (country_id)
    ORDER BY region_name ASC
    LIMIT 0, 10

    ┌─region_id─┬─region_name────────────┬─country_id─┬─country_name─┐
    │ 2763 │ Chongqing Municipality │ 97 │ Китай │
    │ 20573 │ Dornod Aymag │ 130 │ Монголия │
    │ 875 │ Imo State │ 137 │ Нигерия │
    │ 13330 │ Ogun State │ 137 │ Нигерия │
    │ 2188 │ Pune │ 80 │ Индия │
    │ 1000001 │ Адыгея │ 1 │ Россия │
    │ 1000236 │ Архангельская область │ 1 │ Россия │
    │ 1004118 │ Астраханская область │ 1 │ Россия │
    │ 1004565 │ Башкортостан │ 1 │ Россия │
    │ 1009404 │ Белгородская область │ 1 │ Россия │
    └───────────┴────────────────────────┴────────────┴──────────────┘

    10 rows in set. Elapsed: 0.005 sec. Processed 3.96 thousand rows, 140.74 KB (756.70 thousand rows/s., 26.93 MB/s.)

    Кстати, звёздочка во внешнем селекте выводила только столбцы, соответствующие первому вложенному селекту. Перечисление всех - сработало.
  • https://t.me/clickhouse_ru
    @Alexey_VK #23108 08:48 AM, 14 Aug 2017
    А вот, с чего начал терять время на преобразования:

    🚫 Так - не работает (в отличие от MySQL):

    :) SELECT r.region_id as region_id, r.name_ru as region_name, r.country_id as country_id, c.name_ru as country_name FROM geodata._regions_log as r LEFT JOIN geodata._countries as c USING(country_id) WHERE 1=1 ORDER BY r.name_ru LIMIT 0,10

    SELECT
    r.region_id AS region_id,
    r.name_ru AS region_name,
    r.country_id AS country_id,
    c.name_ru AS country_name
    FROM geodata._regions_log AS r
    LEFT JOIN geodata._countries AS c USING (country_id)
    WHERE 1 = 1
    ORDER BY r.name_ru ASC
    LIMIT 0, 10

    Received exception from server:
    Code: 60. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Table geodata.geodata._countries doesn't exist..

    0 rows in set. Elapsed: 0.034 sec.

    🚫 Задвоенная БД? - убираем ваще. Но и так - не работает:

    :) SELECT r.region_id as region_id, r.name_ru as region_name, r.country_id as country_id, c.name_ru as country_name FROM _regions_log as r LEFT JOIN _countries as c USING(country_id) WHERE 1=1 ORDER BY r.name_ru LIMIT 0,10
    SELECT
    r.region_id AS region_id,
    r.name_ru AS region_name,
    r.country_id AS country_id,
    c.name_ru AS country_name
    FROM _regions_log AS r
    LEFT JOIN _countries AS c USING (country_id)
    WHERE 1 = 1
    ORDER BY r.name_ru ASC
    LIMIT 0, 10

    Received exception from server:
    Code: 47. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Unknown identifier: c.name_ru.

    0 rows in set. Elapsed: 0.021 sec.

    Спасибо за внимание
  • https://t.me/clickhouse_ru
    @aloneibreak #23109 08:50 AM, 14 Aug 2017
    Добрый день. Подскажите почему не рекомендуется хранить float в таблицах?
  • https://t.me/clickhouse_ru
    @IgorVolkov92 #23110 08:51 AM, 14 Aug 2017
    0.2 + 0.1 = 0.30000000000000004
  • https://t.me/clickhouse_ru
    @IgorVolkov92 #23111 08:51 AM, 14 Aug 2017
    вот поэтому
  • https://t.me/clickhouse_ru
    @aloneibreak #23112 08:52 AM, 14 Aug 2017
    Спасибо
  • @shulenko #23113 09:03 AM, 14 Aug 2017
    Добрый день. Обнаружил интересную особенность поведения внешних словарей CH 1.1.54245
    Во всех конфигурационных файлах словарей прописаны значение параметра "Периодичность обновления для полностью загружаемых словарей":
    <lifetime>
    <min>3000</min>
    <max>4200</max>
    </lifetime>
    <layout>
    <hashed/>
    </layout>
    В основном конфиг файле config.xml СН параметр dictionaries_lazy_load не указан.
    Не могли бы подсказать почему внешние словари не обновляются в период, который указан в lifetime?
    А обновление всех словарей происходит только тогда, когда производится запрос к одному из словарей.
    Ошибок в логах нет.
    Словари висят в памяти определенное время, а потом удаляются.
    Заранее спасибо
  • @TanVD #23114 09:21 AM, 14 Aug 2017
    Здравствуйте. Никто не сталкивался с проблемой на очень маленьких данных (10 мб) — очень большое число parts в partition и следовательно размер partition в несколько раз больше (60 мб) чем данных в ней. Используем granularity 512, но когда закачивали основной сет размером в 6 гб таких проблем не получали.
  • Привет. В драйвер сми2 я прикрутил сессии простым добавлением в конфиг
    'settings' => ['session_id' =>Helper::getUuid4()]

    Про обрыв соединения, скорее всего имели ввиду при подключении через родной клиент. При работе по http соединение держать не нужно.
  • https://t.me/clickhouse_ru
    @sergeiermakov #23116 10:07 AM, 14 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @sergeiermakov #23117 10:09 AM, 14 Aug 2017
    Привет. Подскажите, как я могу сконкатенировать массивы?
  • Да я уже попробовал, сделал в dev

    $client->useSession()

    Но вот красиво и правильно unit test написать не получается )
  • TDD? :)
  • https://t.me/clickhouse_ru
    @b0ch4r0v #23120 10:19 AM, 14 Aug 2017
    добрый день, вопрос актуален

    Alexandr Bocharov, [11.08.17 15:37]
    при прочих равных - SummingMergeTree vs AggregatingMergeTree
    у какого движка будет выше производительность, лучше потребление памяти, другие ньюансы/недостатки использования?
    может есть бенчмарки?
  • https://t.me/clickhouse_ru
    @Shegloff #23121 10:22 AM, 14 Aug 2017
    всем привет! папака /local/zookeeper/version-2 занимает 440Gb и в ней 15к файлов. Это нормально? Почистить можно ее?
  • https://t.me/clickhouse_ru
    @mrphelko #23122 10:23 AM, 14 Aug 2017
    Привет всем. Ребят а как яндекс реализует отправку батчем в метрики, там же клик это одно событие, где они хранят события перед отправкой?
  • https://t.me/clickhouse_ru
    @Sfinks80 #23123 10:24 AM, 14 Aug 2017
    может в RAM?
  • @emptyname #23124 10:24 AM, 14 Aug 2017
    где-нибудь типа RabbitMQ?
  • @a_beloglazov #23125 10:26 AM, 14 Aug 2017
    Возможно ли использование поля из словаря в выражении WHERE?

    SELECT * FROM
    (
    SELECT
    foo1, foo2, foo3,
    dictGetString('my_dict', 'dict_foo', tuple(toInt32(bar1), bar2))
    FROM
    my_table
    WHERE
    date = '2017-05-11'
    ) AS t1
    WHERE dict_foo != 'smth'
    LIMIT 10
  • https://t.me/clickhouse_ru
    @mrphelko #23126 10:26 AM, 14 Aug 2017
    у меня была идея либо в kafka, redis или просто RAM, но от мне интересно как это в яндексе устроенно
  • Движок buffer
  • https://t.me/clickhouse_ru
    @mrphelko ↶ Reply to #23127 #23128 10:27 AM, 14 Aug 2017
    Напишу тесты тогда для проверки
  • На сколько я помню из рассказов о том как они кладут данные в метрике, то там был buffer в самом CH через которые эвенты сбрасываются в таблицу
  • @pookieShmukie #23130 10:28 AM, 14 Aug 2017
    Алексей не так давно рассказывал про то как этот буфер устроен и как им пользоваться. Плюсы и минусы. Если постараться, то можно в истории чатика найти )
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #23121 #23131 10:38 AM, 14 Aug 2017
    нашел, что A ZooKeeper server will not remove old snapshots and log files when using the default configuration.
    сколько посоветуете поставить autopurge.snapRetainCount и autopurge.purgeInterval? ну интервал часик например, а колво snapRetainCount?
  • угу он самый
  • https://t.me/clickhouse_ru
    @Shegloff #23133 10:42 AM, 14 Aug 2017
    а блин, в доке же есть
  • https://t.me/clickhouse_ru
    @Shegloff #23134 10:42 AM, 14 Aug 2017
    спс =)
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #23117 #23135 11:17 AM, 14 Aug 2017
    SELECT
    [1, 2] AS x,
    [3, 4] AS y,
    arrayReduce('groupArrayArray', [x, y]) AS xy

    ┌─x─────┬─y─────┬─xy────────┐
    │ [1,2] │ [3,4] │ [1,2,3,4] │
    └───────┴───────┴───────────┘
  • https://t.me/clickhouse_ru
    @sergeiermakov #23136 11:34 AM, 14 Aug 2017
    Спасибо, а можно ли как-то над каждым элементом одного массива произвести изменение по какой-то функции и получить на выходе масссив: Например, ['x', 'y'] -> ['xx', 'yy'] ?
  • @emptyname #23137 11:36 AM, 14 Aug 2017
    Документация ClickHouse | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @sergeiermakov #23138 11:37 AM, 14 Aug 2017
    Спасибо, проглядел!
  • https://t.me/clickhouse_ru
    Похожая проблема. Есть у кого то мысли???
  • У столбцов (IColumn) есть метод getDataAt, который позволяет получить ссылку на кусок памяти, где расположено значение. Это работает только для простых типов. Например, для массивов уже нет.

    Также есть метод operator[], который позволяет получить значение в виде Field.
  • И правда, временные таблицы не удаляются вообще никак. Странно, что только сейчас заметили.
  • Спасибо за примеры! Это старая проблема, нам давно пора это исправить. Постепенно делаем.
  • @serlex777 #23143 02:26 PM, 14 Aug 2017
    Подскажите пожалуйста, вижок AggregatingMergeTree как-то сокращает объем таблицы и или нет? Вообще какие могут быть области его применения? Спасибо
  • Никаких особенных проблем с float-ами нет кроме того, что это именно float-ы - то есть, плохо подходят для денег и в тех местах, где нужно хранить десятичные дроби без потери точности. А если нужно обрабатывать данные мониторинга, физические рассчёты, то float-ы будут в самый раз.
  • https://t.me/clickhouse_ru
    @DOSuvorov #23145 02:28 PM, 14 Aug 2017
    /stat@combot
  • Я для своих задач делаю через TinyLog, и потом удаляю - а озадачился только из за примера с session_id.
    Мне кажется мало кто использует ее в ручном режиме, как в доки и написанно - "В большинстве случаев, временные таблицы создаются не вручную"
  • @vstakhov #23148 02:29 PM, 14 Aug 2017
    @milovidov_an за исключением того, что они будут шуметь и фигово компрессироваться
  • @vstakhov #23149 02:30 PM, 14 Aug 2017
    @milovidov_an при том, что в большинстве случаев точность даже float для всего допустимого диапазона значений не особо нужна
  • https://t.me/clickhouse_ru
    теперь понятно. спасибо за ответ
  • @vstakhov #23151 02:31 PM, 14 Aug 2017
    ну и atod/dtoa - это боль
  • https://t.me/clickhouse_ru
    @x4mmm ↶ Reply to #23140 #23152 02:31 PM, 14 Aug 2017
    Спасибо. Мне, в принципе, все равно данные форматировать надо, по этому я пытаюсь Воспользоваться WriteBuffer. Постгрес воспринимает данные через их текстовое представление.
  • dictionaries_lazy_load по-умолчанию true. В этом случае, первая загрузка словарей происходит при первом обращении к ним. После этого словари обновляются согласно указанному времени (в вашем случае примерно каждый час с разбросом в +- 10 минут).

    Вы говорите, что словари исчезают? Такого поведения конечно быть не должно. Как это видно?

    Также отмечу, что словари не перезагружаются, если можно определить, что источник не изменился (не увеличилось время модификации файла, время модификации MyISAM таблицы).
  • Когда данные часто мержатся, то остаётся много старых part-ов. Они удаляются через 8 минут после мержа. Посмотреть на старые part-ы можно по значению поля active в таблице system.parts.
  • SummingMergeTree несколько (чуть-чуть) оптимальнее - по скорости мержа, и по скорости выполнения запросов. Если вам нужны только суммы, то он проще в использовании.
  • https://t.me/clickhouse_ru
    @b0ch4r0v #23156 02:35 PM, 14 Aug 2017
    спасибо.
  • Как ни странно, для основного кластера мы не используем Buffer таблицы. В движок Метрики приходят данные уже в виде пачек, а эти пачки образуются для разных потоков данных одним из двух способов:
    - накапливаются в файлах на неких серверах, которые принимают трафик;
    - кладутся и вынимаются из Кафки.
  • Можно. Для этого, задайте в подзапросе алиас для выражения, которое достаёт данные из словаря. И используйте это имя в условии снаружи.
  • Сейчас наконец-то запланирована задача, где конкатенация массивов делается по-нормальному.
  • AggregatingMergeTree агрегирует данные при мержах. То есть, если было много строк для одного ключа, то после мержа останется одна, агрегированная. Мержи производятся не для всех кусков сразу - данные постоянно держатся несколько недомерженными.
  • Тогда смотрите метод IDataType::serializeTextEscaped и похожие.
  • https://t.me/clickhouse_ru
    @x4mmm ↶ Reply to #23161 #23162 02:55 PM, 14 Aug 2017
    Да, я так и сделал. Мне по сути нужно из строки char**. Я просто \t заменил на 0 и собрал указатели (через WriteBufferFromOStream+stringstream), но что-то пошло не так, завтра буду разбираться.
  • Это Ок за исключением того, что строки будут лишний раз экранированы.
  • https://t.me/clickhouse_ru
    @x4mmm #23164 02:58 PM, 14 Aug 2017
    Ну, я сейчас делаю PoC чтобы сравнить скорость python+http с plainC+native
  • https://t.me/clickhouse_ru
    @x4mmm #23165 02:59 PM, 14 Aug 2017
    Если от С будет выхлоп - буду делать хорошо и правильно
  • @TanVD ↶ Reply to #23154 #23166 04:17 PM, 14 Aug 2017
    Много не active партов и они не удаляются уже в течении продолжительного времени...
  • @TanVD ↶ Reply to #23166 #23167 04:24 PM, 14 Aug 2017
    Точнее, видимо, парты постоянно создаются. Их число скачет в районе 90 штук.
  • https://t.me/clickhouse_ru
    @tellef #23168 04:40 PM, 14 Aug 2017
    В кх вставки по 20к лучше делать? или можно больше?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #23168 #23169 04:41 PM, 14 Aug 2017
    Можно больше
  • https://t.me/clickhouse_ru
    @tellef #23170 04:41 PM, 14 Aug 2017
    можно то можно) а оптимально как?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #23170 #23171 04:42 PM, 14 Aug 2017
    Чтоб самих инсертов было мало
  • https://t.me/clickhouse_ru
    @Civiloid #23172 04:42 PM, 14 Aug 2017
    А размер одного инсерта был большой
  • https://t.me/clickhouse_ru
    @alanbondarchuk #23173 06:58 PM, 14 Aug 2017
    а чем буферизируют в golang ? или вручную?
  • https://t.me/clickhouse_ru
    @xsikor ↶ Reply to #23173 #23174 07:04 PM, 14 Aug 2017
    Я к примеру просто собираю в слайс, после чего просто проверяю длинну + тикер на каждые две секунды. Т.е. или инсерт идёт при достижении 10к, или каждые две секунды
  • https://t.me/clickhouse_ru
    @hagen1778 #23175 07:14 PM, 14 Aug 2017
    GitHub - nikepan/clickhouse-bulk: Collects many small inserts to ClickHouse and send in big inserts

    Collects many small inserts to ClickHouse and send in big inserts - GitHub - nikepan/clickhouse-bulk: Collects many small inserts to ClickHouse and send in big inserts

  • https://t.me/clickhouse_ru
    @xsikor #23176 07:14 PM, 14 Aug 2017
    Из самых годных вариантов как по мне - это обойтись возможностями клик хауса
    https://clickhouse.yandex/docs/ru/table_engines/buffer.html
  • https://t.me/clickhouse_ru
    @alanbondarchuk #23177 07:44 PM, 14 Aug 2017
    там написано что даже в буффер лучше слать пачками
  • @75569302 #23178 11:18 PM, 14 Aug 2017
    Joined.
  • 15 August 2017 (62 messages)
  • https://t.me/clickhouse_ru
    @rboyko #23179 05:22 AM, 15 Aug 2017
    /stat@combot
  • @DeamonMV #23181 08:56 AM, 15 Aug 2017
    Привет Всем.
    Подскажите такой вопрос
    как можно обрывать выполнения запроса в случае если запрос приходит через http но соединение периодически обрывается?
    т.е. у нас получается что запрос запустился а сооединение отвалилось а запрос остался выполнятся. фигня в том что кол. данных которые перебирается уже большое и из-за таких обрывов растет загрузка на сервере и соответственно время выполнение запросов.
  • https://t.me/clickhouse_ru
    @frisbeeman #23182 10:20 AM, 15 Aug 2017
    Скажите, пожалуйста, а можно как-то повлиять на количество parts, при превышении которого КХ начинает кидаться ошибкой "Code: 252, e.displayText() = DB::Exception: Too much parts. Merges are processing significantly slower than inserts."?
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #23182 #23183 10:22 AM, 15 Aug 2017
    медленнее лить.) Это означает что мержи неуспевают за инсертами
  • https://t.me/clickhouse_ru
    Проблема в том, что даже если ничего не лить, это количество сейас около 300. OPTIMIZE TABLE с FINAL отрабатывает моментально и ничего не делает. Вероятно это из-за того, что выполняю ее на не ведомой реплике. Но на лидирующей количество в 4 раза меньше. Проверил все варианты о которых писали, откуда такое может идти, ни одно не потвердилось. Мне бы сейчас потушить эту проблему и нормально разбраться.
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #23184 #23185 10:26 AM, 15 Aug 2017
    Там есть ограничение по размеру кусков для мержа. Возможно из-за этого не мержит
  • https://t.me/clickhouse_ru
    @frisbeeman #23186 10:27 AM, 15 Aug 2017
    А как этот параметр называется?
  • https://t.me/clickhouse_ru
    @varvara22 #23187 11:24 AM, 15 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @skaua #23188 12:17 PM, 15 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @captainDino95 #23189 12:39 PM, 15 Aug 2017
    Подскажите, пожалуйста, с помощью чего просуммировать математически элементы Array(UInt64), sumArray как я поняла, предназначен ля агрегации
  • https://t.me/clickhouse_ru
    @orantius #23190 12:44 PM, 15 Aug 2017
    arrayReduce
  • @a_beloglazov #23191 12:47 PM, 15 Aug 2017
    Привет всем!
    Кто-нибудь делал импорт в CH из Parquet файлов?
  • https://t.me/clickhouse_ru
    @captainDino95 #23192 12:50 PM, 15 Aug 2017
    спасибо большое
  • Ограничение на максимальный размер куска - max_bytes_to_merge_at_max_space_in_pool. Настраивается в config.xml, в секции merge_tree.

    Количество кусков, после которого кидается исключение о том, что кусков слишком много - parts_to_throw_insert. Обычно увеличивать не имеет смысла, так как причина часто не в том, что куски не успевают мержатся, а в том, что они не мержатся вообще, из-за каких-либо проблем.
  • https://t.me/clickhouse_ru
    @frisbeeman #23194 12:53 PM, 15 Aug 2017
    Спасибо!
  • Надо смотреть более внимательно. Какой делается OPTIMIZE и какие куски в таблице для данной партиции (в system.parts). Как писал в почте, наверное проблема из-за версии 54266, но это пока гипотеза. Мы знаем, что в этой версии есть проблема.
  • @a_beloglazov #23196 12:56 PM, 15 Aug 2017
    Встроенного конвертера из Parquet нет, а очень бы хотелось сделать, только не очень понятно в какой формат делать конвертацию? В Native? это самый "родной" формат для CH и самый дешевый для импорта?
  • @milovidov_an #23197 12:57 PM, 15 Aug 2017
    Да, Native самый оптимальный. Но его труднее сформировать вручную. Второй по простоте - RowBinary. Хотя сам Parquet больше всего похож на Native, и я думаю, что родную поддержку Parquet рано или поздно придётся сделать.
  • https://t.me/clickhouse_ru
    Да, откатили, запустил еще раз OPTIMZIE, лидер нагружен, на проблемной ноде пока все по старому.
  • @a_beloglazov #23199 12:58 PM, 15 Aug 2017
    В каком source файле можно вычитать спецификацию Native?
  • @a_beloglazov #23200 01:01 PM, 15 Aug 2017
    Да, Parquet/ORC было бы очень круто
  • @ztlpn #23202 01:06 PM, 15 Aug 2017
    Не совсем спецификация, конечно 🙂
  • @a_beloglazov #23203 01:07 PM, 15 Aug 2017
    ну понятно что самой спеки нет, я имел ввиду какой-то модуль, типа DAO
  • @a_beloglazov #23204 01:07 PM, 15 Aug 2017
    как раз то что нужно
  • @a_beloglazov #23205 01:07 PM, 15 Aug 2017
    благодарю!
  • @pavel_maksimow #23206 01:21 PM, 15 Aug 2017
    Всем привет. В sql я новичок. Помогите пожалуйста отфильтровать URL который оканчивается на ".ru/" или ".by/". Я делаю так WHERE StartURL LIKE '*.??/', но clickhouse так не фильтрует
  • @IgnisDivine #23207 01:25 PM, 15 Aug 2017
    where StartURL like '%.ru'
  • @IgnisDivine #23208 01:25 PM, 15 Aug 2017
    и также через OR
  • https://t.me/clickhouse_ru
    Делал, через Apache Spark (точнее pyspark):
    1. читаем в DataFrame сам Parquet-файл
    df = spark.read.parquet('/mnt/experiment/spark7/')

    2. пишем в CH через jdbc-драйвер
    df.write.jdbc(url="clickhouse://default:@localhost/log", table="log.log", mode="append")

    Запуск питоновского файла:
    ~/spark-2.1.1-bin-hadoop2.7/bin/spark-submit \
    —driver-class-path tmp/clickhouse-jdbc-0.1-25-jar-with-dependencies.jar \
    —jars tmp/clickhouse-jdbc-0.1-25-jar-with-dependencies.jar \
    script.py
  • Спасибо, помогло
  • А скорость как? Устраивает?
    И как вы боролись с type cast, не всегда схему паркета можно загнать напрямую в схему CH, float null на nan заменять, int null на какое-то значение
  • https://t.me/clickhouse_ru
    Я прям напрямую из паркета в CH не делал, у меня исходные данные - файловые json-логи. Но с учётом обработки json-а , на 8 ядрах скорость чтения, обработки и вставки - 30к-40к записей логов в секунду (мне хватает)
  • https://t.me/clickhouse_ru
    Так там же можно сделать что-то типа такого
    df.rdd.map(...).write.parquet
    И уже в map преобразовывать данные как душе угодно
  • @a_beloglazov #23214 01:46 PM, 15 Aug 2017
    Очень хороший вариант, согласен, но в нашем случае источник данных лежит в одном ДЦ, а CH на AWS, поэтому ищем способ перенести самую тяжелую часть ETL процесса на свою сторону, и копировать на S3 уже готовые и "дешевые" для импорта в CH данные
  • https://t.me/clickhouse_ru
    Тут вариантов может быть много:
    1. Поднять в ДЦ реплику и писать в неё - в CH данные отреплицируются в сжатом бинарном виде;
    2. в ДЦ через спарк писать сразу сжатый gzip-ом tab-separete файл и уже его переносить и импортировать;
    и ещё куча можно придумать.
    Мне нравиться первый вариант
  • первый вариант 👍
    будем думать, спасибо
  • https://t.me/clickhouse_ru
    @KeksBeskvitovich #23217 03:07 PM, 15 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @KeksBeskvitovich #23218 03:07 PM, 15 Aug 2017
    Привет, а есть у кого-нибудь опыт поднятия clickhouse в kubernetes?
  • https://t.me/clickhouse_ru
    @alf_samara #23219 03:31 PM, 15 Aug 2017
    Всем привет. У меня есть таблица с кликами (600млн, 50Гб) и таблица с действиями по этим кликам (5млн, 100Мб). Я хочу создать представление из двух таблиц, где данные будут браться из действий и дополняться данными из клика. Как мне это сделать правильно в кликхаусе? При тестировании запроса для представления всё падает на Memory limit.
  • https://t.me/clickhouse_ru
    @alf_samara #23220 03:34 PM, 15 Aug 2017
    Объединение данных идет по hit_id, который прописан в индексах обеих таблиц
  • Обычно оба типа событий кладут в одну таблицу.
  • @esurovskiy #23222 04:31 PM, 15 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @ihard #23223 05:14 PM, 15 Aug 2017
    есть проблема с использованием сlickhouse (carbonapi + graphite-clickhouse ) в качестве хранения метрик, на запись да все ок (carbon-clickhouse), а на чтение там где (carbonapi + carbonserver go-carbon) на сервере требуют 25% CPU и 30Гб памяти суммарно на весь поток, clickhouse уже на 30% трафика на чтение CPU в 90% и по памяти быстро улетает в оом, некоторые запросы у меня не помещались по элементам увеличивал параметры
    <max_query_size>104857600</max_query_size>
    <max_ast_elements>100000</max_ast_elements>
    <use_uncompressed_cache>1</use_uncompressed_cache>
    <max_concurrent_queries>500</max_concurrent_queries>
    <uncompressed_cache_size>17179869184</uncompressed_cache_size>
    не очень понятно что еще можно подкрутить , сервер 2CPU CPU E5-2620 v3 24 ядра с HT 64Гб памяти + ssd
  • https://t.me/clickhouse_ru
    @ihard #23224 05:18 PM, 15 Aug 2017
    схема данных
    CREATE TABLE graphite (
    Path String,
    Value Float64,
    Time UInt32,
    Date Date,
    Timestamp UInt32
    )
    ENGINE = ReplicatedGraphiteMergeTree(
    '/clickhouse/tables/{shard}/graphite',
    '{replica}', Date, (Path, Time), 8192, 'graphite_rollup'
    );

    CREATE TABLE graphite_tree (
    Date Date,
    Level UInt32,
    Path String,
    Deleted UInt8,
    Version UInt32
    )
    ENGINE = ReplicatedReplacingMergeTree(
    '/clickhouse/tables/{shard}/graphite_tree',
    '{replica}', Date, (Level, Path), 8192, Version
    );
    1 шард 2 реплики
  • @milovidov_an #23225 05:19 PM, 15 Aug 2017
    <max_concurrent_queries>500</max_concurrent_queries>
    Увеличивать не имеет смысла, даже по-умолчанию 100 одновременных запросов - очень много.
  • @milovidov_an #23226 05:19 PM, 15 Aug 2017
    Надо взять какой-нибудь достаточно сложный запрос и посмотреть, почему он выполняется долго.
  • https://t.me/clickhouse_ru
    @ihard #23227 05:34 PM, 15 Aug 2017
    а как дебажить то , в логах я могу к примеру найти такие строки
    2017.08.15 20:25:23.108086 [ 528412 ] <Information> executeQuery: Read 27448731 rows, 3.97 GiB in 9.050 sec., 3032937 rows/sec., 448.74 MiB/sec.
    id запроса нет нужно как то включить это?
  • https://t.me/clickhouse_ru
    @freeseacher #23228 05:34 PM, 15 Aug 2017
    528412 вроде как раз он и есть
  • @milovidov_an #23229 05:36 PM, 15 Aug 2017
    Это номер потока, в котором выводится сообщение. Чуть выше будет запрос.
  • https://t.me/clickhouse_ru
    @ihard #23230 05:45 PM, 15 Aug 2017
    2017.08.15 20:25:14.056114 [ 528412 ] <Debug> executeQuery: (from 127.0.0.1:52064) SELECT Path, Time, Value, Timestamp FROM graphite WHERE (Path IN ( 'тут портянка на несколько Мб метрик') , (column 1 in (-inf, 1502830859]), and, (column 1 in [1502744400, +inf)), and, unknown, and, unknown, and
    2017.08.15 20:25:14.203261 [ 528412 ] <Debug> default.graphite (SelectExecutor): Date condition: unknown, unknown, and, unknown, and, (column 0 in (-inf, 17394]), and, (column 0 in [17393, +inf)), and
    2017.08.15 20:25:14.213445 [ 528412 ] <Debug> default.graphite (SelectExecutor): Selected 12 parts by date, 12 parts by key, 3354 marks to read from 491 ranges
    2017.08.15 20:25:14.214105 [ 528412 ] <Trace> default.graphite (SelectExecutor): Reading approx. 27475968 rows
    2017.08.15 20:25:14.217015 [ 528412 ] <Trace> InterpreterSelectQuery: FetchColumns -> Complete
    2017.08.15 20:25:14.357540 [ 528412 ] <Debug> executeQuery: Query pipeline:
    2017.08.15 20:25:23.106839 [ 528412 ] <Trace> UnionBlockInputStream: Waiting for threads to finish
    2017.08.15 20:25:23.107887 [ 528412 ] <Trace> UnionBlockInputStream: Waited for threads to finish
    2017.08.15 20:25:23.108086 [ 528412 ] <Information> executeQuery: Read 27448731 rows, 3.97 GiB in 9.050 sec., 3032937 rows/sec., 448.74 MiB/sec.
  • @milovidov_an #23231 05:51 PM, 15 Aug 2017
    Дальше можно смотреть, почему этот запрос медленно выполняется.
  • https://t.me/clickhouse_ru
    @ihard ↶ Reply to #23231 #23232 06:01 PM, 15 Aug 2017
    есть какой то профилировщик или в логе дальше должно быть?
  • @milovidov_an #23233 06:03 PM, 15 Aug 2017
    В логе нет. Встроенного профилировщика тоже нет.
    Можно запустить запрос в цикле с помощью:

    clickhouse —benchmark < query.tsv

    И после этого смотреть на время выполнения и системные ресурсы - диск, CPU.
    Если потребляется CPU, то посмотреть perf top.
  • @milovidov_an #23234 06:05 PM, 15 Aug 2017
    Я подозреваю, что можно ускорить этот запрос не более чем в несколько раз, а в остальном проблема в наличии очень большого количества запрашиваемых метрик и того факта, что данные по этим метрикам расположены не рядом (приходится читать 27 448 731 строк).
  • https://t.me/clickhouse_ru
    @ihard #23235 06:10 PM, 15 Aug 2017
    количество запрашиваемых метрик - видимо основной параметр, тут нужна агрегация перед clickhouse чтобы графики были не по 100500+ метрик, но также как факт что более специализированное решение требует гораздо меньше ресурсов, буду думать спасибо
  • @sr_maks1 ↶ Reply to #23223 #23236 07:39 PM, 15 Aug 2017
    А карбон это wso?
  • https://t.me/clickhouse_ru
    @ihard ↶ Reply to #23236 #23237 07:44 PM, 15 Aug 2017
    Не очень понял, wso - что это?
  • https://t.me/clickhouse_ru
    @ihard #23238 07:57 PM, 15 Aug 2017
    Я нашёл Weapon Systems Office - это явно не оно ;)
  • @sr_maks1 #23240 08:12 PM, 15 Aug 2017
    Что то типа такого. Извините за офтоп. Просто мы например планируем использовать wso2 dss
  • https://t.me/clickhouse_ru
    @ihard #23241 08:14 PM, 15 Aug 2017
    Не это другое, я про https://github.com/lomik/carbon-clickhouse
    GitHub - lomik/carbon-clickhouse: Graphite metrics receiver with ClickHouse as storage

    Graphite metrics receiver with ClickHouse as storage - GitHub - lomik/carbon-clickhouse: Graphite metrics receiver with ClickHouse as storage

  • 16 August 2017 (34 messages)
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #23242 07:01 AM, 16 Aug 2017
    Добрый день.
    У меня есть таблица ReplicatedMergeTree и поверх нее Distributed таблица. Могу ли я добавить одну или несколько колонок в таблицу ReplicatedMergeTree и потом обновить Distributed? И если могу, то как это сделать?
  • @DigDiver #23243 07:14 AM, 16 Aug 2017
    Добрый день. У кого такие ошибки есть? Что делать?
    2017.08.12 14:39:00.597913 [ 21 ] <Error> ZooKeeper: There are 220000 active watches. There must be a leak somewhere.
    2017.08.12 14:39:11.587373 [ 19 ] <Error> ZooKeeper: There are 220000 active watches. There must be a leak somewhere.
    2017.08.12 14:39:11.630992 [ 19 ] <Error> ZooKeeper: There are 220000 active watches. There must be a leak somewhere.
    2017.08.14 06:18:30.123913 [ 19 ] <Error> ZooKeeper: There are 230000 active watches. There must be a leak somewhere.
    2017.08.14 06:18:30.239225 [ 19 ] <Error> ZooKeeper: There are 230000 active watches. There must be a leak somewhere.
    2017.08.15 14:08:54.880665 [ 21 ] <Error> ZooKeeper: There are 240000 active watches. There must be a leak somewhere.
    2017.08.15 18:21:24.945117 [ 21 ] <Error> ZooKeeper: There are 250000 active watches. There must be a leak somewhere.
  • Самый простой способ: удалить distributed, добавить колонки через alter table, создать distributed снова
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #23245 07:15 AM, 16 Aug 2017
    спасибо!
  • @vludv ↶ Reply to #23243 #23246 01:15 PM, 16 Aug 2017
    А вас какая версия? Тут только рестарт поможет.
  • @DigDiver #23247 01:18 PM, 16 Aug 2017
    1.1.54244 Попробую рестарт, но эти ошибки были еще до этой версии.
  • @Filinger #23248 01:50 PM, 16 Aug 2017
    Добрый день всем, может быть кто сталкивался с таким?

    У нас есть таблица events_distributed с полями a Int32, b Int32, c_xxx String, c_yyy String, c ENGINE Distributed и четыре шарда events_sharded с ENGINE ReplicatedMergeTree на разных машинах.

    При вставке в events_distributed в одну из нод видим в логах ошибки вида:
    There is no column with name c. There are columns: a, b, c_xxx, e.what() = DB::Exception (from 111.222.33.444:59118) (in query: INSERT INTO events_sharded (a, b, c_xxx, c_yyy) FORMAT RowBinary), Stack trace:

    0. clickhouse-server(StackTrace::StackTrace()+0x16) [0x28ae4d6]
    1. clickhouse-server(DB::Exception::Exception(std::string const&, int)+0x1f) [0x102a3af]
    2. clickhouse-server(DB::ITableDeclaration::check(DB::Block const&, bool) const+0x922) [0x29b3472]
    3. clickhouse-server(DB::MergeTreeDataWriter::splitBlockIntoParts(DB::Block const&)+0x35) [0x2a3e845]
    4. clickhouse-server(DB::MergeTreeBlockOutputStream::write(DB::Block const&)+0x40) [0x29c1f90]
    5. clickhouse-server(DB::PushingToViewsBlockOutputStream::write(DB::Block const&)+0x486) [0x2b38906]
    6. clickhouse-server(DB::copyData(DB::IBlockInputStream&, DB::IBlockOutputStream&, std::atomic<bool>*)+0x91) [0x2af5aa1]
    7. clickhouse-server(DB::PushingToViewsBlockOutputStream::write(DB::Block const&)+0x41d) [0x2b3889d]
    8. clickhouse-server(DB::MaterializingBlockOutputStream::write(DB::Block const&)+0x28) [0x2b27698]
    9. clickhouse-server(DB::AddingDefaultBlockOutputStream::write(DB::Block const&)+0x235) [0x2c6f295]
    10. clickhouse-server(DB::ProhibitColumnsBlockOutputStream::write(DB::Block const&)+0x4f) [0x2c892af]
    11. clickhouse-server(DB::SquashingBlockOutputStream::finalize()+0x455) [0x2c507f5]
    12. clickhouse-server(DB::SquashingBlockOutputStream::writeSuffix()+0x11) [0x2c50981]
    13. clickhouse-server(DB::TCPHandler::processInsertQuery(DB::Settings const&)+0x2ce) [0x104405e]
    14. clickhouse-server(DB::TCPHandler::runImpl()+0x67a) [0x10447aa]
    15. clickhouse-server(DB::TCPHandler::run()+0x1c) [0x104540c]
    16. clickhouse-server(Poco::Net::TCPServerConnection::start()+0xf) [0x315d0af]
    17. clickhouse-server(Poco::Net::TCPServerDispatcher::run()+0x10b) [0x317ac3b]
    18. clickhouse-server(Poco::PooledThread::run()+0x87) [0x337b807]
    19. clickhouse-server(Poco::ThreadImpl::runnableEntry(void*)+0x96) [0x333d456]

    При этом на сам POST запрос ClickHouse возвращает 200 OK.
    Проверили схемы на всех машинах — все поля присутствуют и в локальных _sharded, и в _distributed таблицах.
    ClickHouse server version 1.1.54245.

    Вопросы:
    1. Почему в списке There are columns: a, b, c_xxx указаны не все столбцы events_sharded?
    2. Почему кликхаус репортит попытку вставить столбец c, если прям там же, в приведённом запросе на вставку в шард, никакой попытки вставить это поле нету? (INSERT INTO events_sharded (a, b, c_xxx, c_yyy) FORMAT RowBinary).
    Возможно, он при выводе названия поля съедает всё что после _?
    3. Вставка в distributed таблицу это неблокирующая операция? Т.е. даже если клиенту вернулось 200 ОК, то ещё нет гарантии, что данные запишутся во все шарды?
    4. Что делать?) Пересоздать все distributed и локальные таблицы?

    Спасибо за внимание)
  • @k_bro #23249 02:07 PM, 16 Aug 2017
    Joined.
  • @386015147 #23250 02:22 PM, 16 Aug 2017
    Joined.
  • @vludv ↶ Reply to #23247 #23251 03:13 PM, 16 Aug 2017
    А вы Replicated-таблицы часто создаете/удаляете?
  • https://t.me/clickhouse_ru
    @vdragunov #23252 03:19 PM, 16 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @cvx17dn #23253 03:21 PM, 16 Aug 2017
    Joined.
  • @110657893 #23254 03:53 PM, 16 Aug 2017
    Joined.
  • @110657893 #23255 03:55 PM, 16 Aug 2017
    привет, а есть где-то почитать какие бестпрактики хранения данных для сервисов наподобие яндекс метрики?
  • https://t.me/clickhouse_ru
    @orantius #23256 04:02 PM, 16 Aug 2017
    на хабре был пост на эту тему.
  • @vludv ↶ Reply to #23248 #23257 04:36 PM, 16 Aug 2017
    Вы делали ALTER'ы? Distributed-таблицы и удаленные таблицы никак не синхронизируются при Альтерах.

    3. Возвращается Ок если данные записались в локальное хранилище Distributed-таблицы. Затем эти данные в фоне вставляются в шарды. Поэтому если вставка в шарды не пройдет, то вы заметите это только по логам. Если вставка в шард завершилась неудачей, то она будет повторена через таймаут.
    2. Он репортит, что во время вставки данных из локального хранилища в удаленную таблицу, она ожидает колонку c, а ее нет в вставляемом блоке. Проверьте что к тому моменту времени таблица на 111.222.33.444 имела нужную структуру.
    1. Возможно ли так что, вы когда-то вставляли только (a, b, c_xxx)?
    4. Зависит от того какая стуктура Distributed таблиц у вас была до этого.
  • API Метрики — Подключение Logs API к ClickHouse — Технологии Яндекса

    ClickHouse позволяет работать с неагрегированными статистическими данными Яндекс.Метрики, полученными с помощью Logs API. Чтобы подключить Logs API к ClickHouse, выполните следующее:

  • https://t.me/clickhouse_ru
    @ihard #23259 05:40 PM, 16 Aug 2017
    Насколько регулярными могут быть выгрузки из Яндекс.метрики в свою систему ? Раз в минуту например можно дёргать за период в минуту назад ?
  • @serlex777 #23260 05:43 PM, 16 Aug 2017
    Подскажите пожалуйста, что значит сообщение в логе зоокипера? Не хочет работать репликация

    2017-08-16 20:27:40,719 - INFO [ProcessThread(sid:0 cport:2181)::PrepRequestProcessor@648] - Got user-level KeeperException when processing sessionid:0x15de1b442c90004 type:setData cxid:0x59944a08 zxid:0xad txntype:-1 reqpath:n/a Error Path:/clickhouse/tables/01/hits_r/block_numbers/201708/block-0000000000 Error:KeeperErrorCode = NoNode for /clickhouse/tables/01/hits_r/block_numbers/201708/block-0000000000
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #23259 #23261 05:45 PM, 16 Aug 2017
    с точки зрения метрики оптимальнее по ресурсам будет, если вы будете раз в день выгружать за вчера. также во-первых за минуту данные могут еще не доехать, во-вторых могут в будущем еще измениться.
  • https://t.me/clickhouse_ru
    @ihard ↶ Reply to #23261 #23262 05:48 PM, 16 Aug 2017
    Хотят видеть график в графане наиболее приближённый к текущему времени ;) может есть плагин чтобы сразу в метрику по API ходить? Если нет за сколько примерно данные точно доезжают ? 10 минут час или вот прям 1 день?
  • https://t.me/clickhouse_ru
    @orantius #23263 05:49 PM, 16 Aug 2017
    а график в метрике чем не подходит?
  • https://t.me/clickhouse_ru
    @ihard #23264 05:51 PM, 16 Aug 2017
    По нему же на 1 экране не скоррелируешь данные из других систем
  • https://t.me/clickhouse_ru
    @taroff ↶ Reply to #23260 #23265 05:51 PM, 16 Aug 2017
    Это уровень INFO. Ничего критичного не значит. Не обращайте внимания.
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #23262 #23267 06:01 PM, 16 Aug 2017
    1. вы можете проверсти эксперимент, выгружать один и тот же поминутный график и смотреть через сколько минут от now() точки в прошлом перестают модифицироваться, т.е. чему равно наблюдаемое отставание. предположу что оно может быть больше одной минуты.
    2. выгрузки для logsapi это некий фоновый процесс, который по-моему вообще не затрагивает текущую дату, и не расчитан на большое количество маленьких задач.
    3. в индексе в метрике есть из времени только дата, т.е. запрос за минутой данных имеет кпд по диску меньше 0.1% , и если вы не упретесь в какие-то квоты апишные сразу, то возможно это случится позже, если нагрузку станет заметно на приборах.
    4. в целом метрика во внешнню сторону это не реалтаймовая потоковая история.
  • https://t.me/clickhouse_ru
    @ihard ↶ Reply to #23267 #23268 06:05 PM, 16 Aug 2017
    Прежде чем делать что-то самому, пытаюсь собрать максимум информации чтобы потом не переделывать. Предположил что это достаточно частая задача и возможно уже решена. Видимо это не так.
  • @serlex777 #23269 06:39 PM, 16 Aug 2017
    Помогите пожалуйста разобраться
    сделал реплицируемую таблицу на двух репликах. Зоокипер КХ видит в него данные отправляет, но на другой сервер они не заливаются.

    ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/hits', '{replica}'

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

    что делаю не так?
  • @serlex777 #23270 06:41 PM, 16 Aug 2017
    '{replica}' и вот это имя оно для разных серверов должно быть одинаковое или разное?
  • https://t.me/clickhouse_ru
    @catless #23271 06:46 PM, 16 Aug 2017
    разное
  • @githubreleases_bot #23272 b o t 07:49 PM, 16 Aug 2017
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data.

  • @Filinger ↶ Reply to #23257 #23273 08:16 PM, 16 Aug 2017
    Большое спасибо за ответы!

    Да, ALTER был, но мы это сделали на всех узлах.
    Получается, вполне возможно, что это "старый" INSERT который всё никак не пройдёт из буфера в шард?
    У него есть TTL?) Что с ним можно сделать и как очистить локальное хранилище Distributed-таблицы?)
  • @milovidov_an #23274 08:18 PM, 16 Aug 2017
    TTL нет. Можно зайти в директорию Distributed таблицы и найти там ровно те (первые) файлы, которые с неправильной структурой, и удалить их.
    Посмотреть структуру можно по началу файла - там будет приведён INSERT запрос.
  • @Filinger #23275 09:57 PM, 16 Aug 2017
    Понял, спасибо)
  • 17 August 2017 (91 messages)
  • https://t.me/clickhouse_ru
    @Knstantin #23276 02:47 AM, 17 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @sergeyblokh #23277 03:44 AM, 17 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @kshvakov #23278 04:01 AM, 17 Aug 2017
    Интересная штука https://github.com/jarulraj/sqlcheck от человека из CMU Database Group, для тех кто не в курсе про CMU рекомендую http://db.cs.cmu.edu/ и их видео https://www.youtube.com/channel/UCHnBsf2rH-K7pn09rb3qvkA
    GitHub - jarulraj/sqlcheck: Automatically identify anti-patterns in SQL queries

    Automatically identify anti-patterns in SQL queries - GitHub - jarulraj/sqlcheck: Automatically identify anti-patterns in SQL queries

  • https://t.me/clickhouse_ru
    Release notes?
  • @3334085 #23280 07:45 AM, 17 Aug 2017
    Кстати да, вижу релизы не вижу changelog, где взять?
  • https://t.me/clickhouse_ru
    @kshvakov #23281 08:04 AM, 17 Aug 2017
    Может быть тут появится https://www.altinity.com/blog/
    ClickHouse tips, tricks, best practices, updates — Altinity

    ClickHouse best practices to improve your deployments including performance, Grafana, Kafka, Tableau, Kubernetes, and SQL.

  • @Vitaly_Dmitriev #23282 08:18 AM, 17 Aug 2017
    Joined.
  • @esurovskiy #23283 08:20 AM, 17 Aug 2017
    Всем привет. помогите пожалуйста разобраться.
    Есть кластер кликхауса из 4х машин 2х2. Создана таблица ReplicationMergeTree. Над ней Distibuted таблица. Insert делается в таблицу ReplicationMergeTree. Выборка из Distributed таблицы. Проблема в том, что кол-во записываемых строк не совпадает с тем, что отдает select. Смотрел по логам кликхауса - соощение
    "Wrote block with ID .... N Rows". Тут количество сходится с ожидаемым.
    Если заменить ReplicationMergeTree на MergeTree, то такой проблемы нет. в чем может быть проблема? где искать?
    спасибо
  • @Vitaly_Dmitriev #23284 08:25 AM, 17 Aug 2017
    Коллеги, Добрый день! Не подскажите, есть ли уже готовое решение загрузить много данных из google storage в clickhouse? Раньше данные забирали при помощи spark.
  • https://t.me/clickhouse_ru
    Тоже сталкивались с такой проблемой: https://github.com/yandex/ClickHouse/issues/972

    В нашем случае решилось после того как стали писать в локальные таблицы вместо Distributed и отказались от MATERIALIZED столбцов.
    Data duplication · Issue #972 · yandex/ClickHouse

    We have a Distributed table with two-node cluster with ReplicatedMergeTree tables. Once in 3 secs we make an insert to the Distributed table and see that some of the data are duplicated. Why and ho...

  • https://t.me/clickhouse_ru
    @vasya_toropov #23286 09:21 AM, 17 Aug 2017
    Ну и да, у нас данных становилось больше.
  • @esurovskiy #23287 09:22 AM, 17 Aug 2017
    Пишем в локальные реплицируемые таблицы. и у нас данных меньше ожидаемого)
  • https://t.me/clickhouse_ru
    @vasya_toropov #23288 09:23 AM, 17 Aug 2017
    По-моему меньше может быть из-за того что одинаковые пачки схлапываются при репликации.
  • @esurovskiy #23289 09:25 AM, 17 Aug 2017
    я так понимаю это происходит для ReplacingMergeTree. или не только?
  • @serlex777 #23290 09:44 AM, 17 Aug 2017
    кто может подсказать, почему межсерверные взаимодействия не проходят

    2017.08.17 12:34:34.870143 [ 23 ] <Trace> ReadWriteBufferFromHTTP: Sending request to http://mnstat19:9009/?endpoint=DataPartsExchange:%2Fclickhouse%2Ftables%2F01%2Fhits_r%2Freplicas%2F192.168.0.19&part=20170816_20170816_0_0_0&shard=&compress=false
    2017.08.17 12:34:34.877346 [ 23 ] <Error> DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Poco::Exception. Code: 1000, e.code() = 111, e.displayText() = Connection refused, e.what() = Connection refused
  • а проверь открыты ли порты и можешь ли заломиться на них с другого сервера
  • спасибо, вроде стало понятно
    кх ходит между машинами по хосту, а хост на другой ip забиндили
  • https://t.me/clickhouse_ru
    @vigilov #23293 09:58 AM, 17 Aug 2017
    Привет! У меня есть main_table MergeTree и материализованная вьюха agg_table AggregatingMergeTree смотрящая на main_table. Проблема в том что когда делаешь вставку в main_table одним большим батчем, то agg_table получается абсолютно не оптимизированной. Подскажите, пожалуйста, что делать в этом случае?
  • https://t.me/clickhouse_ru
    @VTolm #23294 10:31 AM, 17 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    https://clickhouse.yandex/docs/ru/single/#table-engines-replication
    >Блоки данных дедуплицируются. При многократной записи ...
  • @esurovskiy #23296 10:42 AM, 17 Aug 2017
    хм, спасибо. проверю этот вариант
  • https://t.me/clickhouse_ru
    @kshvakov #23297 10:45 AM, 17 Aug 2017
    У меня тут ClickHouse на локальной машине обновился и теперь вот так

    clickhouse-client --version
    terminate called after throwing an instance of 'Poco::SystemException'
    what(): System exception
    Aborted (core dumped)

    clickhouse-server --version
    terminate called after throwing an instance of 'Poco::SystemException'
    what(): System exception
    Aborted (core dumped)

    при этом сам cервер работает

    [clickhouse]host(s)=127.0.0.1:9000, database=default, username=default
    [clickhouse][connect] num=1 -> 127.0.0.1:9000
    [clickhouse][hello] -> Golang SQLDriver 1.1.54213
    [clickhouse][hello] <- ClickHouse 1.1.54276 (Asia/Nicosia)
  • https://t.me/clickhouse_ru
    @kshvakov #23298 10:58 AM, 17 Aug 2017
    А проблема была в том, что "консолька" давно висела, и директория уже не существовала

    getcwd() failed: No such file or directory
    us
    fatal: Unable to read current working directory: No such file or directory
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #23299 11:08 AM, 17 Aug 2017
    А вы обновили оба приложения, клиентское и серверное?
  • https://t.me/clickhouse_ru
    @kshvakov #23300 11:24 AM, 17 Aug 2017
    да, конечно
  • @Vitaly_Dmitriev #23301 12:14 PM, 17 Aug 2017
    Joined.
  • спасибо. помогло
  • @Filinger ↶ Reply to #23274 #23303 01:34 PM, 17 Aug 2017
    Прочекали все .bin файлики в директории distributed таблицы на всех нодах: на трёх нодах вообще папки пустые, но на одной скопилось достаточно много .bin файлов (за целую неделю). Я так понимаю, в идеале, они не должны копиться?
    Олсо, в наименовании вложенных директорий записан юзер и ip адрес, это адрес источника данных?
    Ну и самое главное — ни в одном из файлов не нашли "неподходящих" insert-ов, все указанные в запросе поля есть сейчас в текущих схемах (что в distributed, что в локальных).
  • @Filinger #23304 01:36 PM, 17 Aug 2017
    И ещё: если делать SELECT на такой distributed таблице, туда попадают данные из этого буфера?
  • @lexasa #23305 02:49 PM, 17 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @alek_si #23306 03:41 PM, 17 Aug 2017
    Aleksey Palazhchenko

    Long-term storage for @PrometheusIO 2.0 on top of @ClickHouseDB https://t.co/ZgBqNITbeW #promcon2017

  • Да, не должны накапливаться. Данные остаются на файловой системе только если их не удалось отправить.

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

    > Ну и самое главное — ни в одном из файлов не нашли "неподходящих" insert-ов, все указанные в запросе поля есть сейчас в текущих схемах (что в distributed, что в локальных).

    Возможно, что по логу сервера будет понятно, какой файл не удаётся отправить? Если нет, то попробуйте перенести в сторону некоторое количество файлов с начала по порядку их номеров.

    > И ещё: если делать SELECT на такой distributed таблице, туда попадают данные из этого буфера?

    Нет, не попадают.
  • @Filinger #23308 03:50 PM, 17 Aug 2017
    Спасибо за ответы.
  • @milovidov_an #23309 03:50 PM, 17 Aug 2017
    По этому поводу есть новость: в последней stable версии, которая вышла вчера, появилась опция insert_distributed_sync. Если её выставить в 1, то данные в Distributed таблицу будут вставляться синхронно. Возможно, даже лучше было бы сделать этот вариант по-умолчанию.
  • @Filinger #23310 03:51 PM, 17 Aug 2017
    > Возможно, что по логу сервера будет понятно, какой файл не удаётся отправить?
    Вот в том то и дело, что в логах сам файл не указывается, указывается только query.
  • Интересно! Давно просят такую штуку.
  • https://t.me/clickhouse_ru
    @alek_si #23312 03:51 PM, 17 Aug 2017
    Так мы и были одни из тех, что просили 🙂
  • @Filinger ↶ Reply to #23309 #23313 03:52 PM, 17 Aug 2017
    Вот это очень кстати. А то судя по всему, многие из-за асинхронной distributed вставки предпочитают делать запрос напрямую в локальные таблички.
  • https://t.me/clickhouse_ru
    @alek_si #23314 03:52 PM, 17 Aug 2017
    Теперь очень надеемся на английскую документацию на GraphiteMergeTree
  • https://t.me/clickhouse_ru
    Это коррелирует с настройкой internal_replication? Или имеется в виду, "синхронно дожидаться отправки на одну из реплик шарда, куда должна случиться запись" ?
  • В зависимости от internal_replication, вставляет либо на все реплики (если internal_replication = false), либо на любую (если internal_replication = true). Это работает так же, как и при асинхронной записи.
  • У нас делается так: одни лиюди пишут документацию на русском, затем другие переводят. Правда процесс перевода пока ещё не налажен - как раз завтра буду разговаривать с теми, кто за это отвечает.
  • https://t.me/clickhouse_ru
    @qweran ↶ Reply to #23317 #23318 04:03 PM, 17 Aug 2017
    Алексей, а есть changelog к версии вышедшей вчера?
  • @3334085 #23319 04:09 PM, 17 Aug 2017
    @milovidov_an а насчёт ченджлога может быть тоже где то зафиксировать? Что бы не перечитывать всю документацию раз в месяц
  • @lexasa #23320 04:15 PM, 17 Aug 2017
    Привет всем. Настолько оправдано использование toStartOf... функций для группировки при создании временных рядов? Является ли создание экстра колонок лучшей альтернативой?
  • https://t.me/clickhouse_ru
    @feriat ↶ Reply to #23320 #23321 04:17 PM, 17 Aug 2017
    мы постоянно юзаем, колонки две: дата и ДатаИВремя. Дата наверное нужна для партицирования. Очень удобно и быстро работает)
  • @lexasa #23322 04:20 PM, 17 Aug 2017
    колонки такие есть. нужно саггрегировать данные по разным временным слотам. скажем по часовому слоту или по месяцу.
  • https://t.me/clickhouse_ru
    @feriat #23323 04:23 PM, 17 Aug 2017
    Ну так делаете одну колонку, не дублируя информации, и будет отлично работать toStart и другие функции с датой-временем
  • https://t.me/clickhouse_ru
    @somovis #23324 05:29 PM, 17 Aug 2017
    Joined.
  • @rashkur #23325 05:54 PM, 17 Aug 2017
    Joined.
  • Ещё нет changelog. И документация тоже обновляется с задержкой.
  • Эти функции весьма дешёвые по вычислению.

    Отдельные столбцы оправданы только в случае, если они позволяют считывать существенно меньше данных с диска. Например, если есть столбец DateTime, то имеет смысл держать отдельный столбец Date - он намного легче. И в случае MergeTree это и так форсировано.

    В остальном отдельные столбцы с результатами этих функций держать неоправдано. (Единственное, когда может быть существенный выигрыш - если запрос очень лёгкий и почти ничего больше не делает.)
  • @lexasa #23328 06:35 PM, 17 Aug 2017
    Спасибо, именно это и хотелось услышать.
  • https://t.me/clickhouse_ru
    @peerclick #23329 06:42 PM, 17 Aug 2017
    Я тоже за changelog . Выходит много релизов , а что в них - одному Алексею Миловидову известно )) Да и судя по планам которые видел на семинарах по КликХаусу уже давно должен быть update и delete .
  • https://t.me/clickhouse_ru
    @alek_si #23330 06:58 PM, 17 Aug 2017
    +1 к changelog
  • @frenzme #23331 07:03 PM, 17 Aug 2017
    +1 к changelog
  • @bymslf #23332 07:04 PM, 17 Aug 2017
    +1, было бы шикарно!
  • @Nvarchar495 #23333 07:10 PM, 17 Aug 2017
    Help Code: 229, e.displayText() = DB::Exception: Query is too large (263512). max_query_size = 262144, e.what() =
  • @Nvarchar495 #23334 07:10 PM, 17 Aug 2017
    Поменял в config.xml
  • @Nvarchar495 #23335 07:10 PM, 17 Aug 2017
    не исправилось
  • @Nvarchar495 #23336 07:10 PM, 17 Aug 2017
    сервер ребутил
  • Это настройка уровня пользователя, настраивается в users.xml.
    Пропишите в profiles/default.
  • @milovidov_an #23338 07:12 PM, 17 Aug 2017
    Changelog в пути :)
  • @Nvarchar495 #23339 07:13 PM, 17 Aug 2017
    Ой! Приятно ) Просили передать от коллег большое спасибо ) пол года прода без единой проблемы))
  • @shinebell #23340 07:51 PM, 17 Aug 2017
    Подскажите, произвольное партицирование в ближ время подоспеет ?:)
  • @3334085 ↶ Reply to #23340 #23341 07:52 PM, 17 Aug 2017
    Так на сколько я понимаю, выбор ключа при создании таблицы и есть по сути партиционирование
  • Передал всем, кто сидит рядом, спасибо!
  • Не очень в ближайшее. Скорее в середине осени.
  • Партиции - отдельные части таблицы, которые можно удалять, перемещать вручную, и это сейчас только по месяцам.
  • @shinebell #23345 07:55 PM, 17 Aug 2017
    Ну в середине осени уже неплохо!
  • @shinebell #23346 07:56 PM, 17 Aug 2017
    Тут недолго осталось :)
  • @ztlpn #23347 07:56 PM, 17 Aug 2017
    Прямо сейчас активно занимаюсь этой задачей.
  • @shinebell #23348 07:58 PM, 17 Aug 2017
    Скорейшего решения, для нас прям очень актуально
  • @e45456 #23349 08:09 PM, 17 Aug 2017
    Joined.
  • @ztlpn ↶ Reply to #23348 #23350 08:41 PM, 17 Aug 2017
    Кстати, какой у вас кейс - по какому выражению хотите партиционировать?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #23350 #23351 08:43 PM, 17 Aug 2017
    (сорри что врываюсь в вашу беседу) я помоему кстати про свой кейс рассказывал - хочу чистить данные меньше чем по месяцу - а конкретно у меня есть статистика из графита и стек трейсы, они где-то сжирают 20ГБ места в день на сервере после сжатия кликхаусом (при условии 4х серверов и distributed таблицы). Вот я хочу хранить 45 дней максимум, больше мне надо
  • https://t.me/clickhouse_ru
    @Civiloid #23352 08:44 PM, 17 Aug 2017
    потому что 2 месяца помещаются, но впритык
  • https://t.me/clickhouse_ru
    @Civiloid #23353 08:44 PM, 17 Aug 2017
    пока приходится дропать по партициям раз в два месяца )
  • @ztlpn #23354 08:45 PM, 17 Aug 2017
    Ага, про вас помню :) Как раз интересно услышать побольше кейсов.
  • @ztlpn #23355 08:46 PM, 17 Aug 2017
    Так что если кто еще ждет произвольного партиционирования, тоже рассказывайте.
  • https://t.me/clickhouse_ru
    @Civiloid #23356 08:52 PM, 17 Aug 2017
    еще была мысль под time-series данные тоже в общем по той же причине - чтобы удалять ненужные данные прям четко. Конкретно - сделать storage слой под посекундные данные, которые хранить например 2-4 дня
  • https://t.me/clickhouse_ru
    @Civiloid #23357 08:52 PM, 17 Aug 2017
    а потом грохать
  • https://t.me/clickhouse_ru
    @valyala #23358 08:54 PM, 17 Aug 2017
    ну нам бы не помешало партиционирование по типу события (тип UInt* или Enum*) и месяцу, чтобы у разных событий могло быть разное время жизни. Например, какие-нибудь хиты хранить не больше месяца, действия пользователей - два месяца, а клики - полгода
  • https://t.me/clickhouse_ru
    @valyala #23359 08:56 PM, 17 Aug 2017
    я создавал похожий фиче реквест для alter table * drop key range - https://github.com/yandex/ClickHouse/issues/654 . Партиционирование позволило бы решить эту задачу немного по-другому
    Feature request: add ability to drop MergeTree table parts by primary key range · Issue #654 · yandex/ClickHouse

    The issue Suppose the following MergeTree table exists with rows sorted by (EventID, EventDate, ClientID). CREATE TABLE a ( EventID UInt8, EventDate Date, ClientID UInt32, Payload S...

  • https://t.me/clickhouse_ru
    @Civiloid #23360 09:00 PM, 17 Aug 2017
    удаление тоже нужно )
  • https://t.me/clickhouse_ru
    @Civiloid #23361 09:00 PM, 17 Aug 2017
    а то у нас есть отдельные товарищи которые любят прийти и сказать "ой, это нам нафиг не нужно"
  • Мы продумывали эту задачу в виде ALTER UPDATE/DELETE. Смысл в том, что соответствующий UPDATE/DELETE реализуется путём перезаписи part-ов, подходящих под условие. Проблема в реализации сейчас в том, что это плохо проходит через механизм репликации. В целом решаемо, но пока откладываем.
  • https://t.me/clickhouse_ru
    @valyala #23363 09:12 PM, 17 Aug 2017
    и это медленнее, чем просто удалить папку с партишном )
  • @igvasilyev #23364 09:38 PM, 17 Aug 2017
    Joined.
  • У нас данные растянуты по времени, но привязаны к пользователю. Очень часто получается так, что сотрудника увольняют и его данные не нужны больше в системе и их было бы не плохо удалять. Сейчас это планируем делать в лоб :) Хранить файл с идентификаторами удаленных/уволенных пользователей и отправлять на сервер с исключающим условием, либо подключать словарь и через dictionary движок исключать их из выборки. Конечно, можно удаленных и в сам КХ писать, но это не позволяет бизнес-логика ( Есть некоторые сложности (
  • @pookieShmukie #23366 09:43 PM, 17 Aug 2017
    Так же у нас есть некоторые типы эвентов, которые в дальнейшем не планируется хранить впринципе. Они нужны какой то определенный период времени. В качестве идентификатора типа эвента - строка.
  • 18 August 2017 (156 messages)
  • @aabezverkhikh #23367 04:33 AM, 18 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @kshvakov #23368 05:13 AM, 18 Aug 2017
    У нас есть "странный" кейс с партишенами. У нас есть сырые данные и постпроцессинг который агрегирует данные в "отчеты" для пользователей, т.к. вливать данные напрямую долго и пользователи будут видеть разные данные, мы делаем create table tmp_*** as source_table заливаем в нее (или несколько таблиц) данные, делаем DETACH перемещаем файлы и делаем ATTACH в нужной таблице, это не очень удобно т.к. требует чтоб у воркера был доступ к файловой системе, да и вообще тот ещё костыль )
  • @pookieShmukie #23369 05:15 AM, 18 Aug 2017
    Костыль тот еще, но мы подобными костылями страдаем )я имею ввиду пока не удалось избавиться от аггрегации
  • @3334085 #23370 06:41 AM, 18 Aug 2017
    Господа, а не планируется что то типа ораклового pivot?
  • @3334085 #23371 06:42 AM, 18 Aug 2017
    Тк есть кейс когда нельзя использовать широкую таблицу - только узкую, а работать с широкой удобнее...
  • https://t.me/clickhouse_ru
    @Sfinks80 #23372 07:45 AM, 18 Aug 2017
    Доброе утро! Народ, вот хоть убейте! Мы не можим настроить реплицирование с шардированием 2х2.
    Схему реплик прописали, зукипер прописали, с макросами не понятно.
    На каждой ноде прописали в config.xml
    <macros><shard>01</shard><replica>01</replica></macros>
    с разными цифрами на каждой ноде. Пытаюсь создать таблицу
    ..............
    ) ENGINE = ReplicatedSummingMergeTree('/clickhouse/tables/{shard}/normal_summing_sharded', '{replica}', event_date, (event_date, event_time, body_id), 8192);
    Получаю
    Received exception from server:
    Code: 62. DB::Exception: Received from 10.254.122.232:9000. DB::Exception: No macro shard in config.
    Что не так-то???
  • https://t.me/clickhouse_ru
    @kshvakov #23373 07:53 AM, 18 Aug 2017
    1) значение в replica должно быть уникальным для каждой машины (это идентификатор по которому можно понять что и куда нужно засинкать)
    2) скорее всего у вас в конфиге выше есть
    <macros incl="macros" optional="true" />
  • https://t.me/clickhouse_ru
    Мы батчуем поток эвентов в файлы, потом эти файлы гоним в таблицы. В одну таблицу может быть несколько вставок из одного файла. Чтобы сделать exact-once семантику, хотим делать delete по filename из таблиц при вставке
  • https://t.me/clickhouse_ru
    @Sfinks80 ↶ Reply to #23373 #23375 08:15 AM, 18 Aug 2017
    > достаточно, чтобы имя было уникально лишь в пределах каждого шарда.
    это соблюдено
    второе сейчас админ проверит
  • https://t.me/clickhouse_ru
    @Alexey_VK #23376 08:23 AM, 18 Aug 2017
    Добрый день. А возможно как-нибудь попросить автора библиотеки
    https://bitbucket.com/ppodolsky/clickhouse-python
    при наличии желания и возможности, апнуть библиотеку добавлением узнавания всяких Nullable(*) полей или нижеперечисленную парочку ?
    На данный момент стали нужны два типа, указанные в соотв. ошибках:
    No field class for Nullable(UInt32)
    No field class for Nullable(String)
    Я конечно ща сам попробую, но там так всё красиво, боюсь испортить)
    ppodolsky / clickhouse-python

    Hg repository hosted by Bitbucket.

  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #23376 #23377 09:04 AM, 18 Aug 2017
    можете наверное там тикет завести или какой то комментарий
    также рекоммендую посмотреть на проект https://github.com/Infinidat/infi.clickhouse_orm
    GitHub - Infinidat/infi.clickhouse_orm: A Python library for working with the ClickHouse database (https://clickhouse.yandex/)

    A Python library for working with the ClickHouse database (https://clickhouse.yandex/) - GitHub - Infinidat/infi.clickhouse_orm: A Python library for working with the ClickHouse database (https://c...

  • https://t.me/clickhouse_ru
    Спасибо. Этот не смог запустить на python3
  • https://t.me/clickhouse_ru
    @emakarov #23379 09:06 AM, 18 Aug 2017
    посмотрите вот этот pr https://github.com/Infinidat/infi.clickhouse_orm/pull/44
    Fix python3 compatibility by TvoroG · Pull Request #44 · Infinidat/infi.clickhouse_orm

    infi.clickhouse_orm - A Python library for working with the ClickHouse database (https://clickhouse.yandex/)

  • https://t.me/clickhouse_ru
    @Alexey_VK #23380 09:06 AM, 18 Aug 2017
    Спасибо, посмотрю!
  • https://t.me/clickhouse_ru
    @emakarov #23381 09:07 AM, 18 Aug 2017
    видимо какая то версия сломалась в python3. так то он работал без проблем в 2.7 и 3
  • К слову о партиционировании. Сейчас приплыла задача для анализа видео-контента. Есть видео, есть зритель и нужно понимать какие участки видео самые неинтересные, самые просматриваемые и все такое. Какой процент видео просматривается в среднем и пр. И я так полагаю, что тут партиционирование хорошо сработало бы по идентификатору видео, а не по дате, т.к. по сути с такими эвентами дата и время роли не играет.
  • @e45456 #23383 09:29 AM, 18 Aug 2017
    Привет! Загружаю TSV файл 4GB. max_memory_usage установлен 1GB.
    cat /data/transactions | clickhouse-client --query="INSERT INTO stat.xxx FORMAT TabSeparated"
    Получаю: Connection reset by peer while writing to socket
    В логе: Memory limit (for query) exceeded: would use 1.04 GiB
    Что нужно настроить, чтобы это работало?
    Clickhouse вообще позволяет загружать файлы большие чем оператива, или их обязательно нужно делить на мелкие?
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #23382 #23384 09:29 AM, 18 Aug 2017
    вообще говоря, время может быть дополнительной переменной для анализа
    с утра, вечером и в разные времена года разные участки одного и того же видео могут быть разные
  • Вообще время будет присутствовать отдельной колонкой, но это не приоритет. К тому же, что по одному видео может быть примерно такой объем данных. 1 видео, длительность в 3 минуты (180 строк на одного пользователя), с учетом сиков по видео может быть 200-250 на просмотор, в среднем 5-10 просмотров, есть кейсы когда видео смотрят в течение трех часов и делают конспекты, в таких кейсах может быть по 1000-3000 строк на один просмотр. Кол-во пользователей просматривающих видео от 100 до 40 000, кол-во видео в курсе в среднем 100 штук длительностью от 3 минут до 10 минут, в системе пока 10 курсов, но в ближайшем будущем курсов будет около 200 ) И да, видео контент будет обновляться и старые данные нужно будет выкидывать, т.к. их будет овер дохрена...у нас как бы есть 77 ТБ места, но...даже оно когда то кончится.
  • @pookieShmukie #23386 09:34 AM, 18 Aug 2017
    Поэтому держать данные по видео в одной партиции будет куда рациональней чем размазать данные по времени )
  • https://t.me/clickhouse_ru
    @emakarov #23387 09:37 AM, 18 Aug 2017
    может на каждый видеофайл по таблице?
  • 200 курсов по 100 видео? )))
  • @pookieShmukie #23389 09:38 AM, 18 Aug 2017
    Идея хорошая, но не знаю как это сработает по факту
  • https://t.me/clickhouse_ru
    @emakarov #23390 09:39 AM, 18 Aug 2017
    а
  • https://t.me/clickhouse_ru
    @emakarov #23391 09:39 AM, 18 Aug 2017
    длительность одного видео же час-два
  • @pookieShmukie #23392 09:39 AM, 18 Aug 2017
    Нет, длительность видео от трех минут до десяти минут
  • https://t.me/clickhouse_ru
    @emakarov #23393 09:39 AM, 18 Aug 2017
    делайте для каждого видеофайла смещение временное
  • https://t.me/clickhouse_ru
    @emakarov #23394 09:39 AM, 18 Aug 2017
    один день - один видеофайл
  • https://t.me/clickhouse_ru
    @emakarov #23395 09:40 AM, 18 Aug 2017
    что-то в таком духе наверное можно
  • https://t.me/clickhouse_ru
    @emakarov #23396 09:40 AM, 18 Aug 2017
    а может просто без всяких дополнительных ухищрений нормально будет работать
  • Ну я так делал в другом проекте, работает :) Только КХ партиционирует по месяцам
  • @pookieShmukie #23398 09:41 AM, 18 Aug 2017
    Не по дням
  • https://t.me/clickhouse_ru
    @tkostyan ↶ Reply to #23376 #23399 10:30 AM, 18 Aug 2017
    могу предложить воспользоваться нативным python-драйвером, если не нужно ORM: https://github.com/mymarilyn/clickhouse-driver там есть Nullable
    GitHub - mymarilyn/clickhouse-driver: ClickHouse Python Driver with native interface support

    ClickHouse Python Driver with native interface support - GitHub - mymarilyn/clickhouse-driver: ClickHouse Python Driver with native interface support

  • Имеется ввижу возможность сделать MOVE PARTITION между таблицами?
  • https://t.me/clickhouse_ru
    спасибо, смотрю.
  • @pookieShmukie #23402 10:36 AM, 18 Aug 2017
    У нас вообще очень остро сейчас стоит вопрос с обновлением данных и удалением. Удаление не так приоритетно пока есть запас места. А обновление да. Есть у нас например пользователь у которого имеется куча фактов. Эти факты аггрегируются из сырых данных каждый раз когда прилетает новая пачка данных по пользователю. Пересчитываются все факты, т.к. они между собой взаимосвязаны, например в MySQL у нас сейчас есть строка пользователя к которой джойнятся нужные факты и пользователи по ним фильтруются, группируются и пр., но MySQL такая тугая штука, что капец просто...рассматриваем сейчас вариант переезда на постгрес, но хотелось бы аггрегированные данные складывать в КХ и там проводить последующую аггрегацию для построения отчетов
  • @milovidov_an #23403 10:37 AM, 18 Aug 2017
    С партициями ограничение - их не должно быть слишком много. Хотя они легче, чем отдельные таблицы, но если партиций много, то будет просаживаться производительность SELECT-ов, затрагивающих большое количество партиций.
  • @pookieShmukie #23404 10:37 AM, 18 Aug 2017
    Планируется выбирать статистику только по одному видео, т.е. данные по факту берутся только из одной партиции
  • @pookieShmukie #23405 10:38 AM, 18 Aug 2017
    Например запрос возвращает три колонки (одна из них лишняя) работает за 5мс, а тот же самый запрос только с двумя колонками работает уже 2 секунды...MySQL мать его.
  • @pookieShmukie #23406 10:38 AM, 18 Aug 2017
    И таких кейсов пруд пруди блин
  • https://t.me/clickhouse_ru
    В конфиге у нас макрос инклюдится из соседнего файла:
    <macros incl="macros" />
    в итоге в сгенерированном config-preprocessed.xml вижу такое:
    <macros>
    <shard>01</shard>
    <replica>02</replica>
    </macros>
    вроде как всё на месте, а ошибка всё равно осталась
  • https://t.me/clickhouse_ru
    @KeksBeskvitovich #23408 10:40 AM, 18 Aug 2017
    10.254.122.232:9000. DB::Exception: No macro shard in config.
  • Даже если у нас будет 2000 партиций где одна партиция - данные по одному конкретному видео, то мы все равно будем работать на один select запрос только с этой партицией, т.е. по сути ничего страшного не будет я полагаю
  • @pookieShmukie #23410 10:42 AM, 18 Aug 2017
    И еще есть вопрос по поводу Nested колонок. Они как то сжимаются? Например нужно собирать статистику по тестированию (вопрос-ответ), у вопроса может быть несколько вариантов ответа и соответсвенно пользователь выбирает 2-3 варианта ответа и я кладу их в nested колоноку, сжатие будет эффективным в таком случае или лучше класть не текстовое представление ответа, а именно идентификатор варианта ответа?
  • @milovidov_an #23411 10:47 AM, 18 Aug 2017
    Они сжимаются так же, как обычные поля. То есть, текстовые значения будут сжаты. Но идентификаторы или Enum будут сжаты ещё несколько лучше, а также будут существенно более выгодными по CPU.
  • @pookieShmukie #23412 10:49 AM, 18 Aug 2017
    Ну я так и думал, что все таки идентификаторы будут лучше. Enum не получится вкрутить, т.к. идентификаторы не UUID :( Идентификаторы по tincan не предусматриваются для вариантов ответа и приходят в чистом текстовом виде, а мы уже перед записью строки в КХ можем присваивать им идентификаторы
  • @pookieShmukie #23413 10:49 AM, 18 Aug 2017
    Точнее не потому что они не UUID, а список идентификаторов заранее неизвестен )
  • @milovidov_an #23414 10:51 AM, 18 Aug 2017
    Понятно.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #23400 #23415 11:03 AM, 18 Aug 2017
    да, это было бы удобно
  • https://t.me/clickhouse_ru
    @Alexey_VK #23416 11:26 AM, 18 Aug 2017
    Не понимаю, вот я вызвал геофункцию ради теста из примера в доке

    SELECT DISTINCT regionToName(regionToArea(toUInt32(number), 'ua'))
    FROM system.numbers
    LIMIT 15

    А мне намекают, Dictionaries was not loaded. You need to check configuration file..
    Я так понял, что словари д.б. из Яндекс.Метрики. Они-таки embedded ? следовательно опенсурс? ) Или это нечто экономически сакральное, только для служебного парсинга?
  • Это значит, что словарь надо скачать и положить в папочку с конфигом :)
  • @pookieShmukie #23418 11:46 AM, 18 Aug 2017
    Хотя могу ошибаться )
  • https://t.me/clickhouse_ru
    @Alexey_VK #23419 11:46 AM, 18 Aug 2017
    а не обязательно сперва проходить собеседование? )
    —-
    Геобаза загружается из текстовых файлов. Если вы работаете в Яндексе, то для их создания вы можете воспользоваться инструкцией: https://github.yandex-team.ru/raw/Metrika/ClickHouse_private/master/doc/create_embedded_geobase_dictionaries.txt
  • https://t.me/clickhouse_ru
    @umaxfun ↶ Reply to #23419 #23420 11:48 AM, 18 Aug 2017
    Кажется, обязательно
  • https://t.me/clickhouse_ru
    печалити
  • https://t.me/clickhouse_ru
    @umaxfun ↶ Reply to #23421 #23422 11:50 AM, 18 Aug 2017
    Так и зарплату дадут :)
  • https://t.me/clickhouse_ru
    @umaxfun #23423 11:51 AM, 18 Aug 2017
    И бонусный пакет. Может и место на парковке :)
  • https://t.me/clickhouse_ru
    @umaxfun #23424 11:51 AM, 18 Aug 2017
    Узко мыслите :)
  • https://t.me/clickhouse_ru
    false
  • https://t.me/clickhouse_ru
    @umaxfun ↶ Reply to #23425 #23426 12:13 PM, 18 Aug 2017
    не хотел задеть (((
  • https://t.me/clickhouse_ru
    @Alexey_VK #23427 12:14 PM, 18 Aug 2017
    ничо. Но оффтопик)
  • @307875817 #23428 12:23 PM, 18 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @andrey_konyaev #23429 12:57 PM, 18 Aug 2017
    '''Доступ к БД не связан с настройкой readonly. Невозможно дать полный доступ к одной БД и readonly к другой.'''
    Из документации.
    Есть ли изменения в сисетме прав доступа, или пока всё так же?
  • @ztlpn ↶ Reply to #23409 #23430 01:03 PM, 18 Aug 2017
    А почему не пойдёт просто первичный ключ вида (VideoID, UserID)? Или старые видео хочется удалять потом?
  • https://t.me/clickhouse_ru
    @Shegloff #23431 01:46 PM, 18 Aug 2017
    заметил такую штуку: если в поля Date или DateTime вставлять unix timestamp, то вставка существенно замедляется. Примерно так: 100к строк вставляется за 0.5 сек, если указаны нормальные даты ('2017-08-18'), и 5 секунд. если timestamp (1503063892). Разница в 10 раз. Это нормально? У нас во всех сислогах timestamp'ы, а сишники не чешутся, мне грустно...
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #23431 #23432 01:48 PM, 18 Aug 2017
    проще в скриптах и коде конвертировать
  • https://t.me/clickhouse_ru
    @Civiloid #23433 01:48 PM, 18 Aug 2017
    или перейти на native формат
  • https://t.me/clickhouse_ru
    @Shegloff #23434 01:48 PM, 18 Aug 2017
    да, я и говорю, сишники не хотят чесаться и конвертировать :)
  • https://t.me/clickhouse_ru
    @Civiloid #23435 01:48 PM, 18 Aug 2017
    в native это вроде unixts (или что-то близкое) и дни с 1970 года соответственно
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #23434 #23436 01:49 PM, 18 Aug 2017
    кто пишет в базу тот и конвертирует :P
  • https://t.me/clickhouse_ru
    @Civiloid #23437 01:49 PM, 18 Aug 2017
    можно в крайнем случаи за них сделать код конвертации и им просто его отдать )
  • https://t.me/clickhouse_ru
    @Shegloff #23438 01:50 PM, 18 Aug 2017
    вот это выход)))
  • https://t.me/clickhouse_ru
    @kshvakov #23439 01:54 PM, 18 Aug 2017
    Да, в native дата int16(дни от 1970), дататайм int32, на Go это выглядит так https://github.com/kshvakov/clickhouse/blob/refactoring/lib/column/datetime.go#L30
  • https://t.me/clickhouse_ru
    @Shegloff #23440 01:57 PM, 18 Aug 2017
    в native наши сишники будут полгода переделывать формат заливки, так что тут только переделка timestamp на обычные даты спасет, и заливка в 10 раз ускорится
  • https://t.me/clickhouse_ru
    @playboyko #23441 02:03 PM, 18 Aug 2017
    Здравствуйте. Есть запрос, который выполняется на distributed таблице.

    SELECT
    hash1,
    hash2,
    sum(month = '2017-05-15') AS cnt_1,
    sum(month = '2017-06-15') AS cnt_2,
    minIf(p, month = '2017-05-15') AS p_1,
    minIf(p, month = '2017-06-15') AS p_2,
    p_2 - p_1 AS p_diff
    FROM table_distributed
    WHERE (month IN ('2017-05-15', '2017-06-15')) AND (hash1 = cityHash64('value'))
    GROUP BY
    hash1,
    hash2
    HAVING (cnt_1 > 0) AND (cnt_2 > 0) AND (p_diff < 0)
    ORDER BY p_diff desc
    LIMIT 100

    Данных в distributed таблице 25kkk, обрабатываемых данных на этот запрос 250kk, из которых получается 10кк. Если выполнять этот запрос на каждом шарде, он выполняется довольно быстро (данные хорошо размазаны), если выполнять на distributed(ключ hash1), запрос выполняется за время (время выполнения на одном шарде * количество шардов * 1.5). Мы посмотрели, что, похоже, кх отправляет все данные, полученные до выполнения HAVING, для последующей агрегации на сервер, с которого выполняется запрос. Отсюда вопрос: можно ли как-то заставить кх полностью выполнить запросы на шардах (включая having), а на сервере, с которого делается запрос, просто смержить результаты и сделать limit?
  • @renatko ↶ Reply to #23441 #23442 02:07 PM, 18 Aug 2017
    distributed_group_by_no_merge
    https://github.com/yandex/ClickHouse/issues/332
    FR: Add uniq/uniqGlobal functionality · Issue #332 · yandex/ClickHouse

    Clickhouse has an ability to limit scope of IN/JOIN constructions while querying clustered tables: you could either use local tables or pass result set to querying server and do IN/JOIN there depe...

  • @ztlpn ↶ Reply to #23374 #23443 02:08 PM, 18 Aug 2017
    Если я правильно понял, то получится партиция на каждый батч, и партиций будет слишком много.
  • https://t.me/clickhouse_ru
    5000 в день
  • https://t.me/clickhouse_ru
    Спасибо большое, но с LIMIT эта штука работает очень странно. Если оборачивать в селект и его лимитировать, то прироста не наблюдается.
  • @ztlpn ↶ Reply to #23444 #23446 02:20 PM, 18 Aug 2017
    Да, это много. Так как куски из разных партиций не будут мержиться, то получится очень много кусков и запросы будут тормозить.
  • @vladislavadv #23447 02:26 PM, 18 Aug 2017
    Всем привет. Вопрос по ключу семлирования.
    У нас есть огромная табличка, в которой хранятся показы, клики и действия.
    Сейчас пытаемся решить, как будет правильнее, поставить ключем семплирования хеш от id юзера, хеш от id показа или рандом?

    В случае id юзера, будет семпл юзеров с полным набором событий. Соответственно, запросы по типу avgPerUser домножать не нужно будет, а uniqUserId - нужно будет.

    В случае id показа - полные цепочки, от показа до лида.

    В случае рандома честный семпл, при котором нужно будет домножать все результаты выборок.
  • @swswsw202 #23448 02:26 PM, 18 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @orantius #23449 02:27 PM, 18 Aug 2017
    а как у вас один и тот же id показа поадает в лог несколько раз, и может ли это быть событиями разных пользователей?
  • https://t.me/clickhouse_ru
    @playboyko #23450 02:37 PM, 18 Aug 2017
    Есть еще вопрос. Подскажите, пожалуйста, если max_concurrent_queries = 5, но приходит одновременно 10 запросов, они становяться в очередь?
  • Все события начинаются от показа, поэтому у всей цепочки показ-клик-действие есть id показа.
    У разных пользователей одного id показа быть не может
  • Да. Это определяется настройкой queue_max_wait_ms (уровня пользователя), по-умолчанию - 5 секунд.
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #23451 #23453 02:57 PM, 18 Aug 2017
    понятно. я бы делал семплирование по юзерам, т.к. с ним сохраняются и пользовательские и показные метрики.
  • @vladislavadv #23454 02:57 PM, 18 Aug 2017
    А семплирование по рандому - вообще не вариант?
  • https://t.me/clickhouse_ru
    @orantius #23455 02:59 PM, 18 Aug 2017
    смотря какие запросы вам нужны. если у вас половина людей делает десять событий а вторая половина одно событие то после семплирования 0.1 по рандому вы получите ровным слоем размазанных "однособытийных" людей и потеряете свойства исходного распределения.
  • https://t.me/clickhouse_ru
    @orantius #23456 03:02 PM, 18 Aug 2017
    или например вы выберете 10% показов и 10% кликов. а эти клики вообще не от этих показов. некоторые выводы сделать не получится.
  • @vladislavadv #23457 03:10 PM, 18 Aug 2017
    у нас только 5% юзеров делают кроме показа клик. И менее 1% действия.

    Запросы в основном такие

    select slice(может быть date, geo, browser и еще штук 30), sum(IsShow),sum(isClick),sum(isAction) form table group by slice
  • https://t.me/clickhouse_ru
    @salttan ↶ Reply to #23408 #23458 03:11 PM, 18 Aug 2017
    А ClickHouse перезагружали после изменения макросов?
  • @vladislavadv #23459 03:11 PM, 18 Aug 2017
    но кроме sum иногда интересно посмотреть кол-во уников, кол-во показов на человека и тд
  • @serlex777 #23460 03:36 PM, 18 Aug 2017
    Всем добрый день! Кто-нибудь сталкивался с проблемой, что в системе появляются зомби процессы с именем [sh]. Может быть КХ выполняет какой-то скрипт и что-то не отрабатывает? После рестарта сервиса КХ все такие процессы пропадают. Ошибок в логе КХ нет.
  • @serlex777 #23461 03:36 PM, 18 Aug 2017
    Такой процесс не один появляется, десяток за сутки
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #23460 #23462 03:59 PM, 18 Aug 2017
    У вас словаря из executable источников нет?
  • @pavlov_m ↶ Reply to #23460 #23463 04:11 PM, 18 Aug 2017
    была аналогичная проблема
  • @pavlov_m #23464 04:11 PM, 18 Aug 2017
    у вас какая версия клика?
  • @pavlov_m #23465 04:11 PM, 18 Aug 2017
    мы перешли на HTTP сурс
  • @pavlov_m #23466 04:11 PM, 18 Aug 2017
    но по комитам, эта проблема должна была уйти с одним из stable релизов
  • @pavlov_m #23467 04:12 PM, 18 Aug 2017
    это из за словарей
  • Версия
    1.1.54245

    да, словари есть /usr/bin/mysql и далее TSV данные через запрос
  • @pavlov_m #23469 04:19 PM, 18 Aug 2017
    значит ошибка не ушла с релизом... как вариант, перейдите на источник file, и по крону записывайте данные с мускуля в файлик... С зомби у нас не получилось решить проблему при executable источнике. Там любой запрос создает зомби
  • @pavlov_m #23470 04:20 PM, 18 Aug 2017
    точнее не запрос, а при каждом обновлении словаря
  • Да, похоже что словари
    спасибо большое
  • @vludv #23472 04:27 PM, 18 Aug 2017
    Добавили changelog для недавнего и прошлого релиза https://github.com/yandex/ClickHouse/blob/master/CHANGELOG_RU.md
  • https://t.me/clickhouse_ru
    @an_klim #23473 04:55 PM, 18 Aug 2017
    Joined.
  • @3334085 #23474 04:59 PM, 18 Aug 2017
    > Добавлена поддержка неконстантных аргументов и отрицательных смещений в функции substring(str, pos, len)

    О, я об этом писал, ура
  • https://t.me/clickhouse_ru
    @umaxfun #23475 05:11 PM, 18 Aug 2017
    ничего себе! появился WITH!
  • https://t.me/clickhouse_ru
    @umaxfun #23476 05:12 PM, 18 Aug 2017
    в справке, правда, не описано, и ждем подвоха, но CTE это пять 🙂
  • @milovidov_an #23477 05:12 PM, 18 Aug 2017
    Нет никаких CTE.
  • Алексей, а нет никакой информации по исправлению ошибок в оптимизаторе? https://github.com/yandex/ClickHouse/issues/859
    Wrong query optimisation throws out required columns from subqueries. #859

    Query below works fine. SELECT * FROM ( SELECT learnerHash, passed - eventTime AS diff FROM statements GLOBAL ANY INNER JOIN ( SELECT learnerHash...

  • @sordes_pilosus #23479 05:33 PM, 18 Aug 2017
    Привет всем. Вопрос про внешние словари. Возможен ли словарь в виде tab separated файла, где значения (атрибуты) имеют тип Array(Array(UInt32))? В моем случае это массив с массивами типа [[0, 1], [2, 1], [5, 2]].
    Из документации следует, что возможно, но на деле получаю экспешпн Cannot parse input.
  • https://t.me/clickhouse_ru
    Ура! Вот за это прям огромное спасибо!
  • https://t.me/clickhouse_ru
    @peerclick #23481 05:48 PM, 18 Aug 2017
    Вот теперь совсем другое дело . Чувствуется Ваш профессионализм . И вот если бы вы это взяли за практику каждый раз добавлять - то я стал бы самым счастливым человеком . ))
  • @pookieShmukie #23482 05:52 PM, 18 Aug 2017
    А runningDifference с memory таблицами не работает?
  • @pookieShmukie #23483 06:03 PM, 18 Aug 2017
    Он всегда 0 возвращает (
  • Пока нет информации. Последние несколько недель не разбирались с этой задачей.
  • @pookieShmukie #23485 06:19 PM, 18 Aug 2017
    Спасибо за ответ! Буду с нетерпением ждать :) Я думаю, что не один такой )
  • runningDifference работает в пределах блока. Memory таблица возвращает данные ровно такими блоками, какие были в неё вставлены. Если данные вставлялись по одной строке, то runningDifference всегда будет возвращать ноль.
  • @pookieShmukie #23487 06:20 PM, 18 Aug 2017
    Да, данные вставлялись по одной строке
  • @pookieShmukie #23488 06:20 PM, 18 Aug 2017
    Кстати, хороший хак для разделения данных :)
  • Можно слить в один блок с помощью INSERT SELECT в другую таблицу с ORDER BY.
  • Для атрибутов массивов поддерживаются только числовые типы и строки. То есть, даже обычные массивы - нет.
  • @pookieShmukie #23491 06:21 PM, 18 Aug 2017
    У меня помнится был кейс когда мне надо было в рамках одного запроса делать runningDifference, но если например у строки другой идентификатор объекта, то начинать сначала :) Теперь знаю как это можно обойти )
  • @vludv ↶ Reply to #23479 #23492 06:21 PM, 18 Aug 2017
    Тут проблема в том, какие геттеры должны быть для таких словарей. Их итак много. Надо придумать какой-нибуль generic вариант.
  • Жаль, что это всего лишь хак. Полноценную реализацию такой функции не так уж сложно сделать, хотя и существенно сложнее, чем runningDifference.
  • @pookieShmukie #23494 06:22 PM, 18 Aug 2017
    Ну да, я уже говорил о такой функции не раз :( Жаль ничем не могу помочь в этом деле
  • Generic вариант с хранением значений в Field - вполне приемлимо.
  • @vladislavadv #23496 06:23 PM, 18 Aug 2017
    Еще вопросик по первичному ключу. Влияет ли первичный ключ на скорость выполнения sum?

    т.е. решаем добавлять ли в первый ключ колонки isShow\isClick для запросов по типу

    select eventDate,sum(isShow),sum(isClick) from table group by eventDate

    или это поможет только для запросов типа:
    select eventDate,Shows,Clicks from (
    select eventDate,count() as Shows from table where isShow group by eventDate
    ) Join (
    select eventDate,count() as Clicks from table where isClick group by eventDate
    ) Using eventDate
  • Нет, первичный ключ не влияет на скорость GROUP BY.
    (Возможно незначительное косвенное влияние.)
  • https://t.me/clickhouse_ru
    @Sfinks80 ↶ Reply to #23458 #23498 06:26 PM, 18 Aug 2017
    да, конечно
  • Но на where во втором случае повлияет?(там где where isShow\isClick)
  • @milovidov_an #23500 06:28 PM, 18 Aug 2017
    Да.
  • @vladislavadv #23501 06:28 PM, 18 Aug 2017
    Конечно же, при условии, что в where еще будут все колонки, которые перед isShow\isClick в ключе
  • @vladislavadv #23502 06:29 PM, 18 Aug 2017
    Т.е. имеет смысл внести isShow в первичный ключ(у нас все сильно сложнее, чем я описал, и показы и так подзапросов вытаскиваются )?
  • @milovidov_an #23503 06:31 PM, 18 Aug 2017
    Да,
    "при условии, что в where еще будут все колонки, которые перед isShow\isClick в ключе"
    и при условии, что эта фильтрация отфильтровывает достаточно большое количество строк.
  • Спасибо за ответ! Жаль, что нельзя массивы использовать для атрибутов словарей. Было бы удобно
  • Спасибо
  • @pookieShmukie #23506 07:05 PM, 18 Aug 2017
    Блин :) Опять с runningDifference влип )
  • @pookieShmukie #23507 07:08 PM, 18 Aug 2017
    Есть таблица, learnerId, video, action, position.

    action = play - запуск видео
    action = stop - остановка видео

    position - место в видео (конкретная секунда)

    Например данные.

    SELECT *
    FROM vid

    ┌─learnerId─┬─videoId─┬─action─┬─position─┬───────────eventTime─┬──eventDate─┐
    │ 1 │ test │ play │ 0 │ 2017-01-01 00:00:00 │ 2017-01-01 │
    │ 1 │ test │ stop │ 14 │ 2017-01-01 00:00:14 │ 2017-01-01 │
    │ 1 │ test │ stop │ 55 │ 2017-01-01 00:01:05 │ 2017-01-01 │
    │ 1 │ test │ play │ 55 │ 2017-01-01 00:01:25 │ 2017-01-01 │
    │ 1 │ test │ play │ 20 │ 2017-01-01 00:00:33 │ 2017-01-01 │
    │ 1 │ test │ stop │ 60 │ 2017-01-01 00:01:30 │ 2017-01-01 │
    └───────────┴─────────┴────────┴──────────┴─────────────────────┴────────────┘

    Тут получается, что в целом человек пропустил всего 5 секунд видео (с 15 по 20). Мне нужно в конечном счете получить кол-во уникальных человек просмотревших видео на каждой секунде...

    Решил сделать так...
    SELECT
    uniq(learnerId),
    range
    FROM
    (
    SELECT
    learnerId,
    range
    FROM
    (
    SELECT
    learnerId,
    action,
    runningDifference(position) AS diff,
    if(action = 'play', emptyArrayUInt32(), arrayFilter(x -> ((x >= (position - diff)) AND (x <= position)), range(toUInt32(position)))) AS range
    FROM
    (
    SELECT *
    FROM vid
    ORDER BY eventTime ASC
    LIMIT 1 BY position
    )
    )
    ARRAY JOIN range
    )
    GROUP BY range
    ORDER BY range ASC

    Получаю что нужно...но если добавляются данные по нескольким пользователям...ну, вы сами поняли что будет :)
  • @pookieShmukie #23508 07:09 PM, 18 Aug 2017
    А вот если бы была возможность runningDifference прикончить по определенному правилу, то проблем бы не было :)
  • @pookieShmukie #23509 07:10 PM, 18 Aug 2017
    Может есть вариант создать range без runningDifference? ) Что бы работало аналогично
  • @14227897 #23510 08:40 PM, 18 Aug 2017
    Joined.
  • Поклон ! ) Спасибо!!!
  • @Nvarchar495 #23512 09:15 PM, 18 Aug 2017
    Добрый вечер! Есть сайт на django работает с подсгресом, хочется вместо него попробовать использовать clickhouse
  • @Nvarchar495 #23513 09:16 PM, 18 Aug 2017
    Может кто то решал задачу с подключением django к clickhouse?
  • https://t.me/clickhouse_ru
    А в чем причина появления желания смены СУБД?
  • @Nvarchar495 #23515 09:21 PM, 18 Aug 2017
    Мы протестировали кликхаус и т.к он показал классную производительность, хотели использовать в проде )
  • https://t.me/clickhouse_ru
    @orantius #23516 09:42 PM, 18 Aug 2017
    я думал у веб-фрейморков нагрузка в основном oltp
  • https://t.me/clickhouse_ru
    @nikitosiusis #23517 09:44 PM, 18 Aug 2017
    скорее его дефолтные настройки быстрее постгреса в вашем конкретном случае. попробуйте лучше mysql :)
  • @Nvarchar495 #23518 09:44 PM, 18 Aug 2017
    у нас клиенты крутят отчеты за большие промежутки времени
  • https://t.me/clickhouse_ru
    @nikitosiusis #23519 09:45 PM, 18 Aug 2017
    а у постгреса по дефолту лимит на память которую он может сожрать
  • https://t.me/clickhouse_ru
    @andrey_konyaev #23520 09:57 PM, 18 Aug 2017
    '''Доступ к БД не связан с настройкой readonly. Невозможно дать полный доступ к одной БД и readonly к другой.'''
    Из документации.
    Есть ли изменения в сисетме прав доступа, или пока всё так же?
  • https://t.me/clickhouse_ru
    @etkee ↶ Reply to #23513 #23521 10:12 PM, 18 Aug 2017
    Если там классическое использование базы данных для хранения и выдергивания сущностей, то идея немного не оправданная
  • Пока всё так же.
  • 19 August 2017 (9 messages)
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #23478 #23523 09:30 AM, 19 Aug 2017
    да, очень печальная ошибка, раз 10 в неделю на нее натыкаюсь
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #23472 #23524 09:32 AM, 19 Aug 2017
    здорово что появился тип для UUID, еще бы для IP был и было бы здорово (пока мы на своей стороне всё в FixedString(16) складываем)
  • https://t.me/clickhouse_ru
    @shuttie #23525 02:39 PM, 19 Aug 2017
    IP в FixedString? А почему не в uint32?
  • @vstakhov #23526 02:48 PM, 19 Aug 2017
    ipv6 в него не влезет, например
  • https://t.me/clickhouse_ru
    @nikitosiusis #23527 02:55 PM, 19 Aug 2017
    Так возьми тип куда влезет, а в4 конверть в в6 нотацию)
  • а в FixedString(16) влезет?)
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #23528 #23529 04:39 PM, 19 Aug 2017
    да, он (ipv6) как раз 16 байт
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #23525 #23530 04:44 PM, 19 Aug 2017
    FixedString в ClickHouse это набор байт с фиксированой длиной, очень удобно для хранения кастомных типов которых нет в КХ, но иногда нужно и "глазами" посмотреть, пока небыло встроенного типа UUID это было неочень наглядно и местами просто ломало "консольку" если кто-то его решил через клиент поле выбрать )
  • @swswsw202 #23531 05:59 PM, 19 Aug 2017
    Та же проблема была fixedString. Пока не было smi2 клиента приходилось очень осторожно выбирать колонки тк бинарные данные моментально ломают форматирование в консоли
  • 20 August 2017 (6 messages)
  • https://t.me/clickhouse_ru
    @p_hamper #23532 08:51 AM, 20 Aug 2017
    А вот у такой ошибки какая причина может быть?
    2017.08.20 08:23:11.342928 [ 6 ] executeQuery: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Assertion violation: !_path.empty() in file "/home/robot-metrika-test/jenkins/workspace/clickhouse-packages-build/sources/contrib/libpoco/Foundation/src/File_UNIX.cpp", line 370, e.what() = Assertion violation (from 10.*.*.*:60398) (in query: INSERT INTO table FORMAT CSV)
  • https://t.me/clickhouse_ru
    @p_hamper #23533 08:53 AM, 20 Aug 2017
    2017.08.20 08:23:11.369209 [ 6 ] ServerErrorHandler: Code: 99, e.displayText() = DB::Exception: Unknown packet from client, e.what() = DB::Exception, Stack trace:

    0. clickhouse-server(StackTrace::StackTrace()+0x16) [0x2a890e6]
    1. clickhouse-server(DB::Exception::Exception(std::__cxx11::basic_string, std::allocator > const&, int)+0x1f) [0x10dea3f]
    2. clickhouse-server(DB::TCPHandler::receivePacket()+0x21f) [0x10eb2af]
    3. clickhouse-server(DB::TCPHandler::runImpl()+0x55c) [0x10ec91c]
    4. clickhouse-server(DB::TCPHandler::run()+0x2b) [0x10ed54b]
    5. clickhouse-server(Poco::Net::TCPServerConnection::start()+0xf) [0x3416fff]
    6. clickhouse-server(Poco::Net::TCPServerDispatcher::run()+0x13b) [0x341d43b]
    7. clickhouse-server(Poco::PooledThread::run()+0xb7) [0x3688287]
    8. clickhouse-server(Poco::ThreadImpl::runnableEntry(void*)+0xa5) [0x36542c5]
    9. /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7fadc26b76ba]
    10. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7fadc1cd83dd]

    Code: 210. DB::NetException: Connection reset by peer while writing to socket (10.*.*.*:9000)
  • https://t.me/clickhouse_ru
    @kmarenov #23534 12:31 PM, 20 Aug 2017
    Всем привет. Поднял на сервере clickhouse-server в докере, порт прокинут наружу, если открыть через браузер, то отображается "Ок.", но при попытке законнектиться удаленно клиентом получаю ошибку "Code: 209. DB::NetException: Timeout exceeded while reading from socket"
    При этом если прямо на сервере рядом в докере поднять клиент, то оттуда корректно получается зацепиться.
    Подскажите, пожалуйста, с чем может быть связана эта ошибка? То есть он вроде цепляется к серверу, но висит долго, а потом отваливается по таймауту.
  • https://t.me/clickhouse_ru
    @kmarenov #23535 12:33 PM, 20 Aug 2017
    а, я понял кажется свою ошибку. я нативным клиентом пытаюсь законнектиться к порту для HTTP интерфейса
  • @395827240 #23536 01:00 PM, 20 Aug 2017
    Joined.
  • @mikemerkurev #23537 04:17 PM, 20 Aug 2017
    Joined.
  • 21 August 2017 (65 messages)
  • https://t.me/clickhouse_ru
    А какие вы методы в Яндекс применяете для разграничения прав доступа? Аналитики у Вас не могут создать временную таблицу с аггрегатом? А если могут, то получается они могут дропнуть все данные?
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #23513 #23541 09:08 AM, 21 Aug 2017
    подключается довольно просто, но естественно, не как замена бэкенда для моделей джанги
  • Нашел коннектор к алхимии + фласк
  • https://t.me/clickhouse_ru
    @Den1sKarpov #23543 10:16 AM, 21 Aug 2017
    Joined.
  • @ztlpn ↶ Reply to #23540 #23544 12:14 PM, 21 Aug 2017
    Как вариант - отдельный инстанс для аналитиков, на котором созданы Distributed таблицы, смотрящие на основной кластер.
  • https://t.me/clickhouse_ru
    @andrey_konyaev #23545 12:25 PM, 21 Aug 2017
    Я тоже сначала так подумал, но тогда если делать join, то мы будем тянуть по сети оба селекта(и левый и правый) и только потом джойнить. Больше проблем чем профита
  • Тоже не взлетел) Вообщем сделаю напишу инструкцию )
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #23546 #23547 01:56 PM, 21 Aug 2017
    А что именно хотите сделать ?
  • https://t.me/clickhouse_ru
    @emakarov #23548 01:56 PM, 21 Aug 2017
    Clickhouse не поддерживает update. Что значит "подключить к джанге"?
  • https://t.me/clickhouse_ru
    @belomore #23549 02:04 PM, 21 Aug 2017
    подключить имеется ввиду через джанго ORM
  • https://t.me/clickhouse_ru
    @belomore #23550 02:04 PM, 21 Aug 2017
    видимо
  • https://t.me/clickhouse_ru
    @belomore #23551 02:06 PM, 21 Aug 2017
    задачка интересная, но отсутствие апдейта делает ее какой-то одноногой )
  • https://t.me/clickhouse_ru
    @emakarov #23552 02:22 PM, 21 Aug 2017
    Да, в этом и дело
  • https://t.me/clickhouse_ru
    @emakarov #23553 02:24 PM, 21 Aug 2017
    Если хочется иметь django-подобный orm то могу посоветовать infi.clickhouse_orm опять же. Надо понимать что вы без проблем можете сделать API на джанге к данным которые хранятся в кликхаусе. Но не подключить clickhouse в качестве бэкенда для django.db.models
  • https://t.me/clickhouse_ru
    @mindtrick #23554 02:38 PM, 21 Aug 2017
    Joined.
  • @143063406 #23555 02:46 PM, 21 Aug 2017
    Joined.
  • https://t.me/clickhouse_ru
    @mak1don #23556 03:21 PM, 21 Aug 2017
    Joined.
  • @mrmnightt #23557 03:44 PM, 21 Aug 2017
    Привет, max_threads влияет на вставку в таблицу типа insert into ... format TSV при вставке через cat test.tsv | clickhouse-client?
  • @vladislavadv #23558 03:46 PM, 21 Aug 2017
    Всем привет.

    К вопросу о ключе семлирования.

    Мы хотим использовать ключем семплирования id пользователя.

    ID пользователя у нас это - UUID4.

    Вопрос, нужно ли этот ID оборачивать в хеш функцию по типу cityHash64? или в исходном виде пойдет? А хеш актуален только для значений которые что-то значат?
  • https://t.me/clickhouse_ru
    @orantius #23559 03:48 PM, 21 Aug 2017
    хеш актуален для значений, которые могут быть неравномерно распределены по диапазону значений своего типа, а также в случае корреляции значений с какими-то из вычисояемых статистик.
  • @ztlpn ↶ Reply to #23557 #23560 03:56 PM, 21 Aug 2017
    Нет, вставка происходит в один поток (точнее в два - клиент парсит TSV и формирует блоки формате Native, сервер сортирует и записывает результат).
  • https://t.me/clickhouse_ru
    @playboyko #23561 04:06 PM, 21 Aug 2017
    Привет. А есть ли какая-нибудь возможность заставить кх выполнять запрос, вида Select FROM Select полностью на шардах?
  • @ztlpn #23562 04:13 PM, 21 Aug 2017
    Можете пример запроса привести? Distributed запрос и так выполняется по возможности на локальных машинах, но сервер-инициатор всё-таки должен принять и смержить результаты.
  • https://t.me/clickhouse_ru
    @playboyko #23563 04:20 PM, 21 Aug 2017
    Пример запроса:
    SELECT
    hash1,
    hash2,
    month,
    p,
    p - pos_diff AS prev_p,
    p_diff
    FROM
    (
    SELECT
    hash1,
    hash2,
    month,
    p,
    runningDifference(hash1) AS p,
    runningDifference(hash2) AS u,
    runningDifference(p) AS p_diff
    FROM
    (
    SELECT
    hash1,
    hash2,
    month,
    p
    FROM distributed_table
    WHERE (d = 'value') AND (month IN ('2017-05-15', '2017-06-15')) AND (hash1 = cityHash64('value2'))
    ORDER BY
    hash1 ASC,
    hash2 ASC,
    month ASC,
    p ASC
    LIMIT 1 BY
    hash1,
    hash2,
    month
    )
    )
    WHERE (p = 0) AND (u = 0)
    ORDER BY p_diff DESC
    LIMIT 10

    Сейчас он идет в каждый шард, выполняя запрос

    SELECT
    hash1,
    hash2,
    month,
    p
    FROM distributed_table
    WHERE (d = 'value') AND (month IN ('2017-05-15', '2017-06-15')) AND (hash1 = cityHash64('value2'))
    ORDER BY
    hash1 ASC,
    hash2 ASC,
    month ASC,
    p ASC
    LIMIT 1 BY
    hash1,
    hash2,
    month

    Дальше смерживает данные на сервере-инициаторе и продолжает выполнение запроса. Можно ли как-нибудь сделать так, чтобы он все выполнил на шардах, результат смержил на сервере-инициаторе, выполнил там же сортировку и limit?
  • @ilyas_pro #23564 04:41 PM, 21 Aug 2017
    в конец каждого подзапроса который надо мержить локально надо добавлять "settings distributed_group_by_no_merge = 1"
    если я правильно понял что нужно
  • @ilyas_pro #23565 04:42 PM, 21 Aug 2017
    но это не работало для ридонли юзеров, вроде
  • @serlex777 #23566 05:10 PM, 21 Aug 2017
    Подскажите пожалуйста, есть ли способ при помощи стандартных движков решить следующию задачу:
    Есть уникальный ключ (назовем его session_id)
    с этим ключем могут появлять события (request_id) c определенным набором полей, но хотелось бы чтобы в итоге все поля получалсь в виде одной записи (сессия и все поля, относящиеся к этой сессии)
    Можно ли, какой-то движек использовать, чтобы в рамках session_id в зависимости от request_id подставлялось нужное значение.

    Можно было бы писать несколько записей , а потом GROUB BY session_id и anyIf(value1, request_id = 1), anyIf(value_2, request_id = 2)

    но возможно можно как-то сократить обьем и ускорить выборки
  • @143063406 #23567 06:10 PM, 21 Aug 2017
    Всем привет! до этого не сталкивался c clickhouse, вроде интересно в некоторых моих 'use cases'. Но мучает один вопрос. Допустим изза нештатной траблы, появится необходимость поменять какието данные за определенный период времени... с этим вообще все плохо?
  • @143063406 #23568 06:13 PM, 21 Aug 2017
    а... увидел в Roadmap план "Начальная поддержка UPDATE и DELETE"
  • Выбрать движок ReplacingMergeTree
  • @143063406 #23570 06:19 PM, 21 Aug 2017
    ммм, да удобно. спс, но наверно может создать лишний оверхед, если эта необходимость возникает крайне редко (вроде 2 раза за последние 1-2 года)
  • @143063406 #23571 06:25 PM, 21 Aug 2017
    и еще
    В приницпи сейчас у нас и так есть сервера, собирающие реалтайм стату, и раз в какойто период времени скидывающие данные в 'общую' базу (пачками)
    но есть сервисы где вся стата сразу отправляется в единую базу (по мере поступления/реалтайм)

    вопрос наверно так: на сколько важно даные скидывать пачками - очень важно? желательно?
  • @ztlpn #23572 06:52 PM, 21 Aug 2017
    Очень важно для нормальной производительности вставок.
  • @ztlpn ↶ Reply to #23568 #23573 07:00 PM, 21 Aug 2017
    Сейчас штатный способ поправить данные плохие - заменить партицию с плохими данными с помощью ALTER ... DETACH PARTITION / ATTACH PARTITION. ReplacingMergeTree для этого использовать нежелательно, т.к. действительно будет постоянный оверхед на столбец с версией, чтобы уникально идентифицировать записи, возможно придётся добавлять лишние столбцы в первичный ключ, ну и чтобы заменить данные, всё равно вручную придётся вызывать OPTIMIZE.
  • https://t.me/clickhouse_ru
    у меня на тестах получалось 800к вставок в секунду батчами. и 35к вставок если данные приходят как попало. когда по одной строке когда по 5000.
    cpu 100% в обоиз случаях.
    но при 800к вставок еще и было типа 120 iops а при как попало под 700 iops.
    так что критически важны.
  • @ztlpn #23575 07:03 PM, 21 Aug 2017
    Да, на каждую вставку происходит O(количества столбцов) disk seek-ов, а если таблица Replicated, то и где-то десяток транзакций в ZooKeeper.
  • @ztlpn #23576 07:04 PM, 21 Aug 2017
    Ну и константный оверхед на создание всяких временных std::string, shared_ptr и т.п., который для маленьких вставок становится заметен.
  • @143063406 #23577 07:10 PM, 21 Aug 2017
    > с помощью ALTER ... DETACH PARTITION / ATTACH PARTITION
    ну для нештатной ситуации выглядит терпимо. спс. значит жить можно :)

    > ... так что критически важны.
    спасибо :)
  • https://t.me/clickhouse_ru
    @kmarenov #23578 07:15 PM, 21 Aug 2017
    помогите нубу, пожалуйста. вроде простая с виду задача: сделать запрос, который на каждую дату выведет сколько всего записей было на тот день в таблице, но что-то бьюсь-бьюсь, и никак не придумаю как это сделать)
  • @ztlpn #23579 07:18 PM, 21 Aug 2017
    а столбец с датой в таблице есть?
  • https://t.me/clickhouse_ru
    @freeseacher #23580 07:25 PM, 21 Aug 2017
    господа а http://repo.red-soft.biz/ фсё ?
  • https://t.me/clickhouse_ru
    @kmarenov ↶ Reply to #23579 #23581 07:25 PM, 21 Aug 2017
    да. вся сложность для меня в том, чтобы посчитать количество именно за все предыдущие дни, а не только за текущий
  • https://t.me/clickhouse_ru
    @kmarenov #23582 07:26 PM, 21 Aug 2017
    упираюсь в остутствие зависимых подзапросов и то, что джойны можно делать только по равенству
  • @ztlpn #23583 07:26 PM, 21 Aug 2017
    тогда SELECT date, count() from table GROUP BY date вроде бы то, что нужно
  • https://t.me/clickhouse_ru
    @kmarenov #23584 07:28 PM, 21 Aug 2017
    в том то и дело, что это выведет количество записей только по самой этой дате. а нужно вывести сколько было всего записей в таблице на тот день
  • https://t.me/clickhouse_ru
    @kmarenov #23585 07:28 PM, 21 Aug 2017
    ну то есть это будет постоянно растущая кривая
  • @ztlpn ↶ Reply to #23580 #23586 07:29 PM, 21 Aug 2017
    Для redhat-подобных дистрибутивов есть репозиторий altinity: https://packagecloud.io/altinity/clickhouse
    Altinity/clickhouse - Packages · packagecloud

    Browse packages for the Altinity/clickhouse repository. Host your own repository by creating an account on packagecloud.

  • @ztlpn ↶ Reply to #23585 #23587 07:30 PM, 21 Aug 2017
    А, понял. То есть нужна кумулятивная сумма
  • https://t.me/clickhouse_ru
    @freeseacher #23588 07:30 PM, 21 Aug 2017
    хм. другие репы я слышал имеются да. но ту можно убирать из плейбука ?
  • https://t.me/clickhouse_ru
    @kmarenov ↶ Reply to #23587 #23589 07:31 PM, 21 Aug 2017
    да
  • https://t.me/clickhouse_ru
    @freeseacher #23590 07:32 PM, 21 Aug 2017
    @ztlpn судя по сайту altinity это вы, да ?
  • @ztlpn #23591 07:34 PM, 21 Aug 2017
    Нет, не мы (Яндекс) 🙂 От altinity в чате есть @alexanderzaitsev
  • https://t.me/clickhouse_ru
    @freeseacher #23592 07:36 PM, 21 Aug 2017
    ой. я при быстром прочтении ника вас с ним спутал :)
  • https://t.me/clickhouse_ru
    @freeseacher #23593 07:37 PM, 21 Aug 2017
    извните :)
  • @ztlpn #23594 07:37 PM, 21 Aug 2017
    ничего страшного 🙂
  • @ztlpn ↶ Reply to #23589 #23595 07:44 PM, 21 Aug 2017
    Есть способ с помощью недокументированной функции runningAccumulate(). Сейчас постараюсь изобразить...
  • @emptyname #23596 07:47 PM, 21 Aug 2017
    SELECT date, runningAccumulate(countState()) FROM (SELECT date FROM Table WHERE date > '2017-08-10' ORDER BY date) GROUP BY date

    как-то так?)

    по идее даже подзапрос и ORDER не нужен. Не знаю, бывают ли ситуации, когда данные не отсортированы по date?
  • @ztlpn #23597 07:57 PM, 21 Aug 2017
    Почти верно. Единственное, для производительности лучше сначала GROUP BY, а потом ORDER BY, а у вас наоборот. ORDER BY всё-таки нужен, иначе блоки данных могут придти в произвольном порядке, и запрос отработает, но выдаст не совсем то, что нужно.
  • @emptyname #23598 07:58 PM, 21 Aug 2017
    а, ну логично, конечно )
  • @emptyname #23599 07:58 PM, 21 Aug 2017
    тут необязательно сортировать до группировки
  • @emptyname #23600 07:58 PM, 21 Aug 2017
    11 вечера 😐
  • @ztlpn #23601 08:01 PM, 21 Aug 2017
    это да 🙂
  • @ztlpn #23602 08:01 PM, 21 Aug 2017
    в итоге получается SELECT date, runningAccumulate(state) FROM (SELECT date, countState() AS state FROM table GROUP BY date ORDER BY date)
  • https://t.me/clickhouse_ru
    @kmarenov #23603 08:04 PM, 21 Aug 2017
    круто! спасибо огромное! а то весь мозг сломал себе уже)
  • @384782743 #23604 09:32 PM, 21 Aug 2017
    Joined.
  • 22 August 2017 (167 messages)
  • https://t.me/clickhouse_ru
    @MakhmutovDev #23605 05:18 AM, 22 Aug 2017
    в CH можно вычислить моду?
  • https://t.me/clickhouse_ru
    @alek_si #23606 06:38 AM, 22 Aug 2017
    Привет. Где можно больше прочитать про сжатие данных в ClickHouse? Например, у меня есть колонка, в которой храниться unix timestamp в миллисекундах, при вставке значение монотонно увеличивается. Может ли ClickHouse его эффективно сжать? Как?
  • @vstakhov #23607 06:40 AM, 22 Aug 2017
    любой алгоритм компрессии может
  • @vstakhov #23608 06:40 AM, 22 Aug 2017
    за счет сжатия повторяющихся частей
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #23605 #23609 06:42 AM, 22 Aug 2017
    С помощью GROUP BY + ORDER BY её можно вычислить везде
  • https://t.me/clickhouse_ru
    @MakhmutovDev #23610 06:43 AM, 22 Aug 2017
    @kshvakov понятно, думал вдруг есть более интереснее решение
  • https://t.me/clickhouse_ru
    @alek_si #23611 06:44 AM, 22 Aug 2017
    Это понятно. Вопросы в другом.
    1. Как узнать что он применяется? Как это увидеть? Как узнать степень сжатия?
    2. Есть ли возможность указать специфический алгоритм? "Любой алгоритм компрессии" будет не так эффективен в этом случае, как специфический на delta encoding.
  • @vstakhov #23612 06:48 AM, 22 Aug 2017
    компрессия указывается в конфиге zstd за счет FSE сожмет не особо хуже всех этих поделок с delta encoding, а гемора будет намного меньше кмк
  • https://t.me/clickhouse_ru
    @alek_si #23613 06:54 AM, 22 Aug 2017
    http://www.vldb.org/pvldb/vol8/p1816-teller.pdf
    Эта "поделка" от Facebook'а (авторов zstd, к слову) сжимает timestamp'ы гораздо лучше, и без "гемора".
  • @vstakhov #23614 06:57 AM, 22 Aug 2017
    я думал, речь идет о собственном выборе более удобной точки отсчета
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #23613 #23615 06:57 AM, 22 Aug 2017
    Ты про гориллу?
  • https://t.me/clickhouse_ru
    @alek_si #23616 06:58 AM, 22 Aug 2017
    да, это про неё пейпер
  • @vstakhov #23617 06:58 AM, 22 Aug 2017
    ну и Facebook - это не авторы zstd, а примазавшиеся
  • https://t.me/clickhouse_ru
    @Civiloid #23618 06:59 AM, 22 Aug 2017
    Да, есть даже простые реализации на го
  • https://t.me/clickhouse_ru
    @Civiloid #23619 06:59 AM, 22 Aug 2017
    Которые наверное не сложно на плюсы переписать
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #23612 #23620 06:59 AM, 22 Aug 2017
    В 3 раза хуже
  • @vstakhov #23621 06:59 AM, 22 Aug 2017
    писал zstd бешеный француз Yan Collet (который до этого написал lz4)
  • https://t.me/clickhouse_ru
    @Civiloid #23622 06:59 AM, 22 Aug 2017
    dgryski/go-tsz

    Time series compression algorithm from Facebook's Gorilla paper - dgryski/go-tsz

  • https://t.me/clickhouse_ru
    @alek_si ↶ Reply to #23617 #23623 07:01 AM, 22 Aug 2017
    https://github.com/facebook/zstd – основной коммитер и есть Ян. По всем внешним признакам, это Facebook
    GitHub - facebook/zstd: Zstandard - Fast real-time compression algorithm

    Zstandard - Fast real-time compression algorithm. Contribute to facebook/zstd development by creating an account on GitHub.

  • @vstakhov #23624 07:02 AM, 22 Aug 2017
    он написал zstd до прихода в фейсбук. я zstd еще тогда начинал использовать в своем проекте
  • https://t.me/clickhouse_ru
    @Civiloid #23625 07:02 AM, 22 Aug 2017
    Короче достаточно сильно хочется разную компрессию по столбцам и для чисел вот реализацию гориллы
  • @vstakhov #23626 07:02 AM, 22 Aug 2017
    так она же не для чисел, а именно для монотонно возрастающих таймстампов
  • https://t.me/clickhouse_ru
    @alek_si #23627 07:03 AM, 22 Aug 2017
    У меня именно так
  • @vstakhov #23628 07:03 AM, 22 Aug 2017
    не уверен, что ей не сплохеет, если таймстамп ВНЕЗАПНО уменьшится по сравнению с текущим (это надо статью внимательно читать)
  • https://t.me/clickhouse_ru
    @alek_si #23629 07:04 AM, 22 Aug 2017
    Сжатие пострадает, но данные не поломаются
  • https://t.me/clickhouse_ru
    @alek_si #23630 07:07 AM, 22 Aug 2017
    Ну и сжимать-то можно (и, наверное, нужно) позже, при слиянии и сортировке
  • https://t.me/clickhouse_ru
    @alek_si #23631 07:19 AM, 22 Aug 2017
    > Как узнать что он применяется? Как это увидеть? Как узнать степень сжатия?

    Вот этот вопрос остался. Я посмотрел все метрики, но как посчитать текущую степень сжатия таблицы или куска так и не понял
  • @Nvarchar495 #23632 07:43 AM, 22 Aug 2017
    Доброе утро! Сколько должно быть в среднем блоков в фоне слияния
  • @Nvarchar495 #23633 07:43 AM, 22 Aug 2017
    у меня 74 это нормально?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #23628 #23634 08:00 AM, 22 Aug 2017
    Сжатие будет деградировать, в худшем случаи вроде даже оверхед будет некоторый
  • https://t.me/clickhouse_ru
    @Civiloid #23635 08:01 AM, 22 Aug 2017
    я б посоветовал почитать реализацию на Го, она маленькая, простая
  • https://t.me/clickhouse_ru
    @Civiloid #23636 08:01 AM, 22 Aug 2017
    и работает
  • https://t.me/clickhouse_ru
    @Civiloid #23637 08:01 AM, 22 Aug 2017
    оно кстати работает и для float64 и для пар uint64/float64, uint32/float64
  • https://t.me/clickhouse_ru
    @Civiloid #23638 08:02 AM, 22 Aug 2017
    для малых изменений оно просто позволяет писать несколько бит на точку
  • @pookieShmukie #23639 08:09 AM, 22 Aug 2017
    Ребят, по поводу replacing merge tree вопрос. Если делать апдейт по одной строке, то я так полагаю эта операция будет крайне дешевая для КХ т.к. фактически партиция в которой строка лежит не меняется?
  • @pookieShmukie #23640 08:09 AM, 22 Aug 2017
    Просто мне потребуется раз в 10 минут обновлять некоторое количество строк. Инсерты будут делаться по одной строке.
  • https://t.me/clickhouse_ru
    Делать инсерт по одной строке крайне нерекомендуется. Минимум по 1к
  • Речь идет не о MergeTree, а именно о ReplacingMergeTree? Или разницы нет? Т.е. даже на апдейт по хорошему собирать например 1к строк и закидывать?
  • @pookieShmukie #23643 08:19 AM, 22 Aug 2017
    Просто не факт, что у меня будет такой поток данных на апдейт, я при всем желании больше 1к строк не выжму )
  • @pookieShmukie #23644 08:23 AM, 22 Aug 2017
    Да и строк у меня там будет не очень много
  • https://t.me/clickhouse_ru
    Так это же одно семейство движков. А по поводу вставки по одной строке - пробуйте, экспериментируйте
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #23642 #23646 08:28 AM, 22 Aug 2017
    чем больше батч тем проще жить базе