• 16 July 2021 (144 messages)
  • спасибо за ссылку)
  • https://t.me/clickhouse_ru
    @SuppieRK #226897 03:33 PM, 16 Jul 2021
    Господа, всем доброй пятницы. Небольшой новичковский вопрос: как получить значения записи, выбранной после GROUP BY запросом типа SELECT id, any(value), max(timestamp) FROM x GROUP BY id? Думаю про argMax(value, timestamp), но не уверен.
  • https://t.me/clickhouse_ru
    @dima_cepco #226898 04:22 PM, 16 Jul 2021
    Пытаюсь установить кликхаус на Мак на м1
    через докер

    выдает ошибку:
    docker run -d --name some-clickhouse-server -p 8123:8123 --ulimit nofile=262144:262144 yandex/clickhouse-server
    WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
    35cb9f051855178ef8ff1e9a3860874802e6a932f28b962209c9d38e011454c9

    кто-нибудь сталкивался? как решить?
  • @helloworld2024 #226899 04:33 PM, 16 Jul 2021
    Всем привет, не подскажете, когда я смотрю на колонку query_duration_ms из system.query_log, она включает время на вьюхи?
  • @VEgoshin #226901 04:43 PM, 16 Jul 2021
    Привет!
    Подскажите, пожалуйста, можно ли вставлять в БД, чтобы значение data при вставке выполнялось с функцией base64Decode(data)

    zcat data.json.gz | clickhouse-client --query="INSERT INTO data.table FORMAT JSONEachRow" --input_format_skip_unknown_fields=1

    {data: 'Base64Encoded string', id:1, source:'website'},
    {data: 'Base64Encoded string', id:2, source:'website'},
    {data: 'Base64Encoded string', id:3, source:'website'},
    {data: 'Base64Encoded string', id:4, source:'website'}
  • https://t.me/clickhouse_ru
    input | ClickHouse Documentation

    input input(structure) - table function that allows effectively convert and insert data sent to the server with given st

  • спасибо!
  • https://t.me/clickhouse_ru
    insert и materialized view? да
  • https://t.me/clickhouse_ru
  • да, именно, пытаюсь понять не тормозит ли mv при вставках, там subquery внутри
  • https://t.me/clickhouse_ru
    @dshishkin77 #226907 06:35 PM, 16 Jul 2021
    Коллеги, добрый день. Какое сжатие используется при экспорте данных в parquet подобным образом?
    clickhouse-client --query="SELECT * FROM {some_table} FORMAT Parquet" > {some_file.pq}

    Можно ли задавать способ сжатия?
  • https://t.me/clickhouse_ru
    1. SNAPPY
    2. нет
  • https://t.me/clickhouse_ru
    Спасибо!👍
  • @1803285152 #226910 06:54 PM, 16 Jul 2021
    Подскажите как из Tuple взять первое значение?
  • https://t.me/clickhouse_ru
    tpl.1
  • спасибо
  • @VEgoshin #226913 07:01 PM, 16 Jul 2021
    У меня, наверное, глупый вопрос, но всё же. У меня есть мультистроковая дата до 200кб на пару млрд записей. Стоит ли использовать для полнотекстового поиска Clickhouse? или смотреть в строну elastic/solr?
  • https://t.me/clickhouse_ru
    CH использовать стоит если вам надо писать пару млрд. в день и кластер из 10ти elastic не справляется на запись, и искать вы собираетесь редко.
    У CH нет полнотекстового поиска (индексов) поэтому практически КХ будет делать фулскан, его успешно используют вместо elastic если у вас например 5 тыс. серверов и надо писать их логи и очень редко искать, причем искать зная период поиска, а в эластик просто невозможно засунуть такой поток.
  • https://t.me/clickhouse_ru
    @dphil ↶ Reply to #226913 #226915 07:31 PM, 16 Jul 2021
    А тебе нужен полнотекстовый поиск или поиск по подстроке?
  • https://t.me/clickhouse_ru
    @bralbral #226916 07:34 PM, 16 Jul 2021
    Добрый вечер. Использую последний стабильный релиз от алтинити в докере. Проблема "Note for Docker users: outbound SSL connections did not work in ClickHouse docker image due to missing certificates. The issue has been fixed in 19.16.19.85, 20.1.12, 20.3.9 and any later releases" решена? В логах кафки выдает Failed authentication with /172.25.0.1 (SSL handshake failed) (org.apache.kafka.common.network.Selector). В тоже время использую python-confluent-kafka ( где под капотом та же librdkafka, соответственно настройки теже) подключение успешно.
    В логах кликхауса : [rdk:ERROR] [thrd:192.168.0.104:29092/bootstrap]: 1/1 brokers are down
    UPD:
    Не было прав на сертификаты
  • https://t.me/clickhouse_ru
    @dphil ↶ Reply to #226913 #226917 07:34 PM, 16 Jul 2021
    Общий размер в 100TB исходных данных? Боюсь, тут решения из коробки уже не очень подойдут, нужно смотреть на специфику задач, может на CH свой индекс строить (про это был доклад, насколько помню).
  • нет, их не так много на самом деле. Там просто исходный код страниц.
  • полнотекстовый желательно
  • мне надо один раз записать и потом постоянно читать)
  • https://t.me/clickhouse_ru
    @dphil ↶ Reply to #226920 #226922 07:37 PM, 16 Jul 2021
    Тогда лучше не CH, там ни стемминга, ни флексий, ни прочих фишек полнотекста нет. Так что elastic или сфинкс
  • @VEgoshin #226923 07:38 PM, 16 Jul 2021
    А есть коэффициенты какие-то, чтобы спрогнозировать как раздуется индекс он N гигабайт?
  • https://t.me/clickhouse_ru
    Э, коэффициенты? Никаких, ручками самому провести эксперимент по своим данным, но с @dphil соглашусь насчет полнотекста, CH не в вашем кейсе.
  • https://t.me/clickhouse_ru
    @dphil ↶ Reply to #226923 #226925 07:41 PM, 16 Jul 2021
    какой индекс?
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226807 #226926 08:32 PM, 16 Jul 2021
    ##
    Не рабоатает условие host_regexp по фильтрации по хосту источника.
    ##

    Подключился, ни одного PTR запроса не наблюдаю, только A
  • https://t.me/clickhouse_ru
    смею предположить, что никто не понял, чего вы хотите. any(value), max(timestamp) даст значения, вполне вероятно из разных строк. И с этой парой одновременно может не оказаться ни одной строки. Возможно, вам нужно argMax((value, timestamp), timestamp). Или в каких-то версиях КХ работает просто argMax((value, timestamp)). Но я не уверен, что вы хотите именно это получить
  • https://t.me/clickhouse_ru
    Спасибо, справился через argMax(value, timestamp) с надеждой что CH не будет сильно тормозить если много полей будут использовать эту функцию
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226926 #226929 09:54 PM, 16 Jul 2021
    Какие могут быть причины?

    - В логах про dns (loglevel=trace) ничего нет
    - PTR запросов нет
    - Ззапись host_regexp имеется в конфигах....
  • https://t.me/clickhouse_ru
    что значит много полей?
    если нужно вытаскивать не только value, но и value_1, ..., то делайте argMax((value, value_1, ...), timestamp) as _array
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Use case: агрегация по логам системы, хотим вытаскивать поля последних метрик конкретных сервисов. Спасибо за предложение, обязательно попробую
  • https://t.me/clickhouse_ru
    Спасибо, возьму на вооружение!
  • 17 July 2021 (63 messages)
  • https://t.me/clickhouse_ru
    внутри clickhouse pod
    grep -r host_regexp /etc/clickhouse-server/config.d/

    что показывает?
  • @pp31415 #226937 03:51 AM, 17 Jul 2021
    Здравствуйте!

    Есть ли какие-то ограничения на join по materialized column? Или это баг?

    Ошибка:
    Code: 47, e.displayText() = DB::Exception: Missing columns: 'mat_id' while processing query: 'SELECT `--a1.id` AS `a1.id`, count() FROM (SELECT a1.id AS `--a1.id`, b1.id AS `--b1.id` FROM a AS a1 LEFT JOIN b AS b1 ON `--a1.id` = `--b1.id`) AS `--.s` ALL LEFT JOIN c AS c1 ON `--a1.id` = mat_id GROUP BY `--a1.id`, `--b1.id`, id', required columns: '--a1.id' 'mat_id' '--b1.id' 'id', source columns: '--b1.id' '--a1.id', joined columns: 'id' 'update_time' (version 20.12.4.5 (official build))

    Env:

    create table a(id Int64, update_time DateTime) engine ReplacingMergeTree(update_time) order by id;
    create table b(id Int64, update_time DateTime) engine ReplacingMergeTree(update_time) order by id;
    create table c(id Int64, update_time DateTime) engine ReplacingMergeTree(update_time) order by id;

    alter table c add column mat_id Int64 materialized id;

    select a1.id, count()
    from a a1
    left join b as b1 on a1.id = b1.id
    left join c as c1 on a1.id = c1.mat_id
    group by a1.id, b1.id, c1.id;
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226934 #226939 06:47 AM, 17 Jul 2021
    ничего, пусто
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226934 #226940 06:48 AM, 17 Jul 2021
    а если более глобально, то вот
    grep -r host_regexp /etc/clickhouse-server/

    chop-generated-users.xml: <host_regexp>noname</host_regexp>

    chop-generated-users.xml: <host_regexp></host_regexp>
  • @VEgoshin #226944 10:44 AM, 17 Jul 2021
    Вчера запустил OPTIMIZE TABLE
    Консоль повисла. Рестартанул сервис и теперь при локальном подключении консоль висит.
    Если с внешнего хоста ходить, то запросы выполняются.
    Почему консоль может висеть? В логах ошибок пусто.
  • https://t.me/clickhouse_ru
    @propositive #226945 10:46 AM, 17 Jul 2021
    Интересно можно ли в такой ситуации подключиться к процессу дебагером и посмотреть стэк
    Или просто в логи посмотреть
  • https://t.me/clickhouse_ru
    А как выглядит вывод консоли при входе с внешнего хоста?
  • https://t.me/clickhouse_ru
    @propositive #226947 10:48 AM, 17 Jul 2021
    Разные версии clickhouse client?
  • я из Datagrip дёргаю. Но если делать так то тоже работает. Почему-то навернулась интерактивность.
    ClickHouse server version 21.6.6.51 (official build).
    ClickHouse client version 21.6.6.51 (official build).
  • https://t.me/clickhouse_ru
    @propositive #226949 11:00 AM, 17 Jul 2021
    а datagrip ходит по native протоколу :9000 или через ODBC :8123 :8443?
  • @VEgoshin #226950 11:01 AM, 17 Jul 2021
    а вот и проблемка. В /root/.clickhouse-client-history 25228238 строк
  • @VEgoshin #226951 11:02 AM, 17 Jul 2021
    если удалить, то всё становится хорошо
  • https://t.me/clickhouse_ru
    @propositive #226952 11:02 AM, 17 Jul 2021
    лол, то есть клиенту при запуске нужно было какое-то время чтобы считать этот файл? 😄
  • @VEgoshin #226953 11:02 AM, 17 Jul 2021
    ага)
  • https://t.me/clickhouse_ru
    @propositive #226954 11:02 AM, 17 Jul 2021
    класс, люблю такое)
  • @VEgoshin #226955 11:03 AM, 17 Jul 2021
    видимо очень долгое
  • @VEgoshin #226956 11:09 AM, 17 Jul 2021
    /root/.clickhouse-client-history.lock и вот это ещё нужно удалить
  • https://t.me/clickhouse_ru
    @propositive #226957 11:38 AM, 17 Jul 2021
    а может удаления лока было достаточно?
  • @VEgoshin #226958 11:51 AM, 17 Jul 2021
    судя по strace он сначала вычитывает history, на этом и была остановка
  • вот здесь
  • @VEgoshin #226960 11:53 AM, 17 Jul 2021
    другой вопрос, как у меня столько в хистори лог нападало) там в основном была мусорная дата в виде ### ##exit
  • https://t.me/clickhouse_ru
    @propositive #226961 11:54 AM, 17 Jul 2021
    я подумал что может там какие-то огромные запросы
  • https://t.me/clickhouse_ru
    @propositive #226962 11:55 AM, 17 Jul 2021
    where some_id in (1,2,3,4,5,.... 9999999)
  • @VEgoshin #226963 12:00 PM, 17 Jul 2021
    Перед тем как запустить optimize table всё работало. Что-то ночью произошло и насыпало в хистори лог. Пока это тестовая БД и пользуюсь ей только я. Исключаем чужие кривые руки)
  • https://t.me/clickhouse_ru
    @propositive #226965 02:23 PM, 17 Jul 2021
    https://youtu.be/6IwLWEx_mg4?t=1677
    Вот тут господин докладчик утверждает, что ReplacingMergeTree не работает 😱
    Может кто-то прокоментировать?
  • https://t.me/clickhouse_ru
    Послушал первые две минуты. Докладчик жалуется на дубликаты при выборке по "первичному ключу". Это всё вообще-то в документации прямым текстом описано:

    Merging occurs in the background at an unknown time, so you can’t plan for it. Some of the data may remain unprocessed.

    Нужно или FINAL, или агрегацию использовать при выборке.
  • https://t.me/clickhouse_ru
    @propositive #226967 02:49 PM, 17 Jul 2021
    А теперь понял. Я не распарсил что означало "по первичному ключу". Теперь стало ясно что другими словами это означает без агрегации.
  • https://t.me/clickhouse_ru
    Можно ли в свою очередь пожаловаться, что люди разучились понимать документацию?
  • https://t.me/clickhouse_ru
    @propositive #226969 02:56 PM, 17 Jul 2021
    Во все времена и поколения кажется было так 😄
  • https://t.me/clickhouse_ru
    @propositive #226970 02:56 PM, 17 Jul 2021
    Я чего-то даже не подумал про юзкейс, когда из CH можно читать без агрегации.
  • https://t.me/clickhouse_ru
    @unamedrus #226971 02:57 PM, 17 Jul 2021
    Ну например, когда тебе достаточно проверить тот факт, что строка с таким id заехала в таблицу
  • https://t.me/clickhouse_ru
    @VASergeev #226972 03:04 PM, 17 Jul 2021
    Добрый день, появилась потребность хранить в ch относительно большие строки (10-20 слов) они могут быть достаточно уникальны.
    Вопрос к выборке, если мне надо достать данные по 1 такой строке среди множества строк. Есть ли смысл рядом хранить колонку с хешом строки и в запросе делать where hash and string?

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

    Строка | количество чего-то
    А | 3
    Б | 7
    А | 4
    В | 10

    Я хочу получить на выходе:

    А | 7

    Тогда по простому мой запрос:

    Select name, sum(count)
    From table
    Where name = 'A'
    Group by name

    Так вот, есть ли смысл добавлять колонку хеша, отбирать (where hash & name) и группировать сначала по ней, потом по самой строке. Ускорит ли это обработку?

    Мысль такая пришла по аналогии с хешмапами/хеш таблицами
  • https://t.me/clickhouse_ru
    Идея здравая, но в лоб сработает если ищешь по полному совпадению
  • https://t.me/clickhouse_ru
    @VASergeev #226974 03:07 PM, 17 Jul 2021
    Ну да поиск нужен по полному совпадению
  • https://t.me/clickhouse_ru
    @unamedrus #226975 03:07 PM, 17 Jul 2021
    Можно в ORDER BY запихать хеш а ещё использовать PREWHERE
  • https://t.me/clickhouse_ru
    @unamedrus #226976 03:07 PM, 17 Jul 2021
    Другой вопрос, что возможно есть более подходящие другие бд для такого
  • https://t.me/clickhouse_ru
    @VASergeev #226977 03:07 PM, 17 Jul 2021
    Не, там еще будет кучка условий типа даты и id владельца, обычно все сортирую по датам
  • https://t.me/clickhouse_ru
    Не, тут набор данных как раз под ch, т.е. сейчас по пол ляма в день, дальше больше)
  • https://t.me/clickhouse_ru
    @unamedrus #226979 03:09 PM, 17 Jul 2021
    Размер данных это ещё не значит что кх
  • https://t.me/clickhouse_ru
    @unamedrus #226980 03:09 PM, 17 Jul 2021
    Допустим Кассандра или сцилла key value
  • https://t.me/clickhouse_ru
    @VASergeev #226981 03:11 PM, 17 Jul 2021
    Не, я для примера сильно урезал запрос, чтобы лишним внимание не отвлекать, кх нас полностью устраивает, а это для новой фичи, интерес был именно к использованию хеша рядом с полной строкой, выиграю ли что-то от такого или не тратить время
  • https://t.me/clickhouse_ru
    @propositive #226982 03:12 PM, 17 Jul 2021
    типа что лучше строки сравнивать или инты (хеши)?
  • https://t.me/clickhouse_ru
    @propositive #226983 03:13 PM, 17 Jul 2021
    видимо не только сравнение where, но и сортировка order by и группировка group by
  • https://t.me/clickhouse_ru
    @VASergeev #226984 03:14 PM, 17 Jul 2021
    Не, отработает ли хеш, раньше полного сравнения со строки.

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

    Второе бесполезно, т.к. хеш будет верный если строка совпала
  • https://t.me/clickhouse_ru
    @VASergeev #226985 03:18 PM, 17 Jul 2021
    Т.е. в голове план такой, есть таблица в ней дата события, текст события и хеш текста, ну и ещё куча атрибутов, которые не сильно важны сейчас.

    Хочу чтобы кх сначала отобрал по датам, потом по хешу и потом только сравнивал строки, чтобы убрать коллизии хеша, дальше ещё кучка условий.

    Сделает ли он так или может пойти своим путём и сравнить даты, потом строки и потом хеш?
  • https://t.me/clickhouse_ru
    @VASergeev #226986 03:18 PM, 17 Jul 2021
    Просто тот же оракл может менять план запроса, например из-за индексов и не всегда в лучшую сторону
  • https://t.me/clickhouse_ru
    Может, используйте PREWHERE
  • https://t.me/clickhouse_ru
    Получается дата и хеш в prewhere остальное в where?
  • https://t.me/clickhouse_ru
    @unamedrus #226989 03:19 PM, 17 Jul 2021
    Да
  • https://t.me/clickhouse_ru
    @VASergeev #226990 03:20 PM, 17 Jul 2021
    Огонь, спасибо)
  • https://t.me/clickhouse_ru
    @propositive #226991 03:24 PM, 17 Jul 2021
    Я нуб в КХ. Хочу разобраться как работает репликация и шардинг.
    Думаю атаковать с трех векторов: официальная документация, ютуб видео / статьи, руками поднять кластер. Норм подход?
  • https://t.me/clickhouse_ru
    Нормально, можно ещё видео посмотреть на нашем канале altinity YouTube
  • https://t.me/clickhouse_ru
    как раз смотрю https://www.youtube.com/watch?v=4DlQ6sVKQaA (Introduction to the Mysteries of ClickHouse Replication)
  • https://t.me/clickhouse_ru
    @unamedrus #226994 03:26 PM, 17 Jul 2021
    Оно
  • https://t.me/clickhouse_ru
    @propositive #226995 03:27 PM, 17 Jul 2021
    Найти документацию нету проблем. Ютуб видео и статьи тоже гуглядтся на раз.

    Можете подсказать как практическую часть упростить?
    Может быть есть dockercompose какие-то чтобы локально поднять, поменять что-то, посмотреть что будет
    Или что-то что поможет на AWS раскатать тестовое окружение
  • https://t.me/clickhouse_ru
    падними руками кластер 👍🏻
  • https://t.me/clickhouse_ru
    Можно посмотреть

    docs.altinity.com
    kb.altinity.com

    Либо тесты в основной репе кликхауса, там есть docker compose скрмпты
  • https://t.me/clickhouse_ru
    @propositive #226998 03:32 PM, 17 Jul 2021
    Спасибо! О, altinity доки я еще не штудировал
  • https://t.me/clickhouse_ru
    @propositive #226999 03:36 PM, 17 Jul 2021
    А где-нибудь есть инфа по тому как обычно КХ падает и как это чинить? 😄
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226939 #227000 04:05 PM, 17 Jul 2021
    Есть ещё идеи, что можно проверить для того ,чтобы включить работу regexp_host ?
  • https://t.me/clickhouse_ru
    В kb.altinity.com стараемся написать самые типичные случаи
  • https://t.me/clickhouse_ru
    @propositive #227003 05:26 PM, 17 Jul 2021
    ❤️❤️❤️
  • https://t.me/clickhouse_ru
    Можно посмотреть preprocessed конфиг файлы, что там кликхаус сделал.
    /var/lib/clickhouse

    Можно сделать через кликхаус клиент :
    Set send_logs_level='trace'
    SYSTEM RELOAD CONFIG

    И смотреть на ошибки при реалоаде
  • 18 July 2021 (21 messages)
  • https://t.me/clickhouse_ru
    Попробуйте ещё skip-index с блум фильтром. У вас сравнение на равенство, вроде как раз подходящий сценарий. И не надо будет предварительно хэш считать и хранить. Он в блум фильтре рассчитывается.
  • https://t.me/clickhouse_ru
    кстати, а как правильно выбрать параметры этого фильтра? там вроде гранулярность была и еще что-то
  • https://t.me/clickhouse_ru
    @VASergeev #227014 06:27 PM, 18 Jul 2021
    Судя по статье https://kb.altinity.com/altinity-kb-queries-and-syntax/skip-indexes/skip-index-bloom_filter-for-array-column
    Гранулярность особо не влияет
    Skip index bloom_filter Example

    Example: skip index bloom_filter & array column

  • https://t.me/clickhouse_ru
    Спасибо, а кх тоже пишет в explain plan порядок выборки?
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #227004 #227016 06:32 PM, 18 Jul 2021
    > Есть ещё идеи, что можно проверить для того ,чтобы включить работу regexp_host ?

    Ошибок не вижу
    SYSTEM RELOAD CONFIG

    [chi-clickhouse-default-0-0-0] 2021.07.18 18:30:37.566914 [ 90 ] {4fe3e276-2fdc-4bba-8d68-edbb47cb4ec9} <Debug> executeQuery: (from 127.0.0.1:56190) SYSTEM RELOAD CONFIG
    [chi-clickhouse-default-0-0-0] 2021.07.18 18:30:37.567256 [ 90 ] {4fe3e276-2fdc-4bba-8d68-edbb47cb4ec9} <Trace> ContextAccess (default): Access granted: SYSTEM RELOAD CONFIG ON *.*
    [chi-clickhouse-default-0-0-0] 2021.07.18 18:30:37.571728 [ 90 ] {4fe3e276-2fdc-4bba-8d68-edbb47cb4ec9} <Debug> ConfigReloader: Loading config '/etc/clickhouse-server/config.xml'
    [chi-clickhouse-default-0-0-0] 2021.07.18 18:30:37.580815 [ 90 ] {4fe3e276-2fdc-4bba-8d68-edbb47cb4ec9} <Debug> ConfigReloader: Loading config '/etc/clickhouse-server/users.xml'
    [chi-clickhouse-default-0-0-0] 2021.07.18 18:30:37.583646 [ 90 ] {4fe3e276-2fdc-4bba-8d68-edbb47cb4ec9} <Debug> MemoryTracker: Peak memory usage (for query): 7.08 MiB.
    Ok.

    0 rows in set. Elapsed: 0.019 sec.
  • https://t.me/clickhouse_ru
    Скорее в set send_logs_level='trace'
  • https://t.me/clickhouse_ru
    @VASergeev #227018 06:33 PM, 18 Jul 2021
    Спасибо, буду пробовать
  • https://t.me/clickhouse_ru
    А пример конфига юзерп можно
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #227019 #227020 06:34 PM, 18 Jul 2021
    <yandex>
    <users>
    <adclick>
    <networks>
    <host_regexp>noname</host_regexp>
    <ip>127.0.0.1</ip>
    <ip>0.0.0.0/0</ip>
    </networks>
    <password_sha256_hex>ebf22d8bfa40cc5ae972270a06934fe1056ea7227859ad7d39c6fe9c497db70f</password_sha256_hex>
    <profile>default</profile>
    <quota>default</quota>
    </adclick>
    <default>
    <networks>
    <host_regexp></host_regexp>
    <ip>127.0.0.1</ip>
    <ip>0.0.0.0/0</ip>
    </networks>
    <profile>default</profile>
    <quota>default</quota>
    </default>
    </users>
    </yandex>
  • https://t.me/clickhouse_ru
    Хм, а что будет если убрать 0.0.0.0/0
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #227019 #227022 06:36 PM, 18 Jul 2021
    https://t.me/clickhouse_ru/226926
    ПО истории ответов можно посмотреть, что уже проделано. для дебага ...
    Kirill Kazakov in ClickHouse не тормозит

    ## Не рабоатает условие host_regexp по фильтрации по хосту источника. ## Подключился, ни одного PTR запроса не наблюдаю, только A

  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #227021 #227023 06:37 PM, 18 Jul 2021
    ограничение по ip работатает...
    Что именно нужно проверить, когда я уберу 0.0.0.0/0 ?
  • https://t.me/clickhouse_ru
    Смутное подозрение что оно Пермисивно открывает все айпи
  • https://t.me/clickhouse_ru
    @unamedrus #227025 06:46 PM, 18 Jul 2021
    А тебе нужно только определеннве которые удовлетворяют маске
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #227025 #227026 06:47 PM, 18 Jul 2021
    т.е. убрать вообще настройку с ограничениями по ip ?
  • https://t.me/clickhouse_ru
    @unamedrus #227027 06:47 PM, 18 Jul 2021
    Да
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #227027 #227028 06:48 PM, 18 Jul 2021
    Сейчас попробую
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #227024 #227029 07:40 PM, 18 Jul 2021
    Вы были правы !!!
    Всю прошлую неделю мучался с этим вопросом !

    Эти моменты описаны в доке ?
  • https://t.me/clickhouse_ru
    @unamedrus #227030 07:40 PM, 18 Jul 2021
    Не знаю, надо смотреть
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @kk_dev #227032 07:41 PM, 18 Jul 2021
    2 чая этому господину
    Огормное спсибо !
  • 19 July 2021 (184 messages)
  • https://t.me/clickhouse_ru
    это не так работает
    если на пальцах

    в REDIS вы делаете счетчики и делаете INCR
    в ключ зашиваете ДАТА, статья и еще куча параметров
    а потом когда нужен отчет делаете SCAN чтобы через KEYS всю производительность не убить
    сгружаете в SQL

    а в clickhouse вы тупо пишете в CSV файл
    время, браузер, страна, и туева куча параметров вашего просмотра статьи
    одной строкой

    накопили 100 000 строк,
    слили в clickhouse

    а потом в clickhouse делаете SELECT event_date, uniq(user_id) FROM table GROUP BY country
    например

    плюсы \ минусы - REDIS быстрее делает INCR , и медленнее SCAN и сложнее добавлять столбцы с измерениями и мерами

    clickhouse
    надо буферизировать и обогащать данные перед вставкой отдельно (clickhouse-bulk вам в помощь)
    но хранятся сырые данные на диске с максимальной точностью
    и потом легче через ALTER TABLE добавить например новое поле (город)
  • https://t.me/clickhouse_ru
    это мое IMHO, но думаю что это не сильно далеко от правды

    основной кейс ClickHouse для чего он создавался изначально
    это Yandex Metrika \ App Metrika

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

    и дальше репорты в web интерфейсе для тысяч веб мастеров одновременно по counterId + GROUP BY считаются

    все остальное чем clickhouse оброс за это время, это в основном задачи на интеграции, оптимизации и новые возможности в SQL диалекте типа window functions и join

    если вам надо просто для конкретной статьи отдельно счетчик просмотров хранить
    то естественно вам REDIS самое оно

    просто эти данные потом анализировать нельзя
    то есть как пример вы не сможете динамику отдельной статьи посмотреть просмотров по часам среднее, сравнить выходные и будни и т.п. задачи =)
  • https://t.me/clickhouse_ru
    берите кликхаус, count считайте запросом. тогда обойдетесь без "ну мы и планировали кудато, как буфер пихать, потом забирать и сливать в sql по нужным колонкам."
  • https://t.me/clickhouse_ru
    Если клики нужны уники, то одним счётчиком в редисе уже не отделаться. А если ещё захочется отдельно глянуть клики по странам, ос и т.д., то придётся ещё и кучу други счётчиков добавлять. В этом случае проще в кликхаус сохранять. Можете json писать в редис в list, а потом раз в минуту доставать пачками по тысяче и вставлять в кликхаус.
    Я использую комбинированный способ. Счётчики в редисе и в фоне в бд их потом обновляю. А также хоаню сырые клики в кликхаусе.
  • https://t.me/clickhouse_ru
    @SuppieRK #227043 07:25 AM, 19 Jul 2021
    Господа, всем доброго понедельника.

    Продолжу свою цепочку вопросов :)

    Use case: писать поток событий и сразу кверить результат, чтобы посчитать аггрегат и разослать его в качестве уведомления (пишем кусками раз в четверть секунды)

    Структура: Buffer -> MT, MV прикручивали поверх Buffer.

    Сейчас у нас запрос с подзапросом (last point problem), встряли с тем что при добавлении MV страдает скорость вставки/чтения (запросы напрямую >100ms до 5М записей, запросы через MV начинают линейно замедляться с ростом количества записей).

    Вопрос: правильно ли в нашем случае использовать MV или всё-таки лучше остановиться на подзапросе?
  • https://t.me/clickhouse_ru
    @SuppieRK #227044 07:32 AM, 19 Jul 2021
    P.S. Ребята с Алтинити - ваш YouTube бомба.
  • https://t.me/clickhouse_ru
    что такое "подзапрос"? в каком месте он возникает?

    что такое "напрямую"? SELECT FROM buffer_table ?
    и что значит "last point problem" ?

    куда вставляет MV? в AggregatingMergeTree? отдельная таблица или Inner?
  • https://t.me/clickhouse_ru
    Подзапрос - FROM (SELECT)
    Используем его в запросе которым считаем аггрегат по последним состояниям сущностей

    "Напрямую" - делаем запрос к таблице, при условии отсутствия MV.
    "last point problem" - нам надо сначала выдрать последние состояния сущностей (сливаем всю цепочку состояний в CH) - потом посчитать результат.

    MV основан на AggregatingMT (планировали переехать на CollapsingMT), inner таблица
  • https://t.me/clickhouse_ru
    @BloodJazMan #227047 07:44 AM, 19 Jul 2021
    так, а "состояние" сущности это что?
    ну то есть у вас там хочется иметь UPDATE ... SET x = x + delta и UPDATE ... SET x = x - delta - и CollapsingMergeTree ?

    или у вас там SET x=new_value и ReplacingMergeTree + FINAL напрашивается?
  • https://t.me/clickhouse_ru
    Состояние сущности - условно "предмет положили в корзину"/"предмет достали из корзины" и т.д.

    CollapsingMT - сессия может включать несколько таких "корзин", по которым хотели бы получать последние состояния (в будущем, сейчас пока фокус на одной "корзине")
    ReplacingMT - пробовали, но воткнулись в такую же проблему со вставками + необходимость дёргать FINAL (он, конечно, распараллелен, но всё-таки замедляет выборку)
  • https://t.me/clickhouse_ru
    ну смотрите а у вас окно какое для подсчета аггрегата?
    почему вам важно постоянно аггрегаты считать и куда то отсылать? почему нельзя тупо на redis это сделать?

    clickhouse это система с near-realtime, а не realtime
  • https://t.me/clickhouse_ru
    Cardinality сущности не позволяет с Redis поработать
  • https://t.me/clickhouse_ru
    @SuppieRK #227052 08:03 AM, 19 Jul 2021
    Ну, как не позволяет - в любом инструменте можно сделать что хочется - вопрос в том сколько кода написать и насколько поддерживаемым он будет. Для Redis получится плохенько
  • @KevinMort #227053 08:33 AM, 19 Jul 2021
    Всем привет!
    кто-нибудь сталкивался с подобным?

    Transaction end error: code: 50, message: Unknown data type family: 2r
  • https://t.me/clickhouse_ru
    что-то непонятно что имеется ввиду под cardinality

    ну десятки миллионов ключей в redis хранить не проблема так то...
    главное памяти чтобы хватило...
    key lookup там довольно быстрый
  • https://t.me/clickhouse_ru
    контекста не хватает, что именно делаете
    какой запрос...
  • Уже разобрался, тупой косяк)
  • https://t.me/clickhouse_ru
    Речь про достаточно большую сущность саму по себе + аналитика + ключи + мы жёстко ограничены по памяти в Redis в районе около 1-4 Gb максимум
  • https://t.me/clickhouse_ru
    ну так и в clickhouse то вы тоже с таким ограничением можете легко не пролезть...

    если честно, ничего не понимаю из того что вы говорите ;)
    то сначала кардинальность (кол-во уникальных значений / на кол-во записей)
    то потом сразу про размер ;)
  • https://t.me/clickhouse_ru
    Под кардинальностью я понимаю количество колонок, не уникальных значений / кол-во записей.
  • https://t.me/clickhouse_ru
    ну так для redis то вообще можете в protobuf, mskpack, json по ID сущности бинарно хранить... и не париться

    в общем пока непонятно, collapsing merge tree + SELECT final раз в 10-15 минут
    вполне должен справляться

    но realtime в clickhouse Не бывает
  • https://t.me/clickhouse_ru
    @SuppieRK #227061 08:46 AM, 19 Jul 2021
    Понял, спасибо
  • https://t.me/clickhouse_ru
    @ivan_blohin #227063 09:42 AM, 19 Jul 2021
    Всем привет, подскажите, пожалуйста, насколько долгими могут мутации?
    Был выполнен запрос (мутация):

    alter table variants delete where sample_id = 1505;

    Из таблицы с мутациями вижу, что она крутится уже 24 минуты.
    select * from system.mutations;

    Хостим кх в облаке яндекса.

    Это нормально? Оно может и час и день выполняться?
  • https://t.me/clickhouse_ru
    В зависимости от объема данных, может и целый день работать

    Вы следите за тем, что бы system.mutation parts_to_do уменьшалось
  • https://t.me/clickhouse_ru
    @ivan_blohin #227065 09:47 AM, 19 Jul 2021
    Понял, спасибо
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #227066 09:51 AM, 19 Jul 2021
    Всем привет. Вроде был PR, где хотели встроить в MergeTree механизм батчинга insert-ов. Чтобы можно было вставлять не батчами
  • https://t.me/clickhouse_ru
    Asynchronous inserts mode support by abyss7 · Pull Request #20557 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @mikhailberg #227070 10:56 AM, 19 Jul 2021
    Здравтсвуйте!
    Подскажите как лучше сделать
    У меня есть поле возраст - инт
    Мне нужно найти колчиество пользователей по возрастным группам - 20-30, 30-40, etc
    Можно ли как-тот красиво это сделать кроме полотна ифов ?
    Спасиб
  • https://t.me/clickhouse_ru
    Group by age/10?
  • https://t.me/clickhouse_ru
    @VASergeev #227072 11:03 AM, 19 Jul 2021
    А в селекте наоборот умножить
  • https://t.me/clickhouse_ru
    нужно чуть более гибкое решение. в дейстивтельности там выборки рода 18-23, 24-31, etc
  • https://t.me/clickhouse_ru
    multiIf
    чуть менее большое полотно if
  • https://t.me/clickhouse_ru
    @mikhailberg #227075 11:04 AM, 19 Jul 2021
    ну и нужно вывести в селекте аля ’18-23’ as grоup_age
  • https://t.me/clickhouse_ru
    ну ладно)
  • https://t.me/clickhouse_ru
    @mikhailberg #227077 11:05 AM, 19 Jul 2021
    короче бакеты такие сделать
  • @fs_fs_fs_fs #227078 11:07 AM, 19 Jul 2021
    Всем привет.
    Возможно кто то сталкивался: Создал пользователя, дал права на select для всего и полные права на одну базу. Тут все работает.
    Но если сделать запрос на вьюху которая использует jdbc то получаю ошибку
    Not enough privileges. To execute this query it's necessary to have the grant jdbc() ON *.*
    И не могу понять какие права надо раздать пользователю
    GRANT jdbc() ON *.* TO user;
    GRANT jdbc ON *.* TO user;
    GRANT SOURCES ON *.* TO user;
    возвращает ошибку, мол неправильный синтаксис.
    КХ 20.3
    Заранее спасибо.
  • https://t.me/clickhouse_ru
    roundAge function
    Or

    countResample(0,5,1)(age, roundDown(age,[18,23,35,50]))
  • https://t.me/clickhouse_ru
    чето не могу поняь что делает countResample и три магических числа
  • https://t.me/clickhouse_ru
    @ilshat_siraz #227082 11:14 AM, 19 Jul 2021
    Добрый день) Нужен совет. Сейчас такой стэк. Laravel + mysql. Хотим mysql заменить на ClickHouse. Пишем маркетплейс. Mysql слишком медленный для нас. Так как много продуктов, от разных поставщиком, с разными характеристиками. Здравое ли решение использовать ClickHouse для маркет плейса?
  • https://t.me/clickhouse_ru
    @ilshat_siraz #227083 11:15 AM, 19 Jul 2021
    Очень много продуктов, очень много разной сортировки, по весу размеру и т.п.
  • https://t.me/clickhouse_ru
    MySQL слишком медленный для вас для чего?
    полностью MySQL заменить не получится

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

    MySQL слишком медленный в каком месте?
    может вы на Lavarel писать не умете и у вас 100 запросов к MySQL Там где можно обойтись одним?
  • https://t.me/clickhouse_ru
    очень много это сколько?
    что именно у вас тормозит?
    отрисовка списка продуктов?
  • https://t.me/clickhouse_ru
    start,end,increment

    countResample бьет по бакетам вашу агрегацию
    Тк вам нужно бить только по специальным границам приходится извращатся с roundDown

    SELECT countResample(0, 6, 1)(age, indexOf([0, 18, 23, 35, 50], roundDown(age, [0, 18, 23, 35, 50]))) AS x
    FROM
    (
    SELECT number AS age
    FROM numbers(100)
    )

    Query id: 507294bc-b76e-4e44-ad01-8aaa88eb763f

    ┌─x─────────────────┐
    │ [0,18,5,12,15,50] │
    └───────────────────┘
  • https://t.me/clickhouse_ru
    @unamedrus #227087 11:19 AM, 19 Jul 2021
    Вот правильный пример
  • https://t.me/clickhouse_ru
    Пример. Есть таблица категорий. У каждой категории есть свой список продуктов. Я например одним запросом выдергиваю из определенной категории все продукты, у которых размер > n, цена в диапазоне min < price < max, и еще какое нибудь условие. Такой запрос будет обрабатываться пару секунд.
  • https://t.me/clickhouse_ru
    а вы искали в чем причина медленного запроса в mysql?
  • https://t.me/clickhouse_ru
    @critskiy #227091 11:22 AM, 19 Jul 2021
    трейсили и чекали план выполнения запроса?
  • CH не acid, поэтому хранить транзакционные данные у вас не получится. стоит сначала попробовать решить проблемы мускула, а потом пробовать альтернативы. такое координальное прыганье на разные технологии не есть хорошо
  • https://t.me/clickhouse_ru
    вы знаете что такое EXPLAIN и b-tree индексы в MySQL?

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

    во второй должен быть индекс по category_id
    если у вас отношение 1:N
    если N:M отношение тогда третья таблица в коорой
    category_id, produc_id

    и JOIN с этой таблицей и индекс на size в таблице продуктов
  • https://t.me/clickhouse_ru
    у меня подобный запрос выполняется 0.1 секунду на двух миллионах товаров
    что я делаю не так?
  • https://t.me/clickhouse_ru
    @aveLestat #227095 11:25 AM, 19 Jul 2021
    Ребят привет, а как показать все схемы в базе данных? чет как-то не тривиально оказалось учитывая результаты гугления
  • https://t.me/clickhouse_ru
    вместо JOIN можно на два запроса разбить один product_id выбирает
    второй выбирает WHERE product_id IN () AND условия выборки
  • https://t.me/clickhouse_ru
    в кликхаусе нет понятие схем в базе данных
  • https://t.me/clickhouse_ru
    Да я это прекрасно понимаю) Я понимаю, что с помощью индексов, анализа я смогу очень сильно оптимизировать запросы. Я пока не стал этим заниматься. Просто я почитал про кликхоус, и мне стало интересно.
  • https://t.me/clickhouse_ru
    КХ не для той цели, которую вы описали в вопросе
  • https://t.me/clickhouse_ru
    @ilshat_siraz #227100 11:27 AM, 19 Jul 2021
    Просто проект только на начальном этапе, и хочется заложить правильную архитектуру. Использовать современные решение. Чем потом переписывать.
  • https://t.me/clickhouse_ru
    @ilshat_siraz #227101 11:28 AM, 19 Jul 2021
    Я по этому и пришел сюда за советом)
  • https://t.me/clickhouse_ru
    спасибо! 🤝
  • https://t.me/clickhouse_ru
    @ilshat_siraz #227103 11:28 AM, 19 Jul 2021
    Стоит, не стоит, для чего вообще.
  • https://t.me/clickhouse_ru
    А что вас побудило взять MySQL?
  • https://t.me/clickhouse_ru
    @critskiy #227105 11:29 AM, 19 Jul 2021
    Это точно база, которая подходит под ваши требования?
  • https://t.me/clickhouse_ru
    Ильшат, ок. давайте так, ВАМ РАНО в clickhouse
    давайте разберитесь с MySQL сначала
    научитесь с ним работать
    выжмите все из него
    а потом уже к нам =)

    clickhouse это не серебрянная пуля
    от применения которой у вас все сразу заработает..
  • select * from pg_catalog.pg_tables
  • https://t.me/clickhouse_ru
    это же вопрос про clickhouse был? или нет?
  • https://t.me/clickhouse_ru
    SELECT * FROM system.databases;

    SELECT * FROM system.tables;

    в clickhouse СХЕМ как в Postgres нет
  • https://t.me/clickhouse_ru
    Я пришел в проект, так было до меня)
  • https://t.me/clickhouse_ru
    Спасибо за ответ)
  • https://t.me/clickhouse_ru
    По этому мы сейчас изучаем и другие варианты)
  • https://t.me/clickhouse_ru
    крч соглашусь с @BloodJazMan , вам в КХ еще оч рано, разберитесь в причинах медленного запроса :)
  • https://t.me/clickhouse_ru
    А для чего тогда используют clickhouse? в каких проектах?)
  • https://t.me/clickhouse_ru
    @ilshat_siraz #227116 11:33 AM, 19 Jul 2021
    Хотел бы изучить, почитать)
  • https://t.me/clickhouse_ru
    Обзор | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    вам лучше идти в доки
  • https://t.me/clickhouse_ru
    @ilshat_siraz #227119 11:34 AM, 19 Jul 2021
    Понял, спасибо большое)
  • https://t.me/clickhouse_ru
    @ilshat_siraz #227120 11:34 AM, 19 Jul 2021
    Безмерно благодарен)
  • Черт))) думал кто то из наших спрашивает😂😂😂 в часах запутался, уже не глядя отвечаю🤦‍♂
  • @githubreleases_bot #227122 b o t 11:37 AM, 19 Jul 2021
    ClickHouse/ClickHouse tagged: v21.7.4.18-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.7.4.18-stable
    Release notes:
    v21.7.4.18-stable
    Release v21.7.4.18-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.7.4.18-stable

  • https://t.me/clickhouse_ru
    @Makasinov #227124 12:08 PM, 19 Jul 2021
    👋 в таблице system.events увидал строчку SlowRead, которая якобы говорит мне о том, что 55 запросов считывались из файла медленно. В связи с чем встал интерес о том, как бы профилировать запросы в query_log и понять какие были медленными, а какие нет? Ну кроме банальных elapsed_ms и memory_usage колонок на глазок. Что сам кх считает медленными?
  • https://t.me/clickhouse_ru
    @sc0rp10 #227125 12:08 PM, 19 Jul 2021
    господа, а нет ли известного бага (а лучше воркэраунда для него) с сообщением вроде DB::Exception: Cannot find column `notEquals(foo, '') in source stream`?
  • https://t.me/clickhouse_ru
    @sc0rp10 #227126 12:09 PM, 19 Jul 2021
    в запросе такой функции нет
  • https://t.me/clickhouse_ru
    @sc0rp10 #227127 12:09 PM, 19 Jul 2021
    21.7.3
  • https://t.me/clickhouse_ru
    != а такое есть?

    У вас Distributed таблица?
  • https://t.me/clickhouse_ru
    @sc0rp10 #227130 12:15 PM, 19 Jul 2021
    нет
  • https://t.me/clickhouse_ru
    да, нашел
  • https://t.me/clickhouse_ru
    @unamedrus #227132 12:15 PM, 19 Jul 2021
    В какой части запроса используется?
  • https://t.me/clickhouse_ru
    в query_log есть колонка с эвентами можно там посмотреть

    Либо в логах сделать grep по Slow read

    И найти id запроса
  • https://t.me/clickhouse_ru
    SELECT
    if(empty(s0.referrer_source), 'Direct / None', s0.referrer_source) AS name,
    any(s0.referrer),
    toUInt64(round(uniq(s0.user_id) * any(_sample_factor)))
    FROM sessions AS s0
    SAMPLE 10000000
    WHERE (s0.domain = 'foo.com') AND ((s0.timestamp >= '2021-07-18T21:00:00') AND (s0.start < '2021-07-19T21:00:00')) AND (s0.referrer_source != '')
    GROUP BY s0.referrer_source
    ORDER BY
    toUInt64(round(uniq(s0.user_id) * any(_sample_factor))) DESC,
    min(start) ASC
    LIMIT 0, 9
    FORMAT JSONCompact
  • https://t.me/clickhouse_ru
    @sc0rp10 #227135 12:18 PM, 19 Jul 2021
    запрос переписать нет возможности (3rd party софт)
  • https://t.me/clickhouse_ru
    видимо речь про колонку ProfileEvents.Names массив. Пасиб, пойду раскуривать эту тему
  • https://t.me/clickhouse_ru
    версия кх?

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

    SELECT
    if(empty(s0.referrer_source), 'Direct / None', s0.referrer_source) AS name,
    any(s0.referrer),
    toUInt64(round(uniq(s0.user_id) * any(_sample_factor)))
    FROM sessions AS s0
    SAMPLE 10000000
    WHERE (s0.domain = 'foo.com') AND ((s0.timestamp >= '2021-07-18T21:00:00') AND (s0.start < '2021-07-19T21:00:00')) AND (s0.referrer_source != '')
    GROUP BY s0.referrer_source
    ORDER BY
    toUInt64(round(uniq(s0.user_id) * any(_sample_factor))) DESC,
    min(start) ASC
    LIMIT 0, 9
    FORMAT JSONCompact
  • https://t.me/clickhouse_ru
    версия вот
  • https://t.me/clickhouse_ru
    то же и будет
  • https://t.me/clickhouse_ru
    @sc0rp10 #227140 12:21 PM, 19 Jul 2021
    Code: 8. DB::Exception: Received from localhost:9000. DB::Exception: Cannot find column notEquals(referrer_source, '') in source stream.
  • https://t.me/clickhouse_ru
    @sc0rp10 #227141 12:22 PM, 19 Jul 2021
    идем дальше. если убрать (s0.referrer_source != '')
  • https://t.me/clickhouse_ru
    @sc0rp10 #227142 12:22 PM, 19 Jul 2021
    то ругается на Cannot find column less(start, '2021-07-19T21:00:00') in source stream.
  • https://t.me/clickhouse_ru
    @sc0rp10 #227143 12:22 PM, 19 Jul 2021
    есть ли возможность как-то переиндексировать метаданные или что-то в этом роде? это новый инстанс КХ, склонированный со старого
  • https://t.me/clickhouse_ru
    @sc0rp10 #227144 12:23 PM, 19 Jul 2021
    возможно какая-то проблема в этом
  • https://t.me/clickhouse_ru
    @unamedrus #227145 12:25 PM, 19 Jul 2021
    SHOW CREATE TABLE sessions;

    на старом какая версия была?
  • https://t.me/clickhouse_ru
    20.10.2.20
  • https://t.me/clickhouse_ru
    @unamedrus #227147 12:26 PM, 19 Jul 2021
    Странная фигня, похоже на багу где то
  • https://t.me/clickhouse_ru
    @sc0rp10 #227148 12:26 PM, 19 Jul 2021
    CREATE TABLE sessions
    (
    `session_id` UInt64,
    `sign` Int8,
    `domain` String,
    `user_id` UInt64,
    `hostname` String,
    `is_bounce` UInt8,
    `entry_page` String,
    `exit_page` String,
    `pageviews` Int32,
    `events` Int32,
    `duration` UInt32,
    `referrer` String,
    `referrer_source` String,
    `country_code` LowCardinality(FixedString(2)),
    `screen_size` LowCardinality(String),
    `operating_system` LowCardinality(String),
    `browser` LowCardinality(String),
    `start` DateTime,
    `timestamp` DateTime,
    `utm_medium` String,
    `utm_source` String,
    `utm_campaign` String,
    `browser_version` LowCardinality(String),
    `operating_system_version` LowCardinality(String)
    )
    ENGINE = CollapsingMergeTree(sign)
    PARTITION BY toYYYYMM(start)
    ORDER BY (domain, user_id, session_id, start)
    SAMPLE BY user_id
    SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    да, я про то же
  • https://t.me/clickhouse_ru
    @sc0rp10 #227151 12:27 PM, 19 Jul 2021
    возможно какая-то метадата кривая/старая приехала
  • https://t.me/clickhouse_ru
    Попробуйте даунгрейднутся до 21.3
  • https://t.me/clickhouse_ru
    @sc0rp10 #227153 12:27 PM, 19 Jul 2021
    там внутренний формат представления не менялся?
  • https://t.me/clickhouse_ru
    @unamedrus #227154 12:28 PM, 19 Jul 2021
    Нет, не должно
  • https://t.me/clickhouse_ru
    @sc0rp10 #227155 12:28 PM, 19 Jul 2021
    21.3.15.4 - эту версию стоит пробовать?
  • https://t.me/clickhouse_ru
    @unamedrus #227156 12:29 PM, 19 Jul 2021
    Ага, ее можно
  • https://t.me/clickhouse_ru
    @sc0rp10 #227157 12:31 PM, 19 Jul 2021
    помогло
  • https://t.me/clickhouse_ru
    @unamedrus #227158 12:32 PM, 19 Jul 2021
    Ну пишите баг репорт с примером на 21.7 что то там сломалось видимо
  • https://t.me/clickhouse_ru
    @S_Dimitry #227159 12:45 PM, 19 Jul 2021
    Подскажите, пожалуйста, а есть варианты решения ошибки: Memory limit (total) exceeded: would use 14.08 GiB (attempt to allocate chunk of 338518331 bytes), maximum: 14.08 GiB - кроме увеличения оперативной памяти, выделенной инстансу?
  • https://t.me/clickhouse_ru
    Можно выполнять операции с использованием внешней памяти. Посмотрите настройки max_bytes_before_external_group_by и distributed_aggregation_memory_efficient (вроде)
  • https://t.me/clickhouse_ru
    это тюнинг запросов,а если например выполняется ALTER TABLE удаления\апдейта
  • https://t.me/clickhouse_ru
    Это total лимит, у вас там еще жирные запросы могут быть
  • https://t.me/clickhouse_ru
    нагрузки не было еще, но, кажется, я вас понял)
  • https://t.me/clickhouse_ru
    @ajIeks #227165 01:11 PM, 19 Jul 2021
    Всем привет, можете подсказать, что делаю не так? Хочу предоставить пользователям (LDAP) возможность создавать временные таблицы, для этого завел группу, и на нее навешиваю разрешения:

    GRANT CREATE TEMPORARY TABLE ON *.* TO sg_clickhouse;
    GRANT sg_clickhouse TO `user_name`

    ┌─GRANTS FOR rtb_clickhouse────────────────────────────┐
    │ GRANT CREATE TEMPORARY TABLE ON *.* TO sg_clickhouse │
    └──────────────────────────────────────────────────────┘

    ┌─GRANTS FOR `user_name`─────────────┐
    │ GRANT sg_clickhouse TO `user_name` │
    └────────────────────────────────────┘

    Но в итоге все равно получаю ошибку:
    DB::Exception: user_name: Not enough privileges. To execute this query it's necessary to have grant CREATE TEMPORARY TABLE ON *.* (version 21.6.3.14 (official build))

    Может что-то упустил?
  • @bard356 #227166 01:24 PM, 19 Jul 2021
    Коллеги, добрый день!
    Подскажите пжл, какой функцией можно объединить две колонки int по принципу, вместо null в 1-ой добавить значения из 2-ой. coalesce не работает. ?
  • @helloworld2024 #227167 01:25 PM, 19 Jul 2021
    Всем привет, такой вопрос, а вьюхи по отношению к выполнению инсерта клиентом, синхронные? Он дожидается пока они отработают?
  • попробуйте рестартонуть кликхаус
  • @7699150 #227169 01:27 PM, 19 Jul 2021
    у нас не LDAP, но замечал, что если дать грант на группу, а не на юзера, то этот грант не работает до рестарта (КХ 21.3)
  • https://t.me/clickhouse_ru
    @aveLestat #227170 01:35 PM, 19 Jul 2021
    комрады, подскажите пожалуйста, я всего навсего хочу две роли, rw и ro, но чет даже команду написать не получается, а офф. дока бомжатская какая-то =)
    пишу так:
    create role rw settings writable

    чего не хватает ?
  • https://t.me/clickhouse_ru
    Я кстати тоже даю гранты исключительно на группы и до клиентов (tableau, python) изменения идут долго (около 2 часов)
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #227166 #227172 01:36 PM, 19 Jul 2021
    Nullable | ClickHouse Documentation

    Functions for Working with Nullable Values isNull Checks whether the argument is NULL. isNull(x) Alias: ISNULL. Argument

  • https://t.me/clickhouse_ru
    @zonedberg #227174 01:56 PM, 19 Jul 2021
    Добрый день, я первый раз пользуюсь clickhouse и у меня уже возникли проблемы с установкой клиента на мак. Сделал все как написано на странице установки, но после скачивания файла команды clickhouse не работают.
  • https://t.me/clickhouse_ru
    @zonedberg #227175 01:56 PM, 19 Jul 2021
    treemorse@MacBook-Air-Daniel ~ % ./clickhouse
    Use one of the following commands:
    clickhouse local [args]
    clickhouse client [args]
    clickhouse benchmark [args]
    clickhouse server [args]
    clickhouse extract-from-config [args]
    clickhouse compressor [args]
    clickhouse format [args]
    clickhouse copier [args]
    clickhouse obfuscator [args]
    clickhouse git-import [args]
    clickhouse keeper [args]
    clickhouse keeper-converter [args]
    clickhouse install [args]
    clickhouse start [args]
    clickhouse stop [args]
    clickhouse status [args]
    clickhouse restart [args]
    clickhouse hash-binary [args]
    treemorse@MacBook-Air-Daniel ~ % clickhouse local
    zsh: command not found: clickhouse
    treemorse@MacBook-Air-Daniel ~ %
  • Не работает для целых. Похоже только для строк)
  • https://t.me/clickhouse_ru
    ребяты!! как read-write роль создаааать?)))
  • https://t.me/clickhouse_ru
    @zonedberg #227179 01:58 PM, 19 Jul 2021
    Может ли кто-то помочь с моей проблемой? Хотелось бы уже приступить к работе а через докер это делать не очень удобно
  • https://t.me/clickhouse_ru
    ./clickhouse local
  • https://t.me/clickhouse_ru
    @sc0rp10 #227181 01:58 PM, 19 Jul 2021
    но я бы для начала почитал книжки по терминалу для самых маленьких
  • https://t.me/clickhouse_ru
    @zonedberg #227183 02:00 PM, 19 Jul 2021
    Я бы с радостью) Но времени совсем нет. В любом случае спасибо
  • https://t.me/clickhouse_ru
    @unamedrus #227184 02:07 PM, 19 Jul 2021
    ./clickhouse client

    А в чем проблема то?
    Вы не пишете
  • https://t.me/clickhouse_ru
    ну вам показывают какие есть команды для бинарника clickhouse
    если нужен клиент
    то делаете symlink clickhouse-client на clickhouse бираник и все заработает

    ну или clickhouse client
    запускаем
  • https://t.me/clickhouse_ru
    @zonedberg #227186 02:10 PM, 19 Jul 2021
    Как подметил Константин, моя проблема заключалась в неумении пользоваться терминалом
  • @AmBelokonev #227187 02:20 PM, 19 Jul 2021
    Всем привет.
    ни кто не встречал ошибку вида:
    2021.07.19 16:29:14.947937 [ 18432 ] {} <Error> default.cnt: Considering to remove broken part /data/clickhouse/store/000/00000000-0000-0000-0000-000000000000/202107_358113_422227_2903 because it covers at least 2 other parts
    2021.07.19 16:29:14.948140 [ 18550 ] {} <Error> auto DB::MergeTreeData::loadDataParts(bool)::(anonymous class)::operator()() const: Code: 33, e.displayText() = DB::Exception: Cannot read all data. Bytes read: 0. Bytes expected: 4., Stack trace (when copying this message, always include the lines below):

    0. DB::ReadBuffer::readStrict(char*, unsigned long) @ 0x7d20ca5 in /usr/bin/clickhouse
    1. DB::DataTypeNumberBase<unsigned int>::deserializeBinary(DB::IColumn&, DB::ReadBuffer&) const @ 0xd7e60ca in /usr/bin/clickhouse
    2. DB::IMergeTreeDataPart::loadIndex() @ 0xe31d6ef in /usr/bin/clickhouse
    3. ? @ 0xe38a9bb in /usr/bin/clickhouse
    4. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0x7d285ed in /usr/bin/clickhouse
    5. ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'l
    ambda1'()>(void&&, void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()&&...)::'lambda'()
    ::operator()() @ 0x7d2ab4f in /usr/bin/clickhouse
    6. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x7d25aad in /usr/bin/clickhouse
    7. ? @ 0x7d295d3 in /usr/bin/clickhouse
    8. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
    9. __clone @ 0xfe9fd in /usr/lib64/libc-2.17.so
    (version 20.12.4.5 (official build))
    2021.07.19 16:29:14.948175 [ 18550 ] {} <Error> default.cnt: Part /data/clickhouse/store/000/00000000-0000-0000-0000-000000000000/202107_422228_423290_793 is broken. Looking fo
    r parts to replace it.
    2021.07.19 16:29:14.948200 [ 18550 ] {} <Error> default.cnt: Detaching broken part /data/clickhouse/store/000/00000000-0000-0000-0000-000000000000/202107_422228_423290_793 because it covers less than 2 parts. You need to resolve this manually

    Сейчас пытаюсь восстановить одну из нод кластера и заметил в логе данную ошибку . На что она влияет и что с ней делать хз.
    Версия 20.12.4.5-2.
  • https://t.me/clickhouse_ru
    @sibbarb #227189 02:34 PM, 19 Jul 2021
    Гаесы всем привет, а чем можно заменить lag???
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @sibbarb #227191 02:40 PM, 19 Jul 2021
    спасибо, сейчас почитаю
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #227168 #227192 02:54 PM, 19 Jul 2021
    спасибо, помогло, странное поведение конечно 🙂
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #227171 #227193 02:55 PM, 19 Jul 2021
    похоже на какие-то внутренние кеши
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #227176 #227194 03:05 PM, 19 Jul 2021
    Что-то путаете.

    https://pastebin.com/W0UirHRf
    ilejn-latitude-7490 :) create table nt (a Nullable(Int), b Nullable(Int)) Engine - Pastebin.com

    Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.

  • https://t.me/clickhouse_ru
    у него целые наверно просто не nullable :)
  • https://t.me/clickhouse_ru
    @apilipenko83 #227198 03:58 PM, 19 Jul 2021
    Привет, а правильно ли я понял, что после создания таблицы поменять комментарий к ней через sql не получится?
    Версия 21.3.13.9
  • https://t.me/clickhouse_ru
    ну можно /var/lib/clickhouse/metadata/db/table.sql поменять
    и рестартануть сервер
  • Да. Этот способ не работает
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #227200 #227201 04:33 PM, 19 Jul 2021
    Если "да" означает "не nullable" - сделайте nullable.
    Если что-то другое - сделайте минимально воспроизводимый пример, покажите запрос и таблицу.
  • https://t.me/clickhouse_ru
    наверное человеку охота, чтобы работало и без nullable :)
  • Мы немного отошли от вопроса, изначально искал возможности делать запрос без работы над типами, например аналог nvl из oracle. Но ваш совет сделать nullable(int) подойдёт, спасибо!
  • https://t.me/clickhouse_ru
    можно и без изменения типа. но тогда для отсутсвующих значений писать -1 или то значение, которое у вас не используется
  • https://t.me/clickhouse_ru
    @ilejn #227205 04:52 PM, 19 Jul 2021
    Боюсь, что проблема в том, что у вас просто не было null'ов в базе. Именно для того, чтобы они появились, нужно nullable.
    А какую функцию вы будете использовать - второстепенно.
  • У меня id пользователя от 0, поэтому как вариант, попробую, спасибо!
  • Ок. Понял
  • https://t.me/clickhouse_ru
    21.7+ Cannot find column in source stream in a query with sampling · Issue #26522 · ClickHouse/ClickHouse

    21.7.3 throws an exception if _sample_factor is used in a query: CREATE TABLE sessions ( `user_id` UInt64 ) ENGINE = MergeTree ORDER BY user_id SAMPLE BY user_id; insert into sessions values(1); SE...

  • https://t.me/clickhouse_ru
    от нуля или больше нуля? если больше нуля, то можно вместо coalesce использовать if(userId !=0, userId, userId2)
  • Больше 0. Попробую. Спасибо
  • https://t.me/clickhouse_ru
    а как у вас семплинг вообще работает?
    у вас user_id это уже хеш? от 0 до maxUInt64 ?
  • https://t.me/clickhouse_ru
    влияет конечно, я написал это как пример как тестить, на тех синтетических данных да не повлияло, потому что они чистая синтетика
  • https://t.me/clickhouse_ru
    Ага, окей, тогда буду тестить на примерно своих данных)
  • @Nvarchar495 #227214 08:15 PM, 19 Jul 2021
    Коллеги, подскажите пожалуйста а что такое вертикальный мерж?
  • https://t.me/clickhouse_ru
    горизонтальный мерж идет по первичным ключам слияемых партов и читает и слияет все колонки одновременно.

    если колонок больше 10, то включается ВЕРТИКАЛЬНЫЙ, каждая колонка слияется в своем проходе, таким образом ВЕРТИКАЛЬНЫЙ немного медленее, но расходует на порядки меньше памяти, при этом могут быть странные сайдэффекты, типа если в 100 колонках поле надо вычисить из другой колонки, например с json, то тот json прочитается 100 раз.
  • спасибо!
  • https://t.me/clickhouse_ru
    тут скорее всего в одном месте имеется в горизонтальный, а в другом - вертикальный
    upd увидел, спасибо
  • https://t.me/clickhouse_ru
    да, спс. уже пять человек написали 😺
  • https://t.me/clickhouse_ru
    @TigProg #227219 08:28 PM, 19 Jul 2021
    :)
    сам недавно задавался таким вопросом между делом, но дальше поверхностного гугления не ушел
  • https://t.me/clickhouse_ru
    есть issue в гитхабе там все с картинками и описанием
  • https://t.me/clickhouse_ru
    попробую поднять вопрос еще раз
    технический интерес
  • https://t.me/clickhouse_ru
    мерж старых маленьких партов или например TTL вырезал строки и парты стали маленькими
  • https://t.me/clickhouse_ru
    какие вьюхи? View, Materialized View, Live View ?
    Materialzed view получают данные от инсерта, они таблицу не читают, поэтому да синхронные.
  • https://t.me/clickhouse_ru
    хм, действительно
    была таблица replacementMT, нужно было почистить по pk (по ошибке залили с кривым pk), а в таблицу усиленно пишут "дубликаты"
    спасибо!
  • Materialized views, да, благодарю, а есть возможность профайлить их время выполнения?
  • https://t.me/clickhouse_ru
    про MV https://youtu.be/1LVJ_WcLgF8?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7597
    https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf

    >а есть возможность профайлить их время выполнения
    пока нет. только вручную.
  • @helloworld2024 #227227 08:38 PM, 19 Jul 2021
    И что будет если ошибка будет в mv? Инсерт пройдет, а клиент свалиться с ошибкой? Транзакций я так понимаю нет
  • Так а вручную как? В system.query_log их не вижу
  • https://t.me/clickhouse_ru
    смотрите кино
  • @helloworld2024 #227230 08:39 PM, 19 Jul 2021
    Или в смысле засекать на клиенте
  • Понял, гляну, спасибо
  • https://t.me/clickhouse_ru
    @den_crane #227232 08:39 PM, 19 Jul 2021
    вот кстати про логгинг https://github.com/ClickHouse/ClickHouse/pull/25714
  • https://t.me/clickhouse_ru
    в смысле создавть тестовую таблицу без вью, инсертить 1млн. записей, добавлять вью, инсертить снова 1млн., добавлять еще одно вью, ....
    потом включить --parallel_view_processing arg Enables pushing to attached views concurrently instead of sequentially. и снова инсерть 1млн
  • @helloworld2024 #227234 08:43 PM, 19 Jul 2021
    @den_crane понял, спасибо большое
  • С этой опцией мерять параллельное выполнение просто?
  • https://t.me/clickhouse_ru
    да, в том кино я руками водил и показывал как оно
  • 👌👌
  • https://t.me/clickhouse_ru
    в clickhouse-server.log все написано
  • спасибо, гляну)
  • 20 July 2021 (164 messages)
  • https://t.me/clickhouse_ru
    @Rorschach70 #227242 04:58 AM, 20 Jul 2021
    Всем доброе утро.
    Подскажите пожалуйста, каким образом в кликхаузе можно увидеть сколько потребляет памяти выполнение запроса?
  • Это для выполняющихся
    SELECT
    initial_query_id,
    formatReadableSize(memory_usage),
    formatReadableSize(peak_memory_usage),
    query
    FROM system.processes

    Для тех, которые выполнились в query_log
  • https://t.me/clickhouse_ru
    Большое спасибо
  • @l_dar #227245 05:52 AM, 20 Jul 2021
    Привет всем. Подскажите что не так, запускаю такой запрос:

    INSERT INTO table (*)
    SELECT *
    FROM remote('188.*.*.*', table)
    WHERE created_ts >= '2020-12-23 00:00:00'
    AND created_ts < '2020-12-24 00:00:00';

    такой запрос происходит без ошибок, но иногда вставляет не все, появляются дыры. в данных, как такое может быть?
  • @l_dar #227246 05:56 AM, 20 Jul 2021
    Вставляю в цикле по датам, в тоге к примеру за какой то час вообще не вставилось
  • https://t.me/clickhouse_ru
    а данные то есть в исходной таблице к моменту исполнения запроса?

    SELECT count() FROM remote(..) WHERE ... делали перед INSERT ?
  • @l_dar ↶ Reply to #227247 #227248 07:41 AM, 20 Jul 2021
    Да, есть
  • https://t.me/clickhouse_ru
    ну а ошибки как проверяете? как запрос запускаете? какой язык программирования?
  • @l_dar #227250 07:43 AM, 20 Jul 2021
    Язык php, ошибки я имел ввиду, если запрос выполнился без выброса исключний, то все норм
  • @l_dar #227251 07:43 AM, 20 Jul 2021
    В логах не смотрел
  • @l_dar #227252 07:44 AM, 20 Jul 2021
    Буду смотреть
  • https://t.me/clickhouse_ru
    @akofi1e #227254 08:39 AM, 20 Jul 2021
    Привет! У меня таблица с колонкой alias. Этот alias берётся с помощью
    dictGet(dict_name,
    'code',
    tuple(toString(type))). но, когда в словаре нет соответсвия для значения - мне выкидывает ошибку missing column. Как это обрабатывать?
  • https://t.me/clickhouse_ru
    dictGetOrDefault?
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @avdotion #227260 10:58 AM, 20 Jul 2021
    Всем привет! Использую кликхаус для построения запроса. Есть таблица А и таблица Б, делаю их join по id, затем хочу выделить из полученных данных два сплита, их сравнить еще одним джойном
    Запрос падает по таймауту, в нем 9 select и три left join. Научите, пожалуйста, писать подобные запросы так, чтобы и код был короче, и таблица быстро считалась

    Насколько я понял, в синтаксисе Clickhouse нет ни функций, ни ссылок, поэтому уже рассчитанные данные сохранить (мемоизировать) нельзя. Кроме этого, кода уже на 120 строк, а по-русски сформулировал в 120 символов 🤷
  • https://t.me/clickhouse_ru
    Можно через ARRAY JOIN + GROUP BY

    WITH [Date, Date + INTERVAL 1 MONTH] as arr SELECT Client, StoreNo, Brand, sumIf(value, date2=Date) - sumIf(value, date2=Date + INTERVAL 1 MONTH) as diff ARRAY JOIN arr as date2 GROUP BY Client, StoreNo, Brand, date2
  • https://t.me/clickhouse_ru
    @avdotion #227262 11:05 AM, 20 Jul 2021
    А вообще есть планы в синтаксис Clickhouse завезти ссылки?
  • @helloworld2024 #227263 11:06 AM, 20 Jul 2021
    Привет, не подскажете, как заставить клиент не обрезать длинное значение колонки? нигде не могу найти опций про это
  • https://t.me/clickhouse_ru
    @dmitriynvkv #227265 11:19 AM, 20 Jul 2021
    Всем привет, а как CH работает с диском? Я так понимаю там своё решение. Есть где почиатть про это?
  • https://t.me/clickhouse_ru
    @nyoroon #227266 11:21 AM, 20 Jul 2021
    можно в коде почитать
  • https://t.me/clickhouse_ru
    @nyoroon #227267 11:22 AM, 20 Jul 2021
    иногда бывает что-то на митапах
  • https://t.me/clickhouse_ru
    @dmitriynvkv #227268 11:26 AM, 20 Jul 2021
    жаль я не сишник :(
  • https://t.me/clickhouse_ru
    @dmitriynvkv #227269 11:27 AM, 20 Jul 2021
    жаль, тада буду верить что всё делается идеально
  • https://t.me/clickhouse_ru
    ты хотел провалидировать?))
  • https://t.me/clickhouse_ru
    сделай Format JSON например)
  • https://t.me/clickhouse_ru
    @orloffv #227272 11:31 AM, 20 Jul 2021
    Документация ClickHouse | Документация ClickHouse

    ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries

  • Понял, сенкс)
  • https://t.me/clickhouse_ru
    PrettyCompact¶
    Отличается от Pretty тем, что не рисуется сетка между строками - результат более компактный.
    Этот формат используется по умолчанию в клиенте командной строки в интерактивном режиме.
  • https://t.me/clickhouse_ru
    ну код достаточно хорошо написан, хорошо читается даже без полноценного знания плюсов
  • с Pretty то же самое
  • @helloworld2024 #227277 11:34 AM, 20 Jul 2021
    Vertical работает более мне как надо
  • @helloworld2024 #227278 11:35 AM, 20 Jul 2021
    там show create table и колонок много
  • https://t.me/clickhouse_ru
    А можешь, пожалуйста, расширить пример?
    Не очень понимаю этот код
  • https://t.me/clickhouse_ru
    @avdotion #227280 11:40 AM, 20 Jul 2021
    Оказывается, нельзя делать
    with value as var
    select * from (
    select * from table
    where prop = var
    )
    потому что скоуп для with только в первом select
  • https://t.me/clickhouse_ru
    Можно, просто у вас версия старая, GLOBAL WITH был добавлен ~ 20.10
  • https://t.me/clickhouse_ru
    @avdotion #227282 11:41 AM, 20 Jul 2021
    А как узнать, как у меня версия?
  • https://t.me/clickhouse_ru
    @avdotion #227283 11:42 AM, 20 Jul 2021
    Вызываю CH из интерфейса, мб есть табличка?
  • https://t.me/clickhouse_ru
    @unamedrus #227284 11:42 AM, 20 Jul 2021
    SELECT version();
  • https://t.me/clickhouse_ru
    @avdotion #227285 11:43 AM, 20 Jul 2021
    Эх, реально 19 версия (
  • https://t.me/clickhouse_ru
    Ну стоит посмотреть в сторону апгрейда, тк через месяц даже 20.8 уйдет в EOL
  • https://t.me/clickhouse_ru
    Давайте так.
    Покажите запрос, что есть у вас сейчас, можете выкинуть ненужные части если есть такие.
  • https://t.me/clickhouse_ru
    лол :) нет конечно
  • https://t.me/clickhouse_ru
    Ну как и в любом ПО бывают разные неприятные проблемы
    https://github.com/ClickHouse/ClickHouse/issues/18844
    CRITICAL: DATA CORRUPTION on merges using linux AIO · Issue #18844 · ClickHouse/ClickHouse

    Describe the bug After upgrading to clickhouse 20.12.4.5 we started seeing some merge errors, that lead to data loss. The main error message is : 2021.01.04 20:05:15.716664 [ 149272 ] {} <Er...

  • https://t.me/clickhouse_ru
    @dmitriynvkv #227290 11:48 AM, 20 Jul 2021
    та блин) я без наездов
  • https://t.me/clickhouse_ru
    @dmitriynvkv #227291 11:48 AM, 20 Jul 2021
    я хотел просто узнат ьчё как на диске
  • https://t.me/clickhouse_ru
    @unamedrus #227292 11:49 AM, 20 Jul 2021
    Да я тоже, просто шучу.
  • https://t.me/clickhouse_ru
    │ output_format_pretty_max_value_width │ 10000 │ 0 │ Maximum width of value to display in Pretty formats. If greater - it will be cut. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
  • о да, то что надо, спасибо
  • @antonarsentiev #227295 12:39 PM, 20 Jul 2021
    всем привет) в ближайшее время ни у кого не было проблем с multiif?
  • @GooG2e #227297 12:53 PM, 20 Jul 2021
    Добрый день.
    Подскажите кто пользуется clickhouse_fdw как-то можно сделать, чтобы limit передавался в clickhouse. По репозиторию не очень понятно - тотли пофиксили на 12 постгресе, то ли не пофиксили т.к. есть репорты и можно ли как то на 11 сделать..
  • @ilukyano #227298 01:03 PM, 20 Jul 2021
    Всем привет, кто может рассказать коротко о MaterializedPostgreSQL и почему у меня либо DB::Exception: Database engine MaterializedPostgreSQL cannot have arguments (version 21.7.4.18 (official build)), в случае с CREATE database mpsdb ENGINE = MaterializedPostgreSQL('servaddr:5432', '**DB***', 'user', 'pass')
    SETTINGS materialized_postgresql_max_block_size = 65536,
    materialized_postgresql_tables_list = 'schema.table'
  • @ilukyano #227299 01:04 PM, 20 Jul 2021
    Либо пишет движка не существует
  • https://t.me/clickhouse_ru
    @nblxa #227301 01:20 PM, 20 Jul 2021
    Привет всем! Есть вопрос по поводу read consciency. Я понимаю, что ClickHouse не транзакционален. Но тем не менее интересно знать, какие существуют гарантии доступности данных. После вставки большого количества данных в MergeTree таблицу (на одной ноде), есть ли гарантия, что та же сессия увидит все данные из всех столбцов? А другая сессия? Интересуюсь потому, что имплементирую ETL процесс из нескольких этапов, и следующий этап может читать данные из MergeTree таблицы, заполненной на предыдущем.
  • https://t.me/clickhouse_ru
    @rvkggwp #227302 01:37 PM, 20 Jul 2021
    Всем привет, как из строки получить массив, пример строки: '[[1, 2, 3], [3, 5]]'
  • https://t.me/clickhouse_ru
    JSONExtract
  • https://t.me/clickhouse_ru
    Спасибо, я нашел эту функцию
  • https://t.me/clickhouse_ru
    Но при ее использовании мне возвращается пустая строка, не могли бы вы привести пример правильного использования? (Я смотрел документацию)
  • https://t.me/clickhouse_ru
    SELECT CAST('[[1, 2, 3], [3, 5]]', 'Array(Array(UInt32))')
  • https://t.me/clickhouse_ru
    Это сработало, спасибо, упустил момент с тем, что нужно два Array. Спасибо всем кто пытался помочь
  • Чудо!
    Специально зашёл спросить про судьбу O_DIRECT в кликхаусах 2021 года. И прямо почти только что в группе об этом вспоминают.

    (В своё время в ходе эксплуатации кластера пришлось больно столкнуться с порчей данных, вызванной https://github.com/ClickHouse/ClickHouse/issues/18844 . Пришлось выключать min_merge_bytes_to_use_direct_io .
    А где-то зимой для нескольких версий типа 20.8-21.1 прошло изменение "Disable write with AIO during merges because it can lead to extremely rare data corruption of primary key columns during merge. #18481 (alesapin).", которое direct_io отключало. )
    CRITICAL: DATA CORRUPTION on merges using linux AIO · Issue #18844 · ClickHouse/ClickHouse

    Describe the bug After upgrading to clickhouse 20.12.4.5 we started seeing some merge errors, that lead to data loss. The main error message is : 2021.01.04 20:05:15.716664 [ 149272 ] {} <Er...

  • Чем это всё закончилось то в итоге?
    Хотелось бы для мерджей direct_io использовать, чтобы вставка данных не вымывала кэш операционной системы...
  • https://t.me/clickhouse_ru
    Да, там недавно io_uring вообще убрали из мержей на более простой механизм.
  • https://t.me/clickhouse_ru
    Remove AIO for sequential reads by alexey-milovidov · Pull Request #26003 · ClickHouse/ClickHouse

    Changelog category (leave one): Improvement Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): Remove complicated usage of Linux AIO with one block read...

  • То есть, если хочется с вымыванием кэша бороться (чтобы по возможности в горячих данных было то, к чему запросы в БД на чтение приходят, а не сиюминутные вставляемые данные), то:
    1) Теперь в оба глаза следить за changelog,
    2) Когда в новых версиях данное изменение появится, ставить в ТЕСТ такую версию, возвращать обратно min_merge_bytes_to_use_direct_io
    3) и проверять под нагрузкой
    ?
  • @uname91 #227313 02:13 PM, 20 Jul 2021
    А 26003 про min_bytes_to_use_direct_io, а не min_merge_bytes_to_use_direct_io ..
  • https://t.me/clickhouse_ru
    Не только,

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

    Появится это изменение должно в 21.9, к сожалению чуть опоздало, что бы попасть в следующий LTS
  • Конечно, обязательно проверять.
    "Disable write with AIO during merges because it can lead to extremely rare data corruption of primary key columns during merge." ( https://github.com/ClickHouse/ClickHouse/pull/18481)
    На нагрузке в 600-700 KEpS это самое "extremely rare data corruption" приводило к отнюдь не столь rare поломкам между репликами ("Code 40: ... Checksums of parts don't match: hash of uncompressed files doesn't match, uncompressed hash of compressed files doesn't match") раз в сколько-то дней:)
    Disable write with AIO even for big merges by alesapin · Pull Request #18481 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    Ага,
    Яндекс недавно в своей статье про баги в ядре линукса такое описал

    Представьте редкий баг, который стреляет раз в два года. Что с ним делать, совершенно непонятно. Непонятно даже, нужно ли на него реагировать. Такой произошел у нас буквально недавно. На наших масштабах это означает 150 падений в день — огромные масштабы, совершенно неприемлемо. То есть очень редкие баги нас очень сильно бьют по голове.
  • https://t.me/clickhouse_ru
    @AlexeyArs #227319 02:34 PM, 20 Jul 2021
    Добрый день! Подскажите пожалуйста! получаю ошибку вида:

    HttpCode:400 ; ;Code: 27, e.displayText() = DB::ParsingException: Cannot parse input: expected 'eof' before: '.5' (version 21.7.3.14 (official build))

    На запрос:

    INSERT INTO `active_record_log` (`model`,`type`,`pk`,`attributes`,`user_id`,`company_id`,`create_date`,`create_at`) VALUES ('test',1,'test','test',83,1,'2021-07-20','2021-07-20 17:27:49')

    При этом если делаю запрос через шторм - все отлично, через приложение - эксепшен... в какую сторону копать?
  • https://t.me/clickhouse_ru
    > Cannot parse input: expected 'eof' before: '.5'

    Какая то черепашка врет.

    Я вот не вижу .5 в запросе.

    Что за приложение?
  • https://t.me/clickhouse_ru
    @AlexeyArs #227321 02:36 PM, 20 Jul 2021
    Да сайт обычный, эксепшен с него распечатываю
  • https://t.me/clickhouse_ru
    @AlexeyArs #227322 02:37 PM, 20 Jul 2021
    прям из эксепшена и беру подготовленный запрос
  • https://t.me/clickhouse_ru
    @unamedrus #227323 02:37 PM, 20 Jul 2021
    А как передаете values и сам запрос? в боди?
  • https://t.me/clickhouse_ru
    @AlexeyArs #227324 02:38 PM, 20 Jul 2021
    вот через этот вендор делаю:
    smi2/phpclickhouse
  • https://t.me/clickhouse_ru
    @AlexeyArs #227325 02:38 PM, 20 Jul 2021
    при этом сейчас фактически просто поменял сервер, развернул новый КХ и перенаправил на него
  • https://t.me/clickhouse_ru
    @AlexeyArs #227326 02:39 PM, 20 Jul 2021
    в предыдущий сервер пишет отлично )))
  • https://t.me/clickhouse_ru
    А предыдущий сервер на какой версии?
  • https://t.me/clickhouse_ru
    ClickHouse server version 20.3.7.46 (official build).
  • https://t.me/clickhouse_ru
    Попробуйте новый откатить до 21.3
  • https://t.me/clickhouse_ru
    @AlexeyArs #227330 02:43 PM, 20 Jul 2021
    попробую, спасибо
  • Спасибо, интересно.
    Буду ждать 21.9
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226822 #227334 05:36 PM, 20 Jul 2021
    Не удалется crd из k8s

    Снова поймал этот баг operator 0.15
    Name: clickhouseinstallations.clickhouse.altinity.com
    Namespace:

    Labels: <none>
    Annotations: <none>
    API Version: apiextensions.k8s.io/v1
    Kind: CustomResourceDefinition
    Metadata:
    Creation Timestamp: 2021-07-20T17:21:29Z Deletion Grace Period Seconds: 0 Deletion Timestamp: 2021-07-20T17:29:30Z Finalizers: customresourcecleanup.apiextensions.k8s.io

    Custom resources with finalizers can "deadlock" customresourcecleanup.apiextensions.k8s.io finalizer
    Kirill Kazakov in ClickHouse не тормозит

    Не удалется crd из k8s удалить. k8s 1.18 chi-operator: 0.14 При переустановке пишет, что предыдущий crd не удален. Error: rpc error: code = Unknown desc = release clickhouse-operator failed: object is being deleted: customresourcedefinitions.apiextensions.k8s.io "clickhouseinstallations.clickhouse.altinity.com" already exists Получается удалить только таким патчем: kubectl patch crd/clickhouseinstallations.clickhouse.altinity.com -p '{"metadata":{"finalizers":[]}}' --type=merge Есть ли способ пофиксить это поведение, чтобы удаление было корректно ?

  • https://t.me/clickhouse_ru
    @VASergeev #227336 07:31 PM, 20 Jul 2021
    Добрый вечер, нужна подсказка или что почитать по сжатию данных кликхауса
    интересен конфиг <compression> и какие параметры как влияют, может кто разбирал

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

    Наверно первый вопрос, можно ли на рабочей БД поменять тип сжатия на zstd и потом вернуть дефолт (Вопрос в том, насколько безопасно менять тип сжатия, не повредятся ли данные)?
  • https://t.me/clickhouse_ru
    Не надо трогать его, лучше крутите сжатие отдельных колонок профитп будет больше
  • https://t.me/clickhouse_ru
    @VASergeev #227338 08:00 PM, 20 Jul 2021
    Ок, но вопрос тот же менять кодек колонки можно в любом порядке.
    Например потестить с lv4 потом альтером поменять на zstd, потом уровни поменять, данные в таком случае не сломаются?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Нет, но колонки будут в старом кодеке пока мерж не случится
  • https://t.me/clickhouse_ru
    @nyoroon #227341 08:02 PM, 20 Jul 2021
    Точнее данные в партах до изменения кодека
  • https://t.me/clickhouse_ru
    @VASergeev #227342 08:03 PM, 20 Jul 2021
    А мердж руками можно запустить?
  • https://t.me/clickhouse_ru
    @nyoroon #227343 08:03 PM, 20 Jul 2021
    Не надо. Лучше как по ссылке сделайте
  • https://t.me/clickhouse_ru
    Там есть под статья где показано как тестироаат кодеки
  • https://t.me/clickhouse_ru
    @VASergeev #227345 08:08 PM, 20 Jul 2021
    Там как раз есть OPTIMIZE TABLE, я так понимаю эта команда как раз и сжимает данные после alter?
  • https://t.me/clickhouse_ru
    @VASergeev #227346 08:10 PM, 20 Jul 2021
    Т.е. последовательность действий такая:
    Скопировать какой-нибудь партии для тестов.
    Попробовать разные кодеки:
    Alter table с кодеком на колнку, потом OPTIMIZE TABLE.
    И смотреть что изменилось.
    Примерно так?
  • https://t.me/clickhouse_ru
    Точнее не в этой а в следующей статье про тест кодеков
  • https://t.me/clickhouse_ru
    Ничего страшного не случится, если данные пожаты разными методами.
    Все прочитается успешно.
  • https://t.me/clickhouse_ru
    @VASergeev #227349 08:15 PM, 20 Jul 2021
    Немного не в этом вопрос, если одну и туже колонку поочередно сжимать разными вариантами (в режиме теста), чтобы понять как она ведёт себя, кликхаус корректно переводит из любого кодека в любой другой?
  • https://t.me/clickhouse_ru
    @salttan #227350 08:15 PM, 20 Jul 2021
    да
  • https://t.me/clickhouse_ru
    @VASergeev #227351 08:19 PM, 20 Jul 2021
    О шикарно, спасибо)
    А может уже есть какое-то исследование какой колонке лучше подходит конкретная комбинация кодека. Например строка с небольшим количеством вариантов (10 на 1кк) и для строки с большим разнообразием вариантов (100к на 1кк)?

    Как в статье https://altinity.com/blog/2019/7/new-encodings-to-improve-clickhouse с числами
    New Encodings to Improve ClickHouse Efficiency

    July 10, 2019Modern analytical databases would not exist without efficient data compression. Storage gets cheaper and more performant, but data sizes typically grow even faster. Moore’s Law for big data outperforms its analogy in hardware. In our blog we already wrote about ClickHouse compression (https://altinity.com/blog/2017/11/21/compression-in-clickhouse) and Low Cardinality data type wrapper (https://altinity.com/blog/2019/3/27/low-cardinality). In this article we will describe and test the most advanced ClickHouse encodings, which especially shine for time series data. We are proud that some of those encodings have been contributed to ClickHouse by Altinity.This article presents an early preview of new encoding functionality for ClickHouse release 19.11. As of the time of writing, release 19.11 is not yet available. In order to test new encodings ClickHouse can be built from source, or a testing build can be installed. We expect that ClickHouse release 19.11 should be available in public releases in a…

  • https://t.me/clickhouse_ru
    только если вы на одной и той же таблице будете кодеки менять, будет очень трудно их между собой сравнивать
  • https://t.me/clickhouse_ru
    все от данных зависит
    order by тоже сильно влияет
  • https://t.me/clickhouse_ru
    Ну я больше как стартовый вариант от которого отталкиваться ищу, дальше методом тыка и подбором)
  • https://t.me/clickhouse_ru
    План был в том, чтобы взять самые жирные колонки, которые по дефолту меньше всех сжаты, и поочереди на каждой колонке пробовать разные комбинации кодеков и потом собрать статистику. По сути сделать тоже что в статье с числами
  • https://t.me/clickhouse_ru
    скопируйте лучше данные в несколько таблиц с разными кодеками
  • https://t.me/clickhouse_ru
    @VASergeev #227357 08:26 PM, 20 Jul 2021
    Да спасибо, буду пробовать)
  • https://t.me/clickhouse_ru
    @propositive #227358 08:27 PM, 20 Jul 2021
    Насколько распоространено использрвание zetcd вместо zookeeper?
  • https://t.me/clickhouse_ru
    @VASergeev #227359 08:29 PM, 20 Jul 2021
    Ещё вопрос в контексте текущего.
    Тут видел советы поставить по дефолту zstd в конфиг. У нас сейчас блок компрессии закоментирован, можно ли его использовать, например просто раскоментировав, для тех же целей экономии места
  • https://t.me/clickhouse_ru
    Скорее всего тут тоже все от самой схемы бд зависит. У нас примерно так:
    Основная таблица в которую идет запись и на ней висит несколько материализационных вьюх, с агрегацией. Выборка идет только из вьюх.

    В основную таблицу только запись, сейчас объем небольшой около 4-5к в секунду
  • https://t.me/clickhouse_ru
    ну тут вопрос - готовы ли вы разменять возможную прибавку места на потребление CPU?
  • https://t.me/clickhouse_ru
    @nyoroon #227362 08:40 PM, 20 Jul 2021
    разные типы данных сжимаются с разной эффективностью, нет универсального совета
  • https://t.me/clickhouse_ru
    @nyoroon #227363 08:40 PM, 20 Jul 2021
    (точнее наиболее универсальный стоит по дефолту)
  • https://t.me/clickhouse_ru
    @VASergeev #227364 08:47 PM, 20 Jul 2021
    Ну в данный момент времени наверно да, я кстати не смотрел что с cpu но по мониторингу всплесков не видел.

    У нас сейчас ситуация такая: пилот проекта и очень ограничены ресурсы. Железка такая: 4 ядра 4 гига и 17 ГБ HDD в запасе можно докинуть ещё около 30 ГБ
    На пилот был план на небольших клиентов и поначалу так и было, они генерили 50к событий в день и тратили несколько мегабайт. Сейчас подключили 1 жирного лкиента и он половиной пользователей поднял планку до 800к событий в день и 200 мб и оказывается есть планы на еще клиентов.
    Вариант увеличения железа прорабатывается, но т.к. пилот - все сложно )

    Поэтому кажется что cpu у нас в достатке
  • https://t.me/clickhouse_ru
    --output_format_pretty_max_column_pad_width arg Maximum width to pad all values in a column in Pretty formats.
    --output_format_pretty_max_value_width arg Maximum width of value to display in Pretty formats. If greater - it will be cut.
  • https://t.me/clickhouse_ru
    там война и мир отдыхает по размеру. Там чего-то только нет и direct_io и mmap и async_io в зависимости от ситуации.
  • https://t.me/clickhouse_ru
    были
  • Ещё один вариант, спасибо)
  • https://t.me/clickhouse_ru
    distributed таблица умеет читать из актуальных реплик
    --max_replica_delay_for_distributed_queries arg If set, distributed queries of Replicated tables will choose servers with replication delay in seconds less than the specified value (not inclusive). Zero means do not take delay into account.
  • https://t.me/clickhouse_ru
    direct_io отключать? у вас какая фс? Я не помню бага про direct_io
  • https://t.me/clickhouse_ru
    там вроде все понятно из описания? Проблем поменять туда сюда нет, но менять надо на обеих репликах как можно более одновременно
  • https://t.me/clickhouse_ru
    есть TTL re-compress, можно старые данные пережимать более сильным компрессором
  • https://t.me/clickhouse_ru
    да не работает он.

    сейчас внедряется собственный clickhouse-keeper , замена зукипера
  • https://t.me/clickhouse_ru
    я все жму zstd не вижу разницы в перфомансе, упирается в диск
  • https://t.me/clickhouse_ru
    Спасибо!
    чем clickhouse-keeper будет лучше zookeeper?
  • https://t.me/clickhouse_ru
    ну а чем вам зукипер не угодил?
  • https://t.me/clickhouse_ru
    @propositive #227377 09:06 PM, 20 Jul 2021
    я пока не знаю 😄
  • https://t.me/clickhouse_ru
    @propositive #227378 09:06 PM, 20 Jul 2021
    пытаюсь построить какую-то картину мира в голове
  • https://t.me/clickhouse_ru
    когда в прод собираетесь?
  • https://t.me/clickhouse_ru
    @propositive #227380 09:07 PM, 20 Jul 2021
    Еще тестовый стенд не подняли 😉
  • https://t.me/clickhouse_ru
    ClickHouse/clickhouse-keeper.md at master · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @den_crane #227383 09:10 PM, 20 Jul 2021
    ClickHouse Keeper | ClickHouse Documentation

    [pre-production] clickhouse-keeper ClickHouse server use ZooKeeper coordination system for data replication and distribu

  • https://t.me/clickhouse_ru
    У нас особо старых нету, все прямо сейчас резко полетело, за неделю с 200мб до гига доросли)
    Репликации нет, один сервак, поэтому менять проще)
  • https://t.me/clickhouse_ru
    <compression>
    <!-- Set of variants. Checked in order. Last matching case wins. If nothing matches, lz4 will be used. -->
    <case>
    <!-- Conditions. All must be satisfied. Some conditions may be omitted. -->
    <!-- Min part size in bytes. -->
    <min_part_size>100000000</min_part_size>
    <!-- What compression method to use. -->
    <method>zstd</method>
    <level>1</level>
    </case>
    </compression>

    вот: если размер парта меньше 100000000 байт то LZ4, если больше то ZSTD
    нужет рестарт
  • https://t.me/clickhouse_ru
    Возможно мне просто сложно понять) Хм, но кажется раза с 10 понял, но не до конца.
    "Минимальный размер части таблицы" Что за часть и как она определяется, первая мысль была про партицию.

    Сейчас появилось другое понимание:
    Например 2 case:
    У одного минимальный размер части 10.000
    У второго 40.000

    Если в таблице 100.000 строк, он для 80.000 использует второй кейс а для оставшихся первый?
    Если в таблицу прилетит ещё 20.000 записей он возьмет те 20.000 из первого кейса, сложит с новыми и сожмет по второму(40к) кейс?
  • https://t.me/clickhouse_ru
    каждый инсерт создает парт уровня _0.
    после n insert-в образуется n партов _0.
    шедулер мержей анализирует постоянно, и в какой-то момент принимает решение, m первых партов пора cмержить в единый парт, получается парт уровня _1
    парты разных уровней постоянно мержатся из мелких в крупные
    все это в рамках ОДНОЙ партиции
    и так все продолжается пока размер партов не достигнет макс. размера 150ГБ.

    И например мерж решает помержить 6 каких-от партов, считает общий размер этих партов, если размер больше 100000000, то жмем ZSTD, меньше LZ4 , таким образом все парты со временем становятся пожатыми ZSTD, пока они маленькие и постоянно ре-мержатся в более крупные, они пожаты LZ4.

    для _0 используется размер несжатого парта
  • https://t.me/clickhouse_ru
    @VASergeev #227389 09:24 PM, 20 Jul 2021
    Интересно, а есть select чтобы посмотреть какие парты сейчас есть и их размер?
  • https://t.me/clickhouse_ru
    select name,partition, formatReadableSize(bytes) size,rows, database,table
    from system.parts
    where active = 1 and table like 'таблица'
  • @qhang #227391 09:25 PM, 20 Jul 2021
    Но от сжатия же не только прибавка места, но и скорость чтения/записи с диска в коэффициент сжатия раз. Для hdd и sata ssd можно выиграть в скорости
  • https://t.me/clickhouse_ru
    на таких объёмах можно сжатие не оптимизировать, время разработчика дороже.
    просто возьмите дешёвый нормальный хостинг, например hetzner. возьмите там самый дешёвый сервер (40 евро, 2tb sata или 512 пи ssd) и вам его с головой хватит. либо у них же самую дорогую виртуалку за 50 евро (360gb ssd).
  • https://t.me/clickhouse_ru
    да, trade-off, но уже ZSTD(2 или 3) начинают тормозить CPU так что невозможно инсертить
  • https://t.me/clickhouse_ru
    у нас вроде пока не сильно много данных, по скорости почти все запросы отрабатывают меньше 50-300мс(большинство до 70-100), штук 5 за месяц отработали за 500-600мс, даже если в 2 раза отклик увеличится, но это даст свободное место, то пойдет )
  • https://t.me/clickhouse_ru
    @VASergeev #227395 09:28 PM, 20 Jul 2021
    у меня и инсерты маленькие, по 2-3к строк в секунду
  • https://t.me/clickhouse_ru
    @den_crane #227396 09:28 PM, 20 Jul 2021
    я в хецнере перехожу на sx134
    128 GB DDR4 ECC
    10 x 16 TB
    224.91 €
  • https://t.me/clickhouse_ru
    @den_crane #227397 09:29 PM, 20 Jul 2021
    160TB места на серваке, есть где развернуться
  • https://t.me/clickhouse_ru
    посмотрел, самый большой парт с именем 202107_21608_37058_24_29583, получается он пережил 29583 мерждой?
  • https://t.me/clickhouse_ru
    вот на самом деле с таким объяснением и запросом с получением этих партов сильно понятнее стало )
  • https://t.me/clickhouse_ru
    охренть, что-то я даже на неё не обращал внимания, думал делловский взять и самому дисков накидать, а тут по сути готовая сборка для схемы хот/колд стораджа.
  • https://t.me/clickhouse_ru
    202107 -- партиция
    _21608 -- начальный блок (автоинкремент)
    _37058 -- конечный блок
    _24 уровень мержа
    _29583 -- версия мутации
  • https://t.me/clickhouse_ru
    _29583 -- мутации / alter table update / delete -- это путь в никуда.
  • https://t.me/clickhouse_ru
    @VASergeev #227403 09:36 PM, 20 Jul 2021
    скорее всего это после тестов осталось, до пилота сервак был тестовым. alter table делаем только в накатах, раз в месяц при отключенной нагрузке
  • https://t.me/clickhouse_ru
    а если в конфиге указан zstd то какой уровень используется? из тега level?
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    @VASergeev #227406 09:42 PM, 20 Jul 2021
    здорово, спасибо большое, буду пробовать )
  • https://t.me/clickhouse_ru
    @VASergeev #227407 09:43 PM, 20 Jul 2021
    кстати в описании тега уровня нету
  • https://t.me/clickhouse_ru
    @VASergeev #227408 09:43 PM, 20 Jul 2021
    не спросил не знал бы )
  • https://t.me/clickhouse_ru
    @den_crane #227409 09:46 PM, 20 Jul 2021
    да, все знания по КХ в этом чате, отмотайте на 2016 год, там все написано 🙂
  • https://t.me/clickhouse_ru
    @VASergeev #227410 09:47 PM, 20 Jul 2021
    Хах, я долго сегодня мотал поиском по zstd остановился на начале 19 года)
  • https://t.me/clickhouse_ru
    @den_crane #227411 09:51 PM, 20 Jul 2021
    Да, возможность присутствует, и уже довольно давно.
    Использовать так: просто прописать в элементе level рядом с method:

    <!-- Which compression method to choose. -->
    <method>zstd</method>
    <level>2</level>
  • https://t.me/clickhouse_ru
    @den_crane #227412 09:51 PM, 20 Jul 2021
    Хорошо. Там есть ещё возможность увеличить уровень сжатия. По-умолчанию это 1. Я рекомендую пробовать постепенно. Всё-таки будет использоваться существенно больше CPU. Кстати, изменения влияют только на данные, которые были записаны и помержены после изменений.
  • https://t.me/clickhouse_ru
    @den_crane #227413 09:59 PM, 20 Jul 2021
    Doc. Documentation for compression level by den-crane · Pull Request #26616 · ClickHouse/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en Changelog category (leave one): Documentation (changelog entry is not required)

  • https://t.me/clickhouse_ru
    @VASergeev #227414 10:01 PM, 20 Jul 2021
    А уровень же только для zstd используется?
  • https://t.me/clickhouse_ru
    нет
  • https://t.me/clickhouse_ru
    @VASergeev #227416 10:05 PM, 20 Jul 2021
    Lv4 то же по уровням 1-22?
  • https://t.me/clickhouse_ru
    @VASergeev #227417 10:05 PM, 20 Jul 2021
    А блин где-то же видел, там вроде 1-9
  • https://t.me/clickhouse_ru
    @den_crane #227418 10:05 PM, 20 Jul 2021
    а точно надо в доку тоже добавить lzhc
  • 21 July 2021 (217 messages)
  • https://t.me/clickhouse_ru
    ну, странно, должен по идее в 1.10 быть пофикшен у вас 1.18 же
    попробую сегодня с главным разработчиком поговорить...

    kubectl get chi --all-namespaces есть какие то в системе?

    CRD он же cluster level
  • @ruslan_chadin #227421 07:25 AM, 21 Jul 2021
    Всем привет!
    При обновлении ClickHouse до версии 21.7.4.18 у нас изменилась выдача наименований полей с использованием функции untuple()
    SELECT untuple((a, b))
    FROM
    (
    SELECT
    1 AS a,
    2 AS b
    )
    ┌─tupleElement(tuple(a, b), 1)─┬─tupleElement(tuple(a, b), 2)─┐
    │ 1 │ 2 │
    └──────────────────────────────┴──────────────────────────────┘
    Раньше, как и написано в документации, должны и были наименования полей a и b
  • https://t.me/clickhouse_ru
    @ikushmantsev #227423 07:35 AM, 21 Jul 2021
    Добрый день, мне нужно обновить CH с 19.1.14 до какой-то актуальной стабильной, например 21.1.3.32-stable. Я понимаю, что это нужно делать постепенно и тестировать свои запросы на каждом шаге. Т.е. обновил до 19.3.9,1, проверил. Обновил до 19.4.4.33, проверил, и т.д. Тут я предположил, что я могу переходить каждый раз на новую минорную версию, с максимальной версией патча. Есть ли возможность минимизировать количество итераций “обновил-проверил”? Или все очень индивидуально и зависит от фич которые мы используем?
  • https://t.me/clickhouse_ru
    Емнип можно сразу на нужную версию если устраивают все breaking changes по пути. Ну и 21.1 уже не поддерживается, лучше хотя бы 21.3
  • https://t.me/clickhouse_ru
    @nyoroon #227427 08:04 AM, 21 Jul 2021
    Кликхаус всегда умеет читать старые данные, но новые будут где-то несовместимы при откате с таким большим скачком
  • https://t.me/clickhouse_ru
    Основная проблема в обновлении это откат назад по версии.

    Те в идеале вам нужно сделать копию данных и обновляться и гонять тесты на этой копии
  • @l_dar #227432 08:32 AM, 21 Jul 2021
    Подскажите пожалуйста, при инсерте большого объема. вставляются не все данные. В логах пишет:

    MergeTreeSequentialSource: Reading 27 marks from part 202101_15307_15307_0, total 97478 rows starting from the beginning of the part, column id
  • @l_dar #227434 08:35 AM, 21 Jul 2021
    Запрос такой

    INSERT INTO table (*)
    SELECT *
    FROM remote('188.*.*.*', table)
    WHERE created_ts >= '2020-12-23 00:00:00'
    AND created_ts < '2020-12-24 00:00:00';
  • @user93 #227435 08:37 AM, 21 Jul 2021
    Есть таблица

    CREATE TABLE src (
    itemName String,
    lastSeen DateTime,
    col1 ....,
    col2 ....,

    colN ....,

    )
    ENGINE ReplacingMergeTree(lastSeen)
    PRIMARY itemName
    ORDER BY itemName

    Как получить 100 itemName, у которых последняя добавленная запись для каждого (если если не смерджились записи) имеет наименьший lastSeen?

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

    Если делать PRIMARY как itemName, то нужно прочитать всю таблицу чтобы найти наименьшее значение.

    Если делать PRIMARY как lastSeen,itemName ., то будут дубликаты, первый из которых имеет потенциально может иметь запись 1990-01-01, а второй 2021-01-01 и между которыми миллионы записей. и чтобы убрать дубликаты (group by), опять нужно читать всю таблицу.

    Тупик какой-то или есть варианты?

    или может как-то построить таблицу, чтобы как-то через PREWHERE отсекать часть данных, операция идет раз в сутки, по сути и полная вычитка таблицы более мнее норм, но хочется опмизировать процесс.
  • https://t.me/clickhouse_ru
    @ikkalinkin #227436 08:42 AM, 21 Jul 2021
    Привет! А как можно строку
    {
    \"a\" = \"b\";
    \"c\" = \"d\";
    }
    простым способом превратить в map({"a": "b", "c": "d"})? Или можно только сплитить по знаку равно, превращать в массив?
  • https://t.me/clickhouse_ru
    Это YSON, в кликхаусе нет функций для работы с ним
  • https://t.me/clickhouse_ru
    @ikkalinkin #227439 08:57 AM, 21 Jul 2021
    спасибо!
  • https://t.me/clickhouse_ru
    @AntonKosyanenko #227440 09:24 AM, 21 Jul 2021
    всем привет.
    подскажи, а можно как-то увидеть, что зукипер реплицирует между репликами в текущий момент?
    и как поднять приоритет конкретной таблицы для синхронизации
  • Файловая система - ext4, кластер версии 20.10.
    При тестировании обнаружилось, что в тестовом стенде, если его оставить под нагрузкой (кластер 4 ноды, где-то 600-700 KEpS) на недельку-другую, время от времени повреждаются парты большого размера (сколько-то десятков гигабайт), что иногда приводило к потере данных . Судя по логу - exception возникал при проверке результата слияния нескольких крупных кусков.
    В телеграммной группе и среди Issues самое близкое по совокупности симптомов к той проблеме удалось найти в "CRITICAL: DATA CORRUPTION on merges using linux AIO" https://github.com/ClickHouse/ClickHouse/issues/18844 . Симптомы очень близкие, хотя и не идентичные.
    Текст первоначального эксепшна, включая упоминания DB::WriteBufferAIO, DB::MergeTreeDataPartWriterOnDisk у нас был ровно тот же, что и в 18844:

    <Error> virtual DB::WriteBufferAIO::~WriteBufferAIO(): Code: 49, e.displayText() = DB::Exception: An overflow occurred during file operation, Stack trace...:

    Использовалась минорная версия ветки 20.10 ранее, чем произошло исправление Issue 18844 в https://github.com/ClickHouse/ClickHouse/pull/18481 , а обновляться по организационным причинам тогда было слишком тяжело . В итоге проблему обошёл, совсем отключив direct_io через min_merge_bytes_to_use_direct_io.
    CRITICAL: DATA CORRUPTION on merges using linux AIO · Issue #18844 · ClickHouse/ClickHouse

    Describe the bug After upgrading to clickhouse 20.12.4.5 we started seeing some merge errors, that lead to data loss. The main error message is : 2021.01.04 20:05:15.716664 [ 149272 ] {} <Er...

  • https://t.me/clickhouse_ru
    @dzarlax #227442 10:48 AM, 21 Jul 2021
    Вопрос теортерический, чтобы взять только самую позднюю запись для каждого id - что легче where in или inner join? или есть более гуманные методы?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    мерси
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #227419 #227445 10:53 AM, 21 Jul 2021
    Ничего не было , уже убил этот crd ....
  • https://t.me/clickhouse_ru
    argmax же
  • https://t.me/clickhouse_ru
    мне бы в аргумент несколько значений
  • https://t.me/clickhouse_ru
    tuple(*)
  • https://t.me/clickhouse_ru
    @dmitriynvkv #227450 10:59 AM, 21 Jul 2021
    ну * не работает, но перечислить в кортеже можно, а потом вытащить
  • https://t.me/clickhouse_ru
    мысль понял, спасибо!
  • https://t.me/clickhouse_ru
    работает
  • https://t.me/clickhouse_ru
    ну тада ваще супер пупер, может в моеё версии кх не работало...
  • https://t.me/clickhouse_ru
    я давно не проверял, но 3 года назад работало
  • @1063161973 #227455 11:55 AM, 21 Jul 2021
    Добрый день. Не могу в запросе КХ обратиться к данным базы MS SQL через табличную функцию odbc. Не подскажете, в чем может быть проблема ?
  • https://t.me/clickhouse_ru
    таблица по названию похожа на 1С

    LIMIT внутрь odbc не передается
  • Да, это база MS SQL от 1С. LIMIT убрал (в таблице 31 запись), не помогло. То же сообщение об ошибке
  • @1063161973 #227459 12:00 PM, 21 Jul 2021
    Code: 86, e.displayText() = DB::Exception: Received error from remote server /columns_info?connection_string=DSN%3Dsql06%3BUID%3Dsa%3BPWD%3D159963&schema=rw_dest&table=_Document191&external_table_functions_use_nulls=true. HTTP status code: 500 Internal Server Error, body: Error getting columns from ODBC 'std::exception. Code: 1001, type: nanodbc::database_error, e.what() = ../contrib/nanodbc/nanodbc/nanodbc.cpp:4918: 2400: [FreeTDS][SQL Server]Invalid cursor state (version 21.6.4.26 (official build))'
  • https://t.me/clickhouse_ru
    @BloodJazMan #227460 12:00 PM, 21 Jul 2021
    возможно в 1C есть поля каких то типов которые не могут сконвертироваться
  • https://t.me/clickhouse_ru
    @BloodJazMan #227461 12:00 PM, 21 Jul 2021
    попробуйте одно какое то поле выбрать
  • @1063161973 #227463 12:07 PM, 21 Jul 2021
    не помогло
  • https://t.me/clickhouse_ru
    @BloodJazMan #227464 12:09 PM, 21 Jul 2021
    а можете попробовать clickhouse 21.3 LTS вместо 21.6 ?
  • @1063161973 #227465 12:09 PM, 21 Jul 2021
    Соединение с базой проходит (если изменить логин или пароль или имя базы, получаю ошибку подключения)
  • да, это тестовый сервер. в рабочем данные из SQL утилитой bcp.exe выгружаются. хотел напрямую, пока не получилось. попробую, но чуть дольше будет
  • https://t.me/clickhouse_ru
    @BloodJazMan #227467 12:10 PM, 21 Jul 2021
    https://github.com/FreeTDS/freetds/issues/179

    воможно проблема в самом FreeTDS и том как clickhouse его использует
    SQLGetData returns "Invalid Cursor State" · Issue #179 · FreeTDS/freetds

    We are trying to read variable length Spatial data from Microsoft SQL Server Spatial 2012 on Linux using FreeTDS driver. The size of the data is not known in advance and is read using Long Data alg...

  • Спасибо. Похоже, что проблема в FreeTDS. А существует другой способ в запросе КХ обратиться к данным базы MS SQL ?
  • @kamrus #227469 12:20 PM, 21 Jul 2021
    всем привет!
    подскажите, плиз, а есть ли какой-то бест практис как подменить партицию в шардированной таблице атомарно?

    схема данных такая:
    3 шарда в каждом по 2 реплике
    на каждом по ReplicatedMergeTree таблице

    ENGINE = ReplicatedMergeTree PARTITION BY metric_src

    и на них "смотрит" Distributed таблица.

    Пока есть такой вариант: создать еще временные ReplicatedMergeTree таблицы на каждом шарде и временную Distributed, в нее записать данные и потом сделать REPLACE PARTITION, но в таком случае появляется проблема с тем, что при выполнении подмены партиции на каждом шарде может произойти сбой на одном из машин и в основной Distributed таблице будут неконсистентные данные.

    Возможно, есть какие-то другие схемы как это сделать, например, через другие движки?
  • https://t.me/clickhouse_ru
    увы нет, только odbc

    и его особо сильно не тестировали именно в связке с MSSQL

    вот тут есть примеры конфигов с которыми это все должно работать
    https://clickhouse.tech/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-sources/#example-of-connecting-ms-sql-server

    какая у вас версия freetds ? и какая OS?
    может имеет смысл обновить?
    Sources of External Dictionaries | ClickHouse Documentation

    Sources of External Dictionaries An external dictionary can be connected from many different sources. If dictionary is c

  • https://t.me/clickhouse_ru
    @akofi1e #227471 12:28 PM, 21 Jul 2021
    Всем привет. я установил clickhouse на сервере с debian c помощью apt-install. Поднял и он работает локально. Как его сделать доступным извне?
  • https://t.me/clickhouse_ru
    Server Settings | ClickHouse Documentation

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

  • Ubuntu Server 20.04 LTS, версия freetds: 7.3
  • https://t.me/clickhouse_ru
    ну, с учетом того что Distributed таблица Данные не хранит при SELECT ...

    То надо просто убедиться что REPLACE PARTITION прошел нормально...
  • по этой документации и настраивал /etc/freetds/freetds.conf
    /etc/odbcinst.ini /etc/odbc.ini
  • https://t.me/clickhouse_ru
    а какая версия MSSQL?
  • @1063161973 #227478 12:33 PM, 21 Jul 2021
    MS SQL версия 13.0.4259.0
  • https://t.me/clickhouse_ru
    мне надо указать:
    <listen_host>::</listen_host>
    <listen_host>0.0.0.0</listen_host>
    ??
  • https://t.me/clickhouse_ru
    freetds.conf
    можно попробовать

    tds version = 7.4

    поставить
    глядя на табличку
    https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-tds/135d0ebe-5c4c-4a94-99bf-1811eccb9f4a
    [MS-TDS]: Appendix A: Product Behavior

    The information in this specification is applicable to the following Microsoft products or supplemental software. References to product versions

  • @kamrus ↶ Reply to #227474 #227481 12:35 PM, 21 Jul 2021
    да, но REPLACE PARTITION нужно делать на разных шардах и может получиться такое, что на одном шарде подмена пройдет раньше чем на другом и в этот момент будет запрос на SELECT в Distributed и мы получим неконсистентные данные
  • https://t.me/clickhouse_ru
    можно только второе
  • https://t.me/clickhouse_ru
    у clickhouse, eventually consistency во многих вещах
    и многие вещи выполняются "асинхронно"

    зато без блокировок
  • https://t.me/clickhouse_ru
    @sibbarb #227484 12:37 PM, 21 Jul 2021
    Когда сджйониваешь 3 запроса, нельзя использовать using((( а вот на двух работает
  • https://t.me/clickhouse_ru
    Не помогает. CH нужно как-то перезагружать по особому? я сделал stop и start. В итоге написано, что он всё равно слушает 127.0.0.1 и не коннектит.
    И ::1 где-то берёт
  • https://t.me/clickhouse_ru
    используйте ON X=Y
    вполне себе рабочее решение...
    за исключением того что если вы используете JOIN в clickhouse то возможно вы это делаетене от хорошей жизни...
    что-то делаете не так...
  • точно, по табличке только FreeTDS 7.4 нужен. Спасибо, попробую
  • https://t.me/clickhouse_ru
    на скриншоте reload
    сделайте
    systemctl clickhouse-server restart
  • https://t.me/clickhouse_ru
    grep listen -r /etc/clickhouse-server/

    что говорит?
  • https://t.me/clickhouse_ru
    restart Сделал, не помогает.
  • https://t.me/clickhouse_ru
    ну тут джойн сам на себя. Using выводится только один столбец а ON они задваиваются(
  • https://t.me/clickhouse_ru
    ок. смотрите
    grep -r listen /var/lib/clickhouse/preprocessed_configs/config.xml
    что там?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    truncate -s 0 /var/log/clickhouse-server/clickhouse-server.log
    truncate -s 0 /var/log/clickhouse-server/clickhouse-server.err.log

    systemctl restart clickhouse-server

    и дальше смотрите логи

    /var/log/clickhouse-server/clickhouse-server.log
  • @kamrus ↶ Reply to #227483 #227495 12:46 PM, 21 Jul 2021
    получается нет никаких механизмов/хаков как можно было бы атомарно подменять данные на нескольких шардах?
  • https://t.me/clickhouse_ru
    Пока нет
    Но делают
  • https://t.me/clickhouse_ru
    А есть другие айпишники или клик запускается в докере и таи кроме 127.0.0.1 ничего и нет?
  • https://t.me/clickhouse_ru
    @akofi1e #227498 12:48 PM, 21 Jul 2021
    нет, он на сервере запускается без докера
  • @kamrus ↶ Reply to #227496 #227499 12:48 PM, 21 Jul 2021
    а это уже есть в роуд мапе? если ссылка где-то под рукой был бы очень признателен
  • https://t.me/clickhouse_ru
    Ну значит не в ту секцию в xml файле настройки добавляете
  • https://t.me/clickhouse_ru
    Part movement between shards by nvartolomei · Pull Request #17871 · ClickHouse/ClickHouse

    This is ready for feedback. Implements part uuid "pinning" and movement between shards. Part of #13574 Outstanding tasks for next PR ALTER TABLE t MOVE PART x CANCEL or similar. ...

  • https://t.me/clickhouse_ru
    в логах нашёл только эту строчку из интересного. И дальше он пишет, что слушает 127.0.0.1 и [::1]
  • @kamrus ↶ Reply to #227501 #227503 12:50 PM, 21 Jul 2021
    Спасибо!
  • https://t.me/clickhouse_ru
    @bralbral #227504 12:53 PM, 21 Jul 2021
    Добрый день. Имеется 2 дц. Как можно организовать репликацию в одну сторону, т.е чтобы в первом дц были записи из 1 и 2 , а во втором только из 2? Или же это не replicatedт таблицами решается и нужно буферизовать инсерты и заливать самим
  • https://t.me/clickhouse_ru
    ну или даже не тот конфиг правите. проверьте используется ли вообще этот конфиг или нет, а также используется ли вообще эта секция или нет
  • https://t.me/clickhouse_ru
    путь соответствует тому, что в логах
  • https://t.me/clickhouse_ru
    @akofi1e #227507 12:55 PM, 21 Jul 2021
    а секция там одна такая
  • @snoopyin #227508 12:56 PM, 21 Jul 2021
    А есть какой-то способ узнать размер Matrrialized View созданного с указанием Engine (то есть без TO)?
  • https://t.me/clickhouse_ru
    посмотреть таблицу .inner.mv_name
  • https://t.me/clickhouse_ru
    ну у всех то работает. так что вы что-то делаете не так. что-то где то упустили. в таком случае нужно скрины, которые бы показали, что процесс использует именно этот конфиг, что именно в этом конфиге внесены изменения, что рестартует без ошибок.
  • https://t.me/clickhouse_ru
    атомарность возможна в рамках одного сервера REPLACE PARITION именно это и делает

    но о какой атомарности идет речь, если репликация асинхронная?

    если в шарде несколько реплик. то подмена парта в реплике по идее стартует процесс помещения этого нового парта в ZK
    и дальнейший его fetching средствами другой реплики clickhouse

    distributed вообще ни о какой атомарности не знает и не знает даже что там за таблица будет на принимающем сервере под капотом

    при вставке в нее там просто временные файлы создаются которые потом через distributed sends в шарды пропихиваются
    а при select просто идет обычный SQL подзапрос в котором вместо аггрегатных функций делается aggfunctionState
    который потом домерживается уже на ноде инициаторе
  • https://t.me/clickhouse_ru
    так все эти скрины были выше
  • https://t.me/clickhouse_ru
    смотрим SHOW TABLES
    находим .inner таблицу
    дальше в system.tables смотрим total_bytes для этой таблицы
  • https://t.me/clickhouse_ru
    "атомарность" разве там есть ?
  • https://t.me/clickhouse_ru
    вы сделали как вам сказали вот тут
    https://t.me/clickhouse_ru/227494 ?

    что в логах показывается?
    Slach [altinity] in ClickHouse не тормозит

    truncate -s 0 /var/log/clickhouse-server/clickhouse-server.log truncate -s 0 /var/log/clickhouse-server/clickhouse-server.err.log systemctl restart clickhouse-server и дальше смотрите логи /var/log/clickhouse-server/clickhouse-server.log

  • https://t.me/clickhouse_ru
    Для переездов партов между шардами?
    Да, конечно.
  • Спасибо, вижу несколько .inner таблиц с uuid в названии, а как сопоставить с конкретным MV?
  • https://t.me/clickhouse_ru
    не хватает systemctl status clickhouse-server
  • рахобрался, спасибо за ответы
  • https://t.me/clickhouse_ru
    SHOW CREATE MATERIALIZED VIEW db.ваш_mv SETTINGS show_table_uuid_in_table_create_query_if_not_nil=1
  • https://t.me/clickhouse_ru
    ip addr
    netstat -tulpn | grep clickhouse
  • https://t.me/clickhouse_ru
    вот логи
  • https://t.me/clickhouse_ru
    @akofi1e #227523 01:15 PM, 21 Jul 2021
    В логах написано что конфиг загружается нужный, но адреса почему-то не те
  • https://t.me/clickhouse_ru
    @akofi1e #227524 01:15 PM, 21 Jul 2021
    вот конфиг
  • https://t.me/clickhouse_ru
    так и думал. вы сами-то конфиг смотрели?
  • https://t.me/clickhouse_ru
    @akofi1e #227526 01:19 PM, 21 Jul 2021
    конечно, я же его и правил, что не так?)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    откройте его и посмотрите ещё раз, даже самый невыспавшийся человек сможет заметить, там даже цветом отличается :)
  • https://t.me/clickhouse_ru
    для тех кто ещё спит: эта настройка закомментирована :)
  • https://t.me/clickhouse_ru
    спасибо) Я с xml особо никогда не работал
  • https://t.me/clickhouse_ru
    ну, теперь вы знаете, почему там другим цветом :) кстати на будущее: также комментируется и в html, потому что это подмножество xml
  • https://t.me/clickhouse_ru
    Всё заработало, спасибо вам большое, буду знать)
  • https://t.me/clickhouse_ru
    @aandrey5 #227533 01:32 PM, 21 Jul 2021
    Всем привет , кто-нибудь использовал движок MaterializedPostgreSQL для перегона данных из PostgreSQL в Clickhouse?
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #227504 #227534 01:34 PM, 21 Jul 2021
    Я _думаю_ что нужно во втором дц делать materialized view, который будет вставлять в таблицу в первом дц через remote.
  • https://t.me/clickhouse_ru
    его ещё даже в доке нету, да и в стейбл ветках тоже не видно
  • https://t.me/clickhouse_ru
    @aandrey5 #227536 01:35 PM, 21 Jul 2021
    https://clickhouse.tech/docs/en/engines/database-engines/materialized-postgresql/ - тут про это написано, но чего то у меня не взлетело.
    MaterializedPostgreSQL | ClickHouse Documentation

    [experimental] MaterializedPostgreSQL Creates ClickHouse database with an initial data dump of PostgreSQL database table

  • https://t.me/clickhouse_ru
    а, я на русском искал. в общем в вашей версии клика его наверно ещё нет
  • https://t.me/clickhouse_ru
    @aandrey5 #227538 01:36 PM, 21 Jul 2021
    Понятно, спасибо
  • https://t.me/clickhouse_ru
    html родился до xml , как он может быть подмножеством?
    там нет строгих требований про закрытые теги и т.д.
  • https://t.me/clickhouse_ru
    @hostadminonline #227541 01:46 PM, 21 Jul 2021
    Добрый день
    хотим расширить КХ на 2 шарда с одного, все таблицы на ReplicatedReplacingMergeTree
    какие могут быть подводные камни ? .... возможно что-то надо подготовить к данному процессу ?
  • https://t.me/clickhouse_ru
    я имел ввиду современный html, а точнее HTML 5, он же XHTML, но ему мало кто соответствует
  • https://t.me/clickhouse_ru
    надо выбрать ключ шардирования, если хочется чтобы Replacing работал, надо чтобы записи с одинаковым ключом попадали преимущественно на один шард
  • https://t.me/clickhouse_ru
    зачем все это? В КХ вообще нет атомарности и durability даже в рамках одного сервера. Все кто говорят обратное просто не понимают тонкостей.
  • https://t.me/clickhouse_ru
    а он не по primary key шардирует ?
  • https://t.me/clickhouse_ru
    нет. MergeTree таблицы не в курсе про кластер и про шардирование. На самом деле 2 ReplicatedMergeTree таблицы в разных шардах это ДВЕ/N РАЗНЫЕ таблицы. У них просто одинаковое имя -- это необязательно. Эти ДВЕ ТАБЛИЦЫ не связаны вообще.
  • https://t.me/clickhouse_ru
    ок ... спасибо
  • https://t.me/clickhouse_ru
    @den_crane #227548 01:59 PM, 21 Jul 2021
    Каждый шард это отдельная сущность, она вообще не подозревает что шардов много.
    Запросы on_cluster это просто хелпер, который выполняет запросы на каждой ноде, я не пользуюсь on_cluster
  • https://t.me/clickhouse_ru
    ну т.е. я так понял что автоматического распределения данных при добавлении шарда здесь нет ?
  • https://t.me/clickhouse_ru
    @hostadminonline #227550 02:00 PM, 21 Jul 2021
    и каждый раз при добавлении шарда нужно по сути перезаливать все данные
  • https://t.me/clickhouse_ru
    решардинга? нет, и еще долго не будет, появится наверное лет через 10.
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    ок 🙂 спасибо
  • https://t.me/clickhouse_ru
    @hostadminonline #227554 02:03 PM, 21 Jul 2021
    а для приложения есть какие-то изменения ? приложению самому нужно определять в какой шард обращаться или оно само ? 🙂
  • https://t.me/clickhouse_ru
    @iakubovskii7 #227557 02:06 PM, 21 Jul 2021
    Добрый вечер! Хотим сэкономить память на хранении словарей в столбце и хранить не чисто стринговыми значениями, а при помощи, например hash-словарей. Это возможно вообще?
  • https://t.me/clickhouse_ru
    @Zhe700 #227558 02:08 PM, 21 Jul 2021
    Добрый день! Подскажите плиз: я подключаю движок ПГ
    https://clickhouse.tech/docs/ru/engines/database-engines/postgresql/
    и когда пытаюсь посмотреть таблицы кх ругается:

    SQL Error [60]: ClickHouse exception, code: 60, host: 192.168.235.72, port: 8123; Code: 60, e.displayText() = DB::Exception: PostgreSQL table etl."telegram_chats" does not exist: While executing Tables (version 21.4.6.55 (official build))

    я так понимаю и-за того что не указана схема, можно ли это как-то обойти?)
    PostgreSQL | Документация ClickHouse

    PostgreSQL Позволяет подключаться к БД на удаленном сервере PostgreSQL. Поддерживает операции чтения и записи (запросы S

  • https://t.me/clickhouse_ru
    Distributed таблица умеет шардить
  • https://t.me/clickhouse_ru
    эээ LowCardinality ?
  • https://t.me/clickhouse_ru
    это норм, когда в столбце для каждой строки меняются ключи?
  • https://t.me/clickhouse_ru
    в смысле все String разные всегда и не повторяются?
  • https://t.me/clickhouse_ru
    ключи могут исчезать и появляться новые
  • @subotic0 #227564 02:12 PM, 21 Jul 2021
    Добрый день, а можете пояснить, почему этот запрос выдает пустую строку
    select argMax(str, dt) from (select 10 as id, 'val' as str, today() as dt) where id != 10;
    но если в него добавить группировку, тогда ничего не возвращается (ожидаемое поведение)
  • https://t.me/clickhouse_ru
    давайте конкрентые примеры, вот например есть http user agent. Он длинный, вы не хотите хранить его в таблице, вы хотите хранить хеш, но user agent-в много и они очень редко повторяются, речь про это?
  • https://t.me/clickhouse_ru
    не совсем
    есть словарик, где пар ключ-значение может быть от 50 до 250 за одну строчку
    и для каждой строчки какие-то ключи могут исчезать и повляться
  • https://t.me/clickhouse_ru
    там как бы null просто этого не видно

    set aggregate_functions_null_for_empty=1
    ┌─argMaxOrNull(str, dt)─┐
    │ ᴺᵁᴸᴸ │
    └───────────────────────┘

    тоже самое

    select max(str) from (select 10 as id, 'val' as str, today() as dt) where id != 10;
    ┌─maxOrNull(str)─┐
    │ ᴺᵁᴸᴸ │
    └────────────────┘

    select id, max(str) from (select 10 as id, 'val' as str, today() as dt) where id != 10 group by id;
    0 rows in set

    в стандартном SQL , в mysql / pg/ sqlite тоже самое
  • https://t.me/clickhouse_ru
    ниче не понял
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    ну ОК, добавим в таблицу две колонки массива key Array(String), value Array(String). Тоже самое Nested , тоже самое новый Map
    причем тут хеши? key повторяются? value повторяются?
  • https://t.me/clickhouse_ru
    тогда ведь слишком много строк станет
    повторяются key и повторяются values
  • https://t.me/clickhouse_ru
    в смысле у каждого ключа всегда известен/жестко задан value ?
  • https://t.me/clickhouse_ru
    он меняется, в том и дело
    меняется в зависимости от значений двух других столбцов
  • https://t.me/clickhouse_ru
    и вы не хотите хранить value в таблице?
  • https://t.me/clickhouse_ru
    хочу как-то сэкономить память для такого типа данных
    когда храню как стринг, то очень много жрет
  • https://t.me/clickhouse_ru
    ну есть external dictionary , туда можно сделать dictGet(..... tuple(key, два других столбца))
  • https://t.me/clickhouse_ru
    но это ведь можно делать только на основании уже существующих данных в базе? т.е. постоянно его обновлять нужно при добавлении новых строк?
  • https://t.me/clickhouse_ru
    ну да, в ETL это надо
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @trimon999 #227582 02:41 PM, 21 Jul 2021
    всем привет, отвалилась табличка в ридонли, в логах такое: There is a problem with deleting parts from ZooKeeper: Code: 999, e.displayText() = Coordination::Exception: Session expired (Session expired), Stack trace (when copying this message,
    always include the lines below):
    Как такое чинить? Зукипер с виду ок
  • https://t.me/clickhouse_ru
    @trimon999 #227583 02:42 PM, 21 Jul 2021
    Пути в зк есть
  • https://t.me/clickhouse_ru
    @trimon999 #227584 02:42 PM, 21 Jul 2021
    и он доступен
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #227535 #227585 02:51 PM, 21 Jul 2021
    а где есть? Поставил 21.9.1 на мак, но там похоже тоже нет:
    MaterializedPostgreSQL is an experimental database engine. Enable allow_experimental_database_postgresql_replica to use it.. (UNKNOWN_DATABASE_ENGINE)
    этот allow давал в create database и в серверном конфиге.
  • https://t.me/clickhouse_ru
    это свойства профиля
  • https://t.me/clickhouse_ru
    зукипер не рестартовали случайно?

    SYSTEM RESTART REPLICAS
    помогает?
  • https://t.me/clickhouse_ru
    @trimon999 #227588 02:54 PM, 21 Jul 2021
    Зукипер не рестартовал, есть ощущение что отвалился от нагрузки, рестарт помог да
  • https://t.me/clickhouse_ru
    посмотрите на гитхабе, вбиваете в поиске MaterializedPostgreSQL, находите коммит, в котором эта фича была добавлена, смотрите ветки у этого комита
  • https://t.me/clickhouse_ru
    под словом нагрузка имеется ввиду много одновременных INSERT в ReplicatedMergeTree?
  • https://t.me/clickhouse_ru
    @trimon999 #227591 03:04 PM, 21 Jul 2021
    Не, там активно писали в табличку, после чего отвалился зукипер с такой ошибкой и она ушла в ридонли
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #227589 #227592 03:09 PM, 21 Jul 2021
    там во всем репозитории этот allow_experimental_database_postgresql_replica встречается только 1 раз в эксепшене, а в сеттингах другое имя - allow_experimental_database_materialized_postgresql
  • https://t.me/clickhouse_ru
    логи zookeeper смотрели?
    там одна нода или несколько?
  • https://t.me/clickhouse_ru
    @trimon999 #227594 03:11 PM, 21 Jul 2021
    Несколько, зукипер смотрел
  • https://t.me/clickhouse_ru
    так я вам про allow_experimental_database_postgresql_replica ничего и не говорил, я писал вам про MaterializedPostgreSQL
  • https://t.me/clickhouse_ru
    вот пуллрекветст MaterializedPostgreSQL https://github.com/ClickHouse/ClickHouse/pull/20470
    вот все его комиты https://github.com/ClickHouse/ClickHouse/pull/20470/commits
    нажимаете на первый попавшийся комит и вуаля, только тестинг и престейбл.
    о чём я уже выше и писал:
    >его ещё даже в доке нету, да и в стейбл ветках тоже не видно
    у вас тестовый или престейбл кх установлен?
    MaterializePostgreSQL table engine and database engine by kssenii · Pull Request #20470 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    слово expire там в логах есть?
  • https://t.me/clickhouse_ru
    @trimon999 #227599 03:29 PM, 21 Jul 2021
    вот не помню, у нас почему то только лог вывода стдаут зуки, а он перезатерся так как я в попытках починить рестартанул его
  • https://t.me/clickhouse_ru
    @m_pilipenko #227600 03:35 PM, 21 Jul 2021
    Привет, ребят. Команда вида:
    zcat out-s0.csv.gz | head -1000 | clickhouse-client --query="INSERT INTO test.table FORMAT CSV"

    Дает ошибку
    Code: 441. DB::Exception: Invalid IPv4 value.: data for INSERT was parsed from stdin

    Таблица table содержит колонку типа IPv4. Можно ли как-то переформатировать тип колонки при вставке из stdin?
  • https://t.me/clickhouse_ru
    можно input function. Но вообще строка с ip должна залезать в IPv4 автоматически, там пустые строки может есть? это наверное решаемо параметрами
  • https://t.me/clickhouse_ru
    zcat out-s0.csv.gz | head -1 | clickhouse-client --query="INSERT INTO test.table FROM input('ip IPv4, time_local DateTime, request String, status UInt8, body_bytes_sent UInt16, http_referer String, http_user_agent String') FORMAT CSV"

    Code: 62. DB::Exception: Syntax error: failed at position 35 ('FROM'): FROM input('ip IPv4, time_local DateTime, request String, status UInt8, body_bytes_sent UInt16, http_referer String, http_user_agent String') FORMAT CSV. Expected one of: WATCH, OpeningRoundBracket, SELECT, VALUES, FORMAT, WITH, token
    😕

    Не понимает функцию input. Пробую пока одну строку хотя-бы всунуть. Так выглядит

    xx.xxx.xxx.xxx 2021-07-20 00:03:32 POST /some-url HTTP/1.1 200 333 https://some-url Mozilla/5.0
  • https://t.me/clickhouse_ru
    неправильно написано, select нету, и логично тогда объявить ip String, а в select конвертировать, в этом и есть смысл input function, секция select позволяет сделать extract transform
  • https://t.me/clickhouse_ru
    @den_crane #227604 04:05 PM, 21 Jul 2021
    ну и xx.xxx.xxx.xxx 2021-07-20 00:03:32 POST /some-url HTTP/1.1 200 333 https://some-url Mozilla/5.0 -- вообще не CSV ни разу
  • https://t.me/clickhouse_ru
    @den_crane #227605 04:05 PM, 21 Jul 2021
    CSV -- comma!!!! separated values
  • https://t.me/clickhouse_ru
    почитать этот чатик, складывается впечатление, что кликхаус настолько у всех на устах, что его пытаются юзать даже люди не знающие csv,xml,json,sql и т.д. и при этом каким-то чудом у них это даже кое-как это получается :)
  • https://t.me/clickhouse_ru
    думаю зумерам это не нужно, у них так все хорошо
  • https://t.me/clickhouse_ru
    Что доказывает что кх- классный)
  • https://t.me/clickhouse_ru
    @critskiy #227609 04:40 PM, 21 Jul 2021
    Скорее доказывает, что hype driven development процветает, кек :)
  • @kamrus ↶ Reply to #227544 #227610 05:03 PM, 21 Jul 2021
    идея следующая: раз в сутки приходит кусок данных для одной партиции и нужно его обновить и не хотелось бы, чтобы на момент обновления пользователь прочитал через Distributed таблицу с одного шарда старые данные, а с другого новые
  • https://t.me/clickhouse_ru
    @hostadminonline #227611 05:55 PM, 21 Jul 2021
    добрый вечер, подскажите когда нужно задумываться об изменении размера гранулы ?
    у меня таблица в которой первичный ключ почти всегда разный и там много записей, соответственно выбрать от туда ряд определенных записей очень сложно, каким образом можно ускориться ? на ум приходит уменьшение размера гранулы ....
  • https://t.me/clickhouse_ru
    @alexander_trofimov #227612 06:13 PM, 21 Jul 2021
    Коллеги, подскажите, пожалуйста: есть nullable колонка в CH и внешний словарь из MySQL где так же есть nullable значения – при попытке сделать запрос where chNullableColumn = mysqlNullableColumn записи содержащие NULL выбрасываются. Это как-то фиксится? )
  • https://t.me/clickhouse_ru
    Null != Null же
  • https://t.me/clickhouse_ru
    вы в курсе что размер гранулы по умолчанию адаптивный? Вам рано задумываться
  • https://t.me/clickhouse_ru
    ни чего про это в доке не нашел ... по умолчанию index_granularity=8192
  • https://t.me/clickhouse_ru
    @hostadminonline #227616 06:16 PM, 21 Jul 2021
    я проэкспериментировал на куске данных в 25 млн .... при грануле в 8192 поиск составил 4.5 секунды а при 4096 = 4.1 секунды .... разница мне кажется в порядке погрешности
  • https://t.me/clickhouse_ru
    Адаптивная гранулярность индекса в MergeTree таблицах

    Александр Сапин, Яндекс Слайды: https://github.com/clickhouse/clickhouse-presentations/raw/master/meetup27/adaptive_index_granularity.pdf

  • https://t.me/clickhouse_ru
    @sibbarb #227618 06:16 PM, 21 Jul 2021
    Гайс , а почему говорят что в клике не работают джойны, сегодня прекрасно все сджойнилочь, в разы быстрее чем в мускуле
  • https://t.me/clickhouse_ru
    вам это не нужно пока, вы потом поймете
  • https://t.me/clickhouse_ru
    🙈спасибо!
  • https://t.me/clickhouse_ru
    1 алгоритм только, при большиз данных memory error
  • https://t.me/clickhouse_ru
    речь про то что две таблицы по 100млрд строк тяжело в КХ сджойнить.
  • https://t.me/clickhouse_ru
    просто 4.5 секунды это много и жрет много памяти ... сижу думаю че с этим можно еще сделать
  • https://t.me/clickhouse_ru
    Джоины нормально работают, если нужно и достаточно брутфорсом.
    А если какие нибудь хитрые условия и нужны оптимизации, то тут уже проблема.
  • https://t.me/clickhouse_ru
    покажите таблицу ddl и запрос
  • https://t.me/clickhouse_ru
    @sibbarb #227626 06:18 PM, 21 Jul 2021
    Где вы нашли бд на 100 млрд строк) у меня на работе 2-3 максимум
  • https://t.me/clickhouse_ru
    попробуйте при джойне указать условие больше-меньше :)
  • https://t.me/clickhouse_ru
    Полагаю , будет плохо
  • https://t.me/clickhouse_ru
    select count() from fact_event;
    ┌───────count()─┐
    │ 1561682172485 │
    └───────────────┘

    это маленькая, тут полно людей с трилионами
  • https://t.me/clickhouse_ru
    ага, ошибка :)
  • https://t.me/clickhouse_ru
    @sibbarb #227631 06:21 PM, 21 Jul 2021
    Триллионы , это банки например ? Ну либо там фиксируется каждый чих
  • https://t.me/clickhouse_ru
    да обычный кликстрим, скролы мышкой вот это все, откуда в банке столько ивентов.
  • https://t.me/clickhouse_ru
    скорее неправильная архитектура :)
    триллионы записей - это ок, но если в джойне и слева и справа такие таблицы на регулярной основе, то что-то пошло не так
  • https://t.me/clickhouse_ru
    CREATE TABLE xxx ON CLUSTER c9q930o5i86rsdloqlc9
    (
    date DateTime,
    ssid String,
    sourceId UInt64,
    ssidHash UInt64 DEFAULT sipHash64(ssid)
    )
    ENGINE = ReplicatedMergeTree()
    PRIMARY KEY (date)

    CREATE TABLE yyy ON CLUSTER c9q930o5i86rsdloqlc9
    (
    date DateTime,
    ssid String,
    type String,
    ssidHash UInt64 DEFAULT sipHash64(ssid)
    )
    ENGINE = ReplicatedMergeTree()
    PRIMARY KEY (ssidHash)

    select count(distinct b.ssid) from xxx a left join yyy b ON (b.ssidHash = a.ssidHash) where a.date > now() - interval 14 day
  • https://t.me/clickhouse_ru
    эээ при чем тут гранулярити. КХ не использует индексы для джойнов, вы без джона запрос покажите
  • https://t.me/clickhouse_ru
    вам скорее надо про словари почитать
  • https://t.me/clickhouse_ru
    т.е. он для джоина всегда применяет фул скан ?
  • https://t.me/clickhouse_ru
    конешно
  • https://t.me/clickhouse_ru
    @hostadminonline #227639 06:26 PM, 21 Jul 2021
    ну т.е. я данной ситуации запрос с джоином вообще ни как не ускорить ?
  • https://t.me/clickhouse_ru
    @den_crane #227640 06:27 PM, 21 Jul 2021
    ничего быстрее фулскан + hashJoin пока не придумали. Индексы слишком медленны и однопоточны
  • https://t.me/clickhouse_ru
    словари. Джойн тут не нужен, нужен dictGet
  • https://t.me/clickhouse_ru
    270 млрд строк не сунуть в память (
  • https://t.me/clickhouse_ru
    в обеих таблицах? И как джойн работает? Память арендует в подпространстве?
  • https://t.me/clickhouse_ru
    @den_crane #227644 06:29 PM, 21 Jul 2021
    правая таблица целиком помещается в память в хештаблицу, и получается словарь примерно на 99%
  • https://t.me/clickhouse_ru
    оригинальные таблицы имеют партицирование в итоге примерно получается по 15-30 млн строк
  • https://t.me/clickhouse_ru
    @hostadminonline #227646 06:29 PM, 21 Jul 2021
    работает .... но очень медленно в итоге
  • https://t.me/clickhouse_ru
    @hostadminonline #227647 06:29 PM, 21 Jul 2021
    а если это пихать в память то все 270 млрд пойдет в память
  • https://t.me/clickhouse_ru
    словари умеют не все пихать.

    я не вижу здесь условия на правую таблицу? a left join yyy b ON (b.ssidHash = a.ssidHash) where a.date > now() - interval 14 day
  • https://t.me/clickhouse_ru
    да все верно .... левая таблица содержит больше или равное количество значений чем правая и необходимо считать количество в левой и количествов правой для вычисления расхождений
  • https://t.me/clickhouse_ru
    Clickhouse fast not exists

    Clickhouse fast not exists . GitHub Gist: instantly share code, notes, and snippets.

  • https://t.me/clickhouse_ru
    ооОО это прям круто ..... но по всей видимости DataLens так не умеет при построении графиков (
  • @GooG2e ↶ Reply to #227641 #227652 06:44 PM, 21 Jul 2021
    А можно пример?
    Как сджойнить таблицы по словарю?
  • https://t.me/clickhouse_ru
    ну dictGet это взять из словаря значение по ключу, это типа left join
    но вообще КХ переписывает join c таблицей словаря в dictGet-ы сам
  • 22 July 2021 (137 messages)
  • https://t.me/clickhouse_ru
    @ezotrank #227656 04:49 AM, 22 Jul 2021
    День добрый, а может кто подскажет, делаю запрос на destibuted таблицу с 4 шарадами, и в какой то момент времени по логам вижу, что все остановилось секунд на 10. Запрос на дестрибьйютед таблице отрабатывает за 30с, хотя если делать запрос на каждом шарде то он выполняется за 3с.
    https://gist.github.com/ezotrank/6e77f8330e9910fa1a3ad0af4548306f
    gist:6e77f8330e9910fa1a3ad0af4548306f

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

  • https://t.me/clickhouse_ru
    @ezotrank #227657 04:50 AM, 22 Jul 2021
    Меня еще такая строчка в логах смущает
    <Trace> Aggregator: Merging partially aggregated blocks (bucket = -1).
  • https://t.me/clickhouse_ru
    @ezotrank #227659 05:35 AM, 22 Jul 2021
    Вроде нашел из-за чего затык происходит, это uniq в запросе с группировкой
  • @GooG2e ↶ Reply to #227653 #227661 07:44 AM, 22 Jul 2021
    а я правильно понимаю, что получается там надо все атрибуты из таблицы вытащить,чтобы иметь к ним доступ и это не просто своеобразный индекс?
  • @1046362539 #227663 07:51 AM, 22 Jul 2021
    Ого, какой канал замечательный! Всем привет
  • @1046362539 #227664 07:52 AM, 22 Jul 2021
    Есть вопрос по clickhouse-cpp. Вроде бы библиотека теперь форкнута самим Clickhouse и как бы поддерживается, но если посмотреть на issues - они по большей части без ответов. Это настораживает. Пользоваться можно?
  • @1046362539 #227665 07:53 AM, 22 Jul 2021
    Альтернатив-то особо нет. Не odbc же брать, в самом деле.
  • @TheCluster #227667 08:12 AM, 22 Jul 2021
    Приложение (cron-скрипт) иногда падает с ошибкой:

    Error: Estimated query execution time (21.004247142402 seconds) is too long. Maximum: 20. Estimated rows to process: 755829243: While executing MergeTreeThread

    При этом, если скопировать запрос в консоль и выполнить вручную, он выполняется за ~2 секунды. Где искать проблему?
  • https://t.me/clickhouse_ru
    @nukekz #227668 08:21 AM, 22 Jul 2021
    Добрый день. После обновления clickhouse c версии 20.1 до 21.7, в http интерфейсе указывается старая версия, в консольном интерфейсе - новая. Не подскажете как обновить http версию?

    #clickhouse-client -m
    ClickHouse client version 21.7.4.18 (official build).

    #curl 'http://localhost:8123/?query=SELECT 1'
    Code: 62, e.displayText() = DB::Exception: .... (version 20.1.6.30 (official build))

    #ps aux | grep -i clickhouse
    clickho+ 1101 2.3 4.0 9753884 241312 ? Ssl Jun30 ...
    root 14330 0.0 0.0 112716 988 pts/0 S+ 08:18 ...
  • посмотрите побольше про dictionary.
    Как правило, словарь это поднятые в память данные. Словарь можно сделать из файла, над таблицей КХ, над вью, или вообще из другой БД.
  • https://t.me/clickhouse_ru
    ClickHouse client version 21.7.4.18 (official build).
    It's client версия, вы рестартнули кликхаус сервер?
  • https://t.me/clickhouse_ru
    @nukekz ↶ Reply to #227671 #227672 08:27 AM, 22 Jul 2021
    Попытался

    #service clickhouse-server restart
    Init script is already running
  • @GooG2e ↶ Reply to #227670 #227673 08:27 AM, 22 Jul 2021
    вот у меня как бы тоже было такое представление
    просто я читал, что типо словарь может помочь джойнить две большие таблицы, чтобы пропустить этап с хешированием правой таблицы
  • https://t.me/clickhouse_ru
    Эт продакшен?
  • https://t.me/clickhouse_ru
    @nukekz #227675 08:28 AM, 22 Jul 2021
    Нет это домашний компьютер
  • https://t.me/clickhouse_ru
    @nukekz #227676 08:29 AM, 22 Jul 2021
    Весь сервер перезагрузить нужно?
  • https://t.me/clickhouse_ru
    @unamedrus #227677 08:29 AM, 22 Jul 2021
    А, ок

    ну попробуйте SYSTEM SHUTDOWN; в кликхаус клиенте
  • так вы хотите сджойнить две большие таблицы?
  • https://t.me/clickhouse_ru
    @nukekz ↶ Reply to #227677 #227679 08:29 AM, 22 Jul 2021
    Оо, спасибо!
  • @GooG2e ↶ Reply to #227678 #227680 08:31 AM, 22 Jul 2021
    да. Причём желательно без ограничений по столбцам, которые в словарь лягут.
    Пока просто пытаюсь понять насколько сильно нужно переделывать существующую структуру, чтобы пользоваться ей в кликхаусе, потому что поглядываю на неё и понимаю, что всё крайне печально
  • @GooG2e #227681 08:32 AM, 22 Jul 2021
    просто так они уже не джойнятся - оперативка тупо заканчивается, да и не хочется на каждый такой запрос сжирать столько оперативки в процессе т.к. таких запросов может быть достаточно много
  • есть cache словари
    ну и если вам джойнить 2 большие таблицы, то вы что-то делаете не так для КХ.
  • @GooG2e ↶ Reply to #227682 #227683 08:35 AM, 22 Jul 2021
    хмм, спасибо
    тогда буду думать над тем как это попытаться разложить в одну табличку
    спасибо
  • https://t.me/clickhouse_ru
    Словарь помогает пропустить этап поднятия правой таблицы в хеш.
    Что ускоряет запросы, если у вас много коротких запросов, которые используют сравнительно большую таблицу справа.
  • @GooG2e ↶ Reply to #227684 #227685 08:36 AM, 22 Jul 2021
    так - тогда непонятно
    при этом есть ограничения на то какие столбцы будут браться из правой или левой таблицы?
  • @GooG2e #227686 08:37 AM, 22 Jul 2021
    просто я смотрю синтаксис создания словаря и там тип выбираются ключевые поля и атрибуты т.е. как я понимаю ключевые значения и что по ним достаётся, а как сделать вот это самое пропускание хэширования я не совсем понял.
    Если не сложно можно на примере двух табличек - заранее спасибо
  • https://t.me/clickhouse_ru
    > пропускание хэширования

    Что я имею в виду под пропустить хеширование таблицы:

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

    В случае JOIN об словарь (или об JOIN таблицу) эта правая хеш-таблица делается только один раз, и потом переиспользуется
  • https://t.me/clickhouse_ru
    @unamedrus #227688 08:40 AM, 22 Jul 2021
    вот и вся разница
  • @GooG2e ↶ Reply to #227687 #227689 08:41 AM, 22 Jul 2021
    Ок, это отлично. Только непонятно, а что нужно написать в создании словаря. Добавить только ключевые поля, по которым идёт соединение?
  • https://t.me/clickhouse_ru
    > Добавить только ключевые поля, по которым идёт соединение?
    Угу

    Имеет смысл посмотреть в сторону sparse_hashed если у вас UInt64, жрет в 3 раза меньше памяти чем обычное хеширование но и в 3 раза медленнее работает.
    https://clickhouse.tech/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-layout/#dicts-external_dicts_dict_layout-sparse_hashed
    Storing Dictionaries in Memory | ClickHouse Documentation

    Storing Dictionaries in Memory There are a variety of ways to store dictionaries in memory. We recommend flat, hashed an

  • https://t.me/clickhouse_ru
    @daniilpozdeevv #227693 08:59 AM, 22 Jul 2021
    Ребят, привет!
    У вас нет интересных задачек по sql на CH диалекте?
  • @GooG2e ↶ Reply to #227691 #227694 09:00 AM, 22 Jul 2021
    тогда непонятно - пытаюсь создать словарь, но требуются атрибуты (ошибка)

    CREATE DICTIONARY wags_dict(
    irn UInt32
    ,nsost UInt8
    )
    PRIMARY KEY irn, nsost
    SOURCE (CLICKHOUSE(HOST '127.0.0.1' PORT 9000 USER 'default' TABLE 'wags_n' PASSWORD '' DB 'default'))
    LAYOUT ( COMPLEX_KEY_HASHED() )
    LIFETIME ( 3600 )
  • https://t.me/clickhouse_ru
    @unamedrus #227695 09:02 AM, 22 Jul 2021
    М, я неправильно вас понял.

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

    Нужно добавить ключевые поля и атрибуты. ведь мы из словаря извлекаем нужные нам данные. (которые уже лежат по разным ячейкам хештаблицы)
  • @GooG2e ↶ Reply to #227695 #227696 09:05 AM, 22 Jul 2021
    а вот тогда и получается проблема - будет ли какое-то преимущество, если я тупо в словарь в атрибуты запишу все столбцы таблицы? т.е. это же по факту дважды хранить одну и ту же большую табличку в разных структурах?
  • https://t.me/clickhouse_ru
    Ну это уже вам самим находить баланс между использованием памяти и скоростью выполнения запросов.
  • @GooG2e #227699 09:07 AM, 22 Jul 2021
    Ок, спасибо большое за разъяснения
    Была надежда, что есть некая серебряная пуля для джойнов в CH
    А движок для джойна значительно замедляет поиск по таблице
  • @anotherbugmaster #227700 09:54 AM, 22 Jul 2021
    Привет!

    У меня есть бакет на S3, в который льются логи в виде JSON в gzip, я хочу эти логи перелить в CH. Для стриминга логов использую vector.dev, всё работает, но есть несколько вопросов:

    1. Как лучше сделать бэкфилл в CH? Думаю сейчас взять s3 table function и из неё делать INSERT в основную таблицу, но проблема в том, что логи нужно немного парсить, получится 2 конфигурации парсинга, для CH и для Vector. Можно ли как-то этого избежать? Например при вставке в определённую таблицу парсить строчку с JSON при помощи CH, а потом удалять строчку из таблицы?

    2. Как сейчас делают миграцию схемы таблицы? goose/clickhouse-sqlalchemy/clickhouse-migrator, кто чем пользуется?
  • https://t.me/clickhouse_ru
    1. JSONExtract ? зачем удалять, просто рядом оставьте распаршенное

    2. тут любой тул который умеете для миграций, но есть всякие особенности в кластерном clickhouse https://t.me/clickhouse_ru/226366
    Slach [altinity] in ClickHouse не тормозит

    два варианта 1) не использовать ON CLUSTER в SQL... и для реплицируемых таблиц писать ALTER TABLE ... ADD COLUMN IF NOT EXISTS и т.п. 2) либо использовать ON CLUSTER всегда и запускать миграции ТОЛЬКО на одной ноде (любой) а default.migration_schema создавать самому с Engine=ReplicatedMergeTree

  • @anotherbugmaster #227702 10:04 AM, 22 Jul 2021
    Рядом можно оставить, но строчки будут много места занимать + одинаковых значений в такой колонке не будет, то есть сжатие тоже не сделать
  • https://t.me/clickhouse_ru
    Ну сжатие работает вне зависимости от того "одинаковые" у вас значения или нет...
    оно блочное внутри колонки
  • https://t.me/clickhouse_ru
    вам исходные JSON то при этом нужны?
    может проще трансформировать как набудь на строне vector.dev ? и в clickhouse отдавать уже готовое?
  • Оу, я наивно думал, что используется RLE
  • Я так и делаю сейчас, vector парсит Json и отдаёт нужные колонки. Но я не могу с его помощью сделать backfill
  • @anotherbugmaster #227707 10:46 AM, 22 Jul 2021
    Исходные JSON мне не нужны после обработки
  • @anotherbugmaster #227708 10:47 AM, 22 Jul 2021
    Просто в идеале хотелось бы делать все манипуляции с данными в одном месте (с помощью функций CH например) и для backfill, и для стриминга
  • https://t.me/clickhouse_ru
    @unamedrus #227709 10:51 AM, 22 Jul 2021
    Не понимаю вашу проблему если честно, но можно парсить с помощью Null table engine + Materialized View
  • https://t.me/clickhouse_ru
  • @anotherbugmaster #227711 10:55 AM, 22 Jul 2021
    О, это похоже на то, что мне нужно, спасибо
  • @AlexWGB #227712 10:57 AM, 22 Jul 2021
    Добрый день, помогите, пожалуйста, разобраться с ошибкой. Есть таблица с большим объёмом данных, в неё постоянно льются данные. При выполнении select * from t where m like %xxx% limit 100 получаем ошибку clickhouse_driver.errors.ServerException: Code: 241. DB::Exception: Memory limit (for query) exceeded. Про параметры max_memory_usage и max_block_size знаем, но объём оперативной памяти ограничен
  • https://t.me/clickhouse_ru
    Версия кх?
  • 21.5.5.12
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/pull/23322

    set min_bytes_to_use_mmap_io=0;
    Disable min_bytes_to_use_mmap_io by default by azat · Pull Request #23322 · ClickHouse/ClickHouse

    Changelog category (leave one): Improvement Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): Disable min_bytes_to_use_mmap_io by default Detailed desc...

  • https://t.me/clickhouse_ru
    @unamedrus #227716 11:01 AM, 22 Jul 2021
    Пробуйте
  • https://t.me/clickhouse_ru
    Добрый день! Думаю может быть полезно, проблема бела не в версии, а в формировании передачи запроса в астер

    ?extremes=0&readonly=0&max_execution_time=1.5&enable_http_compression=1&database

    max_execution_time - принимает int (в более старых версиях почему-то проходил float), на это и ругался ".5"
  • https://t.me/clickhouse_ru
    А, забавно.
  • https://t.me/clickhouse_ru
    Yandex перенес некоторые клиентские библиотеки в свою репу и они назначают мейнтенеров из комьюнити, но сами они не занимаются разработкой и не планируют.
  • https://t.me/clickhouse_ru
    ODBC как раз поддерживается активно в Альтинити, у нас фул-тайм девелопер им занимается.
  • https://t.me/clickhouse_ru
    timeout_before_checking_execution_speed=0

    --timeout_before_checking_execution_speed arg Check that the speed is not too low after the specified time has elapsed.

    у пользователей в консоли и не в консоли разные настройки max_execution_time
  • https://t.me/clickhouse_ru
    ss -nltp

    смотрите какие pid какие порты на listen слушают?
  • https://t.me/clickhouse_ru
    c рестартом при апгрейде проблема.
    новый КХ с некоторой версии не умеет останавливать старый, потому что механизм поменялся.
  • https://t.me/clickhouse_ru
    @nukekz ↶ Reply to #227723 #227725 01:14 PM, 22 Jul 2021
    127.0.0.1:8123
    127.0.0.1:9000
    127.0.0.1:9004
    127.0.0.1:9005
  • https://t.me/clickhouse_ru
    @orloffv #227726 01:19 PM, 22 Jul 2021
    https://github.com/ClickHouse/ClickHouse/issues/26702
    завел issue, может есть какой-то work around не меняя схемы?
    Clickhouse-copier removing materialized column, but column is PARTITION key · Issue #26702 · ClickHouse/ClickHouse

    clickhouse-copier 21.7.4 clickhouse server 21.7.4 Table schema CREATE TABLE name ( `timestamp` DateTime, `queue` String DEFAULT 'general', `totalUnknown` Int64, `unknown1h` Int64, `...

  • https://t.me/clickhouse_ru
    @nukekz ↶ Reply to #227724 #227727 01:20 PM, 22 Jul 2021
    Буду иметь в виду, спасибо!
  • Спасибо. ODBC же нативно row-based. Допустим, мне нужно кусок таблички качнуть в C++ код, и поколоночное представление, которое в clickhouse-cpp, отлично подходит. Или я что-то пропустил, и odbc умеет в поколоночное хранение, чтобы поверх этого векторизацию повесить?
  • @1046362539 #227729 01:22 PM, 22 Jul 2021
    Понятно, что при паттерне select count(*) from t where.. - нормально odbc подойдет
  • https://t.me/clickhouse_ru
    нет, ODBC не умеет и не будет уметь, это же против ODBC API, там только строки
  • @1046362539 #227731 01:23 PM, 22 Jul 2021
    Ну вот и я об этом
  • https://t.me/clickhouse_ru
    так а я что говорил обратное? Я просто объясняю что с cpp либой

    Yandex перенес некоторые клиентские библиотеки в свою репу и они назначают мейнтенеров из комьюнити, но сами они не занимаются разработкой и не планируют.
    ODBC как раз поддерживается активно в Альтинити, у нас фул-тайм девелопер им занимается.
  • @1046362539 #227733 01:25 PM, 22 Jul 2021
    Ответ понятен, спасибо
  • https://t.me/clickhouse_ru
    там вообще как бы pid должен показываться он один и тот же?
  • https://t.me/clickhouse_ru
    @nukekz ↶ Reply to #227735 #227736 01:49 PM, 22 Jul 2021
    Да, но это скорее всего из-за того, что я воспользовался советом и сделал SYSTEM SHOTDOWN, а потом снова запустил clickhouse-server
  • https://t.me/clickhouse_ru
    после SYSTEM SHUTDOWN у вас не должно было быть запущеных clickhouse процессов
    вы после этого делали проверку?
    ps axuf | grep clickhouse
  • https://t.me/clickhouse_ru
    systemctl stop clickhouse-server
    ps auxf | grep clickhouse
    если пусто
    тогда
    systemctl start clickhouse-server
  • https://t.me/clickhouse_ru
    @nukekz #227739 01:52 PM, 22 Jul 2021
    Да, я посмотрел через service, что сервис отключился, и потом сделал
    service clickhouse-server start
  • https://t.me/clickhouse_ru
    сервис показывает что именно думает bash скрипт service о статусе сервиса

    ps auxf| grep clickhouse
    показывает реальную картину
  • https://t.me/clickhouse_ru
    https://t.me/clickhouse_ru/227738
    вот конкретный рецепт
    Slach [altinity] in ClickHouse не тормозит

    systemctl stop clickhouse-server ps auxf | grep clickhouse если пусто тогда systemctl start clickhouse-server

  • https://t.me/clickhouse_ru
    @nukekz ↶ Reply to #227740 #227742 01:55 PM, 22 Jul 2021
    О, я об это не знал. Спасибо!
  • https://t.me/clickhouse_ru
    Можно теоретически через http вытянуть в каком-нибудь колоночном формате типа ArrowStream. И там ещё, вроде как, gRPC в последних версиях появился.
  • @7699150 #227744 02:22 PM, 22 Jul 2021
    Добрый день!
    Подскажите пожалуйста, встречал ли кто-то такое поведение? Начали дублироваться данные, которые пишутся через матвью, которая смотрит на реплицированную таблицу. Матвью есть на обоих репликах. Раньше такого не было.

    На скрирншоте видно что такое поведение уже 3й день
  • @7699150 #227746 02:22 PM, 22 Jul 2021
    ошибок нету
  • @7699150 #227747 02:25 PM, 22 Jul 2021
    в реплицированные таблицы данные пишутся через другие матвью из кафки
  • https://t.me/clickhouse_ru
    @BloodJazMan #227748 02:30 PM, 22 Jul 2021
    какой движок у реплицируемых таблиц?
    MV в какой движок пишет под капотом? тоже реплицируемый?

    может кафка сбоит и повторно данные отсылает?
  • @7699150 #227749 02:31 PM, 22 Jul 2021
    ReplicatedMergeTree и те и те
  • >может кафка сбоит и повторно данные отсылает?

    в первой таблице, в которую идет запись из кафки нет дублей
  • https://t.me/clickhouse_ru
    @BloodJazMan #227751 02:32 PM, 22 Jul 2021
    MV в какую таблицу пишет? тоже в ReplicatedMergeTree?
  • да
  • @7699150 #227753 02:33 PM, 22 Jul 2021
    только еще один момент
    у нас кластер 2x2
    2 шарда, 2 реплики
  • @7699150 #227754 02:33 PM, 22 Jul 2021
    все записи идут в шардовые таблицы
  • @7699150 #227755 02:34 PM, 22 Jul 2021
    смущает то, что раньше все норм работало, а сейчас посыпались дубли
  • такое чувство, что insert_deduplicate / deduplicate_blocks_in_dependent_materialized_views сломался
    хотя я их не трогал
  • https://t.me/clickhouse_ru
    @ARyndin #227757 03:09 PM, 22 Jul 2021
    Всем привет. Можно ли в кликхаусе запустить асинхронно insert from select ...?
    чтобы коннект не висел, пока клик в фоне перекладывает данные
  • https://t.me/clickhouse_ru
    clickhouse-copier
  • https://t.me/clickhouse_ru
    @nyatmeat #227759 03:31 PM, 22 Jul 2021
    Всем привет. Есть такая проблема. Когда делаю запрос
    select arrayMap(x ->
    [toString(x[11]), toString(dictGetString('cl', 'fn', tuple(x[11])))],
    any(si)) from tbl where vi = 'a798992f-102c-4145-b8a7-eba33b67b8b7'
    Все отрабатывает нормально
    Но стоит перенести ту же функцию с таким же условием
    То получаю ошибку
    Code: 53, e.displayText() = DB::Exception: Key type at position 0 does not match, expected String, found Nullable(String) (version 20.9.2.20 (official build)
    Уже принудительно приводил к string, ничего не помогает
  • https://t.me/clickhouse_ru
    @nyatmeat #227760 03:31 PM, 22 Jul 2021
    Где может быть проблема?
  • https://t.me/clickhouse_ru
    @rasstr0en #227761 03:37 PM, 22 Jul 2021
    Здравствуйте! Подскажите по компрессии, Можно ли попробовать zstd только на 1 колонке/таблице/реплике? Что случится, если 1 реплика будет под zstd а остальные под lz4?
  • https://t.me/clickhouse_ru
    на 1 колонке/таблице точно можно
  • https://t.me/clickhouse_ru
    ALTER TABLE codec_example MODIFY COLUMN float_value CODEC(ZSTD);
  • https://t.me/clickhouse_ru
    @rasstr0en #227764 03:43 PM, 22 Jul 2021
    а перекомпресиваться оно будет при мержах?
  • https://t.me/clickhouse_ru
    @rasstr0en #227765 03:52 PM, 22 Jul 2021
    <compression incl="clickhouse_compression">
    <case>
    <min_part_size>10000000000</min_part_size>
    <min_part_size_ratio>0.01</min_part_size_ratio>
    <method>zstd</method>
    </case>
    </compression>
  • https://t.me/clickhouse_ru
    @rasstr0en #227766 03:52 PM, 22 Jul 2021
    Идея попробовать вот так, посмотреть на размеры таблиц и на CPU и откатить в случае чего
  • https://t.me/clickhouse_ru
    доступен только http интерфейс
    бинари не заюзать
  • https://t.me/clickhouse_ru
    @rasstr0en #227768 03:53 PM, 22 Jul 2021
    Вот только не уверен, поймет ли КХ что надо zstd обратно в LZ4 и непонятно когда он будет мержить старые парты если будет
  • https://t.me/clickhouse_ru
    @metikovvadim #227769 04:27 PM, 22 Jul 2021
    Можно сделать копию колонки, добавить к ней кодек, сменить алгоритм компрессии, перемерджить одну партиции, на ней замерить скорость чтения из обоих колонок и дропнуть ненужную
  • https://t.me/clickhouse_ru
    ну если вы их не трогали то materialized view по умолчанию выключен
    может быть был по умолчанию включен
    надо искать https://github.com/ClickHouse/ClickHouse/issues?q=is%3Aissue+deduplicate_blocks_in_dependent_materialized_views
    Issues · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    Хороший план, спасибо
  • https://t.me/clickhouse_ru
    @ur_neko #227773 04:56 PM, 22 Jul 2021
    Добрый вечер, возникает ошибка Code: 998, e.displayText() = DB::Exception: Unable to connect to any of the replicas (version 21.7.2.7 (official build)). Последнее, что делал с кластером - добавил в users.xml двум юзерам несколько схем, ориентировочно после этого и начали ошибки сыпаться. Причём закономерности не нашёл, какие-то запросы работают, какие-то - нет, причём на любом юзере, не только на изменённых. Видел здесь человека с похожей проблемой, но как он её решил, я не нашёл. Кто сталкивался, подскажите?

    Картинка - весь стектрейс, но сам я в нём ничего толкового не увидел.
  • https://t.me/clickhouse_ru
    ну у вас ошибка коннекта к PostgreSQL словарю
    судя по стек трейсу, под репликами в данном случае подразумевается адреса postgresql серверов которых в словаре может быть несколько
  • https://t.me/clickhouse_ru
    @BloodJazMan #227775 05:01 PM, 22 Jul 2021
    DB:DIctionary, DB:ExternalLoader - это периодическая попытка перегрузить словарь

    SELECT * FROM system.dictioanries FORMAT Vertical
    вам поможет понять какой словарь перестал работать
  • https://t.me/clickhouse_ru
    @ur_neko #227776 05:21 PM, 22 Jul 2021
    Да, спасибо, увидел. Странно, что селект на словари пустой возвращается, буду дальше копать, что с ними не так
  • https://t.me/clickhouse_ru
    @BloodJazMan #227777 05:25 PM, 22 Jul 2021
    ну странно, ошибка сама по себе не будет появляться
    system.dictioanries не может быть пустой

    SYSTEM RELOAD DICTIONARIES;

    попробуйте сделать и потом

    SELECT * FROM system.dictioanries FORMAT Vertical ;
  • https://t.me/clickhouse_ru
    @ur_neko #227778 05:33 PM, 22 Jul 2021
    Так вот как будто вообще потерялись. На system reload dictionaries выдаёт ту же ошибку, а селект пустой. Мистика
  • Попробуйте просто select * from system.dictionaries
  • https://t.me/clickhouse_ru
    @ur_neko #227780 05:37 PM, 22 Jul 2021
    Ну я так тоже делал, там просто пустая таблица возвращается. При том, что словари точно были ещё в обед :)
  • https://t.me/clickhouse_ru
    ок. пробуйте через
    SELECT * FROM system.tables WHERE engine ILIKE '%dict%' FORMAT Vertical;

    есть какие то словари?
  • https://t.me/clickhouse_ru
    @ur_neko #227782 05:51 PM, 22 Jul 2021
    Да, так есть
  • https://t.me/clickhouse_ru
    @ur_neko #227783 06:19 PM, 22 Jul 2021
    В общем, я дропнул все словари и поменял адрес на более живой (постгрес задыхается, поэтому закрыли pgbouncer'oм, но в КХ поменять забыли). В system.dictionaries не появилось ничего, но хотя бы запросы падать перестали
  • https://t.me/clickhouse_ru
    internal_relplication = true or false ?
  • https://t.me/clickhouse_ru
    нельзя сделать на одной реплике. Контрольные суммы партов должны совпадать, файлы идентичны на репликах
  • https://t.me/clickhouse_ru
    а если не получиться синхронно
  • https://t.me/clickhouse_ru
    @rasstr0en #227787 06:32 PM, 22 Jul 2021
    там же рестарт нужен?
  • https://t.me/clickhouse_ru
    рестарт нужен
  • https://t.me/clickhouse_ru
    будет качать мержить 3 раза и качать с первой реплики смерженное
  • https://t.me/clickhouse_ru
    в jdbc нельзя задать format.
  • https://t.me/clickhouse_ru
    спасибо
  • @FederationR #227793 07:56 PM, 22 Jul 2021
    Всем привет. А как преобразовать NULL в ' ' в кликхаусе. Пока только нашел assumeNotNull, но она NULL представляет как 0 ?
  • https://t.me/clickhouse_ru
    ifnull
  • Пытаюсь вот такой запрос сделать

    ifNull((CASE WHEN priority > 20 THEN priority END), ' ') AS Приоритет 3

    но он мне возвращает что

    There is no supertype for types Int64, String because some of them are String/FixedString and some of them are not (version 20.3.8.53 (official build)) (386)
  • https://t.me/clickhouse_ru
    А зачем вам вообще case тогда?

    if(priority > 20, toString(priority), ' ')
  • Спасибо
  • true
  • https://t.me/clickhouse_ru
    я однажды видел дубликаты из-за того что люди по ошибке создали 2 mat view и вставляли все 2 раза
  • @7699150 #227800 08:29 PM, 22 Jul 2021
    мне кажется что тут есть какой-то баг
    потому что параллельно, на этом же кластере, такой же процесс, только для другого проекта крутится. И там данные не дублируются
  • тоже думал об этом
  • @7699150 #227802 08:30 PM, 22 Jul 2021
    сканил system.tables поле create_table_query , не нашел )
  • завтра еще проверю одну гипотезу

    2 дня назад в кафка табличку, из которой я беру данные, добвил еще один топик и матвью на него. Возможно это как-то повлияло косвенно
  • >3й день…
    что-то совпадает)))
  • 23 July 2021 (87 messages)
  • https://t.me/clickhouse_ru
    @max_evg #227807 06:41 AM, 23 Jul 2021
    Ребят всем привет. Может кто сталкивался с таким, наблюдаю в system.query_log по несколько записей удаления записей из таблиц. Все это начало происходить после вынужденного перезапуска кластера. Данные в КХ пишутся отдельным парсером, затем каким-то магическим образом что-то их удаляет, не могу разобраться, может кто сталкивался с подобным? Может в КХ есть какие скрытые удаления. У обоих таблиц TTL date + toIntervalDay(15)
  • https://t.me/clickhouse_ru
    @max_evg #227808 06:42 AM, 23 Jul 2021
    Может как-то можно посмотреть вообще сколько висит таких запросов на удаление в фоне?
  • https://t.me/clickhouse_ru
    DDL в комментариях означает что кто-то у вас запускает ALTER TABLE ... ON CLUSTER

    смотрите SELECT * FROM system.mutations WHERE is_done=0 FORMAT Vertical
  • https://t.me/clickhouse_ru
    В нашем кластере нет такой таблицы, может это от версии кх зависит, у нас 20.10.3
  • наверно имелось ввиду system.mutations
  • https://t.me/clickhouse_ru
    Спасибо, да, такая существует, но подходящих под where условие записей нет. Это значит что в фоне ничего не висит?
  • https://t.me/clickhouse_ru
    да именно в фоне сейчас ничего нет
    но периодически видимо какой то CRON скрипт у вас данные "подчищает"
  • @zheka_kolesnik #227815 07:47 AM, 23 Jul 2021
    привет!
    есть у меня таблица на несколько десятков миллионов с колонками старта и конца периода, размножая каждую строку на все даты периода получаю миллиарды строк, потом это всё инсерчу в таблицу с партиционированием по полученной колонке с датой, насколько нормальный показатель, что инсерт длится больше часа?
  • @troman29 #227816 07:51 AM, 23 Jul 2021
    Всем привет!
    Подскажите, пожалуйста.

    Мы сейчас делаем переход на Distributed витрину.

    Поняли что SELECT FROM distributed_table WHERE key IN (SELECT key FROM temp_table) параллелит запросы в каждую шарду, и падает, так как temp_table (TinyLog) есть только на шарде, к которой коннекшен (почти все действия делаем на ней), на второй - её нет.

    Как проще и правильнее решить эту проблему?

    temp_table - Replicated? Тогда как точно дождаться репликации?

    Или вручную дублировать temp_table на каждую шарду?

    Таблица промежуточная, и хочется уложиться в небольшое количество действий.
  • @troman29 #227817 07:52 AM, 23 Jul 2021
    Или есть какая-то возможность явно указать, на какую шарду к ней обращаться
  • Да, remote()
  • @AlB9292 #227819 08:16 AM, 23 Jul 2021
    Всем привет) Только начинаем работать с CH. Кто может подсказать, что конкретно происходит с базой при отключении параметра min_bytes_to_use_mmap_io ? И что тогда в базе происходит под капотом?)
  • Так и думал, спасибо))
  • https://t.me/clickhouse_ru
    @ilejn #227821 09:14 AM, 23 Jul 2021
    min_bytes_to_use_mmap_io - не очень живая штука.
  • https://t.me/clickhouse_ru
    @hatedabamboo #227823 09:26 AM, 23 Jul 2021
    Подскажите, пожалуйста: errors_count в таблице system.clusters — по какому слову грепать в err.log чтобы найти эти ошибки?
  • https://t.me/clickhouse_ru
    ну "миллиарды строк"
    если даже у вас миллион строк в секунду получается, то это как минимум 1000 секунд
    а если всего 100к строк в секунду, то 10 000 секунд, что около 2.75 часа...
  • https://t.me/clickhouse_ru
    IMHO просто clickhouse просто перестает использовать MMAP при работе с файлами данных
    вроде как использовать этот режим планируется для ускорения, чтобы эффективнее наполнялся файловый page cache средствами ядра
  • https://t.me/clickhouse_ru
    @ezotrank #227827 10:02 AM, 23 Jul 2021
    А может есть какие то советы как ускорить uniq(unicCombined) на destributed запросах? Тестирую свой запрос на 2 и на 4 шардах, и 4 шарда проигрывают на секунду
  • https://t.me/clickhouse_ru
    посмотреть в сторону uniqHLL
  • https://t.me/clickhouse_ru
    @unamedrus #227830 10:08 AM, 23 Jul 2021
    что-то я не понял тогда

    uniqCombined -- The default value for HLL_precision is 17

    создаю таблицу

    uniqState(u) as us,
    uniqHLL12State(u) uh,
    uniqCombinedState(20,u) uc

    на диске

    2.2M uh.bin -- uniqHLL12State
    58M uc.bin -- uniqCombinedState(20)
    140M us.bin -- uniqState

    почему uniqState в 3 раза больше чем uniqCombinedState(20)
    т.е. uniqCombined быстрее, точнее и еще и меньше занимает на диске?
  • https://t.me/clickhouse_ru
    @unamedrus #227831 10:08 AM, 23 Jul 2021
    Меньше передавать по сети, может быть потенциально быстрее
  • https://t.me/clickhouse_ru
    @ezotrank #227832 10:08 AM, 23 Jul 2021
    Ага, он быстрее, уже пробовал
  • https://t.me/clickhouse_ru
    @ezotrank #227833 10:11 AM, 23 Jul 2021
    Да, думаю его и оставлю unicCombined vs uniqHLL 9.773s vs 5.727s
  • https://t.me/clickhouse_ru
    Там несколько алгоритмов на самом деле
  • https://t.me/clickhouse_ru
    У combined?
    Ага
  • https://t.me/clickhouse_ru
    @nyoroon #227836 10:23 AM, 23 Jul 2021
    HLL только при большом количестве элементов выбирается
  • @AlB9292 #227837 11:15 AM, 23 Jul 2021
    Коллеги, помогите с проблемой

    Set min_bytes_to_use_mmap_io = 0, устанавливает такой параметр только для текущей сессии

    А если прописываю это значение в etc/clickhouse-server/config.xml , то после рестарта сервер не поднимается

    Может кто знает решение?
  • https://t.me/clickhouse_ru
    пропишите его в default профиль
  • Спасибо!
  • https://t.me/clickhouse_ru
    @dsv_ringostat #227840 12:37 PM, 23 Jul 2021
    есть кластер с двумя реплицированными узлами: node1 и node2.
    На ноде1 остановил clickhouse
    сделал

    sudo -u clickhouse touch /var/lib/clickhouse/flags/force_restore_data

    Запустил кликхаус. Ожидаю что он начнет реплецироваться с нодой2 но этого не происходит.

    В логах следующее для каждой таблицы

    Skipping the limits on severity of changes to data parts and columns (flag force_restore_data).

    Что делать?
  • а что вас привело к том, что вы сделали sudo -u clickhouse touch /var/lib/clickhouse/flags/force_restore_data?
  • https://t.me/clickhouse_ru
    @Zhe700 #227842 12:52 PM, 23 Jul 2021
    Добрый день! Подскажите плиз: я подключаю движок ПГ
    https://clickhouse.tech/docs/ru/engines/database-engines/postgresql/
    и когда пытаюсь посмотреть таблицы кх ругается:

    SQL Error [60]: ClickHouse exception, code: 60, host: 192.168.235.72, port: 8123; Code: 60, e.displayText() = DB::Exception: PostgreSQL table etl."telegram_chats" does not exist: While executing Tables (version 21.4.6.55 (official build))

    я так понимаю и-за того что не указана схема, можно ли это как-то обойти?)
    PostgreSQL | Документация ClickHouse

    PostgreSQL Позволяет подключаться к БД на удаленном сервере PostgreSQL. Поддерживает операции чтения и записи (запросы S

  • https://t.me/clickhouse_ru
    Со старого кластера перенес данные на новый на ноду2 через clickhouse-backup
    и теперь хочу среплецировать данные
  • у вас таблицы реплицированные?
  • https://t.me/clickhouse_ru
    ENGINE = ReplicatedReplacingMergeTree
  • ну вам не нужно было делать sudo -u clickhouse touch /var/lib/clickhouse/flags/force_restore_data
    это для другого случая
    если вы правильно восстановили данные на одну из нод, то зукипер сам должен был их среплицировать на вторую ноду.
    добавьте конкретики, как восстанавливали, появились ли данные на одной из нод, создана ли таблица на второй ноде(куда хотите среплицировать)
  • https://t.me/clickhouse_ru
    Ну вот почемуто этого не происходит.
  • то есть данные на одном сервере есть, а на втором нет?
  • https://t.me/clickhouse_ru
    @dsv_ringostat #227849 12:57 PM, 23 Jul 2021
    Да. На втором пустые таблицы
  • таблица на втором replicated?
  • https://t.me/clickhouse_ru
    @dsv_ringostat #227851 12:58 PM, 23 Jul 2021
    Точно такиеже как и на сервере с данными
  • SYSTEM RESTART REPLICA db.table
  • https://t.me/clickhouse_ru
    @809096964 #227853 01:02 PM, 23 Jul 2021
    Коллеги, всем привет, не поможете с советом, как ускорить выполнение первого запроса (поля с key - ключи сортировки, если это важно, в аналогичных запросах могут быть поля отличные от ключей сортировки) select count() from data where keyDate >= '2021-06-05' and keyDate <= '2021-06-25' AND (keytime >= 1622918404) AND (keytime <= 1624653604) AND (msg like '%a%' or msg like '%q%')
    ┌────count()─┐
    │ 1289678421 │
    └────────────┘
    Progress: 4.41 billion rows, 705.71 GB (16.18 million rows/s., 2.59 GB/s.) 98↗️ Progress: 4.41 billion rows, 705.85 GB (16.18 million rows/s., 2.59 GB/s.) 99
    1 rows in set. Elapsed: 272.462 sec. Processed 4.41 billion rows, 705.85 GB (16.18 million rows/s., 2.59 GB/s.)

    select count() from data where keyDate >= '2021-06-05' and keyDate <= '2021-06-25' AND (keytime >= 1622918404) AND (keytime <= 1624653604) AND keyseverity='High' AND (msg like '%a%' or msg like '%q%')

    Progress: 2.87 million rows, 264.25 MB (17.79 million rows/s., 1.64 GB/s.) 35
    Progress: 7.57 million rows, 656.64 MB (28.74 million rows/s., 2.49 GB/s.) 94
    ┌─count()─┐
    │ 18676 │
    └─────────┘
    Progress: 7.57 million rows, 656.64 MB (26.83 million rows/s., 2.33 GB/s.) 94↙️ Progress: 7.96 million rows, 701.37 MB (28.22 million rows/s., 2.49 GB/s.) 99
    1 rows in set. Elapsed: 0.283 sec. Processed 7.96 million rows, 701.37 MB (28.13 million rows/s., 2.48 GB/s.)
  • https://t.me/clickhouse_ru
    Ничего не происходит.

    (ReplicatedMergeTreeQueue): Having 0 queue entries to load, 0 entries already loaded.
  • видимо, все что было в зукипере - потеряно
  • select * from system.zookeeper where path=zk path to table
  • https://t.me/clickhouse_ru
    Что-то я наверное с названиями нод напутал

    ┌─name───┐
    │ node12 │
    │ node1 │
    └────────┘
    В максах у мен прописаны ноды

    node11 и node12

    А тут почему то node1
  • @anotherbugmaster #227859 01:31 PM, 23 Jul 2021
    Привет. Кому-нибудь удавалось настроить доступ к S3 через IAM? Использую use_environment_credentials вот так, но что-то не работает:
    <yandex>
    <s3>
    <my-endpoint>
    <endpoint>%my_endpoint%.s3.%my_region%.amazonaws.com</endpoint>
    <region>%my_region%</region>
    <use_environment_credentials>true</use_environment_credentials>
    </my-endpoint>
    </s3>
    </yandex>
  • @anotherbugmaster #227860 01:32 PM, 23 Jul 2021
    Деплою через Cloudformation, выдал такие права
    - s3:ListBucket
    - s3:GetObject
  • @anotherbugmaster #227861 01:33 PM, 23 Jul 2021
    Кликхаус на селект отвечает
    Code: 499, e.displayText() = DB::Exception: Could not list objects in bucket '%my_endpoint%' with prefix '%some_prefix%', S3 exception: `AccessDenied`, message: 'Access Denied' (version 21.6.3.14 (official build))
  • https://t.me/clickhouse_ru
    @nikolay_pervukhin #227862 02:16 PM, 23 Jul 2021
    Коллеги, привет! Поделитесь опытом, какую, в основном, топологию используете, сколько нод под шардирование и репликацию?
  • https://t.me/clickhouse_ru
    От двух до трех реплик, кол во шардов зависит от требований по времени выполнения запросов
  • https://t.me/clickhouse_ru
    @Nysso #227865 03:06 PM, 23 Jul 2021
    Привет.
    Дано: запрос с двумя подзапросами, использующие одинаковые критерии поиска.
    Вопрос: есть ли альтернатива Bind variable в CH?
    WITH ... AS не умеет рекурсивно передавать в подзапросы.
    Есть ли какие другие подходы к решению данной проблемы?
    Спасибо
  • https://t.me/clickhouse_ru
    @aweselow #227869 07:14 PM, 23 Jul 2021
    Всем привет! Столкнулся с интересной ошибкой - connection.State возвращает, что соединение Closed, а попытка его открыть connection.Open() - вызывает ошибку Connection already open...
  • https://t.me/clickhouse_ru
    WHERE key GLOBAL IN (SELECT key FROM temp_table)
  • https://t.me/clickhouse_ru
    @man_from_glasgow #227871 07:18 PM, 23 Jul 2021
    Привет! У нас есть задача выгружать данные из ch в файл, мы экспериментируем с форматами. Сейчас попробовали выгрузку с форматом native. Результат нас устраивает. Но есть вопрос - меняется ли реализация от версии к версии. Сможем ли мы сформированный файл с данными в одной версии прочитать в более новой, например.
  • https://t.me/clickhouse_ru
    была идея что для некоторых операций с большими файлами mmap_io импрувит немного перфоманс, это оказалось неправдой и принесло новые проблемы.
    т.е. КХ умеет включать mmap_io и direct_io для некоторых операций, в зависимости от настроек. Можно повыключать, станет только лучше.
  • https://t.me/clickhouse_ru
    не меняется,

    в этом формате работают драйвера go, python , ....
  • https://t.me/clickhouse_ru
    так а инстансу прицеплен iam ?
  • https://t.me/clickhouse_ru
    @ogornostaev #227875 07:25 PM, 23 Jul 2021
    Всем привет!

    Есть:
    - AggregationMergeTree в ней есть поле c типом Datetime для каждой сгруппированной записи
    - записей много (за месяц порядка 30-40 миллионов)
    - сделали партиционирование по дням toYYYYMMDD()
    - order by по DateTime полю (и еще другим полям, но это наверно не важно, главное по дате есть)
    - хотим делать выборки обычно за день, за несколько дней, за месяц

    В результате:
    - если выбираем за несколько дней без Order By в Select запросе, то данные получаем отсортированные внутри дня, но сами дни рандомно получаем
    - если добавляем Order By в запрос логично, что запрос ест кучу памяти, что не устраивает, но данные хронологически отсортированы между днями

    Вопрос:
    - рандомно дни в ответах получаем, из-за того что так партиции подгружаются?
    - как то их порядок можно задать?
  • https://t.me/clickhouse_ru
    если ORDER BY в запросе select отсутвует, то в результате рандомный порядок. Вам только кажется что там есть порядок, на самом деле множество потоков читают отсортированные куски и выплевыают результат кто первый

    про кучу памяти, это зависит от версии КХ и прямоты ваших рук. Ну и как вы кверяете AggregationMergeTree без groupby это отдельная загадка
  • https://t.me/clickhouse_ru
    finalizeAggregation используем вместо State на select по AggregationMergeTree
  • Разобрался, проблема была в неправильной настройке IAM
  • https://t.me/clickhouse_ru
    finalizeAggregation ну а как вы домерживаете? или вы заранее знаете что домерживать не надо? Стейты же теряются из-за finalizeAggregation, как клиент потом мержит?
  • https://t.me/clickhouse_ru
    select version()
  • https://t.me/clickhouse_ru
    20.8.19.4
  • https://t.me/clickhouse_ru
    вроде понимаю о чем вы, но нам не обязательно домерживать

    задача такая. пишется лог событий.
    событие = <id> + <дата начала обработки запроса, на которое генерятся события> + <событие> + meta

    задача собрать аггрегат = схлопнуть все событияпо <id>
    используем в оснвоновном groupArray или any для аггрегации. так как каждое событие несет свою какую то meta в формате KV, достаточно просто все собрать, а состояния в array собрать
  • https://t.me/clickhouse_ru
    ну "запрос ест кучу памяти" сколько? Сотни гигабайт? Десятки?
    В общем если все как вы описали то запрос может использовать индекс и ему особо не нужна память, только мержить данные между партициями, странно что у вас к памяти вопросы есть.
  • https://t.me/clickhouse_ru
    ну про “кучу” образно )
    запрос без ORDER BY 50Мб потребляет, с OrderBy 30Гб )
  • https://t.me/clickhouse_ru
    а если один день выбирать?
  • https://t.me/clickhouse_ru
    покажите запрос как выглядит. Может у вас order by запроса и таблицы все же не совпадает
  • https://t.me/clickhouse_ru
    0.5Гб, но тут из одной партиции получается все выбирается
  • https://t.me/clickhouse_ru
    да ок, лишнее только уберу, чтобы проще было
  • https://t.me/clickhouse_ru
    а если для теста set max_threads=1
  • https://t.me/clickhouse_ru
    @den_crane #227892 07:45 PM, 23 Jul 2021
    По идее если у запроса подходит order by под order by таблицы, то включается optimize_read_in_order и потоки читают все парты одновременно и мержат результаты не сортируя, и память не должна расходоваться
  • https://t.me/clickhouse_ru
    @yaroslav_zinchenko #227893 07:50 PM, 23 Jul 2021
    Всем привет! Такой вопрос.
    Есть КХ с двумя репликами. Каждая реплика на своём сервере. Вставляем данные на первый сервер в буферную таблицу, которая потом перекидывает данные в ReplicatedReplacingMergeTree таблицу. Я правильно понимаю, что буферная таблица должна быть только на одном сервере (в который вставляются данные). Или же нужно на каждом сервере с репликой создавать буферную таблицу?
  • https://t.me/clickhouse_ru
    ```
    -- Аггрегат
    create table events_aggregated
    (
    accepted_at DateTime64(3),
    event_type LowCardinality(String),
    channel LowCardinality(String),
    tx_id UUID,
    statuses AggregateFunction(groupArray, Tuple(String, DateTime64(3))),
    final_state AggregateFunction(argMax, Tuple(String, DateTime64(3)), UInt8),
    final_state_value AggregateFunction(argMax, String, UInt8)
    )
    engine = AggregatingMergeTree()
    PARTITION BY toYYYYMMDD(accepted_at)
    ORDER BY (accepted_at, event_type, channel, tx_id);
    ```

    ```
    — вью под отчет

    CREATE VIEW v_report
    (
    `accepted_at` DateTime64(3),
    `event_type` LowCardinality(String),
    `channel` LowCardinality(String),
    `tx_id` UUID,
    `final_state_value` String)
    AS
    SELECT accepted_at AS accepted_at,
    event_type AS event_type,
    channel AS channel,
    tx_id,
    finalizeAggregation(events_aggregated.final_state_value) AS final_state_value_internal,
    multiIf(final_state_value_internal IN ('EXPIRED', 'FAILED', 'REJECTED', 'UNKNOWN'), 'NOT_DELIVERED',
    final_state_value_internal IN ('ACCEPTED', 'PENDING', 'SCHEDULED'), 'PENDING',
    final_state_value_internal) AS final_state_value
    FROM events_aggregated;
    ```

    ```
    — выборка отчета
    select * from v_report
    where
    toYYYYMM(accepted_at) = 202107
    and final_state_value IN ('DELIVERED', 'NOT_DELIVERED')
    order by accepted_at;
    ```
  • https://t.me/clickhouse_ru
    только сервере где вставляете. Обычно для простоты делают все одинаковым и вставляют тоже во все реплики, это уменьшает даунтайм
  • https://t.me/clickhouse_ru
    родной, про view базара не было.

    order by не проталкивается через view

    пишите запросы без view
  • https://t.me/clickhouse_ru
    🙂
  • https://t.me/clickhouse_ru
    да как минимум тут prewhere хочется сделать еще
  • https://t.me/clickhouse_ru
    @den_crane #227899 07:53 PM, 23 Jul 2021
    или можно попробовать order by перенетси во вью
  • https://t.me/clickhouse_ru
    @ogornostaev #227900 07:53 PM, 23 Jul 2021
    ок, попробую
  • https://t.me/clickhouse_ru
    @ogornostaev #227901 07:53 PM, 23 Jul 2021
    можно
  • https://t.me/clickhouse_ru
    данные сортируются и по расходу памяти 1Гб впримерно
  • https://t.me/clickhouse_ru
    если set max_threads=1 или 4
  • https://t.me/clickhouse_ru
    внутри view или в запросье к view?
  • 24 July 2021 (31 messages)
  • https://t.me/clickhouse_ru
    @ezotrank #227905 07:11 AM, 24 Jul 2021
    День добрый, а может кто подскажет. Есть четыре сервера, и хочется чтобы все четыре участвовали в каждом запросе, чтобы запрос быстро обрабатывался, для этого я делаю 4 шарда. Но тут получается проблема, если один из серверов выйдет, то часть данных потеряется.

    Можно ли создать 4 шарда, и у каждого шарда сделать по 2 реплики, так, чтобы при запросах только одна реплика трогалась? Хочется и скорость и отказоусточивость сразу получить )
  • https://t.me/clickhouse_ru
    4 шарда по 2 реплики на 4 серверах? Тогда при выходе 1 из строя у вас будет не 1 реплика лежать, а минимум 2.
    2 шарда по 2 реплики сделайте.
  • https://t.me/clickhouse_ru
    Можно сделать циркулярную репликацию, но с ней геморно расширять кластер и производительность может проседать, лучше обычную
  • @user93 #227908 08:43 AM, 24 Jul 2021
    А почему ORDER BY по первичному ключу так роняет производительность?

    есть таблица

    CREATE MATERIALIZED VIEW item_status_mv
    (
    `item` String,
    .....
    .....
    )
    ENGINE = AggregatingMergeTree
    PRIMARY KEY item
    ORDER BY item

    Запрос

    SELECT
    ds.item
    FROM item_status_mv AS ds
    FINAL
    WHERE
    ds.item > ''
    ORDER BY item
    LIMIT 1000;

    Выполняется за большое время, "1000 rows in set. Elapsed: 11.728 sec. Processed 401.69 million rows"

    если убрать FINAL или ORDER BY то все летает.

    Почему клик не хочет использовать индекс? Ведь по логике все просто и легко идем по индексу , считали все записи для первого item , сделали финальную аггрегацию и отдали, повторили для второго item. Но клик зачем-то считывает всю базу
  • @user93 ↶ Reply to #227908 #227909 08:53 AM, 24 Jul 2021
    По идее, можно клик заставить работать как хочется путем запроса

    SELECT
    ds.item
    FROM item_status_mv AS ds
    FINAL
    WHERE
    ds.item > ''
    GROUP BY item
    LIMIT 1000
    SETTINGS optimize_aggregation_in_order = 1

    Те заменить ORDER BY на GROUP BY + optimize_aggregation_in_order , но часть запросов отрабатывает нормально, а часть запросов валится с ошибкой

    Progress: 26.42 million rows, 1.30 GB (6.24 million rows/s., 306.06 MB/s.) ███▍ 6%
    Received exception from server (version 21.1.10):
    Code: 49. DB::Exception: Received from 127.0.0.1:9000. DB::Exception: Pipeline stuck. Current state:
    digraph
    {
    rankdir="LR";
    { node [shape = box]
    n140638677604384[label="MergeTree(1565 jobs) (PortFull)"];
    n140638673862688[label="MergeTree(5 jobs) (PortFull)"];
  • а optimize_read_in_order пробовали?
  • @user93 ↶ Reply to #227911 #227912 09:11 AM, 24 Jul 2021
    SELECT
    ds.item
    FROM item_status_mv AS ds
    FINAL
    WHERE
    ds.item > ''
    GROUP BY item
    LIMIT 1000
    SETTINGS optimize_aggregation_in_order = 1, optimize_read_in_order= 1, max_threads = 2

    тоже валится, но причиной оказлся max_threads = 2 , я его не указал в исходном сообщении

    Поэтому теперь уже два вопроса :)

    1) Почему ORDER BY не использует индекс
    2) max_threads=2 и падение с ошибкой - это нормально или бага?
  • я имел в виду без group by, а с order by попробовать указать optimize_read_in_order= 1
  • @user93 #227914 09:14 AM, 24 Jul 2021
    тоже самое

    SELECT ds.item
    FROM item_status_mv AS ds
    FINAL
    WHERE ds.item > ''
    ORDER BY item ASC
    LIMIT 1000
    SETTINGS optimize_read_in_order = 1

    Query id: 09648fb2-3ab8-4db9-9fe3-c35aa1b00ed9

    ↗️ Progress: 101.67 million rows, 2.52 GB (34.76 million rows/s., 860.87 MB/s.)
    Cancelling query.
  • https://t.me/clickhouse_ru
    @Kanuas_1 #227915 09:49 AM, 24 Jul 2021
    Добрый день, почему-то не работает leadInFrame:
  • https://t.me/clickhouse_ru
    @Kanuas_1 #227916 09:49 AM, 24 Jul 2021
    select
    id,
    number_12,
    last_modified,
    lagInFrame(number_12) over (partition by id order by last_modified) as prev_number,
    leadInFrame(number_12) over (partition by id order by last_modified) as next_number
    from
    (select 001 as id, 01 as number_12, '2021-01-01 00:00:00' last_modified
    union all
    select 001 as id, 02 as number_12, '2021-02-02 00:00:00' last_modified
    union all
    select 001 as id, 03 as number_12, '2021-03-03 00:00:00' last_modified
    union all
    select 001 as id, 04 as number_12, '2021-04-04 00:00:00' last_modified
    union all
    select 001 as id, 05 as number_12, '2021-05-05 00:00:00' last_modified
    union all
    select 001 as id, 06 as number_12, '2021-06-06 00:00:00' last_modified
    union all
    select 001 as id, 07 as number_12, '2021-07-07 00:00:00' last_modified
    union all
    select 001 as id, 08 as number_12, '2021-08-08 00:00:00' last_modified)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Kanuas_1 #227918 09:51 AM, 24 Jul 2021
    Можете объяснить, в чем причина. Версия 21.7.4.18
  • https://t.me/clickhouse_ru
    Укажите фрейм
  • https://t.me/clickhouse_ru
    а как его посмотреть?
  • https://t.me/clickhouse_ru
    @Nysso #227921 10:00 AM, 24 Jul 2021
    Парни, как я могу сравнить производительность двух запросов?
    Есть ли вариант увидеть статистику?
    Спасибо
  • https://t.me/clickhouse_ru
    В system.query_log
  • https://t.me/clickhouse_ru
    В документации посмотрите для оконных функий
  • https://t.me/clickhouse_ru
    Извините, я все равно не понял как посмотреть определенный фрейм
  • https://t.me/clickhouse_ru
    @Kanuas_1 #227925 11:05 AM, 24 Jul 2021
    а, ок, если указать rows between unbounded preceding and unbounded following, все работает
  • https://t.me/clickhouse_ru
    @Kanuas_1 #227926 11:05 AM, 24 Jul 2021
    Сорри за беспокойство, буду дальше изучать
  • Спасибо! В документации об этом непонятно написано
  • @snoopyin #227930 08:10 PM, 24 Jul 2021
    Может кто-нибудь использует clickhouse-operator в проде на AWS EKS? Если да, то какие подводные есть? Какой storage используете?
  • https://t.me/clickhouse_ru
    Да много. Весь алтинити Клауд там на нем. Сторадж gp2 gp3
  • Интересно может есть какие-то данные по перформансу gp3 (max IOPS) vs SSD?
  • https://t.me/clickhouse_ru
    Ebay тоже
  • Тоже gp3?
  • https://t.me/clickhouse_ru
    Для гп3 нужно докупать throughput до лимита машины и iops тысяч до 7-8 тогда будет на уровне или быстрее чем gp2 разбитый на n дисков (имеет смысл это делать от нескольких Тб )
  • https://t.me/clickhouse_ru
    Тоже оператор
  • Полезно, спасибо
  • @snoopyin #227938 08:38 PM, 24 Jul 2021
    Я имел ввиду сообщение про gp2/gp3
  • 25 July 2021 (150 messages)
  • https://t.me/clickhouse_ru
    у меня тоже джойнится 2 таблице в кх быстрей чем в oracle
  • https://t.me/clickhouse_ru
    какие диски? какие таблицы? в конце концов оптимизатор оракловский решил двойным циклом пробежаться без индексов
  • https://t.me/clickhouse_ru
    oracle боевой на aix максимально оптимизированный запрос ssd. КХ на первой попавшейся виртуалке на hdd.
  • https://t.me/clickhouse_ru
    @75280400 #227943 08:21 AM, 25 Jul 2021
    таблицы теже. обьем тотже.
  • https://t.me/clickhouse_ru
    и кстати разница какая?
  • https://t.me/clickhouse_ru
    как я уже писал КХ умеет только в hash join, это +- все отличия
  • https://t.me/clickhouse_ru
    @75280400 #227946 08:22 AM, 25 Jul 2021
    Oracle 10 секуннд примерно. КХ менее секунды.
  • https://t.me/clickhouse_ru
    а ответ смотрели какой алгоиитм оракл юзает?
  • https://t.me/clickhouse_ru
    @75280400 #227948 08:23 AM, 25 Jul 2021
    сегодня выходной под рукой нет данных. завтра гляну напишу
  • https://t.me/clickhouse_ru
    @75280400 #227949 08:24 AM, 25 Jul 2021
    А кто может мне по простому обьяснить зачем нужен зоокипер для КХ ?
  • https://t.me/clickhouse_ru
    @ivan_blohin #227950 08:25 AM, 25 Jul 2021
    Всем привет! Подскажите, пожалуйста, аналог explain analyze для КХ.

    В доке видел explain, но не разобрался, как посмотреть - происходит ли full scan таблицы или нет
  • https://t.me/clickhouse_ru
    мне интересна, спасиба)
  • https://t.me/clickhouse_ru
    @dmitriynvkv #227952 08:26 AM, 25 Jul 2021
    ну план выполнения всмысле
  • https://t.me/clickhouse_ru
    понял
  • Для репликации таблиц между нодами КХ.
  • https://t.me/clickhouse_ru
    то есть зукипер данные синхронизирует. типа как rsync ?
  • В общем смысле - да
  • https://t.me/clickhouse_ru
    @75280400 #227958 08:38 AM, 25 Jul 2021
    а в чем преимущество именно зукипера ?
  • https://t.me/clickhouse_ru
    @enclaved #227959 08:38 AM, 25 Jul 2021
    подскажите, при загрузке данных в CSV-формате можно ли как-то указать кх какой ограничитель строк использовать? а то он судя по всему считает таковым и одинарные, и двойные кавычки, а мне нужно, чтобы только двойные парсились так
  • Не работал плотно с rsync.Но подозреваю, что при его использовании, могут быть траблы при одновременном залитии данных в реплицированную таблицу на различных нодах.
  • https://t.me/clickhouse_ru
    rsync точно не для бд в онлайне. это я для примера
  • @GooG2e ↶ Reply to #227946 #227963 09:03 AM, 25 Jul 2021
    Зависит ещё от объёма оперативки и размера таблиц. КХ правую таблицу при джойне загоняет целиком в оперативку и делает хэшмапу, если не влазит или превышает лимит, то ошибка.
  • https://t.me/clickhouse_ru
    @ivan_blohin #227964 11:25 AM, 25 Jul 2021
    Всем привет еще раз) Такой вопрос:
    Есть скрипт, который в цикле вытаскивает данные из одной таблицы (пачками по 8к строк) и вставляет в другую.
    Через +- 400 итераций вылетает с:

    DB::Exception: Memory limit (total) exceeded: would use 1.00 GiB (attempt to allocate chunk of 4321459 bytes), maximum: 1.00 GiB: (while reading column gnomad_e_max): (while reading from part /var/lib/clickhouse/store/3bf/3bfe62f2-59f3-4cdb-aa33-864fda985036/all_4_397_8_8648/ from mark 32 with max_rows_to_read = 8192): While executing MergeTree. Stack trace:

    Хостим в яндекс облаке, увеличить кол-во оперативной памяти не очень хочется, пока не поймем в чем проблема. Зачем ему гигабайт?
  • https://t.me/clickhouse_ru
    тогда с чем вы сравниваете зукер? преимущество перед чем хотите услышать?
  • https://t.me/clickhouse_ru
    я хотел понять для чего нужен зукипер
  • https://t.me/clickhouse_ru
    Координация мержей, дискавери партов, глобальные DDL/мутации
  • https://t.me/clickhouse_ru
    Сам зукипер ничего не синхронизирует, это хранилка стейта и штука для координации
  • https://t.me/clickhouse_ru
    а кто синхронизирует ?
  • https://t.me/clickhouse_ru
    Инстансы кликхауса ходят в зукипер, смотрят чего у них не хватает и подтягивают с других инстансов
  • https://t.me/clickhouse_ru
    Зукипер транзакционная in-memory db (k/v). Там хранится список всех партов, список партов на каждой ноде, очереди репликации, мержей, ...
    Т.е. например когда вы дропаете парт нода на которую прилетел drop вычисляет range блоков из партов которые надо дропнуть и записывает в зк, в очередь команду, все остальные реплики это видят и выполняют, и так для каждой операции.
  • https://t.me/clickhouse_ru
    @75280400 #227972 01:10 PM, 25 Jul 2021
    А есть подробная инструкция как настроить репликацию 2х нод кликхаус ?
  • @troman29 #227974 01:25 PM, 25 Jul 2021
    Привет! Подскажите, пожалуйста, если мы добавляем шарду, можно как-то автоматически перераспределить данные? Clickhouse ведь сам этого не сделает?
    Для distributed таблицы
  • Новые данные по идее будет лить включая новый шард. А если старые надо перераспределить то да, ручками.
  • @troman29 #227976 01:29 PM, 25 Jul 2021
    Про новые данные да, понятно. Распределено просто будет не равномерно в таком случае... clickhouse сам не может рулить количеством данных? Чтобы писал в новую, пока количество данных примерно не станет равно. За это отвечает кажется параметр "вес". Но как это работает вместе с ключом распределения, что-то не понятно.
  • @troman29 #227977 01:36 PM, 25 Jul 2021
    Скорее всего придется ручками, вес будет влиять только на новые данные.. И без простоя этого не сделать? Остановки etl (записи) похоже недостаточно, тк обычный rename тут не прокатит? Или можно на основную витрину сделать alter со сменой таблиц, на которые она смотрит?
  • @troman29 #227978 01:40 PM, 25 Jul 2021
    А,
    - остановка etl
    - создать таблицы на шардах с другим именем
    - создать новую distributed с другим именем
    - перелить в нее данные из витрины
    - таблицы на шардах переименовать

    - основная distributed витрина не трогается
    - надо иметь достаточно места на диске

    Сам ответил на свой вопрос)
  • @troman29 #227979 01:42 PM, 25 Jul 2021
    Ещё вариант сделать свой алгоритм распределения, и по нему выбирать данные и удалять, которые должны быть на новой шарде
  • https://t.me/clickhouse_ru
    А почему просто нельзя поставить большой вес на новых репликах шарда, пусть в него больше всего льется или важно само распределение данных
  • @troman29 #227981 01:44 PM, 25 Jul 2021
    Да, такой вариант тоже видимо ок, сделать вес больше, дождаться пока размеры сравняются, сменить вес обратно. Так?
  • https://t.me/clickhouse_ru
    @romul87 #227982 01:45 PM, 25 Jul 2021
    я бы так сделал, чтобы не мучиться
  • @troman29 #227983 01:45 PM, 25 Jul 2021
    Да, ок, спасибо.
  • https://t.me/clickhouse_ru
    @romul87 #227984 01:45 PM, 25 Jul 2021
    то я как представляю, что десятки терабайт лить туда сюда
  • @troman29 #227985 01:47 PM, 25 Jul 2021
    А остаток места на диске он сам никак не учитывает? 😁
  • https://t.me/clickhouse_ru
    @romul87 #227986 01:48 PM, 25 Jul 2021
    Сам не учитывает, мы сидели считали сколько у нас льется и на сколько хватит дисков, и под определенное время сделали TTL
  • https://t.me/clickhouse_ru
    @romul87 #227987 01:50 PM, 25 Jul 2021
    А вот на горячую не приходилось шарды добавлять и вес менять, всегда стопали кластер.
  • @troman29 #227988 01:51 PM, 25 Jul 2021
    Понял, спасибо!
  • @troman29 #227989 01:53 PM, 25 Jul 2021
    Для нас главная причина, почему решили перейти на distributed - это тупняки, которые начинаются при большом количестве параллельных запросов.

    И распределять хотим по проекту клиента. Видимо надо чтобы каждый проект был на своей шарде, иначе толку не будет..
    И придется ручками
  • @troman29 #227990 01:54 PM, 25 Jul 2021
    Ну или тупняки совсем от другого))
  • @troman29 #227991 01:55 PM, 25 Jul 2021
    В это время CPU у КХ 100%
  • https://t.me/clickhouse_ru
    У нас также проблема с CPU. Но мы всегда использовали только дистр таблицы.
  • https://t.me/clickhouse_ru
    @romul87 #227993 01:58 PM, 25 Jul 2021
    Выше парни рассказывали, что клик всегда будет пытаться сожрать все доступное CPU для более быстрого выполнения запроса
  • @troman29 #227994 01:58 PM, 25 Jul 2021
    Ого
  • https://t.me/clickhouse_ru
    @unamedrus #227995 01:58 PM, 25 Jul 2021
    Кликхаус для запросов использует все ресурсы, что сможет.

    В 100% CPU нет ничего плохого
  • @troman29 #227996 01:59 PM, 25 Jul 2021
    Может так и было, просто не знал
  • https://t.me/clickhouse_ru
    Это да, главно, чтобы память не сжиралась на 100, а то придет OOM )
  • @troman29 #227998 02:00 PM, 25 Jul 2021
    У нас ещё множество словарей для фильтрации используется
  • https://t.me/clickhouse_ru
    @unamedrus #227999 02:00 PM, 25 Jul 2021
    Как используется?
  • @troman29 #228000 02:01 PM, 25 Jul 2021
    Ну как, обычно) в них активность контента, неактивный исключаем
  • https://t.me/clickhouse_ru
    В нашем случае это плоховато. Юзаем replication таблицы, у нас часто alter на добавление полей и при 100% CPU падаем по timeout в zk
  • @troman29 #228002 02:03 PM, 25 Jul 2021
    zk узкое место в целом, предполагаете?
  • https://t.me/clickhouse_ru
    WHERE dictGet(dict,'xxx',column_name) = 'some_value'

    Дорого, будет читать всю таблицу и делать запрос в словарь

    WHERE column_name = dictGet(dict,'xxx','some_value' )

    Дешево, всего один запрос в словарь.
  • https://t.me/clickhouse_ru
    Как часто альтер?, зачем вам нужно так часто поля добавлять?
  • https://t.me/clickhouse_ru
    json постоянно меняет, в нашем случае растет
  • https://t.me/clickhouse_ru
    пару раз в неделю.
  • https://t.me/clickhouse_ru
  • Этого не знал, посмотрю как у нас.
  • https://t.me/clickhouse_ru
    Да нет конечно. Просто пользователи любят поля без индексов
  • https://t.me/clickhouse_ru
    @vchernyshev #228010 02:30 PM, 25 Jul 2021
    Кстати, по поводу добавления новых нод в кластер и вставку через distributed таблицу. Я правильно понимаю, что если локально там какой-нибудь CollapsingMergeTree, то добавление новой ноды всё ломает, потому как распределение данных между шардами меняется?
  • https://t.me/clickhouse_ru
    Да, тогда будет не оч хорошо
  • https://t.me/clickhouse_ru
    @unamedrus #228012 02:32 PM, 25 Jul 2021
    Но если добавить с началом новой партиции, то ничего страшного не будет
  • У нас видимо именно "дорогой" вариант, и вся таблица читается, для каждой строки идут запросы в словари?

    Ваш вариант не подходит, надо выбрать только те строки, у которых по id из таблицы, в словаре is_active=1
  • https://t.me/clickhouse_ru
    Сколько у вас уникальных строк-id то?

    Как часто обновляются активные?
  • https://t.me/clickhouse_ru
    О, об этом не подумал. Спасибо!
  • Надо подсчитать, очень много, причем id tuple (project_id, content_id). Обновления надо доставлять быстро, происходят не очень часто.

    Единственное что приходит на ум, сделать единый словарь для всего контента, сейчас под разный контент/его источник, разные словари.
  • https://t.me/clickhouse_ru
    https://kb.altinity.com/altinity-kb-queries-and-syntax/delete-via-tombstone-column

    Сколько словари в памяти занимают?
    Сколько строк читается с диска при обычных запросах?
  • @troman29 #228018 02:40 PM, 25 Jul 2021
    Я посчитаю и отвечу вам, наверное, завтра, в личку
  • Статистику не нужно удалять, ее нужно хранить всегда, так как клиент может снова выбрать контент
  • @troman29 #228020 02:43 PM, 25 Jul 2021
    Похоже передать список включенного проще прямо в запросе, через in, так как там не так и много, в рамках одного клиента и проекта, и источника
  • @troman29 #228021 02:44 PM, 25 Jul 2021
    Словари нам тут только дают преимущество перед join, за счёт хранения в памяти
  • Выходит наш вариант точно даёт тупняки сейчас?
  • https://t.me/clickhouse_ru
    Речь не идет про удаление же.
    Речь про мутации на один столбец.
    tuple (project_id, content_id)
  • https://t.me/clickhouse_ru
    Ну выполните запрос с и без dictGet фильтра
  • @troman29 #228025 02:47 PM, 25 Jul 2021
    Хорошо, спасибо ещё раз. Нужно ещё воспроизвести с кучей параллельных запросов, в целом время ответа устраивает
  • @troman29 #228026 02:47 PM, 25 Jul 2021
    Сейчас решили это проксей
  • https://t.me/clickhouse_ru
    вы неправильно понимаете зачем нужен шардинг. И шардинг работает по тенанту работает конечно, но решает скорее проблему изоляции, чтобы разделить ресурсы и один клиент не влиял на других.
  • https://t.me/clickhouse_ru
    ZK должен быть на отдельных машинах, иначе ему не достается cpu и диска, проблему cpu можно решить, понизив nice у КХ
  • Я в КХ новичок, в отличии от моих коллег. С вами учусь быстрее)
  • @troman29 #228030 03:12 PM, 25 Jul 2021
    Жирные клиенты у нас тоже есть, и их очевидно надо уносить от остальных.
  • https://t.me/clickhouse_ru
    Они на отдельных на машинах с кучей памяти.
  • https://t.me/clickhouse_ru
    +++
  • https://t.me/clickhouse_ru
    проблема в том что запросы жирного клиента выполняются одиной отдельной машиной, и если всего машин пять, то например запросы могли бы выполняться в 5 раз быстрее. А тут 1 работает, 4 стоят
  • https://t.me/clickhouse_ru
    Вопрос как сделать чтобы пять выполнялись) просто я как понимаю при использование alter on cluster к нас в zk улетает запрос и он выполняется на каждой своей машине, даже если клиент повис по можно увидеть это запрос в zk и его статус
  • https://t.me/clickhouse_ru
    вы сейчас два вопроса задали? или один?
  • https://t.me/clickhouse_ru
    @romul87 #228036 03:19 PM, 25 Jul 2021
    Ради частоты эксперимента пробовал выполнить запрос параллельно на пяти машинах под своим клиентам, то есть локально на репликах. Проблемые реплики(где была проблема c zk) по причине их утилизации на сто сохранялась
  • https://t.me/clickhouse_ru
    Два. Просто иду на улице и писать не удобно.
  • https://t.me/clickhouse_ru
    Про oncluster. On cluster это хелпер, который тупо позволяет вы полнить алтер на всех серверах. Не понимаю что за проблемы с oncluster. Его не существовало например 3 года назад, и я например до сих пор используют скрипты написанные тогда, и не использую on cluster.
  • https://t.me/clickhouse_ru
    Зукипер должен быть на отдельных серверах
  • https://t.me/clickhouse_ru
    Кластер zk на отдельных серверах
  • https://t.me/clickhouse_ru
    >Проблемые реплики(где была проблема c zk)
    что это ? о чем это?
  • https://t.me/clickhouse_ru
    С этим проблем нет. Можем спокойно раскатывать своими скриптами, on cluster не принципиально
  • https://t.me/clickhouse_ru
    У нас очень часто кластер кх утилизирован по цпу на 100. Во время выполнения команд на alter table add field on cluster, мы ловим на репликах различные ошибки связанные с zk.
  • https://t.me/clickhouse_ru
    @romul87 #228044 03:31 PM, 25 Jul 2021
    Даже если потом просто зайти на реплику где была ошибка и выполнить команду alter table add field мы все равно ловим ошибку связанную с zk
  • https://t.me/clickhouse_ru
    @romul87 #228045 03:32 PM, 25 Jul 2021
    Начиная от того, что в реплики метадата не соответствует метадате zk и заканчивая банальной ошибкой timeout
  • https://t.me/clickhouse_ru
    я хочу увидеть копипейст ошибок, вы не понимаете что такое timeout, их шесть разных
  • https://t.me/clickhouse_ru
    @romul87 #228047 03:33 PM, 25 Jul 2021
    но стоит убить все запросы, подождать пока кх придет в норму, утилизация цпу вернется на стандартный уровень когда идут вставки и мерджи это где то 40 процентов цпу. ТО все команды пролетают alter table add field
  • https://t.me/clickhouse_ru
    @romul87 #228048 03:34 PM, 25 Jul 2021
    Кстати еще нюанс при цпу 100 процентов могут даже некоторые таблицы уходить в статус read и не значительно растет delay
  • https://t.me/clickhouse_ru
    это какая-то херня. Не должно быть такого.

    попробуйте

    cat os_thread_priority.xml
    <?xml version="1.0"?>
    <yandex>
    <profiles>
    <default>
    <os_thread_priority>10</os_thread_priority>
    </default>
    </profiles>
    </yandex>
  • https://t.me/clickhouse_ru
    Будет как с отпуска выйду. Шесть разных хм, а можно парочку как примеры
  • https://t.me/clickhouse_ru
    timeout клиента, recieve timeout
    timeout операции с ЗК
    timeout выполнения операции на реплике
    timeout выполнения DDDL запроса
    timeout senddata
  • https://t.me/clickhouse_ru
    Замечательный человек под ником Slach уже порекомендовал поиграться с параметрами max_threads и os_thread_priority.
  • https://t.me/clickhouse_ru
    @romul87 #228053 03:42 PM, 25 Jul 2021
    imeout клиента, recieve timeout - ловил выставили больше таймаут клиенту
    timeout операции с ЗК - и такое было
    timeout выполнения операции на реплике - тоже ловили
    timeout выполнения DDDL запроса - и это было
  • https://t.me/clickhouse_ru
    @romul87 #228054 03:43 PM, 25 Jul 2021
    не давно коллеги писали, что при alter ловили code 517 Metadata on replica is not up to date with common metadata in ZK. Помогло убить все запросы и раздробить ddl на куски поменьше
  • https://t.me/clickhouse_ru
    О чем говорит эта ошибка я знаю )
  • https://t.me/clickhouse_ru
    это ожидаемое/запрограммированное поведение. Нельзя несколько alter посылать одновременно на несколько реплик
    нужно дожидать завершения мутаций / мутаций вызванных альтером, и потом запускать следующий альтер
  • https://t.me/clickhouse_ru
    Раньше проблем не было с ней. Шард то состоит из двух реплик и при уменьшение в ddl запросов alter с 50 до 10 позволило все прогнать
  • https://t.me/clickhouse_ru
    раньше альтеры работали через другой механизм.
  • https://t.me/clickhouse_ru
    50 альтеров? Вы о чем вообще? Зачем нужно 50?
  • https://t.me/clickhouse_ru
    Мы версии не меняли кх. А можно тут поподробней
  • https://t.me/clickhouse_ru
    50 новых столбцов )
  • https://t.me/clickhouse_ru
    ну так и добавляйте их одним альтером
    alter table .... add column if not exists, add column if not exists,add column if not exists,add column if not exists,add column if not exists,add column if not exists,add column if not exists,add column if not exists,add column if not exists,add column if not exists,add column if not exists,add column if not exists;
  • https://t.me/clickhouse_ru
    Дык, так можно было :))) Вернусь с этим к разрабам
  • https://t.me/clickhouse_ru
    @den_crane #228064 03:50 PM, 25 Jul 2021
    если послать
    alter table .... add column if not exists;
    alter table .... add column if not exists;
    alter table .... add column if not exists;
    alter table .... add column if not exists;
    alter table .... add column if not exists;
    alter table .... add column if not exists;
    то будет 517 Metadata on replica is not up to date with common metadata in ZK. -- это ожидаемое поведение
  • https://t.me/clickhouse_ru
    @romul87 #228065 03:51 PM, 25 Jul 2021
    Нашел ошибку которую ловим чаще всего Code: 999, e.displayText() = Coordination::Exception: Session expired (Session expired)
  • https://t.me/clickhouse_ru
    @romul87 #228066 03:52 PM, 25 Jul 2021
    вот она при ЦПУ 100%, нам чаще всего жить не дает
  • https://t.me/clickhouse_ru
    А вот за это отдельное спасибо
  • https://t.me/clickhouse_ru
    надо смотреть что в логах ЗК в этот момент. Я видел такое из-за кривых сетевых драйверов в qemu/kvm, при 100% CPU сеть начинала тормозить и сетевые операции отваливались с таймаут.
  • https://t.me/clickhouse_ru
    Куда можно покапать ? На самих zk cpu и память в норме, то есть еще есть куда расти. Да javaheap подрастает, но не критично. Запросы конечно копятся в очереди на репликах, но опять не критично
  • https://t.me/clickhouse_ru
    Сеть смотреть на zk и кх ?
  • https://t.me/clickhouse_ru
    ну можно просто пинговать ip зукипера, с сервера КХ в момент 100% утилизации cpu на сервере КХ,
    и надо смотреть логи ЗК и КХ при этой ошибке
  • https://t.me/clickhouse_ru
    Denny, я проведу тесты, логи посмотрю, ты не против будешь, если я с этим к тебе еще вернусь ?
  • https://t.me/clickhouse_ru
    да, НО я отвечаю и смотрю только публичные телеграм чаты/github/google groups/stackoverflow/slack. В личке сразу бан.
  • @zhora9001 #228074 04:10 PM, 25 Jul 2021
    Добрый день! Быть может появились официальные (или не официальные, но толковые) арм билды кликхауса?
  • https://t.me/clickhouse_ru
    Ок, с эти проблем нет ) И наверно еще один вопрос. Который всплыл на днях. Реплики клика начали долго стартовать и в логе видно HTTPSessiodnPool: No free connections in pool. Waiting
  • https://t.me/clickhouse_ru
    @romul87 #228076 04:11 PM, 25 Jul 2021
    При чем такие сообщения могут минут 15 сыпать
  • https://t.me/clickhouse_ru
    @romul87 #228077 04:12 PM, 25 Jul 2021
    Гуглеж не помог. Точнее наткнулся на то , что можно попробовать увеличить параметр replicated_max_parallel_fetches_for_host, но насколько увеличть его не понятно
  • https://t.me/clickhouse_ru
    какая версия КХ? Мне нужно посмотреть лог.
  • https://t.me/clickhouse_ru
    @romul87 #228079 04:17 PM, 25 Jul 2021
    Точно не помню, но кажется такая 20.9,5
  • @troman29 #228080 04:18 PM, 25 Jul 2021
    Кажется тут всё об одном, сеть захлёбывается))
  • https://t.me/clickhouse_ru
    @romul87 #228081 04:19 PM, 25 Jul 2021
    Все может быть )
  • https://t.me/clickhouse_ru
    @romul87 #228082 04:19 PM, 25 Jul 2021
    А сколько вы пишите в секунду в клик?
  • @troman29 #228083 04:20 PM, 25 Jul 2021
    Я тоже не у компа, если вопрос ко мне
  • https://t.me/clickhouse_ru
    Да к вам. А может не тактично у людей спрашивать сколько они льют в клик данных)
  • Мы льем в цикле в 1 таблицу в 1 поток, через pipe, в день два больших вброса, не считая мелких.

    Данные уже плоские, update не делаем, alter крайне редкие, изменяемые атрибуты через словари, вот)
  • @troman29 #228086 04:32 PM, 25 Jul 2021
    Ну и таблиц много, контентных, основная витрина статы одна на окружение
  • @troman29 #228087 04:35 PM, 25 Jul 2021
    Перед вставкой удаление старой
  • https://t.me/clickhouse_ru
    Зависит от ширины строк. Некоторые тут миллионы в сек в каждую ноду льют. В среднем пользователи непрерывно вставляют 10-50 тыс. в сек.
  • https://t.me/clickhouse_ru
    Нормально так миллионы в каждую ноду
  • https://t.me/clickhouse_ru
    @809096964 #228090 06:21 PM, 25 Jul 2021
    Коллеги, всем привет, не поможете с советом, как ускорить выполнение первого запроса (поля с key - ключи сортировки, если это важно, в аналогичных запросах могут быть поля отличные от ключей сортировки) select count() from data where keyDate >= '2021-06-05' and keyDate <= '2021-06-25' AND (keytime >= 1622918404) AND (keytime <= 1624653604) AND (msg like '%a%' or msg like '%q%')
    ┌────count()─┐
    │ 1289678421 │
    └────────────┘
    Progress: 4.41 billion rows, 705.71 GB (16.18 million rows/s., 2.59 GB/s.) 98↗️ Progress: 4.41 billion rows, 705.85 GB (16.18 million rows/s., 2.59 GB/s.) 99
    1 rows in set. Elapsed: 272.462 sec. Processed 4.41 billion rows, 705.85 GB (16.18 million rows/s., 2.59 GB/s.)

    select count() from data where keyDate >= '2021-06-05' and keyDate <= '2021-06-25' AND (keytime >= 1622918404) AND (keytime <= 1624653604) AND keyseverity='High' AND (msg like '%a%' or msg like '%q%')

    Progress: 2.87 million rows, 264.25 MB (17.79 million rows/s., 1.64 GB/s.) 35
    Progress: 7.57 million rows, 656.64 MB (28.74 million rows/s., 2.49 GB/s.) 94
    ┌─count()─┐
    │ 18676 │
    └─────────┘
    Progress: 7.57 million rows, 656.64 MB (26.83 million rows/s., 2.33 GB/s.) 94↙️ Progress: 7.96 million rows, 701.37 MB (28.22 million rows/s., 2.49 GB/s.) 99
    1 rows in set. Elapsed: 0.283 sec. Processed 7.96 million rows, 701.37 MB (28.13 million rows/s., 2.48 GB/s.) - сорри, что дублирую вопрос, кто-нибудь знает решение или это нормальное функционирование count?
  • https://t.me/clickhouse_ru
    Все зависит от ширины строки и железа. Кто то вставляет в таблицу из трех полей int32+int32+float64, кто-то в таблицу 600 полей и 2 кб суммарно строка, у некоторых железо 1TB озу и раид из nvme, у других раид из 2 hdd
  • https://t.me/clickhouse_ru
    это нормально функционирование.

    В первом запросе Processed 4.41 billion rows , msg очень тяжелая колонка очевидно, и ее тупо надо читать с диска для 4 млрд. строк, распаковано в 705.85 GB.

    Во втором запросе Processed 7.96 million row, распаковано в 701.37 MB
  • 26 July 2021 (141 messages)
  • https://t.me/clickhouse_ru
    HASH join. 2 таблицы 340 gb и 152 mb.
  • https://t.me/clickhouse_ru
    @esvalukhin #228094 06:08 AM, 26 Jul 2021
    Добрый день!
    Только недавно начал знакомиться с CH, и столкнулся на текущий момент с вот таким запросом:
    Есть таблица в которой лежат URL, мне необходимо вытащить значение параметров строки запроса, при этом нужны не все параметры, а только из определенного списка параметров.
    Составил вот такой запрос с использованием array join
    select param, extractURLParameter(decodeURLComponent(uri), param) as value from http array join ['email', 'customerEmail'] as param where timestamp >= '2021-07-01 00:00:00' and notEmpty(value) = 1;
    но CH ругается, на то что параметр в extractURLParameter должен быть статичным. Можно ли как-то по другому данный запрос составить?
  • https://t.me/clickhouse_ru
    Вам надо получить 2 явных параметра, почему бы просто не написать функцию дважды?
  • https://t.me/clickhouse_ru
    @esvalukhin #228097 06:21 AM, 26 Jul 2021
    список на самом деле динамический, то есть там разной длины массив может быть, поэтому хотелось бы все одним запросом разрулить
  • @1063161973 #228099 06:27 AM, 26 Jul 2021
    Добрый день. Как в КХ можно преобразовать части даты в значение ДатаВремя ?
    Т.е. что-то типа: toDT(Год, Месяц, День, Час, Минута, Секунда)
  • @dmitry_mosin #228100 06:30 AM, 26 Jul 2021
    Привет, подскажите куда копать, КХ 21.3.6.55, проблема с odbc

    select * from odbc('DSN=MSSQL_DSN;UID=user;PWD=pass', 'database_name', 'table_name')
    Выдает ошибку:
    Code: 86. DB::Exception: Received from localhost:9000. DB::Exception: Received error from remote server /columns_info?connection_string=....... HTTP status code: 501 Not Implemented, body: .

    Словарь с этим сурсом выдает:
    SQL Error [344]: ClickHouse exception, code: 344, host: localhost, port: 8123; Code: 344, e.displayText() = DB::Exception: Dictionary source of type odbc is disabled because poco library was built without ODBC support. (version 21.3.6.55)
  • https://t.me/clickhouse_ru
    @keydol123123 #228101 06:32 AM, 26 Jul 2021
    Есть список дат '2021-05', '2021-06', '2021-07'. Как проведить существует ли хоть одна из этих дат в поле date с типом Date
  • Немного непонятно, возможно formatDateTime поможет?
  • аналогично, можно попробовать .. where formatDatetime(date, '%Y-%m') in ('2021-05', '2021-06', '2021-07)?
  • Нет, нужно из чисел. formatDateTime дату в строку преобразовывает.
    А нужно toDT(2021,7,26,9,35,21) преобразовать в дату '2021-07-26 09:35:21')
  • Эт надо КХ из сырцов пересобрать? Или в какую сторону надо копать?
  • https://t.me/clickhouse_ru
    Спасибо за ответ, но условия одинаковые, кроме одной опции в where, и если делать предварительный запрос с distint по ключам партиционирования, чтобы сократить выборку с первого запроса до второго (например, select distinct(keyseverity) from... и увидеть, что из них можно оставить только 'High' - этот вспомогательный запрос тоже будет не легким...) суммарное время выполнения останется прежним большим
  • https://t.me/clickhouse_ru
    замнутый круг получается, чтобы сократить select * from... limit..., можно попробовать сократить по нужному count () или понять по каким полям/условиям можно сократить выборку... а расчет count и/или поиск усекающих условий по тяжести в сумме дают такое же время, как select * from... limit ...
  • https://t.me/clickhouse_ru
    @VASergeev #228108 08:41 AM, 26 Jul 2021
    Привет, подскажите есть ли что-то к кликхаусе типа if, но немного другой логикой:

    Например для if вычисляется сложное знаение, потом сравнивается условие и если оно выполнено, взять вычиленное значение, если не выполнено взять дефолт

    Проблема простого if в двойном вычислении.

    Например if (number > 17, 10, number)
    Вот если nubmer это что-то сложно вычисляемое, можно ли вычислить его 1 раз, прихранить, потом проверить if и потом не считать второй раз в else?
  • https://t.me/clickhouse_ru
    @VASergeev #228109 08:43 AM, 26 Jul 2021
    условно псевдокодом хочу получить такое

    var number = сложное вычисление
    if (number > 10) {
    number = 10
    }
  • https://t.me/clickhouse_ru
    @dmitriynvkv #228110 09:00 AM, 26 Jul 2021
    кстати мне тоже интересно будет ли number дважды вычисляться
  • https://t.me/clickhouse_ru
    вообще если number выражение даст константу то with можно юзать
  • https://t.me/clickhouse_ru
    @VASergeev #228112 09:05 AM, 26 Jul 2021
    не, там это значение считается для нескольких строк
    вообще обходным путем можно вычислить number в колонку а следующей колокной сделать if и обернуть это все в еще один select но вдруг есть путь проще )
  • with не хранит, при каждом обращении к with будет высчитываться
  • https://t.me/clickhouse_ru
    @rasstr0en #228114 09:13 AM, 26 Jul 2021
    Привет! А можно запросом узнать, чем скомпрешшен парт? ZSTD/LZ4 ? Стоит по отсечке в 10Гб использовать ZSTD пытаюсь понять хоть 1 скомпрессилась ли в zstd
  • https://t.me/clickhouse_ru
    @cassej #228115 09:14 AM, 26 Jul 2021
    всем привет, подскажите, как правильно организовать в качестве первичного ключа строку? нужно ли ее предварительно хэшировать для более быстрого поиска?
  • @DovgalyukA #228116 09:16 AM, 26 Jul 2021
    Всем привет!
    Посдкажите, плиз. Есть табличка с столбцом
    `date_time` DateTime64(3)
    И
    ENGINE = ReplacingMergeTree
    PARTITION BY toDate(date_time)
    ORDER BY (date_time)
    Почему с фильтром toDateTime всё окей
    SELECT count()
    FROM grameen_http_cdr
    WHERE toDateTime(date_time) >= toDateTime(1627279320)

    Query id: 7a719fea-dcd6-458d-a011-0a1aa01c3829

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

    1 rows in set. Elapsed: 0.070 sec. Processed 14.18 million rows, 113.42 MB (203.76 million rows/s., 1.63 GB/s.)
    А вот при выборке с toDateTime64 идёт выборка по всей схеме, без учёта партиций
    SELECT count()
    FROM grameen_http_cdr
    WHERE toDateTime64(date_time, 3) >= toDateTime64(1627279320, 3)

    Query id: 46d047f5-ecd1-4b3a-8a6f-5e8ef5de9597

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

    1 rows in set. Elapsed: 4.934 sec. Processed 1.81 billion rows, 14.48 GB (366.89 million rows/s., 2.94 GB/s.)
  • https://t.me/clickhouse_ru
    @cassej ↶ Reply to #228115 #228117 09:21 AM, 26 Jul 2021
    если нужно, то каким лучше алгоритмом это делать?
  • https://t.me/clickhouse_ru
    выше мне советовали skip-index с блум фильтром если идетс сравнение по строке на полное совпадание
  • https://t.me/clickhouse_ru
    @cassej ↶ Reply to #228118 #228119 09:27 AM, 26 Jul 2021
    спасибо, нашел переписку
  • так если колонка в первичном ключе, смысла же нет вешать индекс
  • @1542923331 #228121 09:30 AM, 26 Jul 2021
    Здравствуйте.
    Подскажите, пожалуйста, в какую сторону копать:
    Делаем несколько инсертов в таблицу (движок MergeTree).
    Часть записей появляется сразу, а другие только через некоторое время (может быть 5 мин, 20 мин, бывало даже больше часа задержки).
    Инсерты не большие (1-2 рекорда), нагрузки нет (тестовая БД)
    После каждого инсерта количество записей в system.parts для данной таблицы увеличивается
  • https://t.me/clickhouse_ru
    Грусна
  • https://t.me/clickhouse_ru
    А это везде так или только у кликхауса?
  • https://t.me/clickhouse_ru
    точно не везде. Postgres по моему матерелизует with
    Oracle с хинтом тоже
  • https://t.me/clickhouse_ru
    @VASergeev #228125 09:51 AM, 26 Jul 2021
    Внезапненько
  • https://t.me/clickhouse_ru
    @zholmyrza_t #228126 09:55 AM, 26 Jul 2021
    Кто нибудь имел опыт построения словаря в кассандре? почему-то когда создаю словарь в кх, выдаёт Type mismatch for column "column": expected Cassandra type bigint, в то время как первая колонка String при создании
  • https://t.me/clickhouse_ru
    интересна даже, это вопрос оптимизации кода или железа
  • https://t.me/clickhouse_ru
    не понял вопроса
  • https://t.me/clickhouse_ru
    это риторический вопрос, но интересно что оракл который пилится уже десятки лет можно так легко нагнуть силами пары разработчиков из яндекса за пару лет, может там упирается в IO?
  • https://t.me/clickhouse_ru
    @hatedabamboo #228130 10:00 AM, 26 Jul 2021
    Подскажите, пожалуйста: errors_count в таблице system.clusters — по какому слову грепать в err.log чтобы найти эти ошибки?
  • https://t.me/clickhouse_ru
    там таблицы со множеством полей . как бы oracle не оптимизировался от транзакционная бд. а мой запрос с join аналитический. в нем максимум 5 полей затрагивается
  • https://t.me/clickhouse_ru
    @75280400 #228133 10:04 AM, 26 Jul 2021
    А вообще меня скорость кх приятно удивила. у нас на работе нет проектов с этой бд. Куча руководителей и специалистов уверенна что лучшая бд в мире оракл для любых задач. Но это не так. КХ в аналитике уделает оракл легко.
  • вы уверены что у вас параллелизм одинаковый. и что вы сравниваете время именно джоинов?
  • https://t.me/clickhouse_ru
    да уверен
  • https://t.me/clickhouse_ru
    @webdizi #228136 10:06 AM, 26 Jul 2021
    Парни, а можно как то на mac устноавить отдельно от клика clickhouse-format утилиту ?
  • и как вы сравниваете время именно джоинов?
  • кликхаус один жирный бинарник... clickhouse-?? это алиасы к нему.
    если вам не нужен сервер, поставьте "clickhouse-client", format будет работать
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    @804865419 #228140 10:11 AM, 26 Jul 2021
    Всем доброго! Есть 5 таблиц на MSSQL, связаны между собой один ко многим. Необходимо сделать синхронизацию с ClickHouse. Для того, чтобы не гонять терабайты информации каждая таблица синхронизируются с ClickHouse отдельно. Но при попытке сделать запрос с join по всем таблицам выпадает ошибка о недостатке памяти, та же самая проблема при создании материализованного представления. Кстати, даже по 2 таблицам материализованное представление не даёт нормально синхронизироваться, происходит тайм-аут при записи в таблицу первого уровня. Синхронизация производится внешним приложением по точно.
    Подскажите пожалуйста варианты решения задачи.
  • https://t.me/clickhouse_ru
    Даже 64Гб оперативной памяти мало в этом случае.(
  • надо Joinить от самой большой слева к маленьким справа.
    если у вас несколько факт таблиц, то может придется попотеть.

    MV на джоин вешать плохая затея, МВ это триггер на вставку, он вам не поможет
  • Можно попробовать использовать transform, вместо if. Был опыт его успешного применения под аналогичную задачу
  • https://t.me/clickhouse_ru
    я сравниваю время аыполнения конкретного SQL запроса
  • Может считать не в кликхаузе, а в монге или гринплам?
  • https://t.me/clickhouse_ru
    Можно еще побить один большой запрос на несколько маленьких используя cityHash от ключей для слияния
  • https://t.me/clickhouse_ru
    Так и делаю. Насчёт MV спасибо!
  • https://t.me/clickhouse_ru
    Спасибо, посмотрю.
  • Хотя, пожалуй, под Вашу задачу не выйдет. Но если если все сводится к
    var number = сложное вычисление
    if (number > 10) {
    number = 10
    }
    то кажется, можно обойтись просто least(number, 10)?
  • ок, оракл читает строки из строчной таблицы (т.е. все колонки), КХ читает колонки... джоин вообще не причем. сравнение вообще непонятно
  • да хоть в sqlite, вопрос был не мой =)
  • https://t.me/clickhouse_ru
    Идеально подходит, спасибо)
  • если у вас вычисление простое типа примера, то делайте двойное вычисление, оно быстрее.
    костыли имеют смысл если у вас супер multiIf на 500 условий, или вложенные If на 5-10 уровней со сложной математикой/лямбдами
  • https://t.me/clickhouse_ru
    Там вычисление времени между датами, и если оно превышает 30 минут то взять 30 минут, если меньше то взять существующее. Вот выше подсказали least, выглядит лучшим решением)
  • все правильно вам подсказали
  • пересобрал ch и poco из сырцов, ничего не поменялось, дернуть данные по odbc не получается, взываю к коллективному разуму!
  • https://t.me/clickhouse_ru
    Так там в документации вроде все хорошо описано. Может нужно ODBC в Linux прописать правильно. Там интересная особенность, что нужно и системный DSN правильно прописать, а потом и в самом КХ. Иначе не работает.
  • Скрипт из питона - работает с этим DSN, isql - тоже
  • https://t.me/clickhouse_ru
    Если вдруг, кому-то интересно, то вот такой запрос решает мою проблему
    select param, decodeURLComponent(replaceRegexpOne(arrayElement(arr, 1), '("[^"]+"|\\w+)=("[^"]+"|\\w+)', '\\2'))
    from (
    select param,
    arrayFilter(x -> startsWith(x, concat(param, '=')), parameters) as arr
    from (select param, extractURLParameters(uri) as parameters
    from http
    array join ['email', 'customerEmail'] as param
    where position(queryString(uri), param) <> 0
    and timestamp >= '2021-07-01 00:00:00'
    limit 1000) as t
    where notEmpty(arr)
    group by param, arr);
  • В трейсе freetds - пусто, бридж даже не приходит
  • https://t.me/clickhouse_ru
    Вы системный DSN прописали? В конфигурации КХ тоже? Один раз угробил неделю на бодания, и только после этого у меня заработало в КХ, посредством запросов.
  • Пойду еще раз все перепроверю %)
  • https://t.me/clickhouse_ru
    Потому что КХ не знает куда ему идти.)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #228140 #228166 11:49 AM, 26 Jul 2021
    Подсказываю вариант. Уменьшить количество таблиц в ClickHouse. В идеале до одной.
    Это колоночная база, не нужно в ней воспроизводить структуру хранения и подходы, характерные для обычных реляционных баз.
  • https://t.me/clickhouse_ru
    Фото в статье описывает очень хорошо процесс администрирования КХ.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #228108 #228168 11:51 AM, 26 Jul 2021
    а с чего бы это оно вычисляется два раза? Вы проверяли? Вроде как должно быть 1 раз. Особенно если это явно попросить - if(number > 17, 10, (a+b/c) as number) Можно сделать 1000 раз with/without AS и сравнить.
  • https://t.me/clickhouse_ru
    Смотрим в этом направлении. Спасибо.)
    Придётся добавлять метаинформацию для последующего инкрементного обновления, потому что первое будет около суток длится.
  • https://t.me/clickhouse_ru
    не проверял, не придемал как проверить, отсюда и вопрос был, но ответ нашелся проще, мне нужно было просто меньшее число и подошла функция least
  • Ежи пассатижи! Ну не работает оно у меня! %)
    freetds.conf odbc.ini odbcinst.ini - все прописано и перепроверено, м.б. я не там в документации кх ищу?
  • Можно ссылку на страницу с докой? Что именно надо прописать в конфиге КХ?
  • https://t.me/clickhouse_ru
    @Fullherdi #228173 12:12 PM, 26 Jul 2021
    Добрый день, подскажите в конфиге параметр max_[table/partition]_size_to_drop подхватывается "на лету" или нужно рестартить?
  • https://t.me/clickhouse_ru
    @Fullherdi #228174 12:15 PM, 26 Jul 2021
    удаляю данные транкейтом
  • https://t.me/clickhouse_ru
    @hatedabamboo #228175 12:16 PM, 26 Jul 2021
    config.xml рестартить надо, users.xml на лету.
  • https://t.me/clickhouse_ru
    @Fullherdi #228176 12:17 PM, 26 Jul 2021
    спасибо
  • PostgreSQL начиная с версий 12.х материализует WITH только при явном добавлении указания MATERIALIZED. Поведение по умолчанию же — сворачивание WITH в родительский запрос ("инлайнится", грубо говоря). Однако, это стандартное поведение не выполняется в ряде случаев, информация об этом будет доступна в EXPLAIN. Также возможно и принудительное сворачивание через NOT MATERIALIZED.
    // Это, конечно же, приведено для информации и никак не противоречит вашему утверждению о том, что "точно не везде" ;)
  • https://t.me/clickhouse_ru
    Сделал следующее
    Если таблицу все же необходимо удалить, не перезапуская при этом сервер ClickHouse, то необходимо создать файл <clickhouse-path>/flags/force_drop_table и выполнить запрос DROP.
    помогло
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #228169 #228179 12:43 PM, 26 Jul 2021
    В некоторых ситуациях словари (которые dictionary) оказываются предпочтительнее JOINов в смысле производительности. Про расход памяти не знаю, но вполне возможно тоже.
    Источником данных для словаря м.б. таблица самого ClickHouse. Кажется.
  • я думаю в 90-95% на практике словари лучше чем join
  • https://t.me/clickhouse_ru
    @RT_1_98 #228181 01:05 PM, 26 Jul 2021
    Подскажите можно ли реализовать в КХ таблицу, аналогичную обычной вьюшке, но хранящуюся на диске или в памяти?
    Сейчас есть вьюшка (около 2 млн записей), которая джойнит данные из нескольких других вьюшек и таблиц - выборка занимает порядка 0.5-2 секунды.
    Нужно существенно ускорить запросы в эту вьюшку - пытаюсь изобрести как это сделать.
    Может кто подскажет куда копать?
  • https://t.me/clickhouse_ru
    Join | Документация ClickHouse

    Join Подготовленная структура данных для использования в операциях JOIN. Создание таблицы CREATE TABLE [IF NOT EXISTS] [

  • https://t.me/clickhouse_ru
    спасибо, сейчас почитаю
    может это оно

    как то я пропустил это в документации
  • будьте аккуратнее, а то вам насоветуют)
    а у вас будет сервер падать OOM.
  • https://t.me/clickhouse_ru
    @RT_1_98 #228186 01:11 PM, 26 Jul 2021
    я так понимаю это позволит ускорить джойн во вьюшке, только вот она не наполняется же автоматически при вставке новых данных, так что похоже это не совсем то
  • движок джойн хранит в памяти данные готовые для джойна. Из таблиц нельзя выбрать данные с помощью запроса SELECT.
    У вас возможно внутри джойны можно изменить на словари
  • https://t.me/clickhouse_ru
    @RT_1_98 #228188 01:15 PM, 26 Jul 2021
    если короче, то мне нужно что то вроде кэша вьюшки в памяти или на диске чтобы выборка была максимально быстрая + нужно как тригерить обновление при вставке данных в связанные таблицы
  • https://t.me/clickhouse_ru
    выборка или джойн?
  • https://t.me/clickhouse_ru
    ускорить нужно выборку из вьюшки, а тормозная она потому что джойнится внутри с большой таблицей
  • https://t.me/clickhouse_ru
    @popstas #228192 01:21 PM, 26 Jul 2021
    Здравствуйте, сравниваю данные Метрики и данные logs api, наткнулся на несоответствия данных:

    1. SELECT count(DISTINCT ClientID) выдаёт цифру на 15-20% меньше, чем "Посетители" в Метрике.
    Я неправильно пытаюсь посчитать уников?

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

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

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

    левая часть формируется за менее чем 50 мс
    как это оптимизировать архитектурно я пока не придумал
  • https://t.me/clickhouse_ru
    @rasstr0en #228200 02:07 PM, 26 Jul 2021
    <compression>
    <!-- Set of variants. Checked in order. Last matching case wins. If nothing matches, lz4 will be used. -->
    <case>

    <!-- Conditions. All must be satisfied. Some conditions may be omitted. -->
    <min_part_size>50000000000</min_part_size> <!-- Min part size in bytes. -->
    <min_part_size_ratio>0.0005</min_part_size_ratio> <!-- Min size of part relative to whole table size. -->

    <!-- What compression method to use. -->
    <method>zstd</method>
    </case>
    </compression>
  • https://t.me/clickhouse_ru
    @rasstr0en #228201 02:07 PM, 26 Jul 2021
    Привет! А как работает конфиг компресии, если таблица очень большая, min_part_size больше чем указано а min_part_size_ratio - меньше, будет LZ4 ?
  • https://t.me/clickhouse_ru
    @rasstr0en #228202 02:08 PM, 26 Jul 2021
    надо чтобы оба условия выполнились или хотя бы 1?
  • <!-- Conditions. All must be satisfied simultaneously. Some conditions may not be specified. -->
  • https://t.me/clickhouse_ru
    @ManfrediK #228205 02:38 PM, 26 Jul 2021
    Всем привет!
    ClickHouse server version 21.7.4.18 (official build).
    No alias for subquery or table function in JOIN (set joined_subquery_requires_alias=0 to disable restriction)

    не могу найти в документации как выставить в 0 этот парамтр
  • @SemyonGalichenko #228206 02:42 PM, 26 Jul 2021
    Привет!
    Подскажите, пожалуйста shard_weight можно поставить в 0, чтобы данные не писались на шард?
  • https://t.me/clickhouse_ru
    Можно, там есть свои особенности, что в старых версиях отправлялись block данных в 0 строк, но это работает
  • Спасибо
  • https://t.me/clickhouse_ru
    спасибо! Вот это проглядел
  • https://t.me/clickhouse_ru
    @ManfrediK #228211 03:12 PM, 26 Jul 2021
    Нашел настройку в system.settings
    ALTER TABLE system.settings UPDATE value = 0 WHERE name='joined_subquery_requires_alias'

    Но есть проблема
    Code: 48, e.displayText() = DB::Exception: Table engine SystemSettings doesn't support mutations (version 21.7.4.18 (official build))
  • wow wow палехче ) так нельзя...

    можно в запросе писать в конце

    SETTINGS joined_subquery_requires_alias=0

    либо в конфиге
  • https://t.me/clickhouse_ru
    @ManfrediK #228213 03:15 PM, 26 Jul 2021
    =))) Эту настройку в конфиге к юзеру ?
  • https://t.me/clickhouse_ru
    @ManfrediK #228214 03:15 PM, 26 Jul 2021
    надо пихнуть ? =)
  • https://t.me/clickhouse_ru
    @ManfrediK #228216 03:20 PM, 26 Jul 2021
    Ага, спасибо! Уже пихнул заработало
  • в профиле юзеров можно.
    например для дефолтного кидаете файлик в "user.d/"

    <yandex>
    <profiles>
    <default>
    <allow_experimental_geo_types>1</allow_experimental_geo_types>
    </default>
    </profiles>
    </yandex>
    ~
  • https://t.me/clickhouse_ru
    @fly_gambit #228218 03:46 PM, 26 Jul 2021
    HELP. Есть несколько таблиц подчиненных друг другу, если сджойнить их в представление, как правильно посчитать например сумму по полю верхней таблицы, чтобы не было задвоения, затроения и т.д?
  • https://t.me/clickhouse_ru
    а зачем джоинить если считать только по одной "верхней" таблице?
  • можно делить на count.

    sum(field1)/count(distinct <uniquefieldfromChildTable>)
  • @355295714 #228221 03:54 PM, 26 Jul 2021
    Добрый вечер. Подскажите пожалуйста есть ли какой-то инструмент для создания бэкапов и разворачивания данных с бэкапов
  • https://t.me/clickhouse_ru
    отборы нужны с другой таблицы
  • https://t.me/clickhouse_ru
    GitHub - AlexAkulov/clickhouse-backup: Tool for easy ClickHouse backup and restore with cloud storages support

    Tool for easy ClickHouse backup and restore with cloud storages support - GitHub - AlexAkulov/clickhouse-backup: Tool for easy ClickHouse backup and restore with cloud storages support

  • спасибо)
  • https://t.me/clickhouse_ru
    можно попробовать так:
    select sum(f1)
    from table1
    where f2 in (
    select f2
    from table2
    where …
    )
  • @safronov_m #228226 04:07 PM, 26 Jul 2021
    Подскажите пожалуйста по разреженному индексу.
    По идее меньший размер должен приводить к меньшему кол-ву чтения ценой роста потребления памяти ?
    Есть таблица GraphiteMergeTree с index_granularity = 32768, с которой хочется снизить объемы чтения. Создал копию с index_granularity = 8192.
    На том же наборе данных и при том же запросе read_rows и memory_usage ниже, но выше время выполнения запроса.
    Возвращяемый набор идентичен.

    Index_granularity = 32768 Query id: 984fa285-7fec-4aa6-8b73-e045358b11af1 rows in set. Elapsed: 0.319 sec. Processed 4.36 million rows, 678.57 MB

    Index_granularity = 8192 Query id: 38c93604-26c3-4a09-8780-216ee3505ada1 rows in set. Elapsed: 1.226 sec. Processed 761.86 thousand rows, 111.31 MB

    По статистике с query_log видно, что сжатых блоков читается меньше. Также меньше выбранных партов. Размеры партов сходные. Но ощутимо выше ReadBufferFromFileDescriptorReadBytes.
    По идее должны же читать меньше или я что то не понял в работе MergeTree и разреженного индекса ?
  • https://t.me/clickhouse_ru
    @kuzmin_m #228227 04:22 PM, 26 Jul 2021
    Привет!
    Если я использую комбинатор агрегационной функции -If, то будет ли использоваться индекс?
    Есть первичный ключ: A, B
    Я хочу сделать группировку по A, и накладывать условие between на B. A - lowcardinality, B - постоянно увеличивающееся время. Спасибо.
  • https://t.me/clickhouse_ru
    Нет, не будет

    Лучше продублировать часть условия в WHERE
  • https://t.me/clickhouse_ru
    Там прикол в том, что мне нужно что-то вроде left outer join. Т.е. чтобы группы были за все время, а значения только за заданное.
  • Если вам строку надо читать, неясен вопрос про индекс.. суть индекса в том чтоб "не читать" что то. Сам по себе индекс разреженный и для подсчетов значений в кх не может использоваться
  • https://t.me/clickhouse_ru
    Там где про внешние словари
  • Это все обсосано вдоль и поперёк. Похоже проблема в сборке под мою систему. Видимо poco идущий в комплекте всетаки без поддержки odbc
  • @dmitry_mosin #228233 04:53 PM, 26 Jul 2021
    Попробую развернуть под дебиан, проверю
  • https://t.me/clickhouse_ru
    >sudo apt-get install -y unixodbc odbcinst odbc-postgresql
    >Настройка /etc/odbc.ini (или ~/.odbc.ini)...
    https://clickhouse.tech/docs/ru/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-sources/#primer-podkliucheniia-postgresql
    Источники внешних словарей | Документация ClickHouse

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

  • С odbc - у меня все в порядке. Isql и скрипты на питоне отлично видят БД по DSN. Бридж принимает запрос от клиента и молча возвращает 501 ошибку. В том числе и при запросах напрямую, через curl. В логах бриджа - никаких ошибок.
  • @kalloc #228236 05:24 PM, 26 Jul 2021
    Добрый день.

    Materialized view в КХ — стабильны? продакшен реди?
  • В логах кликхаус-сервер - есть ошибки, 501 not implemented
  • https://t.me/clickhouse_ru
    Да
  • При попытке получить данные из созданного словаря - вышеописанная ошибка, про то что poco собран без odbc
  • @kalloc ↶ Reply to #228238 #228240 05:29 PM, 26 Jul 2021
    Я тут тестировал с вью, задача наполнять что-то типа свечей (аккумулировать прайсы в д/н/м/год), исторические данные наполнились по INSERT правильно, а дальше по триггеру пишутся частично.
  • @kalloc #228241 05:29 PM, 26 Jul 2021
    Можете посоветовать Tutorial на эту тему с рабочим кейсом?
  • https://t.me/clickhouse_ru
    какой тип движка таблицы используете?
  • @kalloc ↶ Reply to #228242 #228243 06:06 PM, 26 Jul 2021
    AggregatingMergeTree
  • https://t.me/clickhouse_ru
    тогда странно почему исторические данные, норм, а после - частично. что-то нестандартное используете? джойны и т.д.?
    скиньте ддл таблицы, там наверно сразу будет видно проблему
  • 27 July 2021 (119 messages)
  • https://t.me/clickhouse_ru
    @Kanuas_1 #228247 03:25 AM, 27 Jul 2021
    Добрый день, при использовании laginframe на таблицу, получаю странный результат
  • https://t.me/clickhouse_ru
    @Kanuas_1 #228248 03:25 AM, 27 Jul 2021
    select
    id, num,
    lagInFrame(test_dt) over (partition by id order by test_dt ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as eff_dt,
    test_dt as exp_dt from test.test
    343123 1234567 1970-01-01 06:00:00 2020-02-24 17:08:59
    343123 7654321 1973-05-04 22:26:32 2020-02-24 17:20:12
  • https://t.me/clickhouse_ru
    @Kanuas_1 #228249 03:26 AM, 27 Jul 2021
    При этом, если записать исходные данные через селект, результат выходит правильный
  • https://t.me/clickhouse_ru
    @Kanuas_1 #228250 03:27 AM, 27 Jul 2021
    select
    id, num,
    lagInFrame(test_dt) over (partition by id order by test_dt ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as eff_dt,
    test_dt as exp_dt from
    ( select 343123 as id, 1234567 as num, '2020-02-24 17:08:59' as test_dt
    union all
    select 343123 as id, 7654321 as num, '2020-02-24 17:20:12' as test_dt)
    343123 1234567 2020-02-24 17:08:59
    343123 7654321 2020-02-24 17:08:59 2020-02-24 17:20:12
  • https://t.me/clickhouse_ru
    @Kanuas_1 #228251 03:27 AM, 27 Jul 2021
    В чем может быть проблема?
  • https://t.me/clickhouse_ru
    @OrNixx #228254 08:00 AM, 27 Jul 2021
    всем привет. разраб по незнанию вместо дропа партиций бахнул огромный alter table delete (мутацию). Её можно как-нибудь остановить?
  • https://t.me/clickhouse_ru
    KILL MUTATION WHERE 1

    KILL MUTATION WHERE mutation_id = 'xxx'
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #228255 #228256 08:05 AM, 27 Jul 2021
    MODIFY COLUMN RequestTime String │ 2020-12-07 19:42:07
    MODIFY COLUMN UpstreamResponseTime String │ 2020-12-07 19:42:48

    если помимо делитов зацепил старые такие, ничего страшного? я не очень понимаю один момент, они там пожизненно висят?
  • https://t.me/clickhouse_ru
    @OrNixx #228257 08:07 AM, 27 Jul 2021
    а, всё нормально. делиты не прошли, места не хватило
  • https://t.me/clickhouse_ru
    @OrNixx #228258 08:07 AM, 27 Jul 2021
    спасибо
  • https://t.me/clickhouse_ru
    > если помимо делитов зацепил старые такие, ничего страшного? я не очень понимаю один момент, они там пожизненно висят?

    Да, ну подчищаются старые если больше 100 штук накопилось
    А так весят всегда. Если мутации закончились, то ничего страшного
  • https://t.me/clickhouse_ru
    @mr_andrey_beliy #228260 08:11 AM, 27 Jul 2021
    Всем привет.
    Коллеги, подскажите где можно найти доку по работе с внешними словарями типа executable. Интересует, как происходит запуск скрипта, как обрабатывается lifetime, как отслеживается процесс(если отслеживается) и как происходит его перезапуск.

    Или проще самому протестить это? в официальной доке не нашел никаких подробностей.
  • https://t.me/clickhouse_ru
    @hostadminonline #228261 08:19 AM, 27 Jul 2021
    Добрый день, подскажите плз, а как скопировать структуру таблицы ? ну в смысле создать таблицу на основании другой таблицы без данных ?
  • https://t.me/clickhouse_ru
    CREATE new_table AS other_table
  • https://t.me/clickhouse_ru
    @hostadminonline #228263 08:22 AM, 27 Jul 2021
    big snks
  • кмк мало людей используют такие словари из executables, лучше сами протестите...
  • https://t.me/clickhouse_ru
    @ARyndin #228265 09:01 AM, 27 Jul 2021
    Добрый день. А как кликхаус выбирает, какой блок переместить на следующий диск в гетерогенной конфигурации стораджа при достижении move_factor? Что если на холодный диск уедут маленькие блоки?
    И как move_factor взаимодействует с max_data_part_size? Что будет в приоритете?
  • >А как кликхаус выбирает, какой блок переместить на следующий диск в гетерогенной конфигурации стораджа при достижении move_factor? Что если на холодный диск уедут маленькие блоки?

    не думаю что на эту логику следует рассчитывать, она может и поменяться. Если надо чтобы не уезжали маленькие блоки, то лучше использовать ТТЛ based логику, а если диски одинаковые какая разница...

    >И как move_factor взаимодействует с max_data_part_size? Что будет в приоритете?

    если парт больше чем max_data_part_size, он просто в этот волюм не вставится, и пойдет в другой волюм. КХ заранее примерно рассчитывает будущий размер.

    move_factor влияет на background перемещения.

    короче, они не взаимодействуют.
    подробнее https://altinity.com/blog/2019/11/29/amplifying-clickhouse-capacity-with-multi-volume-storage-part-2
  • https://t.me/clickhouse_ru
    @rasstr0en #228271 10:21 AM, 27 Jul 2021
    ZSTD (первый парт) и LZ4 (остальные) честные x2 сжатие, рекомендую
  • https://t.me/clickhouse_ru
    > короче, они не взаимодействуют.
    так если блок смёржился и стал больше чем max_data_part_size_bytes, но до move_factor ещё далеко, получается блок не отъедет?
  • https://t.me/clickhouse_ru
  • Отъедет, это ж новый парт.
    Мердж это удаление старых партов и запись новых.
  • https://t.me/clickhouse_ru
    так выходит эти две опции всё же взаимодействуют и max_data_part_size_bytes в приоритете?
  • Если макс сайз превышен он сразу запишется в другой волюм. Если он не превышен но мувфактор превышен, он или другой парт перенесется потом на новый волюм.
  • https://t.me/clickhouse_ru
    @fly_gambit #228277 10:51 AM, 27 Jul 2021
    Всем привет. Может кто подсказать к кому обратится за консультацией ($). Сейчас используем Qlik Sense, данные подливаем из MSSQL, поставлена задача перейти на ClickHouse. Данных в целом немного (3 таблиц до 1 млн и пару по 10 млн). С CH вообще не работали(( интересует общая консультация есть ли смысл, какую модель юзать, какого железа должно хватить и т.д, спасибо за понимание!
  • https://t.me/clickhouse_ru
    @chubukov #228278 10:55 AM, 27 Jul 2021
    Привет, как посмотреть что КХ держит в оперативке и сколько это занимает места?
  • смотрите словари, процессы, мерджи
  • select formatReadableSize(sum(bytes_allocated)) from system.dictionaries;
    select formatReadableSize(sum(memory_usage)) from system.merges;
    select formatReadableSize(sum(memory_usage)) from system.processes;
  • https://t.me/clickhouse_ru
    @rvkggwp #228282 11:10 AM, 27 Jul 2021
    Добрый день, кто сталкивался с проблемой. Для таблицы с engine = Kafka зависли материализованные представления, пример на картинке. Если отключаю материализованное представление, то из списка пропадает только одно, а два других всегда остаются, как решить проблему? Это поле system.tables.dependencies_tables
  • https://t.me/clickhouse_ru
    @AppKiv #228284 11:27 AM, 27 Jul 2021
    надеюсь, понятно описал (потому как задача опять поставлена через пень колоду)
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    Вы скорее всего чатом ошиблись
  • КХ держит словари, индексы, марк кеш в памяти (его можно сбрасывать). Ещё при крупных вставках тоже жрет память теперь (флаг optimize_on_insert).

    индексы в памяти через system.tables.

    мерджи памяти потребляют мало. запросы - это уже зависит от запросов. КХ не сразу освобождает память после запросов.

    так что основные константные потребители - это словари, индексы и марк-кеш
  • https://t.me/clickhouse_ru
    @RemiZOffAlex #228289 12:19 PM, 27 Jul 2021
    Как подсчитать размер строки, размер таблицы, размер БД на диске?
  • https://t.me/clickhouse_ru
    Clickhouse: как узнать размеры таблиц? - Highload.today

    Запрос на Clickhouse для вывода всех таблиц и их размеров

  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @whatwhh #228292 12:25 PM, 27 Jul 2021
    Всем привет! Что может вызывать ошибку DB::ParsingException: Cannot read all array values: read just 1846312 of 3705006? Возникает нерегулярно, TTL для таблички не установлен вовсе. Запросы, которые этой ошибкой завершаются - инсерты, все долгие (более 2 минут), версия кх 21.3.5.42
  • https://t.me/clickhouse_ru
    У вас там большие массивы в инсертах?
  • https://t.me/clickhouse_ru
    Больше 10к записей, но меньше 100к
  • https://t.me/clickhouse_ru
    Ну и обновитесь до последней 21.3 версии
  • https://t.me/clickhouse_ru
    А это точно поможет?)
  • https://t.me/clickhouse_ru
    Ну 21.3.5 довольно сыровата
    Мы вот рекомендуем как минимум 21.3.13
  • https://t.me/clickhouse_ru
    @unamedrus #228298 12:35 PM, 27 Jul 2021
    По поводу вашей проблемы, нужен воспроизводимый пример, но 10к-100к записей в каждом массиве это довольно большие массивы.
  • https://t.me/clickhouse_ru
    @whatwhh #228299 12:38 PM, 27 Jul 2021
    В том и проблема, что воспроизвести не получается, стреляет от случая к случаю(
  • @7699150 #228300 12:41 PM, 27 Jul 2021
    Всем привет!
    Есть вопрос по словарям.
    Можно ли как-то ключ словаря сделать не UInt64?
    Переводим некоторые таблички на словари и в большом отчетов и агрегаций начинают сыпаться ошибки по несоответвию типов
  • https://t.me/clickhouse_ru
    @497282862 #228301 12:49 PM, 27 Jul 2021
    Добрый день. Подскажите плз, конектил ли ктото онлайновый(не дестктопный) Tableu к ClickHouse ?
    Почитал сообщения в группе, есть только про десктоп и сервер варианты(если я правильно понял).
    Заранее спасибо :)
  • @DSairanD #228302 01:00 PM, 27 Jul 2021
    Tabix юзал
  • https://t.me/clickhouse_ru
    Нет, ну либо использовать complex_key словари
  • https://t.me/clickhouse_ru
    https://help.tableau.com/current/online/en-us/to_connect_live_sql.htm#connectors

    Облачная табло не поддерживает.
    Возможно когда наш коннектор засертифицирует табло, будет возможно.
    Tableau Online: Allow Direct Connections to SQL-based Data in the Cloud

    If you maintain SQL-based data on a cloud platform, you can use direct connections to that data when you publish workbooks and data sources to Tableau Online

  • https://t.me/clickhouse_ru
    Можно загружать csv и импортировать в tableau
  • https://t.me/clickhouse_ru
    @paveltyavin #228306 01:26 PM, 27 Jul 2021
    Самый проверенный способ для CH+Tableau
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @infatum #228309 01:29 PM, 27 Jul 2021
    всем привет, почему функция преобразователь из юникс тайм стемп в миллисекундах возвращает далекое будущее?
  • https://t.me/clickhouse_ru
    @nyatmeat #228310 01:29 PM, 27 Jul 2021
    А разве unixTimestamp не в секундах?
  • https://t.me/clickhouse_ru
    нет, он может быть хоть в наносекундах
  • https://t.me/clickhouse_ru
    @infatum #228312 01:30 PM, 27 Jul 2021
    у меня он в миллисекундах
  • https://t.me/clickhouse_ru
    @DenisTsvetkov #228313 01:30 PM, 27 Jul 2021
    он в секундах)
  • https://t.me/clickhouse_ru
    @infatum #228314 01:30 PM, 27 Jul 2021
    у меня очень жесткий потоковый стрим из сокета, там таймстемп в милисекундах
  • https://t.me/clickhouse_ru
    @infatum #228315 01:30 PM, 27 Jul 2021
    ради кликхауса терять точность не собираюсь
  • https://t.me/clickhouse_ru
    Спасибо, а сколько вы кладте +\- времени на сертефикацию?
  • https://t.me/clickhouse_ru
    @infatum #228317 01:31 PM, 27 Jul 2021
    "timestamp DateTime64, "
  • https://t.me/clickhouse_ru
    @infatum #228318 01:31 PM, 27 Jul 2021
    в базе он DateTime64прописан
  • https://t.me/clickhouse_ru
    Анфортунатели, обьёмы данных не про Цсв ((
  • https://t.me/clickhouse_ru
    по проблеме есть что сказать?
  • https://t.me/clickhouse_ru
    для не csv-объёмов связка tableau+ch не работает
  • https://t.me/clickhouse_ru
    @paveltyavin #228322 01:32 PM, 27 Jul 2021
    используйте другой BI
  • https://t.me/clickhouse_ru
    @DenisTsvetkov #228323 01:32 PM, 27 Jul 2021
    проблема в том, что юникс тайм это количество секунд, а вы вместо него передаете миллисекунды
  • https://t.me/clickhouse_ru
    Tableu не вывезет ?
  • https://t.me/clickhouse_ru
    драйвер не вывезет
  • https://t.me/clickhouse_ru
    @paveltyavin #228326 01:33 PM, 27 Jul 2021
    который odbc
  • https://t.me/clickhouse_ru
    что сокет дал - то и имею, не я их создаю же, непонятно?
  • https://t.me/clickhouse_ru
    Type Conversion | ClickHouse Documentation

    Type Conversion Functions Common Issues of Numeric Conversions When you convert a value from one to another data type, y

  • https://t.me/clickhouse_ru
    Ясен понятен, спс :)
  • https://t.me/clickhouse_ru
    о, спасибо, годно
  • https://t.me/clickhouse_ru
    Вам действительно нужно в табло вытаскивать миллиарды строк?
  • https://t.me/clickhouse_ru
    нет. десятков тысяч хвтит
  • https://t.me/clickhouse_ru
    @paveltyavin #228333 01:36 PM, 27 Jul 2021
    Но даже на них ODBC не справляется
  • https://t.me/clickhouse_ru
    @paveltyavin #228334 01:36 PM, 27 Jul 2021
    даже на тысяче задержки в 10 секунд
  • https://t.me/clickhouse_ru
    обьём +\- 10 - 50 млн
  • https://t.me/clickhouse_ru
    имеется в виду кол-во строк в результате. То есть уже в аггрегациях
  • https://t.me/clickhouse_ru
    Почему у меня костыльный odbc драйвер в power bi возвращает 1000 строк за секунды?
  • https://t.me/clickhouse_ru
    Видимо потому что там драйвер норм
  • https://t.me/clickhouse_ru
    Нет, такой же odbc
  • https://t.me/clickhouse_ru
    и? Драйвер все равно не тот же самый
  • https://t.me/clickhouse_ru
    @paveltyavin #228341 01:39 PM, 27 Jul 2021
    Я вот про этот драйвер говорю

    https://github.com/ClickHouse/clickhouse-odbc

    В нем есть тормоза при работе с tableau.
  • https://t.me/clickhouse_ru
    @unamedrus #228342 01:39 PM, 27 Jul 2021
    Ровно такой же odbc драйвер, просто обертка другая.

    Про odbc драйвер можно много плохого сказать, но 1000 строк он не 10 секунд будет возвращать если есть нормальная сеть.
  • https://t.me/clickhouse_ru
    вы попробуйте просто
  • https://t.me/clickhouse_ru
    Основная идея моего кривенького, это атомарка которая собирается в разные агрегации.
    Для аналитики подругому сложно, нужно часто спускаться до низжего уровня
  • https://t.me/clickhouse_ru
    @paveltyavin #228345 01:40 PM, 27 Jul 2021
    Tableau генрирует к odbc специфичные запросы, и большие лаги происходят не в CH и не в Tableau, а именно в драйвере
  • https://t.me/clickhouse_ru
    @paveltyavin #228346 01:41 PM, 27 Jul 2021
    powerBi может генрировать другие запросы в драйвер, не работал с powerBI, не видел его запросы
  • https://t.me/clickhouse_ru
    с маленьким размером батча не может быть связано?
    что-нибудь типа CAP_ODBC_FETCH_BUFFERS_SIZE_MASSIVE ?
  • https://t.me/clickhouse_ru
    К сожалению уже не знаю. Два года назад я перебирал все настройки драйвера, с тех пор может новые появились, которые могут настроить tableau хорошо, по умолчанию до сих пор тормоза
  • https://t.me/clickhouse_ru
    У меня на руках нет табло, но наши клиенты пользовались tableau и с обычным odbc драйвером, и пробуют сейчас с нашим коннектором.
    1000 строк (если там не какой то сложный запрос который и без этой мишуры долго выполняется) за 10 секунд это что то не так
  • https://t.me/clickhouse_ru
    А, ну два года назад.

    С этого нужно было начинать
  • https://t.me/clickhouse_ru
    @paveltyavin #228351 01:46 PM, 27 Jul 2021
    Если найдете настройки , которые позволяют уменьшить тормоза - было бы классно
  • https://t.me/clickhouse_ru
    нашёл список настроей, которые я тюнил, этого там нет.
  • https://t.me/clickhouse_ru
    @DenisTsvetkov #228353 01:51 PM, 27 Jul 2021
    да, набор опций зависит от версии,
    но в любом случае, стоит выснить размер батча, как мне кажется
    тут пишут:
    >Row/Resultset Buffers - Prefer larger buffer sizes to improve the performance of fetching numerous rows, which can greatly improve the speed of creating extracts. This is sometimes called the cache size or response size.

    https://help.tableau.com/current/pro/desktop/en-us/odbc_customize.htm
    Example: Customize an ODBC Connection

    When you use a connector for a database that supports SQL, Tableau generates SQL statements that are tuned for that database

  • @SonFire #228355 02:04 PM, 27 Jul 2021
    Не могу скопировать данные из PG, выходит ошибка
    Code: 998, e.displayText() = DB::Exception: Unable to connect to any of the replicas (version 21.6.5.37 (official build))
    CREATE TABLE local_db.status
    (
    `id` UInt64
    )
    engine = PostgreSQL('localhost:5432', 'db-test', 'public.status', 'user', 'password')

    pg table
    create table if not exists status
    (
    id bigserial not null
    primary key
    }
    В какую строну копать, подскажите пожалуйста?)
  • https://t.me/clickhouse_ru
    @DenisTsvetkov #228356 02:10 PM, 27 Jul 2021
    предположение в стиле "пальцем в небо":
    может localhost заменить на реальный адрес интерфейса?
  • https://t.me/clickhouse_ru
    @DenisTsvetkov #228357 02:11 PM, 27 Jul 2021
    ну типа PG не прослушивает lo и не принимает на нем соединения...
  • PG локально стоит и слушает этот адрес. Через pgAdmin все подключается
  • https://t.me/clickhouse_ru
    @Fullherdi #228359 02:35 PM, 27 Jul 2021
    Всем привет!
    Есть 2 инстанса КХ
    Есть табличка ReplicatedMergeTree
    Через HAProxy пишет сервис в табилцу с балансировкой раундробин
    На нодах получается разное кол-во записей
    Если делаю транкейт на ноде где больше записей, в ноде где было меньше записей таблица очищается, а на которой больше остается сколько было до транкейка минус то что было на реплике
    Почему так происходит подскажите и как это починить
  • https://t.me/clickhouse_ru
    Отбой ребят, дело было не в бабине ....
  • https://t.me/clickhouse_ru
    zookeeper настроен?
    SELECT * FROM system.zookeeper WHERE path='/'

    system.macros
    разный replica для обоих хостов?

    релпикация асинхронная, после того как вы записали в таблицу на ноде
    создается part в system.parts и item в ZK очереди на репликацию
    после этого clickhouse сам идет и качает с другой ноды физические файлы с данными

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

    SELECT
    table,
    formatReadableSize(sum(bytes)) AS size,
    min(min_date) AS min_date,
    max(max_date) AS max_date
    FROM system.parts
    GROUP BY table
    Возвращал неверное значение
  • https://t.me/clickhouse_ru
    @BloodJazMan #228364 03:01 PM, 27 Jul 2021
    =) а
  • Поменял на ip, вроде бы подключается к pg. Теперь другая ошибка java.net.ConnectException: Connection refused: connect
    В pg_hba.conf, все открыто
  • https://t.me/clickhouse_ru
    @keydol123123 #228366 04:06 PM, 27 Jul 2021
    toQuarter возвращает номера кварталов
    Можно сделать чтобы она возвращала год-месяц начала кварталов?
  • https://t.me/clickhouse_ru
    toStartOfQuarter ?
  • https://t.me/clickhouse_ru
    Спасибо, то что нужно
  • @1803285152 #228370 05:39 PM, 27 Jul 2021
    Подскажите как в groupArray записать в детерминирован порядке? Если поля id_order,name, date, делаю groupArray(name) order by id_order, и в groupArray надо отсортировать по полю date
  • https://t.me/clickhouse_ru
    Сортировка по нужному полю в подзапросе
  • Но я не группирую по нему, как сортировать тогда?
  • https://t.me/clickhouse_ru
    > в подзапросе

    SELECT groupArray(x) FROM (SELECT * .... ORDER BY y)
  • Спасибо
  • https://t.me/clickhouse_ru
    @dmitriynvkv #228377 08:16 PM, 27 Jul 2021
    Наткнулся тут на https://clickhouse.tech/docs/ru/sql-reference/statements/select/all/ а есть ли практическое применение этого?
    ALL | Документация ClickHouse

    Секция ALL Если в таблице несколько совпадающих строк, то ALL возвращает все из них. Поведение запроса SELECT ALL точно

  • https://t.me/clickhouse_ru
    Донастраивать pg_hba. Сверяться с настройками пгадмина.
  • https://t.me/clickhouse_ru
    Скорее всего добавлено больше для соответствия ansi sql
  • 28 July 2021 (46 messages)
  • Скорее всего select arraySort(groupArray(x)) from table будет эффективнее по памяти (по крайней мере когда есть группировка)
  • в наших тестах это ещё зависело от размера массивов, если они сильно разные (где то 10, где то 10 тыс) у нас было так себе по скорости... глубоко никто не копал правда.
  • Это не помогло, все равно есть местами события не по порядку
  • https://t.me/clickhouse_ru
    @ndemyanchuk #228390 08:09 AM, 28 Jul 2021
    Всем дратути, хочу заюзать новый экспериментальный engine replicated. Пока вроде все работает, но вопрос про веса шардов - есть ли какая-то возможность их поменять для той или иной ноды?
    Так как шарды теперь прописываются не в конфиге, а создаются динамически - как быть с весами?

    Спасибо
  • https://t.me/clickhouse_ru
    @ndemyanchuk #228391 08:10 AM, 28 Jul 2021
    Веса нужно теоретически будет поменять, если будем добавлять еще шардов, и нужно будет сбалансировать данные - писать больше в новые шарды какое-то время
  • https://t.me/clickhouse_ru
    @RT_1_98 #228392 09:56 AM, 28 Jul 2021
    подскажите как можно в селекте на основе которого формируется MV использовать сабселекты заданные в WITH?

    сам селект который пытаюсь использовать в MV с WITH рабочий если выполнить напрямую
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #228392 #228393 10:19 AM, 28 Jul 2021
    with работает без проблем. Только обнаружилось что MV to table as select должен формировать правильные имена колонок. Иначе заполняет дефолтными значениями.
  • https://t.me/clickhouse_ru
    Мне выдаёт ошибку что в базе нет таблиц с именами из WITH
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #228394 #228395 10:40 AM, 28 Jul 2021
    у вас одна база или несколько? не могло случиться какой-то "запутанности"? Ну и версию наверное надо посвежее, там что-то улучшали с CTE.
  • https://t.me/clickhouse_ru
    Когда делаю в целевую таблицу insert into target_table select * from (%select with%)
    То всё ок
    А когда пытаюсь сделать МВ на базе этого запроса, то выдаёт ошибки что таблиц с именем из секции WITH нет в базе.
    База одна
  • https://t.me/clickhouse_ru
    @RT_1_98 #228397 10:47 AM, 28 Jul 2021
    Может там синтаксис нужен особый в МВ
  • https://t.me/clickhouse_ru
    @whsv26 #228399 11:44 AM, 28 Jul 2021
    Всем привет. Можно ли сделать добавление нового столбца в таблицу синхронным? Миграция валится из-за того, что следующий statement зависит от колонки, которая создаётся в предыдущем.
  • @infoss_cto #228400 11:51 AM, 28 Jul 2021
    Добрый день всем! Похоже тикет https://github.com/ClickHouse/ClickHouse/pull/16252 не совсем исправил проблему с SNI.
    Я пытаюсь загрузить данные с внешнего TSV, получаю SSL Exception: error:10000410:SSL routines:OPENSSL_internal:SSLV3_ALERT_HANDSHAKE_FAILURE (version 21.7.4.18 (official build))

    Вот запрос:

    SELECT
    *
    FROM url('https://www.erikbolstad.no/postnummer-koordinatar/txt/postnummer.csv', TabSeparatedWithNames, '`POSTNR` String DEFAULT '''',
    `POSTSTAD` String DEFAULT '''',
    `POSTNR- OG STAD` String DEFAULT '''',
    `BRUKSOMRÅDE` String DEFAULT '''',
    `FOLKETAL` UInt16 DEFAULT 0,
    `BYDEL` String DEFAULT '''',
    `KOMMNR` UInt16 DEFAULT 0,
    `KOMMUNE` String DEFAULT '''',
    `FYLKE` String DEFAULT '''',
    `LAT` Float32,
    `LON` Float32,
    `DATAKVALITET` String DEFAULT '''',
    `DATAKVALITETSFORKLARING` String DEFAULT '''',
    `SIST OPPDATERT` String DEFAULT ''''')
    LIMIT 20;
    Support SNI in https connections to remote resources by alexey-milovidov · Pull Request #16252 · ClickHouse/ClickHouse

    Changelog category (leave one): Improvement Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): Support SNI in https connections to remote resources. Thi...

  • https://t.me/clickhouse_ru
    @ilyashtrikul #228402 12:42 PM, 28 Jul 2021
    Добрый день, подскажите пожалуйста, какого типа в Kafka Engine c Avro создать поле для поля из Avro с типом
    {
    "type": "bytes",
    "logicalType": "decimal", "precision": 9, "scale": 2
    }
  • https://t.me/clickhouse_ru
    @ilyashtrikul #228403 12:44 PM, 28 Jul 2021
    С типом Decimal(9,2) ошибка:
    SQL Error [44]: ClickHouse exception, code: 44, host: 10.241.186.56, port: 8123; Code: 44, e.displayText() = DB::Exception: Type Decimal(9, 2) is not compatible with Avro bytes:
    {
    "type": "bytes",
    "logicalType": "decimal", "precision": 9, "scale": 2
    }: column kolvo: While executing SourceFromInputStream (version 20.9.2.20 (official build))
  • https://t.me/clickhouse_ru
    Input and Output Formats | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    думаю вам лучше issue отдельный завести со ссылкой на pull request с деталями
  • https://t.me/clickhouse_ru
    А как дальше байты преобразовывать в Decimal?
  • https://t.me/clickhouse_ru
    Можно попробовать через reinterpret('xxx', 'Decimal64(2)'), но мб и не сработает
  • @dj_mixer #228408 01:32 PM, 28 Jul 2021
    никто не подскажет почему в 20.8 все алиасы (clickhouse-client, clickhouse-*) использовали relative path ( ./clickhouse)

    а начиная с версии 21.3 оно использует абсолютный путь /usr/bin/clickhouse

    это сломало все наши инсталляции в chrootах (((
  • https://t.me/clickhouse_ru
    думаю лучше issue завести
  • https://t.me/clickhouse_ru
    @madreyg #228411 03:51 PM, 28 Jul 2021
    @unamedrus подскажите, пожалуйста, про clickhouse connector. Сейчас настроено соединение через ODBC драйвер (инструкция с вашего сайта). Но переодически получаю такие сообщения от аналитиков.
    """у меня табло при взаимодействии с кликхаусом странно себя ведет, когда пытаюсь открыть воркбук, ввожу коннекшены и вылетает из табло тут же, потом при открытии возникает сообщение отправить сообщение об ошибке или нет и все, никаких норм ошибок нет"""
    Или же постоянно спонтанные падения extract'ов на сервере.
    Хочу попробовать заиспользовать коннектор (может с ним лучше будет). Нашел статью https://docs.altinity.com/integrations/clickhouse-and-tableau/tableau-desktop-with-clickhouse/
    Но вопрос. Даже, если я его подключу к tableau-desktop вручную, то workbook же потом не получается выгрузить на сервер? Может у вас есть гайд или же совет как нужно работать в этой связке. Может есть полезный опыт как сейчас взаимодействуют Ваши клиенты?
    Connect Tableau Desktop to ClickHouse

    Connect your Tableau Desktop application to ClickHouse

  • https://t.me/clickhouse_ru
    Хм,

    https://github.com/Altinity/clickhouse-tableau-connector-odbc/issues/2#issuecomment-873861785

    Вообще судя по всему, подключить к табло серверу этот коннектор у людей получилось.
    По поводу внезапных ошибок сложно что то сказать не имея информации на руках.
    Support for Tableau Linux Server · Issue #2 · Altinity/clickhouse-tableau-connector-odbc

    Greetings, First and foremost I want to thank you for this awesome project, it works flawlessly for Tableau Desktop. What I'm trying to do however is to install the connector on Tableau Lin...

  • @troman29 #228414 04:28 PM, 28 Jul 2021
    Добрый вечер! Подскажите, репликация между шардами будет работать? Нужно просто указать одинаковый ключ zookeeper?
  • https://t.me/clickhouse_ru
    да
  • @troman29 #228416 04:30 PM, 28 Jul 2021
    А ещё, drop table не сразу удаляет из зк запись, можно этого дождаться?
  • @troman29 #228417 04:30 PM, 28 Jul 2021
    Иначе быстрое пересоздание падает
  • https://t.me/clickhouse_ru
    DROP TABLE ... SYNC
  • @troman29 #228420 04:36 PM, 28 Jul 2021
    Ок, спасибо
  • @fs_fs_fs_fs #228421 04:37 PM, 28 Jul 2021
    Всем привет.
    А кто то юзает clickhouse-operator от Altinity?
    Пытаюсь поднять кликхаус с Circular Replication по схеме как указано в статье
    https://altinity.com/blog/2018/5/10/circular-replication-cluster-topology-in-clickhouse
    Дано: 3 ноды кубера, 3 шарда, каждый шард с 2 репликами
    В yaml:
    ...
    layout:
    shardsCount: 3
    replicasCount: 2
    ...
    podDistribution:
    - type: ShardAntiAffinity
    - type: ReplicaAntiAffinity
    - type: MaxNumberPerNode
    number: 2

    В результате не поднимается последний под (для shard3-replica1). Висит в Pending и говорит
    3 node(s) didn't match pod affinity/anti-affinity rules, 3 node(s) didn't match pod anti-affinity rules

    Есть старый issue с такой же проблемой
    https://github.com/Altinity/clickhouse-operator/issues/589

    Но использую те же параметры как в нем описано и проблема не уходит.
    При этом если поднять ему 4 ноду кубера то все поды поднимаются без проблем. Хотя вроде как должен работать на 3 нодах как по мне.
    Я создал уже issue но думаю может я где то туплю.
  • Не вижу к этому документации
  • https://t.me/clickhouse_ru
    сделайте pull request на github для документации это не сложно, документацию сообщество делает

    в release notes есть
    https://clickhouse.tech/docs/en/whats-new/changelog/2020/#improvement_2

    Support for database_atomic_wait_for_drop_and_detach_synchronously/NO DELAY/SYNC for DROP DATABASE. https://github.com/ClickHouse/ClickHouse/pull/16127 (Azat Khuzhin).
    2020 | ClickHouse Documentation

    ClickHouse release 20.12 ClickHouse release v20.12.5.14-stable, 2020-12-28 Bug Fix Disable write with AIO during merges

  • https://t.me/clickhouse_ru
    Мы вообще не рекомендуем использовать circular replication
  • Я понимаю что идеальный вариант одна нода - один шард/реплика, но все же непонятное поведение оператора. Вроде как по документации такая схема должна работать, но он почему то не берет "свободную" ноду (на которой нет реплики моего 3 шарда) и не разворачивает под на ней.
  • Ох...
  • И для понимания, а чем плоха такая схема как указана в статье? Если кликхаус не сильно нагружен 90% времени, есть свободное место и т.д то по такой схеме получаем экономию по серверам но в то же время и резервирование данных.
  • https://t.me/clickhouse_ru
    Гораздо сложнее ее менеджить
  • https://t.me/clickhouse_ru
    @sibbarb #228429 07:04 PM, 28 Jul 2021
    Добрый вечер, Есть ли в клике возможность запивотить? Строки сделать столбцами
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Спасибо 🙏
  • https://t.me/clickhouse_ru
    подхватывается, начиная с 20.3
  • https://t.me/clickhouse_ru
    Списибо, проблему решил
  • https://t.me/clickhouse_ru
    а это первое выполнение запроса? а второе тоже дольше?
    с 8192 надо читать больше марков.

    32768 -- возможно это не спроста и кто-то уменьшал размер первичного индекса который не влезал в ОЗУ при 8192, тут в чатике есть люди у которых первичный индекс кушает десятки гигабайт ОЗУ при триллионах строк.
  • https://t.me/clickhouse_ru
    полностью переписан odbc драйвер уже
  • https://t.me/clickhouse_ru
    engine replicated никак не связан с Distributed. Веса и описание кластера пишутся в remote_servers
  • https://t.me/clickhouse_ru
    добавлять одним alter. В alter можно перечислять команды. alter table ... add column a, add column b, drop column d, modify column k, freeze
  • 29 July 2021 (201 messages)
  • https://t.me/clickhouse_ru
    оно синхронное
    можно сделать
    ALTER TABLE ... ON CLUSTER 'cluster-name' ... ;
    если надо чтобы на всех нодах сделалось

    Таблица которую модифицируете у нее какой Engine?
  • https://t.me/clickhouse_ru
    @Radaram101 #228443 04:57 AM, 29 Jul 2021
    Приветствую. При попытке создать таблицу в базе staging CREATE TABLE IF NOT EXISTS staging.user_props …. получаю ошибку:
    ‘’’ServerError: Table columns structure in ZooKeeper is different from local table structure (version 20.8.18.32 (official build)) (122)’’’
    При этом в default базе уже есть таблица с таким же названием, но вряд ли это как то влияет
    Можете подсказать как это победить?
  • https://t.me/clickhouse_ru
    SELECT engine FROM system.databases WHERE name='staging'?
    Atomic?

    если да, то надо было таблицу удалять как DROP TABLE staging.user_props ON CLUSTER 'xxx' NO DELAY;
  • https://t.me/clickhouse_ru
    попробуйте сначала
    DROP TABLE IF EXISTS staging.user_props ON CLUSTER 'xxx' NO DELAY;
  • https://t.me/clickhouse_ru
    SELECT engine
    FROM system.databases
    WHERE name = 'staging'

    ┌─engine───┐
    │ Ordinary │
    └──────────┘
  • https://t.me/clickhouse_ru
    походите по zookeeper
    Там есть ключи
    и можно понять какие реплики для таблицы зарегистрированы и какая структура таблицы актуальная
    SELECT * FROM system.zookeeper WHERE path='/' FORMAT Vertical;
  • https://t.me/clickhouse_ru
    возможно на другой реплике в том же кластере создана таблица с другой структурой
  • https://t.me/clickhouse_ru
    Прошелся по репликам, там нет такой же таблицы, точнее там даже базы staging нет, только в одной реплике создалась
  • https://t.me/clickhouse_ru
    SELECT *
    FROM system.zookeeper
    WHERE path = '/'
    FORMAT Vertical

    Row 1:
    ──────
    name: zookeeper
    value:
    czxid: 0
    mzxid: 0
    ctime: 1970-01-01 00:00:00
    mtime: 1970-01-01 00:00:00
    version: 0
    cversion: -2
    aversion: 0
    ephemeralOwner: 0
    dataLength: 0
    numChildren: 2
    pzxid: 0
    path: /

    Row 2:
    ──────
    name: clickhouse
    value:
    czxid: 4294967298
    mzxid: 4294967298
    ctime: 2020-09-10 20:52:42
    mtime: 2020-09-10 20:52:42
    version: 0
    cversion: 1
    aversion: 0
    ephemeralOwner: 0
    dataLength: 0
    numChildren: 1
    pzxid: 4294967299
    path: /

    Вот что получил
  • https://t.me/clickhouse_ru
    ну странно очень
    а откуда тогда у вас в ZK оказалась другая версия схемы таблицы?

    пройдитесь по путям в ZK
  • https://t.me/clickhouse_ru
    ну, теперь дальше идем WHERE path='/clickhouse';
    и пока не разберетесь что там у вас в ZK
  • https://t.me/clickhouse_ru
    А может он сравнивать с таблицей из другой базы, у меня две базы, и названия таблиц будут совпадать
  • https://t.me/clickhouse_ru
    Хорошо, попробую, спасибо
  • https://t.me/clickhouse_ru
    да. если у вас совпадают пути в этих таблицах для ReplicatedMergeTree(тут_путь_указывается)
  • https://t.me/clickhouse_ru
    @BloodJazMan #228456 06:01 AM, 29 Jul 2021
    путь должен быть уникальным
  • https://t.me/clickhouse_ru
    @whsv26 ↶ Reply to #228442 #228459 06:30 AM, 29 Jul 2021
    Движок MergeTree. Только у нас одна нода. С одной тоже такой вариант сработает?
  • https://t.me/clickhouse_ru
    на одной ноде, у вас ALTER TABLE точно синхронный

    что именно у вас в следующей query не работает?

    покажите SQL код миграции и исходный SHOW CREATE TABLE таблицы?
  • https://t.me/clickhouse_ru
    @konnectrl #228461 07:15 AM, 29 Jul 2021
    Привет. Есть вопрос. У меня есть данные по ивентам сессии пользователя(время, сессия, навзание ивента), мне требуется чтобы между ивентами не было определенного ивента. Например мне нужно посчитать сколько пользователей сделали event1 вместе с event2, между ивентами должны быть другие ивенты, но не должен быть event3. С помощью массива, реализация не возможна, т.к. не хватает оперативки. Пробывал через seuenceMath('(?1)(?3)(?2)') EventName = event1, EventName = event2, EventName != event3, но результат не верный.
  • https://t.me/clickhouse_ru
    @whsv26 ↶ Reply to #228460 #228462 07:30 AM, 29 Jul 2021
    --Таблица, в которую добавляется новый столбец
    CREATE TABLE order_events (
    event_id UUID,
    ...
    occurred_at DateTime64(6)
    )
    ENGINE = MergeTree
    PARTITION BY toYYYYMMDD(occurred_at)
    ORDER BY occurred_at;

    --Вот тут как будто мгновенно отрабатывает
    --И следующие statement'ы начинают выполняться
    --Ещё до того, как столбец полностью добавится
    ALTER TABLE order_events ADD COLUMN is_original UInt8 DEFAULT 1;

    CREATE TABLE orders_storage (
    order_id UUID,
    ...
    is_original AggregateFunction(argMax, UInt8, DateTime64(6))
    )
    ENGINE AggregatingMergeTree()
    ORDER BY (created_at, order_id)
    PARTITION BY (toYYYYMM(created_at));

    --Вот тут валится
    --Error: "Missing columns: 'is_original' while processing query:
    --SELECT order_id, ..., argMaxState(is_original, occurred_at) AS is_original FROM order_events GROUP BY order_id
    CREATE MATERIALIZED VIEW orders_input_materialized TO orders_storage AS (
    SELECT
    order_id,
    ...
    argMaxState(is_original, occurred_at) AS is_original
    FROM order_events
    GROUP BY order_id
    );

    CREATE VIEW orders AS (
    SELECT
    order_id,
    ...
    argMaxMerge(is_original) AS is_original
    FROM orders_storage
    GROUP BY order_id
    );
  • https://t.me/clickhouse_ru
    И действительно так, в ReplicatedMergeTree пути совпадают
    ENGINE = ReplicatedMergeTree('/clickhouse/{installation}/{cluster}/tables/{shard}/default/‘events, '{replica}')

    Если сделать
    ENGINE = ReplicatedMergeTree('/clickhouse/{installation}/{cluster}/tables/{shard}/staging/‘events, '{replica}')
    то должно сработать?
  • https://t.me/clickhouse_ru
    @Radaram101 #228464 07:36 AM, 29 Jul 2021
    В ZK как раз только один путь, который ведет в таблицы default базы
  • @KevinMort #228465 07:42 AM, 29 Jul 2021
    Всем привет! Почему пишет, что данного движка нет? Версия CH - 21.7.3
    DB::Exception: Received from localhost:9000. DB::Exception: Unknown table engine MaterializedPostgreSQL
  • https://t.me/clickhouse_ru
    allow_experimental_database_materialized_postgresql

    Включили настройку в дефолтном профайле?
  • В каком файле находится?
  • https://t.me/clickhouse_ru
    @unamedrus #228468 07:49 AM, 29 Jul 2021
    users.xml
  • Не вижу в данном файле данной строки, её нужно добавить самостоятельно?
  • https://t.me/clickhouse_ru
    Да
  • А есть какая-нибудь статья? Какое значение указывать внутри тега?
  • https://t.me/clickhouse_ru
    1
  • https://t.me/clickhouse_ru
    https://clickhouse.tech/docs/en/engines/database-engines/materialized-postgresql/

    Хм помимо этого наверное нет
    MaterializedPostgreSQL | ClickHouse Documentation

    [experimental] MaterializedPostgreSQL Creates ClickHouse database with an initial data dump of PostgreSQL database table

  • Данная у меня открыта)
    По конфигам есть информация, а то нигде не видел нормальной)
  • https://t.me/clickhouse_ru
    Скорее всего нету
  • https://t.me/clickhouse_ru
    @unamedrus #228478 07:56 AM, 29 Jul 2021
    Ну точнее почти все возможные настройки можно посмотреть так:
    SELECT * FROM system.settings
  • Спасибо
  • @KevinMort #228480 07:59 AM, 29 Jul 2021
    Ввел данный параметр в профайл, ошибка такая же
  • @KevinMort #228481 07:59 AM, 29 Jul 2021
    Unknown table engine MaterializedPostgreSQL
  • https://t.me/clickhouse_ru
    у вас clickhouse в kubernetes?
    по умолчанию cluster и installation макросов на сервере нет

    ну если пути будут разные то сработает
  • https://t.me/clickhouse_ru
    Да, в кубере
  • https://t.me/clickhouse_ru
    А косяк,

    Его только в 21.8 замержили, а у вас 21.7

    https://github.com/ClickHouse/ClickHouse/commit/8351f1db9923100e411c380a8ba3fa52b5dff4d3
    Merge pull request #20470 from kssenii/pg-ch-replica · ClickHouse/ClickHouse@8351f1d

    MaterializePostgreSQL table engine and database engine

  • Как я понимаю, данный движок копирует структуру таблицы из postgresql?
  • https://t.me/clickhouse_ru
    реплицирует изменение в данных из постгри в кликхаус
  • То есть он копирует данные в кликхаус?
    А PostgreSQL просто позволяет удаленно брать данные без репликации?
  • https://t.me/clickhouse_ru
    Да
  • @KevinMort #228489 08:05 AM, 29 Jul 2021
    То есть структуру таблицы в любом случае нужно указывать самостоятельно?
  • https://t.me/clickhouse_ru
    @unamedrus #228490 08:07 AM, 29 Jul 2021
    Ага,
    Ну либо смотреть в сторону движка базы данных (materialized)postgresql
  • Я как раз хочу его использовать MaterializedPostgreSQL
  • @KevinMort #228492 08:07 AM, 29 Jul 2021
    А, именно базы данных, а не таблицы?
  • https://t.me/clickhouse_ru
    Ага, тогда он сам подтянет определения для таблиц
  • Только проблема в том, что нужно взять таблицы из определенной схемы postgresql
  • @214612813 #228495 08:18 AM, 29 Jul 2021
    Всех приветствую. Подскажите пожалуйста, есть ли возможность поменять дефолтный тип сжатия для партиции не трогая глобальные настройки compression?
  • https://t.me/clickhouse_ru
    TTL RECOMPRESS
    https://kb.altinity.com/altinity-kb-queries-and-syntax/ttl/ttl-recompress-example
  • https://t.me/clickhouse_ru
    Ну надо смотреть, наверное там можно схему как то послать
  • @214612813 #228498 08:21 AM, 29 Jul 2021
    Уже неплохо, мою задачу закрывает. Спасибо!
  • https://t.me/clickhouse_ru
    что то у вас фигня в materialized view
    FROM order_events
    делаете
    а выбираете order_id
    а в нем только event_id по вашим словам есть
  • https://t.me/clickhouse_ru
    @whsv26 ↶ Reply to #228499 #228500 08:24 AM, 29 Jul 2021
    Там куча столбцов. Я их опустил, о чём свидетельствует "..."
  • А как обновить до не стабильной версии?
  • @KevinMort #228502 08:25 AM, 29 Jul 2021
    Кликхаус
  • https://t.me/clickhouse_ru
    ALTER TABLE синхронный

    вот так
    https://pastebin.com/sgkqkxUq

    все отработало без проблем
    у вас явно проблемы с SELECT запросом в MATERIALIZED VIEW
    CREATE TABLE order_events ( event_id UUID, order_id UUID, occurred_at D - Pastebin.com

    Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.

  • https://t.me/clickhouse_ru
    @RT_1_98 #228504 08:35 AM, 29 Jul 2021
    господа, вопрос такой

    задача в том, что в таблицу tableTrees грузится дерево из записей вида
    (uuid UUID, root_uuid UUID, depth UInt8, content String )

    сначала вставляются ветки, последним корень c depth = 0 и в MV нужно сджойнить данные из всего дерева по root_uuid и с другой таблицей по content

    проблема в том, что отлавливая вставку корня дерева в MV выборка из tableTrees ограничена только данными которые есть в инсерте

    Как заставить читать данные из всей таблицы для джойна?
  • https://t.me/clickhouse_ru
    никак
    MV работает только с данными вставляемого блока...
  • https://t.me/clickhouse_ru
    @hostadminonline #228506 08:43 AM, 29 Jul 2021
    подскажите что можно сделать
    решили поменять тип данных на столбце но получили
    Exception happened during execution of mutation '0000000001' with part '201502_27_27_0' reason: 'Code: 32, e.displayText() = DB::Exception: Attempt to read after eof: Cannot parse UInt64 from String, because value is too short: while executing 'FUNCTION CAST(typeID :: 26, 'UInt64' :: 46) -> CAST(typeID, 'UInt64') UInt64 : 45': (while reading from part /var/lib/clickhouse/store/d87/d872541f-0c43-41fa-9872-541f0c4381fa/201502_27_27_0/): While executing MergeTree (version 21.6.8.62 (official build))'. This error maybe retryable or not. In case of unretryable error, mutation can be killed with KILL MUTATION query.

    мы пользуемся облаком яндекса, и в итоге прав на KILL MUTATION on cluster у нас почему-то нету .... выяснять почему это видима очень на долго ... что еще можно сделать в данной ситуации ?
    запросить в таблице что либо на текущий момент нельзя
  • https://t.me/clickhouse_ru
    @hostadminonline #228507 08:43 AM, 29 Jul 2021
    т.е. мы по сути даже создать новую таблицу и перелить даныне не можем ..... селекты не выполняются
  • https://t.me/clickhouse_ru
    Ясно.
    А можно ли на МВ повесить ещё одну МВ каскадом?

    И ещё, когда тригеррится МВ данные уже записаны в таблицу или могут быть гонки?
  • @KevinMort #228509 08:47 AM, 29 Jul 2021
    Как я могу обновить clickhouse до нужной мне prestable версии?
  • Можно, вроде может завалится (записаться в 2 а в третью нет скажем)
    смотрим видео и все запоминаем https://www.youtube.com/watch?t=7596&v=1LVJ_WcLgF8
  • https://t.me/clickhouse_ru
    Спасибо, сейчас посмотрим
  • https://t.me/clickhouse_ru
    можно, но данные туда попадут только в рамках одного блока который формируется при вставке в MV
  • https://t.me/clickhouse_ru
    спасибо большое за ссылку, попробую настроить. Проблема заключается в том, что tableau и odbc (clickhouse) в данный момент при тестировании соединения пишет "все ок". Но по факту затирает пароль. Или же, например, при публикации отчета с десктопа на сервер - возможно только при типе выставленном типе соединения  live и только после этого его можно переключить на extract. Вообщем странные танцы с бубнами и не понятно где и в какие логи смотреть) Вот хочу попробовать пересадить аналитиков на ваш плагин.
  • https://t.me/clickhouse_ru
    в видео указано что у МВ без таблиц назначения имя должно быть '.inner.MVname'
    у меня на версии 21.3.14 селекты к МВ идут по обычному имени

    и каскадирование что то не срабатывает ((

    сейчас попробую с отдельными таблицами каскадирование
  • https://t.me/clickhouse_ru
    @VASergeev #228515 09:35 AM, 29 Jul 2021
    Добрый день, нужна помощь с бекапом, пробую локально на 2х докер образах по инструкции
    https://altinity.com/blog/introduction-to-clickhouse-backups-and-clickhouse-backup

    выполнил freeze скопировал shadow на второй образ по пути data/schema/table/detached но при выполнении alter table events attach partition в логах пишет, что партиция не найдена и бекап не восстанавливается, куда можно посмотреть?
    Introduction to ClickHouse Backups and clickhouse-backup

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

  • это от синтаксиса создания. используйте синтаксис с TO с явным указанием таргет таблиц, иннер это всегда боль
  • А таблицы создали перед восстановлением?
  • https://t.me/clickhouse_ru
    да, таблица есть, там одна
  • https://t.me/clickhouse_ru
    так у меня вообще нет имён с '.inner' и при обращении с таким именем таблицы в базе нет - может это поменялось или в настройках что то
  • сделайте select * from system.detached_parts;
  • https://t.me/clickhouse_ru
    @VASergeev #228521 09:40 AM, 29 Jul 2021
    есть запись о моем бекапе
  • https://t.me/clickhouse_ru
    с явным указанием промежуточной таблицы каскадирование вроде заработало

    тестируем дальше
  • какая точно ошибка? как выполняете команду attach?
  • https://t.me/clickhouse_ru
    @VASergeev #228524 09:44 AM, 29 Jul 2021
    Выполняю у оригинально БД запрос
    select * from system.parts where active = 1 and table like 'sat_analytic_events' - получаю имена партиций
    на бекап БД
    alter table sat_analytic_events attach partition '202107';

    202107 - заменяю на имена партиций из system.parts колонка partition
  • используйте кнопку ответить

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

    "вы уверены, что там есть эта партиция?"
    ну я сделал freeze на всю таблицу, дока говорит, что будут сохранены все партиции
    можно как-то узнать какие партиции есть в конкретном бекапе?
  • сделайте аттач по партишн_ид
  • ну или по нейм парта
    вот нашел пример генерации запроса для всех партов
    только если их много, то долго будет выполняться(
    select distinct 'ALTER TABLE '||database||'.'||table||' ATTACH PART '||'\''||name||'\';' from system.detached_parts
    where database='db_name';
  • @githubreleases_bot #228529 b o t 09:57 AM, 29 Jul 2021
    ClickHouse/ClickHouse tagged: v21.7.5.29-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.7.5.29-stable
    Release notes:
    v21.7.5.29-stable
    Release v21.7.5.29-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.7.5.29-stable

  • https://t.me/clickhouse_ru
    может быть инструкция под версию не подходит?
    Партиции у меня такие 202105, 202106, 202107
    при этом в shadow создается каталог 1 и increment.txt. Они же в detached_parts выводятся, но кажется там должны быть именно партиции а не инкремент бекапа
  • конечно, там должны лежать куски
  • https://t.me/clickhouse_ru
    @VASergeev #228533 10:03 AM, 29 Jul 2021
    хм ща попробую одну идею
  • https://t.me/clickhouse_ru
    о получилось, но получается статья устарела и при бекапе всей таблицы надо переносить не весь shadow а только парты вытащив их?
  • https://t.me/clickhouse_ru
    @VASergeev #228536 10:11 AM, 29 Jul 2021
    И наврено более общий вопрос.
    Получается пока есть жесткие ссылки кликхаус не будет мерджить партицию?
    Поэтому их надо удалять после переноса и это же гарантия, что до удаления файлы будут существовать?
  • https://t.me/clickhouse_ru
    > Получается пока есть жесткие ссылки кликхаус не будет мерджить партицию?

    Кх будет мержить, удалять и тд парт
    Просто ваш бекап начнет использовать реальное место на жестком диске
  • https://t.me/clickhouse_ru
    О это хорошо) не в плане хранить его, а в плане, что во время копирования бекапа ничего страшного не должно произойти)
  • https://t.me/clickhouse_ru
    @it_haisenberg #228539 10:27 AM, 29 Jul 2021
    В кх нельзя при dictGet как-то наиборот исхитриться и взять значение id по какой-то колонке name допустим?
  • https://t.me/clickhouse_ru
    @it_haisenberg #228540 10:27 AM, 29 Jul 2021
    Хочу взять не value по key, а key по value ;D
  • https://t.me/clickhouse_ru
    Создать обратный словарь
  • https://t.me/clickhouse_ru
    Ну вот перед этим и спрашиваю ;D
  • https://t.me/clickhouse_ru
    @it_haisenberg #228543 10:29 AM, 29 Jul 2021
    Вдруг есть что-то чтобы не создавать обратный слоаврь)
  • Hash таблицы так не работают )
  • @dj_mixer #228545 10:29 AM, 29 Jul 2021
    Магии нет
  • можно создать таблицу ENGINE = Dictionary и по ней искать)
  • @dj_mixer #228547 10:30 AM, 29 Jul 2021
    Можете select к словарю делать тоже. Можно без engine dictionary
  • @dj_mixer #228548 10:31 AM, 29 Jul 2021
    Но скорость будет соответствующей... Если селект влезет в память то ок
  • https://t.me/clickhouse_ru
    D alter table update column можно сделать селект?
  • https://t.me/clickhouse_ru
    ALTER TABLE table_1 UPDATE new_language = (SELECT id FROM table_dict WHERE name = language LIMIT 1) WHERE new_language = 0

    Типа такого?
  • не уверен что это будет эффективно, так как каждый раз (на каждую строку table_1) он будет бегать и искать строку во всем словаре...

    лучше сделать обратны словарь чтобы получить константное время лукапа и спокойно пользовать dictGet, тем более что его сделать элементарно.
  • https://t.me/clickhouse_ru
    @it_haisenberg #228552 10:45 AM, 29 Jul 2021
    Да я понял уже что без обратного дикта не обойтись, просто стало инетересно про select в update запросе.... Ибо не вышло)
  • @simpl1g #228554 11:09 AM, 29 Jul 2021
    Подскажите, при создании базы PostgreSQL
    CREATE DATABASE pg ENGINE = PostgreSQL

    при подкючении к clickhouse-client падает ошибка что не может найти таблицу layer в нашей основной базе, такой таблицы у нас нет ни в КХ ни в PG, куда копать? из-за этого например DataGrip не может схему загрузить, если удалить базу PG, всё становится ок

    Cannot load data for command line suggestions: Code: 60, e.displayText() = DB::Exception: Received from 0.0.0.0:9000. DB::Exception: PostgreSQL table main.layer does not exist. (version 21.3.15.4 (official build))
  • Это стандартный вывод
  • https://t.me/clickhouse_ru
    в 21.3 default database engine Atomic
    для там MV другой name convention .inner.{uuid}
  • https://t.me/clickhouse_ru
    сервер какой версии? тоже 18.16 ?

    если что, то это настолько древняя версия =) что страшно =)
    по древности как MySQL4 ;)
  • https://t.me/clickhouse_ru
    В общем сделал с отдельными целевыми таблицами в 2 стэйджа
    сейчас тестирую с реальными данными
  • https://t.me/clickhouse_ru
    @Anryal #228564 01:03 PM, 29 Jul 2021
    добрый день, Завели тут https://github.com/ClickHouse/ClickHouse/issues/26949 и получили ответ что это не баг. Можно ли придумать тут какой-то Workaround?
    toString fails to handle nullable Enum · Issue #26949 · ClickHouse/ClickHouse

    Describe the bug toString fails to handle NULL value in an Enum column. Does it reproduce on recent release? Yes, reproduces on ClickHouse 21.7.4.18 with revision 54452 (latest docker image). The l...

  • @troman29 #228565 01:05 PM, 29 Jul 2021
    Привет! Есть вопрос. Используем словари -> postgres, в postgres видим много idle соединений, забивается их максимальное количество. Можно как-то это решить? В документации не нашел.
  • https://t.me/clickhouse_ru
    @it_haisenberg #228566 01:06 PM, 29 Jul 2021
    Кто-нибудь пользовался выражением
    ALTER TABLE some_table ADD COLUMN new_column UInt32 DEFAULT multiIf(some_exist_field, куча вариантов)
    Ещё желательно materialized колонку при это создать и сразу её заполнять значениями основываясь на значениях из другой (some_exist_field) колонки
  • https://t.me/clickhouse_ru
    @nyatmeat #228567 01:26 PM, 29 Jul 2021
    Добрый вечер. Я так понимаю кликхаус сейчас перезапрашивает все данные для словаря если сработал триггер обновления.
    А не рассматривается в каких-то версиях возможность "ревизионного обновления"
    Имею ввиду перезапрашивать для словаря только явно изменившиеся данные
  • Есть это тоже. Update field ,или типа этого в доке посмотрите
  • https://t.me/clickhouse_ru
    Спасибо большущее!
  • https://t.me/clickhouse_ru
    https://clickhouse.tech/docs/en/getting-started/install/
    советую почитать документацию
    есть отдельный репозиторий
    Installation | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    я пользовался, в чем у вас проблема?
  • https://t.me/clickhouse_ru
    Долго отрабатывал запрос?
  • https://t.me/clickhouse_ru
    @Radaram101 #228573 01:47 PM, 29 Jul 2021
    Подскажите, как посмотреть engine настройки у базы? Скорее всего engine Replicated, но надо увидеть пути ZK, название шарда и реплики
  • https://t.me/clickhouse_ru
    должно быть мгновенно
    ALTER TABLE .. ADD COLUMN
    только метаданные меняет

    все остальное начинает работать при background merge
    ну в multiIf все варианты вычисляются. так что оно должно CPU жрать в зависимости от сложности выражений при вставке
    и при SELECT для незаполненных партиций...
  • https://t.me/clickhouse_ru
    @it_haisenberg #228575 01:51 PM, 29 Jul 2021
    Блэ может чё-то не так делаю, руки кривые
  • https://t.me/clickhouse_ru
    @it_haisenberg #228576 01:51 PM, 29 Jul 2021
    Даже на 11к записей по таймауту в 120сек отваливается
  • https://t.me/clickhouse_ru
    ну сделайте
    SET send_logs_level='trace';
    и потом ваш
    ALTER TABLE

    посмотрите что в клиент в логах прилетит...
  • https://t.me/clickhouse_ru
    SELECT * FROM system.merges
    SELECT * FROM system.mutations WHERE is_done=0
    может CPU кто-то сожрал

    ну и если вы вставляете данные. вдруг оно по каким то неведомым причинам в Ordinary блокируется (хотя не должно)
  • https://t.me/clickhouse_ru
    @it_haisenberg #228579 01:54 PM, 29 Jul 2021
    Да всё локально , одна табличка, всякие инсёрты селекты не происходят
  • @KevinMort #228580 01:55 PM, 29 Jul 2021
    Получаю данную ошибку
    DB::Exception: MaterializedPostgreSQL is an experimental database engine. Enable allow_experimental_database_postgresql_replica to use it. (UNKNOWN_DATABASE_ENGINE) (version 21.9.1.7603 (official build))

    в конфиге указал параметр данным образом. В чем проблема?
  • https://t.me/clickhouse_ru
    Ну там 185 значений в мультиифе
  • https://t.me/clickhouse_ru
    его надо в user profile указывать
    а не в config.xml
  • users.xml, всё верно?
  • https://t.me/clickhouse_ru
    SET send_logs_level='trace';
    ALTER TABLE ...

    что показывает?
  • https://t.me/clickhouse_ru
    или users.d/alllow_materialized_postgresql.xml

    <yandex><profiles><default> ... </default></profiles></yandex>
  • Данным образом вообще сервак не робит
  • https://t.me/clickhouse_ru
    Я щас ебусь с тем что запрос который работал буквально час назад, какого-то ХУЯ сейчас падает с ошибкой
  • https://t.me/clickhouse_ru
    @it_haisenberg #228588 02:22 PM, 29 Jul 2021
    ALTER TABLE some_table ADD COLUMN new_mat_language UInt32 DEFAULT multiIf(language, 'aa', 1, 'ab', 2, 'af', 3, 0)
    Invalid number of arguments for function multiIf: default expression and column type are incompatible
  • https://t.me/clickhouse_ru
    @it_haisenberg #228589 02:22 PM, 29 Jul 2021
    Какого хера дефолтное значение как 0 ему не нравится я не ебу уже
  • https://t.me/clickhouse_ru
    @it_haisenberg #228590 02:23 PM, 29 Jul 2021
    час назад этот запрос работал без синтаксических ошибок, просто по таймауту отваливался
  • https://t.me/clickhouse_ru
    Почему используете multiIf вместо transform?
  • https://t.me/clickhouse_ru
    @unamedrus #228592 02:25 PM, 29 Jul 2021
    Или даже Enum
  • https://t.me/clickhouse_ru
    Потому что показали его 🤷‍♂️
  • https://t.me/clickhouse_ru
    @unamedrus #228594 02:26 PM, 29 Jul 2021
    transform(language, ['aa', 'ab'], [1,2], 0)
  • https://t.me/clickhouse_ru
    @it_haisenberg #228595 02:27 PM, 29 Jul 2021
    Да я понял)
  • https://t.me/clickhouse_ru
    мата поменьше toTypeName(multiIf(language, 'aa', 1, 'ab', 2, 'af', 3, 0))
    и сразу все встанет на свои места
  • https://t.me/clickhouse_ru
    так. ой. а вы когда в config.xml засовывали, сервер рестартовали?
  • Дублирую)
  • https://t.me/clickhouse_ru
    Cорян просто уже слегка на нервах от того как всё не привычно в клике ;D
  • https://t.me/clickhouse_ru
    CREATE VIEW with postgres table function results in connections growth without limit in 21.6, but not in 21.4 · Issue #26088 · ClickHouse/ClickHouse

    Describe the issue After an update from CH 21.4.6.55 to CH 21.6.5.37 I noticed an endless growth of idle connections on PosgtreSQL side (which is configured as a sync replica, without expiration of...

  • https://t.me/clickhouse_ru
    @unamedrus #228601 02:57 PM, 29 Jul 2021
    https://github.com/ClickHouse/ClickHouse/issues/23897

    И в догонку помоему
    Increasing postgres connections · Issue #23897 · ClickHouse/ClickHouse

    Since the latest update 21.4.1 Clickhouse keeps creating new Postgres connections. There is only a single dictionary with postgres as data source On 11:40 I upgraded CH to 21.4.1 from 21.3.9. I hav...

  • https://t.me/clickhouse_ru
    ну.... добро пожаловать в клуб. это пройдет =)
    потом снова накатит...
  • https://t.me/clickhouse_ru
    @lesikv #228603 03:03 PM, 29 Jul 2021
    Всем привет! А кто-нибудь сталкивался с ошибкой 32
    ATTEMPT_TO_READ_AFTER_EOF при загрузке в кафка таблицу? С чем это может быть связано?
  • Спасибо
  • https://t.me/clickhouse_ru
    какой формат сообщения?
    покажите параметры создания Kafka таблицы?
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #228605 #228606 03:13 PM, 29 Jul 2021
    ENGINE = Kafka
    SETTINGS kafka_broker_list = 'hadoop_brohers', kafka_topic_list = 'topic_name', kafka_format = 'JSONEachRow', kafka_group_name = 'name'
  • https://t.me/clickhouse_ru
    хм. а нет каких нибудь типов данных типа Decimal ?

    вообще было бы не плохо весь стектрейс ошибки увидеть
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #228607 #228608 03:19 PM, 29 Jul 2021
    exception_code: 32
    exception: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 20.8.13.15 (official build))
    stack_trace: 0. Poco::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x18cd37c0 in /usr/bin/clickhouse
    1. DB::throwReadAfterEOF() @ 0xe6397d1 in /usr/bin/clickhouse
    2. DB::readVarUInt(unsigned long&, DB::ReadBuffer&) @ 0xe834ab4 in /usr/bin/clickhouse
    3. DB::TCPHandler::isQueryCancelled() @ 0x1639c46a in /usr/bin/clickhouse
    4. DB::TCPHandler::processOrdinaryQueryWithProcessors() @ 0x1639e3d2 in /usr/bin/clickhouse
    5. DB::TCPHandler::runImpl() @ 0x163a277d in /usr/bin/clickhouse
    6. DB::TCPHandler::run() @ 0x163a3420 in /usr/bin/clickhouse
    7. Poco::Net::TCPServerConnection::start() @ 0x18bf177b in /usr/bin/clickhouse
    8. Poco::Net::TCPServerDispatcher::run() @ 0x18bf1e98 in /usr/bin/clickhouse
    9. Poco::PooledThread::run() @ 0x18d705a6 in /usr/bin/clickhouse
    10. Poco::ThreadImpl::runnableEntry(void*) @ 0x18d6b9a0 in /usr/bin/clickhouse
    11. start_thread @ 0x7fa3 in /usr/lib/x86_64-linux-gnu/libpthread-2.28.so
    12. clone @ 0xf94cf in /usr/lib/x86_64-linux-gnu/libc-2.28.so
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #228608 #228609 03:19 PM, 29 Jul 2021
    есть lowcardinality, словарь
  • https://t.me/clickhouse_ru
    а со стороны kafka никаких ошибок нет? (я правда не знаю где смотреть)

    isQueryCancelled
    просто так не возникает...
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #228610 #228611 03:22 PM, 29 Jul 2021
    ну ее кильнули
  • https://t.me/clickhouse_ru
    @lesikv #228612 03:23 PM, 29 Jul 2021
    я тоже не знаю где смотреть ошибки кафки
  • https://t.me/clickhouse_ru
    @lesikv #228613 03:23 PM, 29 Jul 2021
    из консоли причем работает
  • https://t.me/clickhouse_ru
    @lesikv #228614 03:23 PM, 29 Jul 2021
    а на прод окружении нет
  • @sesho96 #228615 03:37 PM, 29 Jul 2021
    Всем привет! Подскажите, пожалуйста, quantiles функции работают корректно с AggregatingMergeTree?
  • https://t.me/clickhouse_ru
    ну эээ.... то есть вы хотите вставить в кафку которой нет? ;)

    или что именно кильнули? работающий INSERT запрос?
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #228616 #228617 03:45 PM, 29 Jul 2021
    почему это нет? кафка таблица есть
  • https://t.me/clickhouse_ru
    да quantilesState только лучше используете
  • https://t.me/clickhouse_ru
    @lesikv #228619 03:45 PM, 29 Jul 2021
    работающий инсерт кильнули
  • https://t.me/clickhouse_ru
    ну наличие engine=Kafka таблицы не говорит о том что kafka работает
    это просто способ запустить некоторый фоновый thread который будет разгребать топик при чтении
    и записывать в топик при старте
  • https://t.me/clickhouse_ru
    а зачем кильнули рабочий INSERT?
    он подвисал?

    а топик то есть в kafka в том окружении в котором "не работает"?
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #228621 #228622 03:47 PM, 29 Jul 2021
    ну долго работал да
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #228621 #228623 03:47 PM, 29 Jul 2021
    топик есть да
  • https://t.me/clickhouse_ru
    @lesikv #228624 03:47 PM, 29 Jul 2021
    он как бы один на все окружения
  • Хорошо, спасибо! Смутил просто этот issue https://github.com/ClickHouse/ClickHouse/issues/19300
    problem with quantile · Issue #19300 · ClickHouse/ClickHouse

    I found quantile does not work well in AggregatingMergeTree engine. the value querying from mergeTreeTable is 5-10 times bigger than the value querying from aggregatingTable. Then, I found even tho...

  • https://t.me/clickhouse_ru
    А что удивляет тогда? Убили инсерт, конекшн закрылся, а КХ хотел оттуда данные какие-то считать
  • https://t.me/clickhouse_ru
    @foxermen #228627 04:35 PM, 29 Jul 2021
    Всем привет, после перехода с 20.8 на 21.7 возникает такая ошибка
  • https://t.me/clickhouse_ru
    @foxermen #228628 04:35 PM, 29 Jul 2021
    Code: 210, e.displayText() = DB::Exception: Unable to connect to HDFS: InvalidParameter: Cannot parse URI: hdfs://prdhdp, missing port or invalid HA configuration Caused by: HdfsConfigNotFound: Config key: dfs.ha.namenodes.prdhdp not found (version 21.7.5.29 (official build))
    такая ошибка появилась
  • https://t.me/clickhouse_ru
    @foxermen #228629 04:35 PM, 29 Jul 2021
    после указани я порта hdfs://prdhdp:9000
  • https://t.me/clickhouse_ru
    @foxermen #228630 04:35 PM, 29 Jul 2021
    есть ли какая нибудь настройка, которая ставит порт по дефолту?
  • https://t.me/clickhouse_ru
    ответ то kafka видимо пытался прочитать
  • https://t.me/clickhouse_ru
    вообще странно что работало
    https://clickhouse.tech/docs/en/engines/table-engines/integrations/hdfs/#list-of-possible-configuration-options-with-default-values
    во всех примерах порт явно задан
    HDFS | ClickHouse Documentation

    HDFS This engine provides integration with Apache Hadoop ecosystem by allowing to manage data on HDFS via ClickHouse. Th

  • https://t.me/clickhouse_ru
    Оказывается с портом тоже не работает
  • https://t.me/clickhouse_ru
    @foxermen #228634 05:03 PM, 29 Jul 2021
    при селекте
  • https://t.me/clickhouse_ru
    ошибка таже самая? или другая?
  • https://t.me/clickhouse_ru
    @x1unix #228636 05:37 PM, 29 Jul 2021
    Добрый день, подскажите пожалуйста есть ли возможность как то упростить запрос на картинке слева-сверху.

    У меня есть таблица в которой несколько колонок-массивов.

    Запрос должен вычислять avg по нескольким колонкам (дай мне avg за n минут по temp, fan и тпд).

    Я накидал решение для одной колонки, но не знаю как лучше написать запрос для нескольких колонок.
  • https://t.me/clickhouse_ru
    нет
  • https://t.me/clickhouse_ru
    @foxermen #228638 05:42 PM, 29 Jul 2021
    другая
  • https://t.me/clickhouse_ru
    @foxermen #228639 05:43 PM, 29 Jul 2021
    Received exception from server (version 21.7.5):
    Code: 210. DB::Exception: Received from localhost:9000. DB::Exception: Unable to connect to HDFS: Hdfs::HdfsRpcException: HdfsFailoverException: Failed to invoke RPC call "getFsStats" on server "prdhdp:9000" Caused by: HdfsNetworkConnectException: Connect to "prdhdp:9000" failed: (errno: 111) Connection refused.
  • https://t.me/clickhouse_ru
    @foxermen #228640 05:43 PM, 29 Jul 2021
    вот такая появилась
  • https://t.me/clickhouse_ru
    ну, у вас хост на 9000 порту тупо не отвечает
  • https://t.me/clickhouse_ru
    вроде помог запуск в другом виде, ссейчас у админов уточню и отпишу что ссработало
  • так можно же добавить нужные колонки в ваш запрос

    select … avg(temp_val), avg(fan_val) from (
    select worker_id, datetime, temp, fan

    array join temp as temp_val, fan as fan_val
    )

    или я что-то не так понял?
  • Это в users.xml
  • @KevinMort #228646 06:22 PM, 29 Jul 2021
    Да, рестарт делал
  • https://t.me/clickhouse_ru
    @x1unix ↶ Reply to #228643 #228647 06:22 PM, 29 Jul 2021
    В запросе я сначала разбираю один массив на строки при помощи ARRAY JOIN (на temp_value и temp_index), суммирую с групировкой.

    Если я так сделаю, то с групировкой проблем не будет? Порядок элементов имеет значение.

    select
    worker_id,
    round(avg(temp_value), 1) as temp_avg, temp_index,
    round(avg(pwr_value), 1) as pwr_avg, pwr_index
    from (
    select datetime, worker_id, temp, power from stats
    WHERE `worker_id` = 3081
    and `datetime` between
    toDateTime('2021-07-26 19:40:00', 'Europe/Kiev') AND
    toDateTime('2021-07-26 19:45:00', 'Europe/Kiev')
    order by `datetime` ASC
    ) array join
    temp as temp_value,
    power as pwr_value,
    arrayEnumerate(temp) as temp_index,
    arrayEnumerate(power) as pwr_index
    group by (worker_id, temp_index, pwr_index)
    order by temp_index ASC;
  • https://t.me/clickhouse_ru
    @vpismarev #228649 06:23 PM, 29 Jul 2021
    Привет

    Подскажите, плиз, по архитектурному решению. У нас есть кластер из 8 нод, данные пишутся в одну ноду и позже реплицируются в остальные (почему так хз, но пока это и неважно). Одна из нод клика для нас является источником но вычитываем данные в итоге с лагом, причём лаг этот не предсказуем (от 1 мин до 10 пока ноды не синхронизируются). Этот лаг критичен и хотелось бы как-то его избежать

    Можно ли организовать следующее?
    1) сделать кластер из трёх нод и писать в них с указания кворума 3, например
    2) остальные ноды синхронизируются с 1)

    Тогда бы всем для кого отставание критично могли бы ходить в кластер 1), для остальных есть так называемые реплики.
  • проблем с порядком не должно быть, и возможно вам достаточно одного “индекса”, если массивы всегда одинаковой длины
  • https://t.me/clickhouse_ru
    @x1unix ↶ Reply to #228650 #228651 06:26 PM, 29 Jul 2021
    длинна может быть разная

    есть ли возможность потом сгрупировать такой результат назад в одну строку с массивами-колонками?
  • select worker_id, groupArray(temp_avg) from (…) group by worker_id
  • https://t.me/clickhouse_ru
    тогда параметр будет проигнорирован
    в users.xml лежат профили и настройки для пользователей
    в config.xml - настройки server level

    положите в conf.d
    тогда замержится куда надо
  • @timtsr #228656 07:31 PM, 29 Jul 2021
    Всем привет. Есть вопрос по latest docker образу. Когда я его запускаю идет ошибка chown: changing ownership of './sys/bus/pci/drivers/lpc_ich': Read-only file system . Пробовал делать CLICKHOUSE_DO_NOT_CHOWN, но тогда ругается на права
  • @timtsr #228657 07:32 PM, 29 Jul 2021
    volumes:
    - ./docker_data/clickhouse:/data:delegated,rw
    - ./development/clickhouse-server/config.xml:/etc/clickhouse-server/config.xml
    tmpfs:
    - /var/log/clickhouse
    ulimits:
    nofile:
    soft: 262144
    hard: 262144
  • https://t.me/clickhouse_ru
    @nbeletsky #228660 08:26 PM, 29 Jul 2021
    Привет! А никто не сталкивался что при запуске Clickhouse в контейнере появляется ошибка invalid cross device link? Она появляется только если директория где лежат data файлы находится внутри контейнера. Если пробрасывать наружу или использовать data контейнер, то все хорошо.
  • 30 July 2021 (91 messages)
  • https://t.me/clickhouse_ru
    @x1unix ↶ Reply to #228636 #228661 01:08 AM, 30 Jul 2021
    Нашел ответ с чуть более элегантным решением с помощью *ForEach (avgForEach)

    Может кому то еще пригодится:

    select
    arrayMap(x -> floor(x,1), avgForEach(temp)) as temp,
    arrayMap(x -> floor(x,1), avgForEach(power)) as power
    from stats
    WHERE `worker_id` = 3081
    and `datetime` between
    toDateTime('2021-07-26 19:40:00', 'Europe/Kiev') AND
    toDateTime('2021-07-26 19:45:00', 'Europe/Kiev');
  • https://t.me/clickhouse_ru
    @x1unix ↶ Reply to #228660 #228662 01:09 AM, 30 Jul 2021
    тобишь они в стандартной папке контейнера - /var/lib/clickhouse ?
  • https://t.me/clickhouse_ru
    @Andreev_Alexey_V #228665 05:45 AM, 30 Jul 2021
    Добрый день. Выполняю запрос из доки (https://clickhouse.tech/docs/ru/sql-reference/statements/create/table/#comment-table) CREATE TABLE t1 (x String) ENGINE = Memory COMMENT 'The temporary table';
    SELECT name, comment FROM system.tables WHERE name = 't1'; получаю ошибку Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 44 ('COMMENT') (line 1, col 44): COMMENT 'The temporary table';
    SELECT name, comment FROM system.tables WHERE name = 't1';. Expected one of: PRIMARY KEY, end of query, AS, INTO OUTFILE, TTL, ORDER BY, SETTINGS, PARTITION BY, SAMPLE BY, FORMAT (version 21.3.15.4 (official build)) В чем может быть проблема?
    Таблица | Документация ClickHouse

    CREATE TABLE Запрос CREATE TABLE может иметь несколько форм, которые используются в зависимости от контекста и решаемых

  • https://t.me/clickhouse_ru
    table comment доступен с версии 21.6
    https://github.com/ClickHouse/ClickHouse/commit/4ffe199d3947bd12d8a193aca42086f939596cb7
    Implement table comments · ClickHouse/ClickHouse@4ffe199

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

  • @sr_maks1 #228668 06:24 AM, 30 Jul 2021
    Доброе утро! Подскажите можно ли отключить падение КХ если словарь отсутствует либо содержит некорректные поля.
  • https://t.me/clickhouse_ru
    @konnectrl #228669 06:30 AM, 30 Jul 2021
    Привет. Есть вопрос. У меня есть данные по ивентам сессии пользователя(время, сессия, навзание ивента), мне требуется чтобы между ивентами не было определенного ивента. Например мне нужно посчитать сколько пользователей сделали event1 вместе с event2, между ивентами должны быть другие ивенты, но не должен быть event3. С помощью массива, реализация не возможна, т.к. не хватает оперативки. Пробывал через seuenceMath('(?1)(?3)(?2)') EventName = event1, EventName = event2, EventName != event3, но результат не верный.
  • https://t.me/clickhouse_ru
    Документация ClickHouse | Документация ClickHouse

    ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries

  • https://t.me/clickhouse_ru
    @Fullherdi #228672 07:06 AM, 30 Jul 2021
    Привет всем, подскажите как убить запрос
    KILL QUERY WHERE query_id =''
    висит в статусе waiting
  • https://t.me/clickhouse_ru
    если словарь сделан через DDL
    тогда сделайте
    mv /var/lib/clickhouse/metadata/your_db_name/your_dictionary_name.sql /tmp/
    и стартуйте сервер
    потом можете попробовать обратно словарь приаттачить

    если сделан через XML
    тогда посмотрите откуда у вас XML файл со словарем в /etc/clickhouse-server/ лежит и тоже в /tmp положите

    а вы уверены что у вас именно словарь виноват?
    а не таблица которая на него ссылается?

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

    так что ждите

    для интеракивного стопа я использую
    KILL QUERY ... SYNC
  • https://t.me/clickhouse_ru
    ок, спасибо
  • https://t.me/clickhouse_ru
    У нас не стандартный контейнер. Мы используем наш контейнер, где ставим кликхаус из пакета. Тут ещё такой момент, что раньше такой ошибки не было, она появилась с LTS 21.3
  • вопрос как можно отключить падение. нашел dictionaries_lazy_load с какой версии он появился и если его включить при отсутствии таблицы словаря в mysql например сервер КХ не упадет? Сейчас если не так структура таблиц то сервер падает
  • https://t.me/clickhouse_ru
    объясните в чем падение заключается?
    вы имеете ввиду сервер падает во время загрузки сервера или во время data reload в dictionary?
    покажите ошибку и stacktrace?

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

    dictionalries_lazy_load такой настройки больше нет, она в 19.x была
    Slach [altinity] in ClickHouse не тормозит

    если словарь сделан через DDL тогда сделайте mv /var/lib/clickhouse/metadata/your_db_name/your_dictionary_name.sql /tmp/ и стартуйте сервер потом можете попробовать обратно словарь приаттачить если сделан через XML тогда посмотрите откуда у вас XML файл со словарем в /etc/clickhouse-server/ лежит и тоже в /tmp положите а вы уверены что у вас именно словарь виноват? а не таблица которая на него ссылается? покажите полное сообщение об ошибке и stacktrace?

  • сервер падает при старте если нет во внеш бд таблиц для подключения словарей.
    62204d-a4c7-4164-9b56-1256e53a9826} <Error> ExternalDictionaries: Cannot create external dictionary 'test_camp' from config path /etc/clickhouse-server/test_mysql_dictionary.xml: Poco::Exception. Code: 1000, e.code() = 1146, e.displayText() = mysqlxx::BadQuery: Table 'test_l.campaign_source' doesn't exist (172.44.0.12:3306) (version 19.5.4.22 (official build))
  • @sr_maks1 #228680 08:57 AM, 30 Jul 2021
    возможно ли отключить его падение при ошибках создания-загрузки и тп словарей.
  • https://t.me/clickhouse_ru
    @YngveStardust #228681 09:11 AM, 30 Jul 2021
    Привет всем. Подскажите: есть таблица с engine=kafka settings kafka_flush_interval_ms = 7500 и целевая таблица с колонкой ts DateTime64 materialized now64(). Проблема в том, что ts (now64()) вычисляется один раз в начале формирования блока вставки в целевую таблицу из-за чего первая и последняя строка в блоке (как и все в блоке) имеют одинаковый ts, хотя могли быть вычитаны кликхаусом из кафки с разницей до 7.5 секунд. Как это можно побороть?
  • в новых версиях (после 21.5 где то, точно не скажу) было улучшение по поводу нестартования изза словарей, но не уверен что ваш случай покрыт. проверьте
  • @sr_maks1 #228683 09:17 AM, 30 Jul 2021
    Ну просто например есть миграции которые не доехали например. Поэтому ошибка некритична, хочется чтобы кх не падал 🐶
  • https://t.me/clickhouse_ru
    mv -v /etc/clickhouse-server/test_mysql_dictionary.xml /tmp/
    systemctl clickhouse-server start

    инициализация словаря нужна для того чтобы типы данных для полей вывести

    lazy_dictionary_load для 19.x у вас может сработать, но не факт
  • говорю же, были фиксы, у нас были подобные проблемы когда non-backward compatible syntax поменяли
    например
    https://t.me/clickhouse_ru/196169

    тут например чинили старт когда дефолт поля таблиц используют dictGet на незагруженных словарях
    https://github.com/ClickHouse/ClickHouse/pull/19805

    тут тоже можно почитать
    https://github.com/ClickHouse/ClickHouse/issues/21101
  • mv не поможет если через тот же docker-compose.... Поэтому и спрашиваю есть ли ПАРАМЕТР.
  • https://t.me/clickhouse_ru
    вычисление now64 константное выражение, и никак не связано с engine kafka
    это никак не побороть...
  • @sr_maks1 #228688 09:29 AM, 30 Jul 2021
    тот же lazy помог бы. наверное
  • @1063161973 #228690 10:15 AM, 30 Jul 2021
    Добрый день. Зависает мутация, поле latest_fail_reason пустое.
    Как можно "побороть" ?
  • @1063161973 #228691 10:17 AM, 30 Jul 2021
    Т.е. удаление из таблицы по 63 ключам (каждому соответствует ~1000 строк) зависает. Размер таблицы ~7.5 миллиардов строк / 190 Гб
  • @1063161973 #228692 10:18 AM, 30 Jul 2021
    других незавершенных мутаций к базе нет...
  • https://t.me/clickhouse_ru
    @mezhekov #228693 11:17 AM, 30 Jul 2021
    Приветствую, подскажите, если в большой таблице изменить тип поля с UInt8 на UInt16 или UInt32, таблица или партиции лочатся на запись/чтение, таблица реплицируемая и разбита по шардам?
  • насколько я помню альтер метаданных сейчас не блокирует ничего
  • https://t.me/clickhouse_ru
    Если вдруг кто столкнётся с такой же ошибкой. Clickhouse пытается произвести удаление файлов:
    write(2, "2021.07.30 10:58:52.317171 [ \33[3"..., 2142021.07.30 10:58:52.317171 [ 2937 ] {} <Debug> system.trace_log (5f1f70a0-0f80-46b5-91ea-59900b67a4f8): Removing part from filesystem 202107_1_1_0) = 214
    Для этого делает tmp файлы:
    rename("/srv/clickhouse/store/5f1/5f1f70a0-0f80-46b5-91ea-59900b67a4f8/202107_1_1_0", "/srv/clickhouse/store/5f1/5f1f70a0-0f80-46b5-91ea-59900b67a4f8/delete_tmp_202107_1_1_0") = -1 EXDEV (Invalid cross-device link)

    Но использует при этом функцию rename. А она не работает на overlayfs2, т.к там происходит переименование сквозь слои.

    А Clickhouse не должен учитывать этот момент?
  • https://t.me/clickhouse_ru
    @ilejn #228697 11:44 AM, 30 Jul 2021
    Тикет заведите - начнет учитывать. Правда, непонятно, как именно это учитывать. Запрещать временный каталог на такой файловой системе? Или достаточно более внятного сообщения об ошибке?
    Требовать, чтобы все просто работало, IMHO странно.
  • @simpl1g #228698 11:46 AM, 30 Jul 2021
    подскажите куда копать, сегодня отвалились on cluster запросы, как будто не может до ЗК достучаться. Просто зависает на DDLQueryStatusInputStream. При этом в system.zookeeper ходит без проблем

    ```
    SET send_logs_level='trace';
    ALTER TABLE dau_shard ON CLUSTER ch_shards DROP PARTITION 20210729

    Query id: fdbfd41f-c8f7-412a-a045-cb041d7e6486

    <Debug> executeQuery: (from 127.0.0.1:42300, using production parser) ALTER TABLE dau_shard ON CLUSTER ch_shards DROP PARTITION 20210729
    <Trace> ContextAccess (appodeal): Access granted: ALTER DELETE ON dau_shard
    <Debug> executeQuery: Query pipeline:
    DDLQueryStatusInputStream

    <Error> executeQuery: Code: 159, e.displayText() = DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000602234 is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 12 unfinished hosts (0 of them are currently active), they are going to execute the query in background (version 21.3.13.9 (official build)) (from 127.0.0.1:42300) (in query: ALTER TABLE dau_shard ON CLUSTER ch_shards DROP PARTITION 20210729)
    ```

    ```
    SELECT
    name,
    value,
    numChildren
    FROM system.zookeeper
    WHERE path = '/clickhouse/task_queue/ddl/query-0000602234'

    Query id: bbce3696-0eac-47f2-aa3d-cc1a5d4eb376

    ┌─name─────┬─value─┬─numChildren─┐
    │ active │ │ 0 │
    │ finished │ │ 0 │
    └──────────┴───────┴─────────────┘
    ```
  • https://t.me/clickhouse_ru
    А вот еще вопрос, далее из этой таблицы читает матвьюшка у нее тоже UInt8 придется паралельно менять в .inner табличках тип?
  • https://t.me/clickhouse_ru
    там 145 партов надо просканировать...
    parts_to_do
    до них еще добраться надо
    сколько у вас вообще мутаций с is_done=0 ?

    смотрите SELECT * FROM system.merges FORMAT Vertical
    чтобы понять начались мутации или нет
  • одна мутация с is_done=0
  • https://t.me/clickhouse_ru
    он не до zookeeper не может достучаться
    у вас там видимо какая то мертвая реплика есть
    которая 180 секунд distributed_ddl не вычитывала

    SELECT
    name,
    value,
    numChildren
    FROM system.zookeeper
    WHERE path = '/clickhouse/task_queue/ddl/query-0000602234/active'

    и

    SELECT
    name,
    value,
    numChildren
    FROM system.zookeeper
    WHERE path = '/clickhouse/task_queue/ddl/query-0000602234/finished'

    посмотрите
  • ага, нужно менять и там
  • https://t.me/clickhouse_ru
    Settings | ClickHouse Documentation

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

  • в active/finished пусто, numChildren 0 в них. Запрос получается с шарда не отправился никуда
  • @1063161973 #228708 12:15 PM, 30 Jul 2021
    в system.mutations есть незавершенная мутация, а system.merges пустая
  • небольшая загрузка (на сервере 256 Гб памяти)
  • https://t.me/clickhouse_ru
    @ivanbrrr #228710 12:20 PM, 30 Jul 2021
    Тм
  • https://t.me/clickhouse_ru
    @ivanbrrr #228711 12:20 PM, 30 Jul 2021
    Тм
  • https://t.me/clickhouse_ru
    ну тут дело не в памяти. а в том есть свободные треды или нет для того чтобы muations merge выполнять
  • https://clickhouse.tech/docs/en/operations/settings/settings/#background_pool_size

    background_pool_size установлено в значение 16
    Settings | ClickHouse Documentation

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

  • Т.е. при такой ситуации (с зависающими мутациями) лучше увеличить значение background_pool_size ? В два раза примерно ?
  • https://t.me/clickhouse_ru
    В атомик базах uuid используется. Там рандомное имя.
  • @1063161973 #228716 12:34 PM, 30 Jul 2021
    а в какой ветке конфигурации устанавливается значение background_pool_size ?
    в merge_tree ?
  • не в profile/default
  • https://t.me/clickhouse_ru
    Настройка есть до сих пор. Как она работает написано в доке.
  • https://t.me/clickhouse_ru
    ну сначала понять есть там свободные слоты или нет
  • создали рядом тестовый кластер, там всё нормально работает
  • @dj_mixer #228721 12:56 PM, 30 Jul 2021
    в 20.8 sum(x) когда все значения null - возвращает 0
    в 21.3 sum(x) когда все значения null - возвращает null

    вопрос - это когда было пофикшено и есть ли сеттинг меняющий behaviour?
  • https://t.me/clickhouse_ru
    Спасибо, все прошло в лучшем виде.
  • https://t.me/clickhouse_ru
    настройки посмотрите
    что нибудь типа этого
    empty_result_for_aggregation_by_empty_set

    или этого
    aggregate_functions_null_for_empty
  • да, спасибо. странно что sumIfOrNull все равно возвращает 0 в 20.8
  • @dj_mixer #228726 01:33 PM, 30 Jul 2021
    ok, на самом деле баг в 20.8 связанный с -If комбинатором
  • @dj_mixer #228727 01:34 PM, 30 Jul 2021
    вроде ЛТС а недоехало )
  • https://t.me/clickhouse_ru
    Прежде чем увеличивать размер пула, надо заглянуть в system.replication_queue.
    Вы же говорите, system.merges пустая, не в пуле тут дело
  • Кластер из одного сервера, нет репликаций и шардов
  • https://t.me/clickhouse_ru
    Тогда в логи загляните
  • https://t.me/clickhouse_ru
    Там пол КХ на этом построено. Непонятно как это можно исправить даже в теории.
  • ух ты, это что, 1С на мониторинге кликхауза?
  • https://t.me/clickhouse_ru
    без Atomic баз проблема тоже?
  • Да, только наборот - мониторинг кликхауза из 1С 😁
  • @ViacheslavNefedov #228735 02:31 PM, 30 Jul 2021
    теперь я видел всё
  • ... и такое представление еще из system.query_log
  • @1063161973 #228737 02:34 PM, 30 Jul 2021
    чтобы "чемпионов отлавливать )
  • @primorial #228738 02:34 PM, 30 Jul 2021
    "Распахнуть"
  • @ViacheslavNefedov #228739 02:34 PM, 30 Jul 2021
    офигеть. "Автообновление"
  • @primorial #228740 02:34 PM, 30 Jul 2021
    Спасибо за такую информацию)
  • @ViacheslavNefedov #228741 02:34 PM, 30 Jul 2021
    смерть графане
  • Где такое можно посмотреть или построить?
  • Работает в К&Б, ежедневно синхронизируется с большой базой. Отчеты 1С можно по данным КХ формировать. Можно в PowerBI через ODBC или в Tabix
  • Именно про запросы и потребляемые ресурсы
  • Да тут всё просто. Запросы к таблицам КХ system.processes и system.query_log
  • Спасибо
  • https://t.me/clickhouse_ru
    @gandie #228752 09:02 PM, 30 Jul 2021
    Добрый вечер, подскажите что почитать или как сделать ) Задача, есть 5 одинаковых SSD дисков, нужно создать таблицу (шахматные партии), так чтобы данные равномерно размазывались по этим дискам.
    Спасибо
  • https://t.me/clickhouse_ru
    сделать из дисков JBOD
  • https://t.me/clickhouse_ru
    Как бы вы понимаете что jbod сделанный в кх в пять раз хуже чем mdraid. По любому параметру
  • https://t.me/clickhouse_ru
    @gandie #228755 09:12 PM, 30 Jul 2021
    Спасибо, два слова для поиска приняты jbod и mdraid, буду читать
  • https://t.me/clickhouse_ru
    можно raid0 вместо jbod
  • https://t.me/clickhouse_ru
    @gandie #228757 09:17 PM, 30 Jul 2021
    У меня была надежда, что есть у кх какие-то свои решения, что то в ключе партиционирования, шардинга данных
  • https://t.me/clickhouse_ru
    @nyoroon #228758 09:19 PM, 30 Jul 2021
    можно придумать, но проще на уровне ниже сделать
  • https://t.me/clickhouse_ru
    @nyoroon #228759 09:22 PM, 30 Jul 2021
    можно например на каждый диск отдельную таблицу сделать и таблицу для чтения с ENGINE=Merge, но придумывать как вставлять в эти таблицы придётся самостоятельно
  • https://t.me/clickhouse_ru
    @gandie #228760 09:29 PM, 30 Jul 2021
    Это хобби, и если не считать начальной загрузки, инкремент раз в месяц, со вставкой проблем не будет, например по времени шахматной партии можно поделить, один месяц на первый диск, второй на второй и так далее. Чем меня пугает на низком уровне, что нужно заранее решить сколько места выделить и отвести его целиком под нужды кх
  • https://t.me/clickhouse_ru
    Там половина оптимизаций селектов отломается и джойны иногда работать не будут.
  • https://t.me/clickhouse_ru
    mdraid raid5
  • https://t.me/clickhouse_ru
    Нету и планов нет на это. Весь мир движется в обратном направлении - S3 / hdfs
  • https://t.me/clickhouse_ru
    @gandie #228764 09:36 PM, 30 Jul 2021
    Ivan, Denny спасибо. Понял, что сложно ) Пока остановлюсь на одном M2 nvme на 2Тб, когда данных станет больше, вернусь к идее использования набора дисков
  • 31 July 2021 (57 messages)
  • У меня есть папочка config.d там пусто, какой файл нужно создать? Возможно глупые вопросы задаю, но не понимаю 😐
  • Там можете создавать файлы конфига клторые перезапишут дефолтный config.xml. только то что переопределяете
  • А можете подсказать, исходя из чего назвать новый файл xml, и что в нем должно быть по минимуму?
  • @dj_mixer #228770 06:50 AM, 31 Jul 2021
    По минимуму можно вообще ниче не создавать
  • @dj_mixer #228771 06:51 AM, 31 Jul 2021
    Вы сеняете что либо в конфиг xml?
  • Мне нужно куда-то запихать вот это
    <allow_experimental_database_postgresql_replica>1</allow_experimental_database_postgresql_replica>
    Но я хз куда это деть)
  • @dj_mixer #228773 06:53 AM, 31 Jul 2021
    Аха сделайте файл allow_experimental.xml
  • @dj_mixer #228774 06:53 AM, 31 Jul 2021
    И туда пихайте, не забудьте родительские теги
  • @dj_mixer #228775 06:53 AM, 31 Jul 2021
    В config.d
  • Родительские теги это какие?)
  • @dj_mixer #228777 06:54 AM, 31 Jul 2021
    <yandex> типа
  • Сделал так, но все равно ошибка DB::Exception: MaterializedPostgreSQL is an experimental database engine. Enable allow_experimental_database_postgresql_replica to use it. (UNKNOWN_DATABASE_ENGINE) (version 21.9.1.7603
  • @KevinMort #228779 07:01 AM, 31 Jul 2021
    А кто-нибудь знает сервис типа
    https://airbyte.io/
    Но только с возможностью репликации напрямую в clickhouse
  • @KevinMort #228780 07:02 AM, 31 Jul 2021
    https://airbyte.io/ если кратко
    Этот сервис предоставляет возможность репликации данных примерно из 50 разных источников
    Но пункт назначения clickhouse назначить нельзя
  • https://t.me/clickhouse_ru
    Можно в кафку, а кх умеет читать кафку.
  • Ну вот я сейчас пишу в postgresql, и пытаюсь потом в clickhouse забирать данные
  • рестартовали?
  • Да
  • потому что ошибка есть, а в коде он использует другое имя параметра (заведите баг плз).
  • конфиг судя по всему пишется в дефолт профиль, т.е. в папку user.d кидаете XML
    вот пример
    https://github.com/ClickHouse/ClickHouse/blob/8351f1db9923100e411c380a8ba3fa52b5dff4d3/tests/integration/test_postgresql_replica_database_engine/configs/users.xml
    ClickHouse/users.xml at 8351f1db9923100e411c380a8ba3fa52b5dff4d3 · ClickHouse/ClickHouse

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

  • Спасибо огромное! Напрямую пробовал в users.xml писать, но сервер не стартовал, а в отдельном файле сработало!
  • напрямую тож работает, скорее всего синтаксис. заведите тикет чтоб ошибку исправили, а то такая подстава с ошибкой...
  • https://t.me/clickhouse_ru
    @erzentd #228789 10:01 AM, 31 Jul 2021
    есть кликхаус в докере 18 версии, если я обновлю имейдж а данные оставлю старые - что сломается при переходе на последнюю версию?
  • https://t.me/clickhouse_ru
    @erzentd #228790 10:01 AM, 31 Jul 2021
    можно ли обновить просто заменив имейдж?
  • https://t.me/clickhouse_ru
    @erzentd #228791 10:02 AM, 31 Jul 2021
    пока других хостов свободных нет, будут через 2 месяца ток
  • https://t.me/clickhouse_ru
    18 версия?

    Да очень много чего, нужно сверять патч ноуты

    https://docs.altinity.com/altinitystablerelease/releasenotes/
    Release Notes

    Release Notes for Altinity Stable Releases

  • @vmihailenco #228793 10:13 AM, 31 Jul 2021
    Пытаюсь разобраться почему marks_bytes много места занимает и возник вопрос - в marks хранится весь row (>100 колонок) или только primary keys (пара колонок)? У меня получается что на 4gb (sum(bytes) from parts) данных пишется 1gb marks (sum(mark_bytes) from parts). Это много или нормальная ситуация?
  • https://t.me/clickhouse_ru
    В марках хранятся засечки для всех колонок через каждые (index_granularity bytes)
  • @vmihailenco #228795 10:15 AM, 31 Jul 2021
    получается если много пустых колонок которые хорошо сжимаются, то засечки будут достаточно много занимать...
  • @vmihailenco #228796 10:16 AM, 31 Jul 2021
    ....по сравнению с основными данными
    получается единственный вариант - уменьшить кол-во колонок?
  • https://t.me/clickhouse_ru
    @unamedrus #228797 10:16 AM, 31 Jul 2021
    Ну, у вас какая index_granularity?
  • @vmihailenco #228798 10:16 AM, 31 Jul 2021
    8192 - не менял, сорри
  • @vmihailenco #228799 10:17 AM, 31 Jul 2021
    т.е. дефолтная
  • https://t.me/clickhouse_ru
    И насколько хорошо у вас данные сжимаются?
  • @vmihailenco #228801 10:18 AM, 31 Jul 2021
    точно не знаю, но засечек 1гб на 4гб данных
  • @vmihailenco #228802 10:18 AM, 31 Jul 2021
    это в одной таблице с большим кол-вом колонок
    в других все лучше
  • https://t.me/clickhouse_ru
    @erzentd #228803 10:19 AM, 31 Jul 2021
    2021.07.31 10:14:56.221242 [ 152 ] <Error> zretail_data_marts.sales_terminal (StorageReplicatedMergeTree, PartCheckThread): No replica has part covering 20190101_20190131_2555_2555_0 and a merge is impossible: we didn't find smaller parts with either the same min block or the same max block.
    и такое постоянно, на дисках ошибок нет, зукипер у хадупа и кафки данные не теряет а у кх теряет - отчего такое может быть?
  • https://t.me/clickhouse_ru
    Сколько колонок?
  • @vmihailenco #228805 10:20 AM, 31 Jul 2021
    у меня просто много совсем пустых колонок на будущее - они по идее очень хорошо сжимаются
    не знал что это так на mark_bytes влияет
    примерно сотня колонок
  • @vmihailenco #228806 10:20 AM, 31 Jul 2021
    я не жалуюсь - просто пытаюсь узнать если еще варианты
  • @vmihailenco #228807 10:20 AM, 31 Jul 2021
    удалить лишние колонки не такая большая проблема
  • https://t.me/clickhouse_ru
    Ждать sparse колонки
    https://github.com/ClickHouse/ClickHouse/pull/22535
    Sparse serialization and ColumnSparse by CurtizJ · Pull Request #22535 · ClickHouse/ClickHouse

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

  • спасибо
  • https://t.me/clickhouse_ru
    причём я такие ошибки ток для репликасет нахожу в инете
  • https://t.me/clickhouse_ru
    @erzentd #228811 10:26 AM, 31 Jul 2021
    а с StorageReplicatedMergeTree никакого описания как чинить
  • https://t.me/clickhouse_ru
    @erzentd #228812 10:27 AM, 31 Jul 2021
    подумал может обновлением имейджа исправится, но походу нет, судя по ошибкам что гуглятся
  • https://t.me/clickhouse_ru
    А строк сколько?
  • если вы про rows, то 150 милионов rows в одном парте
    если про строковый колонки то примерно 60 штук LC(String), 20 Strring, еще где-то 20 Enum/Int
  • https://t.me/clickhouse_ru
    в массив их запихайте и всего делов
  • так наверное с частью и поступлю
    компрессия будет похуже, но что делать
  • https://t.me/clickhouse_ru
    ответ - супер, двух зайцев сразу
    словари LC тоже входят в размер марков, посмотрите по колонкам в system.parts_columns
  • посмотрю, спасибо!
  • https://t.me/clickhouse_ru
    может и в system.columns есть, не помню
  • https://t.me/clickhouse_ru
    @antonter #228821 05:54 PM, 31 Jul 2021
  • https://t.me/clickhouse_ru
    @antonter #228822 05:58 PM, 31 Jul 2021
    Добрый вечер, после обновления до 21.7.4.18 запрос выше вылетает по

    DB::Exception: Memory limit (for query) exceeded: would use 20.57 GiB (attempt to allocate chunk of 4346967 bytes), maximum: 20.56 GiB: While executing MergeTreeThread

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

    set join_algorithm='partial_merge';
    set max_bytes_in_join=1000000;

    и тп, никак не могу добиться выполнения, жрет максимальное количество памяти на сервере (в таком случае While менятеся) либо указанное в max_memory_usage, помогает только уменьшение количества полей в select.

    Подскажите пожалуйста куда смотреть, заранее спасибо
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Можете попробовать уменьшить количество тредов. Будет меньше памяти использоваться, то дольше. set max_threads = 1.

    Вообще, конечно, надо сам запрос оптимизировать.
    Бросается в глаза лишнее поле:
    max(sitetype_id) AS sitetype_id
    + первую таблицу я бы в виде подзапроса сделал и там where.