• 01 April 2023 (98 messages)
  • @tormew #318911 12:11 PM, 01 Apr 2023
    насколько эффективно clickhouse целиком строки выгружает? например найти и выгрузить все поля 500к строк
  • https://t.me/clickhouse_ru
    Вопрос максимально странный, а как можно выгружать строки не эффективно ?
  • @tormew ↶ Reply to #318912 #318913 12:24 PM, 01 Apr 2023
    по сравнению с монго или постгрес
  • @tormew ↶ Reply to #318912 #318914 12:25 PM, 01 Apr 2023
    как я понял кликхаус хорошо суммирует по нескольким столбцам, выгружать всю строку это нетипичная для него нагрузка
  • https://t.me/clickhouse_ru
    @konnectrl #318915 12:26 PM, 01 Apr 2023
    Дак строка это тип данных String
  • https://t.me/clickhouse_ru
    @konnectrl #318916 12:26 PM, 01 Apr 2023
    А то что вы спрашиваете называется "выгружать все столбцы"
  • https://t.me/clickhouse_ru
    @konnectrl #318917 12:26 PM, 01 Apr 2023
    Теряется смысл кликхауса:) используйте PG :)
  • https://t.me/clickhouse_ru
    Row - строка, column - столбец. Просто контекст разный
  • https://t.me/clickhouse_ru
    На самой первой страничке показано преимущество кликхауса
  • https://t.me/clickhouse_ru
    @darkstussy #318920 12:28 PM, 01 Apr 2023
    Если выбрать абсолютно все столбцы, то выйдет то же самое, что и строка
  • @tormew ↶ Reply to #318919 #318921 12:32 PM, 01 Apr 2023
    там это преимущество если брать 3 столбца из 100, а мне нужно 100 из 100
  • https://t.me/clickhouse_ru
    Поэтому и говорю, всё преимущество растеряешь
  • https://t.me/clickhouse_ru
    ClickHouse was initially built as a prototype to do just a single task well: to filter and aggregate data as fast as possible. , в вашей задаче что-то про агрегацию есть?
  • @tormew ↶ Reply to #318923 #318924 12:37 PM, 01 Apr 2023
    будет агрегация(тут вопросов нет к кликхаусу), но есть и отчеты которые требуют почти все поля
  • https://t.me/clickhouse_ru
    @RapidCodeLab #318925 12:38 PM, 01 Apr 2023
    отчет на 100 колонок? это в человеческих силах проанализировать глазами ?)
  • @tormew ↶ Reply to #318925 #318926 12:40 PM, 01 Apr 2023
    и скоро к 1кк строчек в экселе приблизимся) сомневаюсь что, кто-то их просматривает
  • https://t.me/clickhouse_ru
    Ну работать-то будет, просто может потребовать памяти и цпу больше чем вы ожидаете.

    И за частую приходится писать странные подзапросы

    select * from ...
    where pk in (select pk from ... where ...order by ... limit)
    and ...
    order by ...
    limit

    Чтобы выбирать * по первичному ключу и уже после limit
  • @tormew ↶ Reply to #318927 #318928 12:48 PM, 01 Apr 2023
    вроде индексы есть по любому столбцу? например: если нужно отфильтровать по 2 и 5 столбу, то необязательно использовать первичный индекс
  • https://t.me/clickhouse_ru
    Нет. И нет.
  • https://t.me/clickhouse_ru
    @den_crane #318930 12:51 PM, 01 Apr 2023
    Delayed reading of columns · Issue #45868 · ClickHouse/ClickHouse

    Given this query: SELECT id, view_count, like_count, dislike_count, title FROM youtube ORDER BY view_count DESC LIMIT 100 The column title is very large, and the query takes a long time: 100 rows i...

  • @tatarkind #318931 12:52 PM, 01 Apr 2023
    Всем привет! Храню в таблице векторы из 128 float. Стоит задача быстро найти N ближайших по L1Distance соседей. Смотрел в сторону ANNIndexes “Approximate Nearest Neighbor Search Indexes [experimental]” но вроде как пока поддерживается только cosineDistance и только с annoy. Получается эту задачу нужно решать вне Clickhouse? Или все-таки можно прикрутить ANNIndexes с L1Distance?
  • @tormew #318932 12:57 PM, 01 Apr 2023
    Есть массив строк [a,b,c] поиск: найти все где есть а, и где нет с.
    как лучше хранить в базе - как массив строк или как отдельные поля булеан?
  • https://t.me/clickhouse_ru
    чем меньше байт читать тем быстрее запрос, десерилиазация массива строк вообще еще та задача, надо прочитать все данные и запроцессить в памяти целиком
  • https://t.me/clickhouse_ru
    @MakeReady #318934 02:21 PM, 01 Apr 2023
    добрый день!

    не подскажите изза чего при попытке обновить КХ вываливается ошибка
    Err:5 https://packages.clickhouse.com/deb stable InRelease
    The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 3
  • https://t.me/clickhouse_ru
    @vpismarev #318935 02:45 PM, 01 Apr 2023
    А есть где нить инструкция как сконфигурировать кластер? Нужно 3 шарда без реплик
  • https://t.me/clickhouse_ru
    @vpismarev #318936 02:46 PM, 01 Apr 2023
    https://altinity.com/blog/how-to-set-up-a-clickhouse-cluster-with-zookeeper

    вот тут есть но кажется это не совсем то
    How to Set Up a ClickHouse Cluster with Zookeeper

    Learn how to create a ClickHouse cluster with a few nodes using Zookeeper and Altinity Stable Build. No need for Kubernetes or Docker.

  • https://t.me/clickhouse_ru
    @vpismarev #318937 02:46 PM, 01 Apr 2023
    там шард 1 и 3 реплики
  • https://t.me/clickhouse_ru
    Ну так тебе зукипер не нужен
  • https://t.me/clickhouse_ru
    @konnectrl #318939 03:08 PM, 01 Apr 2023
    Только в конфигах как я помню прописать кластер
  • https://t.me/clickhouse_ru
    @konnectrl #318940 03:08 PM, 01 Apr 2023
    И дистрибьютер таблицу создать
  • https://t.me/clickhouse_ru
    @MakeReady #318941 03:11 PM, 01 Apr 2023
    Добрый день!

    Консольный клиент то показывает затраченный объем памяти и загрузку процессора, то не.
    Можно задать, чтобы всегда показывал?
  • https://t.me/clickhouse_ru
    @pavel_pimenov #318942 03:21 PM, 01 Apr 2023
    Всем привет. только подключился к клику и возможно вопрос из faq, но не нашел. ситуация: есть клиент, который пишет в кафку всего 3 поля для последующего сохранения в базе. сообщение выглядит так: std::string json = fmt::format("{{\"id\":{},\"ts\":{},\"value\":{}}}", m_kafka_id, p_time, p_value); есть возможность обойти сериализацию в json т.к. по профайлеру это самое горячее место. (платформа x86) а данных очень много
  • https://t.me/clickhouse_ru
    а при чем тут КХ ? и тем более faq ?
  • https://t.me/clickhouse_ru
    @MakeReady #318944 03:26 PM, 01 Apr 2023
    еще вопрос, можно ли изменить движок БД
    сейчас
    ENGINE = Ordinary
  • https://t.me/clickhouse_ru
    у клика есть какой-то адаптер, который забирает данные из кафки и пишет в таблицу
  • https://t.me/clickhouse_ru
    можно, можно вручную,
    https://kb.altinity.com/engines/altinity-kb-atomic-database-engine/how-to-convert-ordinary-to-atomic/

    и КХ умеет конвертировать при старте
    Implemented automatic conversion of database engine from Ordinary to Atomic. Create empty convert_ordinary_to_atomic file in flags directory and all Ordinary databases will be converted automatically on next server start. Resolves [#39546](https://github.com/ClickHouse/ClickHouse/issues/39546). [#39933](https://github.com/ClickHouse/ClickHouse/pull/39933) ([Alexander Tokmakov](https://github.com/tavplubix))
    How to Convert Ordinary to Atomic

    Clickhouse Howto Convert Ordinary to Atomic

  • А в чём смысл полей? id можно использовать в качестве ключа, в качестве ts взять таймстамп самого сообщения в кафке, а в качестве значения отправлять собственно само value
  • https://t.me/clickhouse_ru
    спасибо!
  • https://t.me/clickhouse_ru
    а при чем тут тогда запись в кафку? и сериализация?
  • https://t.me/clickhouse_ru
    ок. вопрос - клик умеет забирать данные из кафки в другом формате (отличном от json) ?
  • https://t.me/clickhouse_ru
    вручную выглядит муторным, таблиц много )
  • https://t.me/clickhouse_ru
    @saper44rus #318953 03:33 PM, 01 Apr 2023
    Добрый день. Подскажите пожалуйста как правильно мигрировать данные из одного кластера в другой (Новый). Кластер состоит из одного шарда и трёх реплик в нём две базы данных.
    Возможность остановить кластер имеется.
    Версии КК совпадают, единственное различие в предыдущем кластере папка с хранением данных была дефолтная (/var/lib/clickhouse), на новом кластере примонтировал отдельный раздел (/data/clickhouse), погуглил говорят можно просто перенести данные, но смущают там симлинки на таблицы, ещё clickhouse-copier в документации, не знаю какой путь выбрать, первый раз переношу.
    Заранее спасибо.
  • https://t.me/clickhouse_ru
    нет. Ресурсы затраченные не на чтение и работу с MergeTree, не показываются (тяжело учесть ресурсы потраченные на анализ первичного или skip индекса).
  • https://t.me/clickhouse_ru
    тут как раз на MergeTree
  • https://t.me/clickhouse_ru
    спасибо. в случае клиента на С++ какой самый дешевый вариант бинарного формата порекомендуете?
  • https://t.me/clickhouse_ru
    ну т.е. скрипт SQL сгенерить с помощью select from tables это проблема. ОК.

    Create empty convert_ordinary_to_atomic file in flags directory and all Ordinary databases will be converted automatically on next server start.
  • https://t.me/clickhouse_ru
    Rowbinary
  • https://t.me/clickhouse_ru
    «SQL сгенерить» сори, туплю ))
  • https://t.me/clickhouse_ru
    "{\"id\":484448,\"ts\":1665847032604000,\"value\":0}" сообщение выглядит так
  • https://t.me/clickhouse_ru
    спасибо ушел в гугл )
  • https://t.me/clickhouse_ru
    Мы использовали clickhouse-copier, но в нашем случае его использование было продиктовано необходимостью решарда: расширение с 2-х до 3-х шародов.
  • https://t.me/clickhouse_ru
    > fmt::format("{{\"id\":{},\"ts\":{},\"value\":{}}}"
    >это самое горячее место

    вангую проблема вообще не в этом а где-нибудь в сериализации "ts\":{}
  • https://t.me/clickhouse_ru
    почему ? ts - это int_64 template<typename T> std::string get_json(const T& p_value, int64_t p_time)
  • https://t.me/clickhouse_ru
    запускаем запрос
    1. строится план
    2. идет анализ partition
    3. идет анализ pk
    4. идет анализ skip
    5. загружаем марки
    >>> тут начинается показ CPU/RAM и УЧЕТ расходованных ресурсов <<<
    6. процессится MergeTree блоки таблицы
  • https://t.me/clickhouse_ru
    @pavel_pimenov #318966 03:40 PM, 01 Apr 2023
    нужен бинарный проброс в клик. использовать нативный api клика нельзя - все должно идти через кафку
  • https://t.me/clickhouse_ru
    @NALoginov #318968 03:41 PM, 01 Apr 2023
    А в чем различия дистрибутивов Clickhouse от Яндекса и Altinity?
  • https://t.me/clickhouse_ru
    <yandex>
    <macros>
    <cluster>altinitydemo</cluster>
    <shard>1</shard>
    <replica>altinity1.test</replica>
    </macros>
    </yandex>

    типа такого везже и все?

    <yandex>
    <clickhouse_remote_servers>
    <cluster_1>
    <shard>
    <weight>1</weight>
    <internal_replication>true</internal_replication>
    <replica>
    <host>clickhouse-01</host>
    <port>9000</port>
    </replica>
    </shard>
  • https://t.me/clickhouse_ru
    для профайлинга уберите format и просто обращайтесь к нужным переменным, таким образом, чтобы компайлер не смог заоптимизировать что вы их не используете
  • https://t.me/clickhouse_ru
    ИМХО не стоит смотреть в сторону ноды, насколько я знаю, там единственная приличная либа kafka.js, с которой, стоит вырасти нагрузке, можно поиметь массу проблем. Баги в ней есть, и они уже давно не фиксятся.
  • https://t.me/clickhouse_ru
    если че, макросы используются только движком Replicated.
  • https://t.me/clickhouse_ru
    <internal_replication>true</internal_replication> ==== движок Replicated
  • https://t.me/clickhouse_ru
    у Альтинити не православный, Алексей Миловидов считает что он ересь и мерзость.
  • https://t.me/clickhouse_ru
    еще раз спасибо за ваши конструктивные ответы! Все получилось!
  • https://t.me/clickhouse_ru
    понял, спс ) Мне для тестов репликейтед не нужен
  • https://t.me/clickhouse_ru
    Каким путём лучше пойти ? Просто скопировать файлы из папки store в другую папку store сделав аналогичные симлинки, но уже в другой директории ?
  • @r3former #318978 03:46 PM, 01 Apr 2023
    Парты в detached по причине clone разумно дропать? Читал:
    parts are renamed to ‘cloned’ if ClickHouse have had some parts on local disk while repairing lost replica so already existed parts being renamed and put in detached directory.
    Складывается ощущение, что потери данных быть не должно.
  • Главное чтобы не форматом, как с json
  • https://t.me/clickhouse_ru
    я тупо rsync-м копирую (несколько раз подтягивая diff ), не останавливая источник

    или КХ репликацией, если есть возможность.

    clickhouse-copier убог и крив
  • https://t.me/clickhouse_ru
    @ArturPap #318981 03:48 PM, 01 Apr 2023
    Что значит лучше? Мы не пробовали копировать дата директории.
    Есть вариант ещё с clickhouse-backup, если количество шардов на новом кластере такое же. Сделать backp/restore можно и через s3 либо копировать всю директорию бекапа на диски нового кластера.
  • https://t.me/clickhouse_ru
    это форк или что? Какие например есть плюсы дистрибутива от Altinity?
  • https://t.me/clickhouse_ru
    Учитывая что директория источника и назначения разные останется только пересоздать симлинки на те же папки store в новой директории, верно ?
  • https://t.me/clickhouse_ru
    Не могу сказать за убогость, у нас он отработал прекрасно, правда мы это обернули в ансибл, чтобы руками команды/конфиги не генерить
  • https://t.me/clickhouse_ru
    @ArturPap #318985 03:50 PM, 01 Apr 2023
    К тому же простое копирование не подходит при решарде.
  • https://t.me/clickhouse_ru
    по сути: вы почуствуете свою элитарность, вы не такой как все, на этом все (Я если че по должности starship captain в Альтинити)
  • https://t.me/clickhouse_ru
    зачем? вы всю папку clickhouse rsync-те, вместе со store и сохранением структуры симлинков (rsync умеет)
  • https://t.me/clickhouse_ru
    понятно, спасибо! )
  • https://t.me/clickhouse_ru
    там есть бекпорты фиксов, которые нужны клиентам Альтинити и Альтинити поддерживает дистрибутивы дольше (и бекпортит фиксы в очень старые релизы -- для клиентов)
  • https://t.me/clickhouse_ru
    На исходном сервере: /var/lib/clickhouse/store/
    На новом: /data/clickhouse/store
    Вот почему уточнил, симлинк же будет вести на старую директорию где данных нет.
  • https://t.me/clickhouse_ru
    @Vasyaabr #318991 03:58 PM, 01 Apr 2023
    Привет всем!
    Подскажите, есть сейчас какие-то бест практики по повышению предсказуемости времени выполнения запросов (кроме постоянной оптимизации и выделения части данных в отдельный шард, это мы и так делаем)?

    Сталкиваемся регулярно со случаями, когда в целом запросы на репликах выполняются быстро, но если не повезло, и на одну из реплик шарда (в нашем случае их 5) прилетело случайно несколько тяжелых запросов и загрузило процессор (именно процессор, собрали статистику причин ожиданий по логам) - запросы на ней начинают тормозить, иногда значительно: запрос с временем выполнения менее 1 сек может и 30 сек скушать. Таких тормозных запросов - 0,01% от общего количества, но даже это портит жизнь.

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

    Может есть какая-то интелектуальная балансировка (смотрю сейчас в сторону chproxy), или полезные параметры конфига, которые я мог пропустить? :)
  • https://t.me/clickhouse_ru
    это не знаю, может rsync и умеет переделывать симлинки, там 100500 ключей.

    если таблиц немного, то freeze , rsync, attach part ...
  • https://t.me/clickhouse_ru
    @saper44rus #318993 04:04 PM, 01 Apr 2023
    Спасибо коллеги. Буду пробовать. Таблиц всего 5.
  • https://t.me/clickhouse_ru
    да можно смело удалять
  • https://t.me/clickhouse_ru
    @vpismarev #318995 04:08 PM, 01 Apr 2023
    А можно сделать кластер следующей конфигурации?
    три хоста - три шарда и чтобы эти шарды еще и были репликами друг друга.

    Такой сетап для прода норм?
  • https://t.me/clickhouse_ru
    это странно с load_balacing=random такого статистически быть не должно

    плюс сейчас в КХ включен use_hedged_requests (почитайте как оно работает) и запрос должен улететь на другую реплику.

    но в принципе можно сделать load_balancing таким образом чтобы запрос выполнялся только на СВОИХ репликах, и балансировать инициаторами
  • https://t.me/clickhouse_ru
    можно, это выстрел в оба своих колена, все кто так сделал, пожалели вспоследствии и зареклись так делать.
  • https://t.me/clickhouse_ru
    use_hedged_requests тут я думаю ни при чём - такое поведение мы ловим, самостоятельно балансируя запросы между репликами (round robin), без использования DDL движка. Для многих запросов мы заранее точно знаем, в какой шард надо сходить.
  • https://t.me/clickhouse_ru
    что такое "DDL движка" , DDL это data definition language -- create/alter

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

    стата - просто из system.processes , sum(elapsed) , sum(total_rows_approx), sum(ProfileEvents['UserTimeMicroseconds']) -- выберете по вкусу
  • https://t.me/clickhouse_ru
    @Vasyaabr #319002 04:34 PM, 01 Apr 2023
    Спасибо!
    Попробуем такой подход.
  • А конвертация через convert_ordinary_to_atomic на репликацию как-то может повлиять если одна реплика ещё ordinary а вторая уже atomic стала?
  • https://t.me/clickhouse_ru
    Жесть ... А картинки будет кликхаус генерировать 😏
  • https://t.me/clickhouse_ru
    Нет. Работает в любых сочетаниях. Изначальная идея была что конвертировать не надо и просто естественным путем со временем все новые реплики станут с atomic
  • Если ClickHouse начнёт генерировать картинки, то MJ закроется за ненадобностью.
  • https://t.me/clickhouse_ru
    И еду привозить
  • https://t.me/clickhouse_ru
    @andreymartynov #319009 08:49 PM, 01 Apr 2023
    Самая главная киллер-фича любой СУБД.
  • 02 April 2023 (45 messages)
  • @r3former #319010 12:31 AM, 02 Apr 2023
    В каких случаях в пути зноды таблицы добавляется юникс таймстемп?
    Пример:
    /clickhouse/tables/{shard}/db_name/tabl_name_1659037434_replication
    Это регулируется каким-то параметром в конфиге или происходит для случая, когда путь зноды создаваемой таблицы дублирует уже существующий?
  • https://t.me/clickhouse_ru
    само это не делается, это у вас где-то в коде
  • https://t.me/clickhouse_ru
    @numbnp #319012 06:04 AM, 02 Apr 2023
    Добрый день.
    Подскажите куда копать?

    Имеется таблица 10 столбцов.
    В одной из партиций скопилось более 6к партов, общим объемом 15гб
    От такого количества серверу не очень хорошо.

    Optimize никак не помогает. Лог в режиме дебаг - чисто.
    Как заставить кх смержить парты?
  • https://t.me/clickhouse_ru
    Denny [Altinity] in ClickHouse не тормозит

    optimize table .... partition id '202302' settings optimize_throw_if_noop=1

  • @AlessandrD #319014 09:10 AM, 02 Apr 2023
    Можно ли безопасно пересоздавать materialized view над kafka таблицей без пропуска или дублей данных?
  • https://t.me/clickhouse_ru
    Без шансов пропуска или дублей, кажется, вообще ничего нельзя сделать с движком кафки)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319014 #319016 10:57 AM, 02 Apr 2023
    Ищите по истории чата MODIFY QUERY - тема уже обсуждалась несколько раз.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319015 #319017 10:58 AM, 02 Apr 2023
    Можно. Помимо MODIFY QUERY никто вам не мешает сделать промежуточную Null таблицу и останавливать консьюмера (Kafka Engine) через DROP/DETACH
  • @tatarkind #319018 11:15 AM, 02 Apr 2023
    Есть ли рецепт заставить ReplacingMergeTree оставлять только самые старые записи? Сам ничего лучше не придумал кроме как завести колонку, значение которой уменьшается со временем, например version UInt32 materialized age('second', nowInBlock(), fromUnixTimestamp(4294967295))
  • https://t.me/clickhouse_ru
    timestamp * -1 в качестве ver
  • https://t.me/clickhouse_ru
    @ionite ↶ Reply to #319018 #319020 11:44 AM, 02 Apr 2023
    Мб проще проверять дубликаты при вставке?
  • https://t.me/clickhouse_ru
    @Spellik #319021 11:47 AM, 02 Apr 2023
    Всем привет.
    После прогона alter table на прочистуку колонок (через col=''), на реплики одного из шардов траффик улетел в потолок и в очереди system.replication_queue
    более 300 записей (на реплике другого шарда все чисто)
    в postpone_reason сообщения
    Not executing log entry queue-0001179875 of type MUTATE_PART for part 20221212-200_6150_6850_4_39137 because source parts size (37.64 GiB) is greater than the current maximum (0.00 B).

    в system.mutation все чисто, мутация на шардах завершилась.
    Свободное место на севрере есть около 6TB

    В какую сторону копать, чтобы прошли эти обновления?
  • https://t.me/clickhouse_ru
    @Spellik #319022 12:35 PM, 02 Apr 2023
    Прочистил в zookeeper путь /queue/ для нужной реплики и вызывал SYSTEM RESTART REPLICAS;
    Очередь прочистилась, пошли оставшиеся MUTATE_PART
  • https://t.me/clickhouse_ru
    @zero_stranger #319023 01:02 PM, 02 Apr 2023
    Коллеги, добрый день. Изучаю функциональность async_insert, не нашел информации о том, что будет в случае падения сервера. Данные из «буфера» потеряются?
  • https://t.me/clickhouse_ru
    @vwdss ↶ Reply to #319023 #319024 01:08 PM, 02 Apr 2023
    Да. Но можно передать параметр при котором ack будет только поле того как батч флашнется в таблицу
  • 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
    @zero_stranger #319029 01:18 PM, 02 Apr 2023
    Оно на диск записывает получается?
  • https://t.me/clickhouse_ru
    Тогда потеряются.
    Но в этом случае они потеряются даже если там опечатка, типа пропущенной кавычки, и вы даже не сможете этого узнать.
  • https://t.me/clickhouse_ru
    Получается в такой функциональности нету смысла? 🥲
  • https://t.me/clickhouse_ru
    @MakeReady #319032 03:04 PM, 02 Apr 2023
    Добрый день! Просто уточнить: две мат вью смогут лить в одну таблицу без подводных коллизий?
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #319032 #319033 03:05 PM, 02 Apr 2023
    Могут. И на одну и ту же таблицу можно несколько мат вьюх натравить.
  • https://t.me/clickhouse_ru
    @MakeReady #319034 03:07 PM, 02 Apr 2023
    Я это и имел ввиду. Одна вьюха льет покупки другая возвраты.
  • https://t.me/clickhouse_ru
    @MakeReady #319035 03:08 PM, 02 Apr 2023
    То что это допустимо - знаю. Вопрос скорее в том не вылезет ли сюрприз через месяц?
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #319034 #319036 03:10 PM, 02 Apr 2023
    Я к тому, что можно сделать и схему Таблица Т1 -> Мат вьюха МВ1 -> Таблица Т3, Таблица Т2 -> Мат вьюха МВ2 -> Таблица Т3 и схему Таблица Т1 -> Мат вьюха МВ2 -> Таблица Т2, Таблица Т1 -> Мат вьюха МВ3 -> Таблица Т3.

    Сюрпризы разве что как с обычными вставками, т.е. если будет очень много мелких вставок.
  • https://t.me/clickhouse_ru
    @MakeReady #319037 03:10 PM, 02 Apr 2023
    Спасибо!
  • https://t.me/clickhouse_ru
    @MakeReady #319038 03:11 PM, 02 Apr 2023
    Мне просто t1 - mv - t2 + t3 - mv - t2
    Все встречаются в t2
  • https://t.me/clickhouse_ru
    @datamanager #319039 04:28 PM, 02 Apr 2023
    Коллеги, если можно, вопрос. Мне надо построить гистограмму по данным из таблицы. Понятно, что можно нагенерить скриптом массу SQL с пределами от и до и запустить их. А можно как-то поизящее, сделать цикл внутри самого SQL?
  • https://t.me/clickhouse_ru
    @den_crane #319040 04:31 PM, 02 Apr 2023
    так просто еще один groupby

    select count() users, y, weight, bar(users, 1,100, 50)
    from (
    SELECT user_id, toStartOfYear(toDateTime(created)) y, count(*) c,
    multiIf( c > 500, 'w500+',
    c > 200, 'w200-500',
    c > 100, 'w100-200',
    c > 50, 'w100-50',
    'w0-50') weight
    FROM ( SELECT
    number AS user_id,
    today() AS created,
    arrayJoin(range(rand() % 1000))
    FROM numbers(100) )
    group by user_id, y
    order by c
    ) group by y, weight
    order by y, weight

    ┌─users─┬──────────y─┬─weight───┬─bar(count(), 1, 100, 50)──┐
    │ 6 │ 2023-01-01 │ w0-50 │ ██▌ │
    │ 6 │ 2023-01-01 │ w100-200 │ ██▌ │
    │ 4 │ 2023-01-01 │ w100-50 │ █▌ │
    │ 34 │ 2023-01-01 │ w200-500 │ ████████████████▋ │
    │ 50 │ 2023-01-01 │ w500+ │ ████████████████████████▋ │
    └───────┴────────────┴──────────┴───────────────────────────┘
  • https://t.me/clickhouse_ru
    @datamanager #319041 04:34 PM, 02 Apr 2023
    Но здесь пределы-то заданы в самом тексте. А если их много? Сотня? Две?
  • https://t.me/clickhouse_ru
    select count() users, y, bucket, bar(users, 1,100, 50)
    from (
    SELECT user_id, toStartOfYear(toDateTime(created)) y, count(*) c,
    intDiv(c,100) bucket
    FROM ( SELECT
    number AS user_id,
    today() AS created,
    arrayJoin(range(rand() % 1000))
    FROM numbers(100) )
    group by user_id, y
    order by c
    ) group by y, bucket
    order by y, bucket
    ┌─users─┬──────────y─┬─bucket─┬─bar(count(), 1, 100, 50)─┐
    │ 11 │ 2023-01-01 │ 0 │ █████ │
    │ 8 │ 2023-01-01 │ 1 │ ███▌ │
    │ 17 │ 2023-01-01 │ 2 │ ████████ │
    │ 18 │ 2023-01-01 │ 3 │ ████████▌ │
    │ 11 │ 2023-01-01 │ 4 │ █████ │
    │ 10 │ 2023-01-01 │ 5 │ ████▌ │
    │ 6 │ 2023-01-01 │ 6 │ ██▌ │
    │ 8 │ 2023-01-01 │ 7 │ ███▌ │
    │ 6 │ 2023-01-01 │ 8 │ ██▌ │
    │ 5 │ 2023-01-01 │ 9 │ ██ │
    └───────┴────────────┴────────┴──────────────────────────┘
  • https://t.me/clickhouse_ru
    @datamanager #319043 04:38 PM, 02 Apr 2023
    А, оно. Ушел грызть intDiv. Спасибо!!!!!
  • https://t.me/clickhouse_ru
    @alibekkaidarov33 #319044 04:40 PM, 02 Apr 2023
    Доброго времени суток! Сегодня обнаружил что в таблице с движком ReplicatedReplacingMergeTree запустили мутации на удаление записей, разом, 15 штук. Они до сих пор выполняются. Хотел бы узнать насколько это опасно и безопасно ли будет убить мутацию?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    То есть проблема с реплицировнием может быть связана, спасибо!
  • https://t.me/clickhouse_ru
    вот такой запрос возвращает что-нибудь?

    select 'delete '||part_zoo
    from (
    select zoo.p_path as part_zoo, zoo.ctime, zoo.mtime, disk.p_path as part_disk
    from
    (
    select concat(path,'/',name) as p_path, ctime, mtime
    from system.zookeeper where path in (select concat(replica_path,'/parts') from system.replicas)
    ) zoo
    left join
    (
    select concat(replica_path,'/parts/',name) as p_path
    from system.parts inner join system.replicas using (database, table)
    ) disk on zoo.p_path = disk.p_path
    where part_disk='' and zoo.mtime <= now() - interval 1 day
    order by part_zoo) format TSVRaw;

    https://kb.altinity.com/altinity-kb-useful-queries/parts-consistency/#compare-the-list-of-parts-in-zookeeper-with-the-list-of-parts-on-disk
  • https://t.me/clickhouse_ru
    SQL Error [159] [07000]: connect timed out, server ClickHouseNode
  • https://t.me/clickhouse_ru
    Прошу прощения проблемы с подключением были, но запрос ничего не возвращает
  • https://t.me/clickhouse_ru
    @MakeReady #319051 09:12 PM, 02 Apr 2023
    подскажите, почему матвью не есть null as field
    Data type Nullable(Nothing) cannot be used in tables
  • https://t.me/clickhouse_ru
    Кх-зу тип надо знать. У Null тип неизвестен. Нужно кастить. Cast(Null as Nullable(String)) например
  • https://t.me/clickhouse_ru
    @MakeReady #319053 09:16 PM, 02 Apr 2023
    ок. спасибо!
  • https://t.me/clickhouse_ru
    @MakeReady #319054 09:17 PM, 02 Apr 2023
    думал достаточно того что он задан в целевой таблице
  • 03 April 2023 (145 messages)
  • https://t.me/clickhouse_ru
    @Alexeysaff #319055 05:07 AM, 03 Apr 2023
    не очень понимаю из доки. какой параметр в кафка енжин может сказать "читай почаще и мелкими батчами"? главное почаще
  • https://t.me/clickhouse_ru
    @Alexeysaff #319056 05:07 AM, 03 Apr 2023
    kafka_poll_max_batch_size
  • https://t.me/clickhouse_ru
    @Alexeysaff #319057 05:07 AM, 03 Apr 2023
    ?
  • https://t.me/clickhouse_ru
    @Alexeysaff #319058 05:12 AM, 03 Apr 2023
    хотя вероятно нет, как сказать "вставлять данные почаще" ?
  • https://t.me/clickhouse_ru
    @timson81 #319059 05:42 AM, 03 Apr 2023
    Добрый день, есть кластер с кликхаусом. Люди хотят хранить там еще и метрики, может кто посоветует есть ли в природе какой нибудь шлюз promql - clickhouse для запросов?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319055 #319060 05:47 AM, 03 Apr 2023
    Вам для креш-теста? Сломать КХ собираетесь? Но это слишком простой вариант. Если надо для дела, то лучше не уменьшать, а увеличивать.
    kafka_flush_interval_ms=300000,
    kafka_max_block_size=1048576,
  • https://t.me/clickhouse_ru
    @Alexeysaff #319061 05:49 AM, 03 Apr 2023
    мне нужно уменьшить вот такие прямые линии
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Alexeysaff #319063 05:49 AM, 03 Apr 2023
    т.е. оно рисует их несколько секунда прямой, а потом появляются данные
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319062 #319064 05:49 AM, 03 Apr 2023
    И что в этом плохого?
  • https://t.me/clickhouse_ru
    @Alexeysaff #319065 05:49 AM, 03 Apr 2023
    секунд 7-10 могут данные не обновляться
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319065 #319066 05:50 AM, 03 Apr 2023
    И что? У меня как вы видите стоит аж 5 минут. Вы куда-то спешите? Тут все-таки OLAP система, не OLTP.
  • https://t.me/clickhouse_ru
    @Alexeysaff #319067 05:52 AM, 03 Apr 2023
    к сожалению да. спешим. ну т.е. ответ "не тот инструмент" понятен, но всё-таки уменьшить возможно или нет?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319067 #319068 06:25 AM, 03 Apr 2023
    Уменьшить то несложно, сеттинги выше, но что потом? Не боитесь получить too many parts? инсерты остановятся и вы будете мучительно решать проблемы мерджей.
    Может попробуете что-то более адекватное задаче? Если в рамках КХ, то я бы взглянул на LIVE VIEW or WINDOW VIEW, хоть они и экспериментальные.
  • https://t.me/clickhouse_ru
    Данных не так уж много. За советы как всегда спасибо
  • https://t.me/clickhouse_ru
    @sergeidanilovi4 #319070 06:57 AM, 03 Apr 2023
    Всем привет! Подскажите, пожалуйста, как починить. Не могу подключиться к клиенту через консоль, и бобром тоже не подключается.
    clickhouse-client -u default --password
    ClickHouse client version 23.2.1.92 (official build).
    Password for user (default):
    Connecting to localhost:9000 as user default.
    Code: 210. DB::NetException: Connection refused (localhost:9000). (NETWORK_ERROR)
  • @697746773 #319071 07:04 AM, 03 Apr 2023
    Всем привет. Подскажите куда посмотреть. clickhouse в какой-то момент времени не принимает новые коннекты. Это длится буквально несколько секунд потом все нормализуется. Возможно есть параметр который отвечает за кол-во подключений и было бы хорошо наблюдать за кол-вом текущих соединений, может есть такой показатель.
  • https://t.me/clickhouse_ru
    clickhouse-jdbc-bridge is not running. Please, start it manually
    Дык вот же
  • @ShulcevVA #319074 07:14 AM, 03 Apr 2023
    Всем привет. Создал кастомные метрики, с локалки все ок. А с прометеуса [root@tadm-prom0 ~]# curl adm-test-ch1:8123/metrics
    Code: 516. DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name. (AUTHENTICATION_FAILED) (version 22.8.5.29)
    Как сделать, что бы по данному пути не просил аутентификацию для определенных ip?
  • https://t.me/clickhouse_ru
    Что-то не соображу, как он запускается.
    clickhouse-jdbc-bridge: command not found
  • https://t.me/clickhouse_ru
    @realzhahanger #319076 07:32 AM, 03 Apr 2023
    Здравствуйте, может и тупая ошибка но не получается решить

    Code: 27. DB::ParsingException: Cannot parse input: expected '|' at end of stream.: Buffer has gone, cannot extract information about what has been parsed.: While executing ParallelParsingBlockInputFormat: data for INSERT was parsed from query: (in query: INSERT INTO ser.mv_ul FORMAT CSV HEADER): (at row 1)
    . (CANNOT_PARSE_INPUT_ASSERTION_FAILED)

    Можете подсказать причину или же решения
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    head -n 2 ser/mv_ul.csv
  • https://t.me/clickhouse_ru
    Возможно, дело не в jdbc-bridge.
    У меня его и не было. При перезагрузке в сообщениях говорится, что config.xml не найден, хотя он точно есть.
    Processing configuration file 'config.xml'.
    There is no file 'config.xml', will use embedded config.
    Вот, что выдаётся при перезагрузке КХ: https://pastebin.com/KpvqEqLA
  • https://t.me/clickhouse_ru
    Скинуть первые 2строки?
  • https://t.me/clickhouse_ru
    @m1khal3v #319081 07:43 AM, 03 Apr 2023
    да
  • https://t.me/clickhouse_ru
    а можно всё-таки поинтересоваться, kafka_flush_interval_ms - это понятно, но при этом возникает вопрос, а когда всё-таки данные окажутся в mergetree table?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319082 #319083 07:52 AM, 03 Apr 2023
    Kafka Engine сформирует блок и отдаст его MV, MV отработает его синхронно и сделает парт. Достаточно быстро. Если Replicated, то на другие узлы кластера уедет чуть позже.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @MakeReady #319085 08:05 AM, 03 Apr 2023
    Добрый день!
    в доках не нашел и лично пока не словил коллизий при использовании CREATE OR REPLACE TABLE

    Может вообще быть момент, когда запрос пришел, а таблицы нет?
  • https://t.me/clickhouse_ru
    Продолжаю попытки запустить КХ. Дал права rrr на config.xml. Теперь при перезагрузке КХ читает уже читает config.xml. Но теперь жалуется на то, что рут не является собственником данных:
    <Error> Application: Code: 430. DB::Exception: Effective user of the process (root) does not match the owner of the data (clickhouse). Run under 'sudo -u clickhouse'. (MISMATCHING_USERS_FOR_PROCESS_AND_DATA), Stack trace (when copying this message, always include the lines below):

    0. ./build_docker/../src/Common/Exception.cpp:91: DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0xddb0855 in /usr/bin/clickhouse
    1. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, int, bool) @ 0x8bcbf4d in /usr/bin/clickhouse
    2. ./build_docker/../programs/server/Server.cpp:949: DB::Server::main(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&) @ 0xde3bda8 in /usr/bin/clickhouse
    3. ./build_docker/../contrib/poco/Util/src/Application.cpp:0: Poco::Util::Application::run() @ 0x17554602 in /usr/bin/clickhouse
    4. ./build_docker/../programs/server/Server.cpp:475: DB::Server::run() @ 0xde32bbc in /usr/bin/clickhouse
    5. ./build_docker/../contrib/poco/Util/src/ServerApplication.cpp:612: Poco::Util::ServerApplication::run(int, char**) @ 0x1756895a in /usr/bin/clickhouse
    6. ./build_docker/../programs/server/Server.cpp:0: mainEntryClickHouseServer(int, char**) @ 0xde2f5e6 in /usr/bin/clickhouse
    7. ./build_docker/../programs/main.cpp:0: main @ 0x88369b3 in /usr/bin/clickhouse
    8. __libc_start_main @ 0x7fdc14773083 in ?
    9. _start @ 0x7e9f96e in /usr/bin/clickhouse
  • https://t.me/clickhouse_ru
    @sergeidanilovi4 #319087 08:25 AM, 03 Apr 2023
    И ещё вопрос: потеряются ли данные, если переустановить кликхаус?
  • https://t.me/clickhouse_ru
    @rozhkovd #319089 09:28 AM, 03 Apr 2023
    Все привет. Кто-нибудь сталкивался, что после обновления ch кол-во транзакций до zk выросло в несколько раз? 22.6.3.35 -> 22.12.3.5
  • https://t.me/clickhouse_ru
    @rozhkovd #319090 09:30 AM, 03 Apr 2023
    На другом кластере
  • https://t.me/clickhouse_ru
    @vlkharlamov #319091 09:30 AM, 03 Apr 2023
    извиняюсь за глупый вопрос, но что такое транзакции в терминах CH?
  • https://t.me/clickhouse_ru
    сори не дописал, поправил, транзакции до zk имел ввиду
  • Привет. Словили такое при обновлении. В итоге победить не смогли, откатились на 22.9. В этой версии нет тех изменений что приводят к такому поведению.
    Объяснение есть тут: https://github.com/ClickHouse/ClickHouse/issues/43647
    Если есть способ обновиться до более свежей версии и не получить вышеописанных проблем, буду раз его узнать :)
    High amount of ZooKeeper requests/CPU Load after upgrade to 22.11.1 from 22.3 · Issue #43647 · ClickHouse/ClickHouse

    We are using clickhouse-operator for our clickhouse cluster. We have 5 shards, 2 replicas each. Also we have one raw table and 5 MV (TO) with aggregation. Each table has no more than 10 columns. Af...

  • https://t.me/clickhouse_ru
    @MakeReady #319094 10:04 AM, 03 Apr 2023
    Добрый день!
    Получаю ошибку если оборачиваю оконку anyLast в ifNull

    Block structure mismatch in (columns with identical name must have identical structure) stream: different types:
    cumulative_cnt UInt64 UInt64(size = 0)
    cumulative_cnt Nullable(UInt64) Nullable(size = 0, UInt64(size = 0), UInt8(size = 0)). (AMBIGUOUS_COLUMN_NAME) (version 22.8.15.23 (official build))

    Почему так и как победить?
  • https://t.me/clickhouse_ru
    Приводите все поля явно к одному типу - Nullable(UInt64)
  • https://t.me/clickhouse_ru
    @MakeReady #319096 10:09 AM, 03 Apr 2023
    аммм,
    то есть
    anyLast(tsm.cumulative_cnt) over (partition by card_id order by transaction_date_m)

    надо обернуть в cast а потому уже в ifNull?
  • https://t.me/clickhouse_ru
    @MakeReady #319097 10:11 AM, 03 Apr 2023
    почему сразу то ifNull не работает?
  • https://t.me/clickhouse_ru
    Примерчик бы на fiddle, было бы проще понять, где ошибка )
  • https://t.me/clickhouse_ru
    @MakeReady #319099 10:14 AM, 03 Apr 2023
    попробую воспроизведется ли
  • @tassupolnomochenzayavit #319100 10:26 AM, 03 Apr 2023
    Коллеги, привет!

    У кого-нибудь есть опыт отправки данных из ClickHouse (в Yandex Cloud) в Kafka (вне облака), с помощью Kafka Engine?

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

    Если у кого-то есть открытая репа с примером подобного кода, то буду очень благодарен, если поделитесь.
    С КХ до этого не работал, пока только въезжаю

    Спасибо!
  • https://t.me/clickhouse_ru
    не воспроизводится
    https://fiddle.clickhouse.com/a1baa4de-f538-423b-9991-da1eb3bf935f
  • свою версию выберите
  • https://t.me/clickhouse_ru
    @MakeReady #319103 10:37 AM, 03 Apr 2023
    тоже не воспроизводится
    может потому, что в реальности там внутри подзапрос тоже с оконкой но суммой
  • https://t.me/clickhouse_ru
    В целом должно сработать, но врайтер в кафку у кх паршивый
  • https://t.me/clickhouse_ru
    хм, кажется ошибку вызывало то, что результату оконки давал то же имя что использовал для ее построения
  • https://t.me/clickhouse_ru
    @MakeReady #319106 10:40 AM, 03 Apr 2023
    разнес имена и все работает
  • https://t.me/clickhouse_ru
    главное, проблема решена )))
  • https://t.me/clickhouse_ru
    Согласен! ✌️
  • https://t.me/clickhouse_ru
    Спасибо, будем смотреть, если что отпишусь
  • https://t.me/clickhouse_ru
    @a1imkul0v707 #319110 11:10 AM, 03 Apr 2023
    Всем привет, создал витрину, база храниться в кликхаус. Но сервер кликхаус очень нагруженный. Все нагрузка идет на процессоры. Кто сталкивался с такой проблемой?
  • https://t.me/clickhouse_ru
    Судя по тексту, вы не работали с кликом никогда. Смотрите логи, смотрите выполняющиеся запросы (system.processes), мержи (system.merges). Вопрос слишком общий, чтобы дать нормальный ответ.
  • https://t.me/clickhouse_ru
    @sach3000 #319112 11:14 AM, 03 Apr 2023
    Добрый день. Можете ткнуть, где в коде описан механизмы работы с зукипером, когда клик публикует в ЗК какие парты должны быть реплицированы и после всех процедур удалены из очереди на репликацию в ЗК. Может просто ссыли на сыми .cpp (StorageReplicatedMergeTree оно ?)
    Спасибо
  • https://t.me/clickhouse_ru
    А куда должна ещё идти нагрузка ? На видеокарту
  • https://t.me/clickhouse_ru
    Добавлен, их стало в разы меньше
  • https://t.me/clickhouse_ru
    Нет, за 2 запроса 16ГБ грузить
  • https://t.me/clickhouse_ru
    Clickhouse OLAP MPP Column-storage... Постоянно и везде так пишут ... Разбираетесь что такое MPP :) Тогда вопросы отпадут
  • https://t.me/clickhouse_ru
    Ок спасибо
  • https://t.me/clickhouse_ru
    @kmailov #319121 11:33 AM, 03 Apr 2023
    Всем привет, ребят пытаюсь реализовать такую задачу:
    Вытащить из БД запрос Sentry который измеряет TPM (transaction per minute)
    Получилось достать общее количество транзакций
    SELECT
    COUNT(project_id = 2 AS reg_front),
    transaction_name
    FROM discover_local
    WHERE (project_id = 2) = 1
    GROUP BY transaction_name

    как теперь сделать значение "per minute"?
  • https://t.me/clickhouse_ru
    @orantius #319122 11:35 AM, 03 Apr 2023
    взять все транзакции, поделить на все минуты
  • https://t.me/clickhouse_ru
    а что-то типа добавления в WHERE
    AND time >= now() - 1m
  • https://t.me/clickhouse_ru
    но так чёт не работает
  • https://t.me/clickhouse_ru
    @orantius #319125 11:37 AM, 03 Apr 2023
    а вы хотите за каждую минуту отдельное число получить?
  • https://t.me/clickhouse_ru
    Не совсем, чтобы это число постоянно обновлялось, в Sentry есть такой параметр, показывает среднее количество транзакций в минуту.
    вот мне нужен такой запрос, чтобы его в Grafana добавить
  • https://t.me/clickhouse_ru
    Сколько у вас таблиц.

    select count() from system.replicas
    select count() from system.parts
  • https://t.me/clickhouse_ru
    У нас 3 калстера,
    1. system.replicas: 404
    system.parts: 227665
    2. system.replicas: 340
    system.parts: 680134
    3. system.replicas: 10482
    system.parts: 239945

    Сейчас попробовали увеличить merge_selecting_sleep_ms с 50000(уже увеличивали) -> 600000. Выглядит что значительно уменьшилось кол-во транзакций, похоже будем везде кактить
  • https://t.me/clickhouse_ru
    Еще cleanup_delay_period = 300
  • https://t.me/clickhouse_ru
    Да, это тоже уже выставлено у нас
  • https://t.me/clickhouse_ru
    10тыс. репликейтид таблиц и 700тыс. партов это неконвенционально
  • https://t.me/clickhouse_ru
    select * from system.metrics where metric ilike '%connection%';
  • https://t.me/clickhouse_ru
    так порт ведь не 8123
    у прома 9363/metrics

    <prometheus>
    <endpoint>/metrics</endpoint>
    <port>9363</port>
  • https://t.me/clickhouse_ru
    у вас почему-то КХ начал стартовать от рута вместо пользователя КХ
  • https://t.me/clickhouse_ru
    Да, я перезапускал от рута. Это имеет последствия?
  • https://t.me/clickhouse_ru
    не должно быть.

    Atomic бд и exchange / replace table сделаны специально чтобы пользователь всегда видел таблицу или старую или новую
  • https://t.me/clickhouse_ru
    спасбо!
  • https://t.me/clickhouse_ru
    что значит перезапускал это рута?
    конкретно команду
  • https://t.me/clickhouse_ru
    сlickhouse-server restart
  • Building a DIY Prometheus HTTP Endpoint in ClickHouse

    Learn how to set up a Prometheus HTTP endpoint in ClickHouse that can export any metric in any format and mimic the Altinity clickhouse-operator behavior.

  • https://t.me/clickhouse_ru
    а какая версия КХ?
  • https://t.me/clickhouse_ru
    23.2.1.92
  • https://t.me/clickhouse_ru
    basic_auth:
    username: 'username'
    password: 'password'
  • @ShulcevVA #319145 12:22 PM, 03 Apr 2023
    пробовал, пром ругается, хотя курлом все работает
  • @ShulcevVA #319146 12:26 PM, 03 Apr 2023
    завтра уже потыкаюсь, скорее всего дело всего в синтаксисе, благодарю
  • https://t.me/clickhouse_ru
    вы же только что показывали что курл выдает ошибку?

    можно в общем добавить ip, чтобы и без пароля

    cat /etc/clickhouse-server/users.d/user_default.xml
    <?xml version="1.0" ?>
    <yandex>
    <users>
    <default>
    <networks>
    <ip>::1</ip>
    <ip>127.0.0.1</ip>
    <ip>10.252.247.2</ip>
    <ip>10.253.215.3</ip>
    </networks>
    </default>
    </users>
    </yandex>

    (в смысле пользователь default с пустым паролем и ходит только с определенных ip)
  • https://t.me/clickhouse_ru
    @utkinmaximand #319148 03:03 PM, 03 Apr 2023
    коллеги подскажите как лучше действовать, если разные запросы по одной и той же таблице используют разные поля для фильтров которые участвуют в ключе order by.делать под каждый запрос таблицу(mergetree) с нужным порядком order by? - много таблиц, есть какой то алгоритм или механизм как действовать.
  • https://t.me/clickhouse_ru
    Projections | ClickHouse Docs

    Projections store data in a format that optimizes query execution, this feature is useful for:

  • https://t.me/clickhouse_ru
    а они на кластер делаются?
  • Смотрел, там максимум что видел было 3 :) не могу пока понять зависит моя проблема от коннектов или еще чего. Очень уж похоже но отловить не получается.
    » Query error: Curl error: #7 - Failed to connect to [ip] port [port]: Connection refused
    вот такую ошибку получаю, и обычно она появляется когда нагрузка возрастает идет больше келбеков со сторонних сервисов
    и вот есть подозрение что не хватает коннектов, хотя там лимит по умолчанию в 4000 чет не верится что превышаем.
    может еще что-то давать отлуп соединению?
  • https://t.me/clickhouse_ru
    netstat -ant|grep 8123
    смотрите в этот момент
  • спасибо помониторю
  • @milovidov_an #319155 04:38 PM, 03 Apr 2023
    Если есть желание, можно upvote: https://news.ycombinator.com/shownew - тема про NoiSQL
  • @635404397 #319156 05:11 PM, 03 Apr 2023
    привет всем.
    как подсказать file function как запакован файл, если у него неправильное расширение? есть csv файл пожатый zstd, но с именем 1.bin. хочу написать что-то типа select * from file('/var/lib/clickhouse/user_files/1.bin', 'CSV/zstd') есть какой-то подходящий синтакс?
  • https://t.me/clickhouse_ru
    select * from file('/var/lib/clickhouse/user_files/1.bin', 'CSV', 'zstd')

    https://clickhouse.com/docs/en/sql-reference/table-functions/file

    file(path [,format] [,structure] [,compression])
    file | ClickHouse Docs

    Creates a table from a file. This table function is similar to url and hdfs ones.

  • @635404397 #319158 05:20 PM, 03 Apr 2023
    cgfcb
  • спасибо! не понимаю, как я это пропустил...
  • https://t.me/clickhouse_ru
    @Aleksey_Veselov #319160 05:40 PM, 03 Apr 2023
    всем привет) кто-нибудь знает наиболее простой способ разбить массив groupArray(value) на 3 равных по размеру части и вывести номера частей в массиве аналогично тому как работает NTILE в оконке (у меня кх старый и не поддерживается она..) или qcat в пандасе.

    Т.е. для массива groupArray([1,2,3,4,5,6]) мы хотим получить при разбивке на 3 части массив groupArray([1,1,2,2,3,3]).
  • https://t.me/clickhouse_ru
    @vlkharlamov #319161 05:50 PM, 03 Apr 2023
    А не точно не [[1, 2], [3,4], [5,6]]?
  • https://t.me/clickhouse_ru
    хм, ну да такое то же подойдёт) подскажете как проще получить такой рез-т ?
  • https://t.me/clickhouse_ru
    (Номер строки - 1) / (кол-во строк / 3) + 1 , если деление целочисленное, или ceil(номер строки / (кол-во строк / 3))
  • https://t.me/clickhouse_ru
    arrayslice / length ?
  • https://t.me/clickhouse_ru
    @m1khal3v #319165 06:11 PM, 03 Apr 2023
    @den_crane https://kb.altinity.com/engines/mergetree-table-engine-family/merge-performance-final-optimize-by/
    а имеет смысл тестировать отключение вертикальных мерджей в качестве буста мерджей? столкнулись с проблемой - мерджи на одной большой (140 млрд) и достаточно широкой (30 колонок) таблице стали генерить дикий iowait на серверах с HDD
    Merge performance and OPTIMIZE FINAL

    Merge performance and OPTIMIZE FINAL DEDUPLICATE BY expr

  • @tengotengo #319166 06:11 PM, 03 Apr 2023
    вдруг все перестало работать, ищем проблему - оказывается один из словарей не загружен (status: NOT_LOADED) чинится легко, но вопрос, какого хрена это происходит рандомно?? уже второй раз из неоткуда. Кто-нибудь сталкивался?
  • https://t.me/clickhouse_ru
    не имеет, если все реплики одинаковые и вообще ничего не менялось, значит проблема в диске/дисках (диск сломался)

    sudo dmesg - T| tail -100
  • https://t.me/clickhouse_ru
    эм? это нормальное состояние, словарь грузится при первом обращении
  • https://t.me/clickhouse_ru
    диски на ноде которой хуже всего было сегодня девопс тестировал - говорит все резво бегает. после рестарта эта нода не мерджит и iowait нету, остальные мерджат и у них все плохо.

    /dev/sda:
    Timing cached reads: 21968 MB in 2.00 seconds = 10995.01 MB/sec
    Timing buffered disk reads: 780 MB in 3.01 seconds = 259.35 MB/sec
    sdb
    Device Model: ST16000NM003G-2KH113
    Serial Number: ZL2F35YN
    9 Power_On_Hours 0x0032 087 087 000 Old_age Always - 11845

    /dev/sdb:
    Timing cached reads: 23980 MB in 2.00 seconds = 12003.65 MB/sec
    Timing buffered disk reads: 702 MB in 3.00 seconds = 233.72 MB/sec
    sdc
    Device Model: ST16000NM001J-2TW113
    Serial Number: ZR701TDZ
    9 Power_On_Hours 0x0032 089 089 000 Old_age Always - 10419

    /dev/sdc:
    Timing cached reads: 20338 MB in 2.00 seconds = 10178.31 MB/sec
    Timing buffered disk reads: 778 MB in 3.00 seconds = 259.20 MB/sec

    Все диски одинаковые.
    И бодры.
  • https://t.me/clickhouse_ru
    чет я не понял.
    все реплики, мержат одно и тоже (по дефолту), т.е. либо у всех все плохо, либо наоборот
  • https://t.me/clickhouse_ru
    спасибо!
  • https://t.me/clickhouse_ru
    спасибо! а вы имеете ввиду получить таким образом три массива по-отдельности ? а если их надо не 3 а 100?
  • https://t.me/clickhouse_ru
    @m1khal3v #319173 06:20 PM, 03 Apr 2023
    @den_crane вот 3 шарда, реплики которые используем исключительно под запись. посередине нода - которой хуже остальных. её решили проверить на диски, вырубили клик, диски проверили - ок, врубили клик и она уже не мерджит. а остальные ноды (втч те которые под чтение) - мерджат и в iowaite
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @m1khal3v #319176 06:23 PM, 03 Apr 2023
    сейчас картинка такая на всех нодах, кроме той которую рестартанули
  • https://t.me/clickhouse_ru
    @m1khal3v #319177 06:24 PM, 03 Apr 2023
    клик 22.8.15.23, на всякий случай
  • https://t.me/clickhouse_ru
    arraymap + arrayslice
    чет я не понимаю зачем это надо, какая-то странная задача, может вам вообще другое нужно что-то в итоге, а вы пытаетесь странным способом туда придти?
  • https://t.me/clickhouse_ru
    надо разбить по числу игровых баллов всех игроков на 3/5 групп одинакового размера. Ранее я делал через перцентили такое, но вот захотелось найти способ получше..)
  • https://t.me/clickhouse_ru
    select table, round(elapsed*(1/progress)-elapsed,2) estimate ,elapsed, progress, is_mutation,formatReadableSize(total_size_bytes_compressed) size, formatReadableSize(memory_usage) mem
    from system.merges order by progress desc
  • https://t.me/clickhouse_ru
    ┌─table─────────┬─estimate─┬──────elapsed─┬─progress─┬─is_mutation─┬─size───────┬─mem──────┐
    │ organic_local │ inf │ 28.709244996 │ 0 │ 1 │ 5.17 GiB │ 0.00 B │
    │ organic_local │ inf │ 15.364185901 │ 0 │ 1 │ 886.69 MiB │ 0.00 B │
    │ organic_local │ inf │ 2.918438487 │ 0 │ 1 │ 50.20 MiB │ 0.00 B │
    │ organic_local │ inf │ 1.595400113 │ 0 │ 1 │ 4.53 MiB │ 0.00 B │
    │ organic_local │ inf │ 0.706469745 │ 0 │ 1 │ 2.17 GiB │ 0.00 B │
    │ organic_local │ inf │ 0.706438309 │ 0 │ 1 │ 73.51 KiB │ 8.52 MiB │
    │ organic_local │ inf │ 0.168299317 │ 0 │ 1 │ 410.11 KiB │ 8.52 MiB │
    │ organic_local │ inf │ 0.16828788 │ 0 │ 1 │ 6.91 GiB │ 0.00 B │
    │ organic_local │ inf │ 0.168268778 │ 0 │ 1 │ 335.05 KiB │ 8.52 MiB │
    │ organic_local │ inf │ 0.168209084 │ 0 │ 1 │ 135.26 KiB │ 8.52 MiB │
    │ organic_local │ inf │ 0.16819166 │ 0 │ 1 │ 120.14 KiB │ 8.52 MiB │
    └───────────────┴──────────┴──────────────┴──────────┴─────────────┴────────────┴──────────┘
  • https://t.me/clickhouse_ru
    так это мутации, не мержи

    select * from system.mutations where not is_done
  • https://t.me/clickhouse_ru
    их CLEAR COLUMN может вызывать?
  • https://t.me/clickhouse_ru
    @m1khal3v #319184 06:29 PM, 03 Apr 2023
    да, это он
  • https://t.me/clickhouse_ru
    @m1khal3v #319185 06:30 PM, 03 Apr 2023
    спасибо! завтра как раз выкатываем отказ от этой истории
  • https://t.me/clickhouse_ru
    @m1khal3v #319186 06:33 PM, 03 Apr 2023
    получается при рестарте мутации умирают безвозвратно?
  • https://t.me/clickhouse_ru
    @m1khal3v #319187 06:34 PM, 03 Apr 2023
    просто хочу разобраться почему одна из нод после рестарта перестала тратить на это ресурсы
  • https://t.me/clickhouse_ru
    нет
  • https://t.me/clickhouse_ru
    select * from system.mutations where not is_done

    и читать лог, возможно там что-то заклинило и мутации до бесконечности не могут стартовать, и выполняются только в момент старта КХ, в момент attach table
  • https://t.me/clickhouse_ru
    @bralbral #319191 07:16 PM, 03 Apr 2023
    Добрый вечер. В версиях ядра 5+ ( debian11) планировщик cfq , поскольку являлся устаревшим , удален. При этом , в документации все ещё рекомендуются его использовать.

    Какой планировщик посоветуете использовать для hdd-дисков с кликхаусом ?
  • https://t.me/clickhouse_ru
    mq-deadline
  • https://t.me/clickhouse_ru
    Благодарю.
  • https://t.me/clickhouse_ru
    в несколько итераций KILL MUTATION сделал на всех нодах, до пустого селекта из system.mutations, но iowait все равно остался. в итоге всё же пришлось рестартовать все ноды - тогда полечилось
  • https://t.me/clickhouse_ru
    а есть какой-то опыт, как он по сравнению с cfq?
    У нас достаточно старое ядро, любопытно есть ли надежда, что после его обновления что-нибудь улучшиться. Обычно когда смотрю на странички с настройками ядра/планировщика на stackoverflow у меня возникает чувство, что "работает, не трогай".
  • https://t.me/clickhouse_ru
    нет, обычно нет никакого смысла и разницы,

    бывает что у вас исключительное что-то типа супер NVME раид который выдает 30млн iops , и noop будет на 10% лучше чем cfq, обычно доли процента разница
  • @r3former #319197 09:22 PM, 03 Apr 2023
    Part with name 20230313-2_3224_3224_0 is already written by concurrent request. It should not happen for non-duplicate data parts because unique names are assigned for them. It's a bug.
    С подобными ошибками кто-нибудь сталкивался? Нашел по истории чата, что подобные ошибки могут быть связаны с работой зукипера. Несколько дней назад писал, что мы столкнулись с проблемой в метаданных в зукипере и делали массовый restart/restore replica для таблиц. В чем может быть проблема тогда?
  • https://t.me/clickhouse_ru
    для номеров блоков используется автоинкремент, если зукипер восстановить из бекапа, и автоинкременты уменьшатся, то начнется подобная проблема

    еще бывает что зукиперов больше чем один ансамбль (split brain), но там полная каша будет, когда реплика то к одному ходит то к другому.
  • Наш случай с zk-copy предварительно мигрировали кластер зукипера с одного на другой, более производительный. Потом восстанавливали мету restart/restore. Потом удаляли дубли партов, т.к. их репликация съела место. В целом, все более-менее сейчас работает. Но вот такие ошибки периодически встречаются. А как лечить теперь?
  • https://t.me/clickhouse_ru
    @lichuza #319201 10:14 PM, 03 Apr 2023
    Всем привет! Такая ситуация. Запускаю например ALTER TABLE table ON CLUSTER cluster MODIFY TTL ... или OPTIMIZE TABLE table ON CLUSTER cluster ... и пока на всех нодах не выполнятся мутации\мержи - любой запрос вида ... ON CLUSTER cluster ... бесконечно зависает, что это может быть?
  • https://t.me/clickhouse_ru
    @solard #319202 10:15 PM, 03 Apr 2023
    Оптимайз вызывает фулскан разве нет? Данных если много то это норма
  • https://t.me/clickhouse_ru
    ну просто не вижу связи, что должны зависать ЛЮБЫЕ ... ON CLUSTER cluster ..., например на создание таблицы

    или все таки норма это?
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #319203 #319204 10:17 PM, 03 Apr 2023
    ON CLUSTER кладет задачу в зукипер
  • https://t.me/clickhouse_ru
    версия 21.11.6.7
  • https://t.me/clickhouse_ru
    @solard #319206 10:17 PM, 03 Apr 2023
    если у вас до этого задачи не разгреблись надо будет ждать пока выполняться предыдущие
  • https://t.me/clickhouse_ru
    @solard #319207 10:18 PM, 03 Apr 2023
    Но вдруг придет кто-то еще расскажет подробнее я не супер эксперт
  • https://t.me/clickhouse_ru
    есть логика, да
  • 04 April 2023 (109 messages)
  • https://t.me/clickhouse_ru
    ну так естественно, ни в коем случае нельзя использовать zk-copy , в доке написано.

    вообще не нужно было использовать zk-copy, нафига этот баян, не нужна старая база
  • @r3former #319210 12:02 AM, 04 Apr 2023
    Поправить как это можно?
  • https://t.me/clickhouse_ru
    много таблиц ругаются?
  • @r3former #319212 12:03 AM, 04 Apr 2023
    не много, на фоне их общего числа
  • https://t.me/clickhouse_ru
    на всех репликах таблицы делаете detach table

    в зукипре удаляете полностью таблицу c ее корня deleteall ...

    на первой реплике attach table .... она становится RO, system restore replica, потом на остальных тоже самое
  • @r3former #319214 12:06 AM, 04 Apr 2023
    Спасибо! Процесс до боли знакомый уже)
  • https://t.me/clickhouse_ru
    @den_crane #319215 12:06 AM, 04 Apr 2023
    можно восстановить зукипер с нуля, используя system restore replica.
  • https://t.me/clickhouse_ru
    @den_crane #319216 12:07 AM, 04 Apr 2023
    но я не понимаю зачем эта боль, зукипер супергибкая штука, я через океан базу зукипера перевозил, не выключая КХ и не гася саму базу зукипера.

    можно добавлять фоловеров, гасить старых, т.о. переезжать добавляя новые сервера и убавляя старые
  • @r3former #319217 12:11 AM, 04 Apr 2023
    а что не так делает zk-copy?
  • https://t.me/clickhouse_ru
    так и задумано, все on cluster выполняются последовательно.

    не надо такие долгоиграющие команды запускать on cluster, или запускать чтобы они сразу возвращали управление
  • https://t.me/clickhouse_ru
    она скидывает автоинкременты в 0
  • https://t.me/clickhouse_ru
    @den_crane #319220 12:13 AM, 04 Apr 2023
    https://clickhouse.com/docs/en/operations/tips#zookeeper

    You should never use manually written scripts to transfer data between different ZooKeeper clusters, because the result will be incorrect for sequential nodes. Never use the “zkcopy” utility for the same reason: https://github.com/ksprojects/zkcopy/issues/15
  • https://t.me/clickhouse_ru
    @zak1996lesn #319221 03:45 AM, 04 Apr 2023
    Всем привет. А чтобы использовать clickhouse-benchmark мне нужна обязательно машина с кликом, или можно как - то отдельно установить утилиту?
  • https://t.me/clickhouse_ru
    все утилиты и Кх это один бинарник - clickhouse , его можно просто скопировать куда надо. И там запускать через пробел: clickhouse benchmark
  • @Subudei #319223 05:24 AM, 04 Apr 2023
    Всем, привет. Подскажите пожалуйста можно ли в одной транзакции сохранить сразу несколько разных батчей в разные таблицы? Когда второй раз делаю prepare выдает ошибку: Unexpected packet Query recieved from client. Язык go, библиотека clickhouse-go
  • https://t.me/clickhouse_ru
    @caneventalkshit #319224 06:20 AM, 04 Apr 2023
    Ищем в комaнду людeй заинтересованных в зapaботке на разницe куpcoв
    Слoжного ничeго нeт, новичкoв oбучаем и полностью сопровождаем по всем вопросам
    За одну сдeлку получаем примерно 2-4% чистoй прибыли
    Работаете со своим бюджeтом самостоятельно
    Подробнее в лс
  • https://t.me/clickhouse_ru
    @konnectrl #319225 06:23 AM, 04 Apr 2023
    /report @caneventalkshit
  • https://t.me/clickhouse_ru
    Понял, спасибо!
  • https://t.me/clickhouse_ru
    @Alexeysaff #319228 06:29 AM, 04 Apr 2023
    скажите, а есть ли путь мигирровать standalone клик с десятокм merge tree tables в кластер архитектуру?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319228 #319232 07:29 AM, 04 Apr 2023
    есть. https://kb.altinity.com/ -> Search -> Replicated
  • @Subudei #319234 07:41 AM, 04 Apr 2023
    /report
  • https://t.me/clickhouse_ru
    @utkinmaximand #319239 08:02 AM, 04 Apr 2023
    добрый день при создании проекции с полем которое формируется с использованием udf функции, мутация не может сделать файл с названием во всю длину тела функции, есть обиходной путь?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319239 #319240 08:19 AM, 04 Apr 2023
    вы точно переименовали столбец или просто функцию вызываете? Покажите код
  • https://t.me/clickhouse_ru
    @Spellik #319241 08:30 AM, 04 Apr 2023
    Всем привет.
    Запустил запрос
    optimize table table_name partition id '20221121-200' FINAL;
    И он уже 50 часов висит в базе
    Партиция 2Tb.
    Запрос идет на шарде и реплике. Можно его как-то дропнуть? Это нормально что он так долго отрабатывает для такого объема?
  • https://t.me/clickhouse_ru
    угу(, говорят как то можно сделать с помощью materialize
  • А там есть какая то активность? Может в логах что-то? Или высокое потребление CPU?
  • https://t.me/clickhouse_ru
    @andrewsvart #319244 08:36 AM, 04 Apr 2023
    Привет!
    Есть гео-распределенный кластер, несколько шардов, в двух репликах.
    По реплике в каждом датацентре в DC1 и DC2.
    Имеется ли принципиальная возможность ограничить зону (перечень нод) при SELECT, по распределенной таблице, репликами сугубо лишь одного датацентра, например DC2 ?

    Запрос будит прилетать например на 01-ую ноду DC2 и нужно чтобы - эта нода "координатор" не шла на ноды DC1, ограничиваясь доступными данными на остальных нодах DC2.
  • https://t.me/clickhouse_ru
    @Spellik #319245 08:38 AM, 04 Apr 2023
    Активность есть - прогресс растет 23 %(на шарде), 50% (на реплике)
    Высокое потребление диска (на чтение800MB/s) и некая метрика ZooKeeperWatch растет
    CPU умеренное
  • https://t.me/clickhouse_ru
    кассандре - это решается нампример через consistency LOCAL_QUORUM.
    А в клике ну можно было бы создать в DC2 - еще один кластер - куда бы вошли лишь ноды из DC2.
    И в запросе писать, например:

    SELECT * FROM cluster('cluster_DC2', db.table);

    - да только оно так по идее работать не будит , коль скоро бд db изначально создавали на cluster с отличным именем куда входили ноды из DC1 и DC2...

    Т.е. надо еще мету в зоокипере для db.table для cluster_DC2 - получается "до-заполнить" ?
  • А в клике ну можно было бы создать в DC2 - еще один кластер - куда бы вошли лишь ноды из DC2.
    И в запросе писать, например:

    SELECT * FROM cluster('cluster_DC2', db.table);

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

    или попробуйте https://clickhouse.com/docs/en/operations/settings/settings#settings-load_balancing
    Core Settings | ClickHouse Docs

    additionaltablefilters

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

    Плюс, да можно посмотреть в сторону nearest_hostname для load_balancing
  • https://t.me/clickhouse_ru
    @mrAndersen7 #319249 09:23 AM, 04 Apr 2023
    Есть вопрос, несколько странный. Но всё же, может быть кто-то подскажет. Есть MergeTree вида
    {
    col1 String,
    col2 domain(col1),
    col3 query(col1)
    }
    И так далее. Можно как-то сделать так, чтобы col1 вообще не записывался, но только процессился для генерируемых col2 и col3 именно на уровне КХ ?
  • https://t.me/clickhouse_ru
    @ionite ↶ Reply to #319249 #319250 09:26 AM, 04 Apr 2023
    CREATE TABLE | ClickHouse Docs

    Creates a new table. This query can have various syntax forms depending on a use case.

  • https://t.me/clickhouse_ru
    @mrAndersen7 #319251 09:27 AM, 04 Apr 2023
    Огонь, спасибо
  • https://t.me/clickhouse_ru
    Спасибо.
    Но nearest_hostname поможет в локализации нод-обработчиков запроса, сугубо в случае если этот запрос "не приложит" ноды из DC2. Полагаю если в результате тяжелого не оптимального-прожорливого к ресурсам запроса частьреплик шардов в DC2 - прилягут, все равно последующие запросы пойдут на оставшиеся "в строю" ноды на DC1 и соответсвенно сможет "приложить" и их. Т.е. произойдет то чего изачально и хочется избежать, в принципе.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319252 #319253 10:55 AM, 04 Apr 2023
    Если вам нужна именно локализация, то нарисуйте себе кластер только из тех узлов, которые должны исполнять запрос, и обращайтесь именно к этому кластеру. Весь этот "cluster" просто конфигурация нод, нужная только для того чтобы Distributed таблица правильно проксировала запросы.
  • https://t.me/clickhouse_ru
    load_balancing = 'first_or_random', load_bancing_first_offset = 0/1

    можно так например
  • https://t.me/clickhouse_ru
    @m1khal3v #319255 10:57 AM, 04 Apr 2023
    но тут вы уже сверху правильно заметили, что запрос может пойти и на другую реплику
  • https://t.me/clickhouse_ru
    Приложит? О чем вы? Хеджированные запросы? Это отключается.

    Годами геокластеры работают , один дц в usa, другой в eu, никто не ходит куда не надо при in_order. Точнее маленький процент запросов будет ходить но это такой механизм для проверки связности
  • https://t.me/clickhouse_ru
    спасибо!
  • https://t.me/clickhouse_ru
    а buffer table будет работать в данной связке?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319258 #319259 11:52 AM, 04 Apr 2023
    Наверное будет, какая ему разница. Да таким трюком вашу задачу можно решить - партов будет мало, но данные будут доступны для запроса раньше. Из минусов - вы можете потерять данные при неожиданном рестарте сервера (креш). Но если это вас не беспокоит....
  • https://t.me/clickhouse_ru
    Это нет. Спасибо
  • https://t.me/clickhouse_ru
    @utkinmaximand #319261 12:53 PM, 04 Apr 2023
    добрый день подскажите как будет вести себя ch, при повторном materialize проекции?
  • @7699150 #319262 12:58 PM, 04 Apr 2023
    Всем привет!
    Обновили КХ до 22.7 до 23.2
    перестала работать функция catboostEvaluate()
    Кто-то сталкивался м.б.?
    валит такая ошибка:
    DB::HTTPException. DB::HTTPException: Received error from remote server /catboost_request?version=1&method=catboost_GetTreeCount. HTTP status code: 500 Code: 375. DB::Exception: Cannot dlopen: (home/catboost/data/marvel_android_pay_31_03_model: invalid ELF header). (CANNOT_DLOPEN),. (RECEIVED_ERROR_FROM_REMOTE_IO_SERVER)
  • в конфиг КХ добавил такой
  • https://t.me/clickhouse_ru
    @6131398347 #319264 01:10 PM, 04 Apr 2023
    всем привет!
    может, кто-нибудь использует clickhouse в связке с power bi через directQuery/live-подключение? не нашёл нормальный способ

    или, может, используете обходные пути такой связки
  • @7699150 #319265 02:05 PM, 04 Apr 2023
    Подскажите плз, о чем может свидетельствовать такая ошибка? Делаю INSERT INTO table FROM SELECT
    На жестких дисках память есть.

    DB::Exception: Not enough space on temporary disk: While executing AggregatingTransform. (NOT_ENOUGH_SPACE)
  • https://t.me/clickhouse_ru
    есть параметр куда складывать такие файлы, по дефолту это /var/lib/clickhouse/tmp/
    т.е. надо смотреть и место и inode

    df -h /var/lib/clickhouse/tmp/
    df -hi /var/lib/clickhouse/tmp/
  • @misgorod #319267 02:24 PM, 04 Apr 2023
    Привет! Подскажите как убрать distributed запросы на сервер? Удалил сервер из remote_servers, select перестали идти, но insert по-прежнему приходят с других нод кластера. Версия 21.12.4.1. В issues не нашёл ничего похожего, видимо мы что-то неправильно настроили
  • df -hi /var/lib/clickhouse-server/tmp/
    Filesystem Inodes IUsed IFree IUse% Mounted on
    /dev/nvme1n1 197M 743K 196M 1% /var/lib/clickhouse-server

    df -h /var/lib/clickhouse-server/tmp/
    Filesystem Size Used Avail Use% Mounted on
    /dev/nvme1n1 6.1T 5.0T 832G 86% /var/lib/clickhouse-server
  • место есть
  • https://t.me/clickhouse_ru
    @GrinRom #319270 02:49 PM, 04 Apr 2023
    Добрый день!
    Могли бы подсказать - планирую использовать ClickHouse для хранения версий для данных в строках в PostgreSQL.
    Думал сделать триггер и повесить на свою таблицу в PG, чтобы при изменении сохранять и версионировать изменения в CH.
    Но тут возник вопрос - окружений много, на каждом из них данные для доступа могут быть разные - как организовать взаимодействие между базами в таком сценарии?
    Проблема в том, что в функцию надо запихать доступ к clickhouse, насколько я понимаю, а сама функция создается при миграции только. Вторым вариантом было хранить конфиг с доступом к ClickHouse в самом PG, но что-то этот вариант еще меньше нравится.

    Или может лучше отказаться от идеи триггера на PG и дублировать запрос в CH из приложения напрямую? Кто может поделиться практикой использования такой связки или что можете порекомендовать почитать? (по прямым запросам не получается найти кейсов, за исключением того, когда CH читает из PG)
  • https://t.me/clickhouse_ru
    @ademidov #319271 02:50 PM, 04 Apr 2023
    привет, а если кто то перешел с zookeeper на keeper не поделитесь впечатлениями ? не появилось ли каких то новых проблем ? может что то из старых полечилось ? насколько стабильно работает ?
  • https://t.me/clickhouse_ru
    @ademidov #319272 02:52 PM, 04 Apr 2023
    отдельный вопрос - я правильно понял, что если на кластере из трех нод и с одним шардом падают 2 ноды (https://clickhouse.com/docs/ru/operations/clickhouse-keeper#восстановление-после-потери-кворума), то нет возможности добавить в кластер новые ноды ?
  • https://t.me/clickhouse_ru
    @ademidov #319273 02:52 PM, 04 Apr 2023
    без использования “механизм может использоваться только как крайняя мера”
  • https://t.me/clickhouse_ru
    @den09 ↶ Reply to #319270 #319274 02:55 PM, 04 Apr 2023
    а версии для данных вы понимаете как что?? любое изменение в базе любой сущности ?
  • если вы хотите из PG писать в КХ на каждый апдейт - это не рабочий вариант. КХ не живёт долго если в него делать инсерты по 1 записи. Почитайте что такое CDC, Debezium или MaterializedPostgreSQL движок в КХ

    > и дублировать запрос в CH из приложения напрямую?
    не севсем понятно что имеете ввиду
  • https://t.me/clickhouse_ru
    У меня есть сущность Ячейка в которое есть значение Value - мне нужно сохранить какое значение было, какое стало, кто и когда изменил.

    Фактическое (текущее значение) планирую оставить в PG, а вот историю думаю в CH перенести в связи с ростом объемов
  • https://t.me/clickhouse_ru
    @den09 #319277 02:56 PM, 04 Apr 2023
    тогда вам подойдет коментарий выше
  • https://t.me/clickhouse_ru
    @GrinRom #319278 02:56 PM, 04 Apr 2023
    То есть рабочим вариантом могло быть то, что класть изменения в kafka, а потом пакетно вставлять в CH?
  • https://t.me/clickhouse_ru
    @den09 #319279 02:57 PM, 04 Apr 2023
    вам надо собирать изменения и пихать в CH пачками, например Debezium ->Kafka->CH
  • https://t.me/clickhouse_ru
    @den09 #319280 02:58 PM, 04 Apr 2023
    Debezium хорошо работает с Kafka и для CH движок Kafka есть
  • https://t.me/clickhouse_ru
    @GrinRom #319281 02:59 PM, 04 Apr 2023
    Debezium мы установили, но видимо не умеем правильно пользоваться, так как он регулярно сжирает все ресурсы стенда :(
    Но направления я понял, спасибо большое!
  • https://t.me/clickhouse_ru
    @den09 ↶ Reply to #319278 #319282 02:59 PM, 04 Apr 2023
    ну потому что условно разовое действие писать в CH это очень плохо, он под это не задумывался, у Алексея Миловидова есть статья где он расписывает почему )
  • https://t.me/clickhouse_ru
    @den09 #319283 03:00 PM, 04 Apr 2023
    Debezium это как вариант, вариантов хватаетЮ тем более выше как минимум три варианта уже предложили)
  • https://t.me/clickhouse_ru
    @GrinRom #319284 03:00 PM, 04 Apr 2023
    Спасибо большое за ценные советы! Пошел копать :)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319280 #319285 03:04 PM, 04 Apr 2023
    движок Kafka конечно есть, но работает плохо. Если мы уже произнесли слово Debezium, то дальше надо смотреть в сторону Altinity Sink, без приключений с дубликатами в Kafka Engine @GrinRom
  • @tengotengo #319286 03:19 PM, 04 Apr 2023
    Ребят, вопрос
    таблица ReplacingMergeTree
    понятно что замена дупликатов не гарантируется и они всегда могут быть
    есть ли какой-то трюк чтоб вытаскивать правильно из этой таблицы только самые новые записи?
    чтоб будто их и нет дупликатов
  • https://t.me/clickhouse_ru
    @vlkharlamov #319287 03:23 PM, 04 Apr 2023
    groupby по максимальной версии?
  • https://t.me/clickhouse_ru
    Можете показать как это выглядит?
  • https://t.me/clickhouse_ru
    Спасибо большое! Буду смотреть и думать
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319286 #319290 03:37 PM, 04 Apr 2023
    select ... table FINAL
    но это медленнее, и вобще много нюансов.
    Прочитайте внимательно - https://kb.altinity.com/engines/mergetree-table-engine-family/replacingmergetree/
    И далее по ссылкам. Похоже, что вы в начале большого пути.
  • https://t.me/clickhouse_ru
    Вы имеете ввиду лимит?
  • спасибо!!
  • https://t.me/clickhouse_ru
    @Spellik #319293 05:29 PM, 04 Apr 2023
    А есть какое-нибудь удобное приложение, чтобы мониторить запросы в кластере кликхауса? Для общих метрика графана хорошо, а хочется смотреть какие запросы выполняются на разных нодах?
  • https://t.me/clickhouse_ru
    @eminshakh #319294 05:30 PM, 04 Apr 2023
    То что долго выполняется
    KILL MUTATION это норм?

    KILL MUTATION WHERE database = '' AND table = '' AND mutation_id = ''

    на один id уходит примерно 30 сек. а их 173000.
  • https://t.me/clickhouse_ru
    это норм. Он ждет кучу блокировок.

    всех разом KILL MUTATION WHERE not is_done and database = '' AND table = ''
  • https://t.me/clickhouse_ru
    вот этот дашбоард https://grafana.com/grafana/dashboards/13606-clickhouse-performance-monitor-xm-uat/
    смотрит в query_log через clickhouse plugin
    но там запросы надо допилить с clusterAllReplicas чтобы на весь кластер смотреть
  • https://t.me/clickhouse_ru
    @yatoba #319297 05:45 PM, 04 Apr 2023
    подскажите по утилите clickhouse-backup она сохраняет бэкап на сервере под бд? И есть ли у нее возможность забэкапить к себе на пк или она только с сервера самой БД может только кудато заслать что забэкапит локально туда?
  • https://t.me/clickhouse_ru
    Благодарю
  • https://t.me/clickhouse_ru
    она использует хардлинки( почти не занимает место на сервере под бекап), а дальше надо его upload (она умеет)

    Можно запускать как sidecar если это docker/k8s, но там диск получается расшарен, и sidecar просто имеет доступ к диску кх.
  • @SerhiiKorn #319300 05:59 PM, 04 Apr 2023
    Помогите пожалуйста, обновить запрос для загрузки данных из нового формата CSV файла. Запрос: INSERT INTO mytable SELECT rank, domain, \'' . $date . '\' FROM input('rank Int32, domain String') FORMAT CSV, где $date - это дата, которая подставляется руками, она не берется из файла, это не меняется. Пример старого формата(без названия колонок):
    1,google.com
    2,youtube.com
    Пример нового формата(с названием колонок):
    GlobalRank,TldRank,Domain,TLD,RefSubNets,RefIPs,IDN_Domain,IDN_TLD,PrevGlobalRank,PrevTldRank,PrevRefSubNets,PrevRefIPs
    1,1,facebook.com,com,494001,2580144,facebook.com,com,1,1,493169,2571521
    2,2,google.com,com,493890,2418063,google.com,com,2,2,493084,2410941
    Маппинг старого формата на новый:
    rank==>GlobalRank
    domain==>Domain
  • https://t.me/clickhouse_ru
    @yatoba ↶ Reply to #319299 #319301 05:59 PM, 04 Apr 2023
    и получается надо заранее настроить директорию под бэкап как при при обычном бэкапировании руками?
  • https://t.me/clickhouse_ru
    колонки что-ли совпадают в таблице и файле? или в чем вопрос-то?

    INSERT INTO mytable SELECT *, \'' . $date . '\' FROM input() FORMAT CSVWithNames
  • https://t.me/clickhouse_ru
    зачем?
    она создает /var/lib/clickhouse/backup
  • https://t.me/clickhouse_ru
    @yatoba ↶ Reply to #319303 #319304 06:04 PM, 04 Apr 2023
    в кубе нет ее. Используем альтинити оператор, надо в операторе чтото допом указывать тогда при настройке кластера для вклчюения бэкапирования7
  • колонки в таблице не совпадают. названий в оригинале небыло. структура таблицы:
    CREATE TABLE IF NOT EXISTS mytable
    (
    rank UInt32,
    domain String,
    date Date
    ) ENGINE = ReplacingMergeTree
    PARTITION BY toYYYYMM(date)
    ORDER BY (date,domain);
  • https://t.me/clickhouse_ru
    INSERT INTO mytable SELECT TldRank,Domain, \'' . $date . '\' FROM input() FORMAT CSVWithNames
  • https://t.me/clickhouse_ru
    clickhouse-backup/Examples.md at master · Altinity/clickhouse-backup

    Tool for easy ClickHouse backup and restore with cloud storages support - clickhouse-backup/Examples.md at master · Altinity/clickhouse-backup

  • https://t.me/clickhouse_ru
    @Nick_jv #319308 06:24 PM, 04 Apr 2023
    Всем привет! Помогите плиз... Кто-то сталкивался с таким поведением, что если повесить на AggregateMergeTree матвью c суммой на колонку, то при записи в итоговую таблицу TO не считается sumMerge корректно?
  • https://t.me/clickhouse_ru
    @Nick_jv #319309 06:26 PM, 04 Apr 2023
    AMT(source table) -> MV(SELECT sumMerge(column) ...) -> MT(target table )
  • https://t.me/clickhouse_ru
    нули получаются?

    алиас в select в mv должен совпадать с именем колонки в to таблице
  • https://t.me/clickhouse_ru
    @Nick_jv #319311 06:32 PM, 04 Apr 2023
    Хуже, 1ца. Сейчас попробую argMin глянуть
  • https://t.me/clickhouse_ru
    @Nick_jv #319312 06:38 PM, 04 Apr 2023
    Причём обычным селектом все правильно выдает
  • https://t.me/clickhouse_ru
    @yatoba ↶ Reply to #319307 #319313 06:41 PM, 04 Apr 2023
    как решить проблему с отсутствием /var/lib/clickhouse/backup/ в контейнере чтото ничего не могу найти ? нужно какойто другой образ использовать (сейчас docker.io/clickhouse/clickhouse-server:23.2.4.12) или какито доп параметры в операторе указать при разворачивании кластера?
  • https://t.me/clickhouse_ru
    @yatoba ↶ Reply to #319313 #319314 06:44 PM, 04 Apr 2023
    походу понял
    defaults:
    templates:
    podTemplate: clickhouse-backup
    dataVolumeClaimTemplate: data-volume
    с сайдкаром image: altinity/clickhouse-backup:master
  • помогло, спасибо
  • https://t.me/clickhouse_ru
    ну возможно вы не понимаете что MV это триггер на инсерт и AMT(source table) никогда не читается
    поэтому если вставлять 1 , то будет 1, а select будет показывать сумму sum(1)
  • https://t.me/clickhouse_ru
    @AlexMukhin #319318 07:54 PM, 04 Apr 2023
    Всем привет! Подскажите пожалуйста, есть ли возможность преобразовать string в json?
    Сразу скажу, функция JSONParse не работает
  • https://t.me/clickhouse_ru
    str::JSON
  • https://t.me/clickhouse_ru
    мне бы в SQL запросе
  • https://t.me/clickhouse_ru
    который из JSON ? это тип поля в таблице?
  • https://t.me/clickhouse_ru
    в таблице тип поля string. Вопрос - как излечь данные
  • https://t.me/clickhouse_ru
    JSONExtract ?
  • https://t.me/clickhouse_ru
    пустые поля
  • https://t.me/clickhouse_ru
    одинарные кавычки, расходимся
  • https://t.me/clickhouse_ru
    @konstantin_ptr #319326 08:32 PM, 04 Apr 2023
    там, увукс, достаем яйца)
  • https://t.me/clickhouse_ru
  • 05 April 2023 (117 messages)
  • https://t.me/clickhouse_ru
    @dimkas78 #319328 05:43 AM, 05 Apr 2023
    Добрый день!
    Может кто-то подскажет по проблеме - поднимаю свежую версию ClickHouse в виде Docker-контейнера, собранного из официального образа clickhouse/clickhouse-server:latest без каких-либо изменений. А подключиться к базе с указанием имени хоста не могу, база принимает только локальные подключения без имени хоста и с localhost, и на все попытки подключения с указанием имени хоста (кроме localhost) отвечает "Connection error: Connection refused, server ClickHouseNode ..."
    В файле /config.d/docker_related_config.xml сервера стоит:
    <listen_host>::</listen_host>
    <listen_host>0.0.0.0</listen_host>
    В config.xml -
    <listen_host>::</listen_host>
    <listen_host>0.0.0.0</listen_host>
    Сам контейнер себя по имени хоста знает и нормально пингует.
    Конечная цель у меня - подключиться к базе из соседнего контейнера
  • https://t.me/clickhouse_ru
    @skaradub #319329 06:15 AM, 05 Apr 2023
    Доброе утро! Никто не сталкивался? Через dbeaver для тестов загружаю csv в clickhouse, больше 23к из файла не берет. КХ в Облаке Я (если имеет значение)
    // ошибок не дает никаких
  • https://t.me/clickhouse_ru
    @vpismarev #319330 06:19 AM, 05 Apr 2023
    А кто какие стратегии шардирования использует? Например есть таймсериез с составным первичным ключом и можно шардировать как минимкм двумя способами. Все записи с одним ключом на одной ноде или просто rand() и тогда в теории мы сможем распараллелить выполнение запроса по pk
  • https://t.me/clickhouse_ru
    Я шардировал по хэшу от user_id, потом делаю локально join если нужны по user_id
  • https://t.me/clickhouse_ru
    у меня джойнов нет и не будет ) Графана в целом всегда передает дату + условие по pk
  • @Gomodtidy #319333 07:08 AM, 05 Apr 2023
    Всем привет) Собираем данные по типу (source_id, object_id, date, count), где count целочисленная неубывающая метрика. Хотелось бы для ускорения запросов иметь еще таблицу, где будет лежать среднее значение метрики за период (между периодами сканирования). То есть Avg(t1, t2) = sum(diff(count))/N. Пытаюсь сделать через материализованное представление, использую таблицу с null engine, которая джоинит "новый блок данных" и уже имеющиеся данные. Но тогда мы получается работаем со всей исходной таблицей, а нужно по идее найти разницу текущего измерения и прошлого измерения и поеделить на количество object_id.
    Как-то можно решить эту задачу через материализованные представления или тут только кроном?
    Сори, если плохо описал, вот описание таблиц https://fiddle.clickhouse.com/013adc41-a05a-4b9a-9504-e12ef3ebf2b4
  • @Gomodtidy #319334 07:11 AM, 05 Apr 2023
    упс, не та ссылка
    https://fiddle.clickhouse.com/b360cc08-d12a-433f-8c93-a39fcb748689
  • Мне кажется вам больше пожойдет https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/aggregatingmergetree
    AggregatingMergeTree | ClickHouse Docs

    The engine inherits from MergeTree, altering the logic for data parts merging. ClickHouse replaces all rows with the same primary key (or more accurately, with the same sorting key) with a single row (within a one data part) that stores a combination of states of aggregate functions.

  • Звучит достаточно логично, попробую с этим движком потыкаться, спасибо!)
  • https://t.me/clickhouse_ru
    мутации будут срабатывать только для первого materialize?
  • https://t.me/clickhouse_ru
    @a_krut #319339 08:35 AM, 05 Apr 2023
    Всем привет, кто может подсказать, как построить olap куб в clickhouse или где найти информацию по этому ?
  • https://t.me/clickhouse_ru
    @a_krut ↶ Reply to #319340 #319341 09:37 AM, 05 Apr 2023
    Спасибо!
  • @DXYpT #319342 10:18 AM, 05 Apr 2023
    Привет, это нормальное поведение, если удалить словарь (drop dictionary some_dict), и возникает ошибка HAVE_DEPENDENT_OBJECTS, то словарь пропадает из system.dictionaries, select * from some_dict -> Dictionary not found, а новый словарь с тем же именем не создать, ибо Dictionary some_dict already exists?
  • @DXYpT ↶ Reply to #319342 #319343 10:20 AM, 05 Apr 2023
    причём в show dictionaries словаря нет, но есть в show tables
  • https://t.me/clickhouse_ru
    Materialize projection действует на парты без проекций. Если проекция есть - парт пропускается
  • https://t.me/clickhouse_ru
    В докере это делается по другому (это не имеет отношения к кх). Надо создать network и контейнеры используя этот network.
  • https://t.me/clickhouse_ru
    Шардирование по ключу позволяет включить настройку которая отключает агрегацию на инициаторе и это ускоряет запросы в разы
  • https://t.me/clickhouse_ru
    о, а где про это почитать?
  • https://t.me/clickhouse_ru
    @vpismarev #319349 11:01 AM, 05 Apr 2023
    я думал что он так по дефолту работает
  • https://t.me/clickhouse_ru
    Петя создал таблицу Distributed( , rand() и залил данные
    Вася подумал и решил: хм, зачем мы заливаем через Distributed, давайте лить в локал таблицы
    Виталий подумал и пересоздал таблицу Distributed( , key_column)

    но данные-то не перепрыгнут, и КХ не знает как они на самом деле лежат по шардам, поэтому естественно все ускорялки выключены по дефолту

    --optimize_distributed_group_by_sharding_key arg Optimize GROUP BY sharding_key queries (by avoiding costly aggregation on the initiator server).
    --optimize_skip_unused_shards_limit arg Limit for number of sharding key values, turns off optimize_skip_unused_shards if the limit is reached
    --optimize_skip_unused_shards arg Assumes that data is distributed by sharding_key. Optimization to skip unused shards if SELECT query filters by sharding_key.
    --optimize_skip_unused_shards_rewrite_in arg Rewrite IN in query for remote shards to exclude values that does not belong to the shard (requires optimize_skip_unused_shards)

    --distributed_group_by_no_merge arg If 1, Do not merge aggregation states from different servers for distributed queries (shards will process query up to the Complete stage, initiator just proxies the data from the shards). If 2 the initiator will apply ORDER BY and LIMIT stages (it is not in case
    when shard process query up to the Complete stage)

    фактически надо использовать только 1-ю , optimize_distributed_group_by_sharding_key=1
  • 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
    аналитические функции всегда выполняются на шардах.
    вопрос надо ли их домерживать на инициаторе

    если домерживать не надо, то uniq с шарда передается как финальное число (UInt64), если надо домерживать то передается преагрегированный стейт uniqState размером XXX0000 гигабайт.
  • @vsmironov #319356 11:48 AM, 05 Apr 2023
    Привет!
    Подскажите, как организовать вот такое поведение?
    Есть таблица с продажами и view с маскированными данными из этих продаж, но view не работает если нет прав на основную таблицу. А если у пользователя права будут, то можно получить данные минуя маскирование.

    Как-то можно ограничить пользователей, чтобы они видели данные из таблицы только через view, а напрямую нет?

    Спасибо
  • https://t.me/clickhouse_ru
    нет, нельзя, такая кривая модель в КХ для прав (нету владельцев у объектов, нету разделения definer / user)

    можно только через row policy , но тогда и вью не нужен. Просто одни пользователи будут видеть одни строки, другие пользователи другие.
  • https://t.me/clickhouse_ru
    это не нормально
  • https://t.me/clickhouse_ru
    только кроном
  • Правильно понимаю, что если таких view у меня 5 штук, все они с разными масками, то мне надо для каждого варианта держать копию таблицы для row policy?
  • @rrbadrutdinov #319361 12:07 PM, 05 Apr 2023
    > фактически надо использовать только 1-ю , optimize_distributed_group_by_sharding_key=1

    емнип работает только если группировка производится по ключу шардирования.
    для прочих случаев optimize_skip_unused_shards=1, distributed_group_by_no_merge=1

    или я не прав?
  • https://t.me/clickhouse_ru
    я же сказал, view не нужен.
    зачэм пят?
  • Нет, 5 копий строки
  • https://t.me/clickhouse_ru
    ну типа да, optimize_distributed_group_by_sharding_key для тех кто не хочет разбираться.
  • https://t.me/clickhouse_ru
    нет, одну и туже строку могут видеть разные пользователи, label security же не так работает
    для строки вычисляется может видеть ее запрос или нет.
  • Ок, спасибо большое Вы нам очень помогли!
  • https://t.me/clickhouse_ru
    @Karazhev #319371 12:32 PM, 05 Apr 2023
    Коллеги добрый вечер, подскажите пожалуйста, развернул 2 ноды клика, настроил репликацию, сделал балансировщик и раундробином в каждый идут запросы.
    И вижу многие в рамках этих реплик делают дисрибьютед таблицы и на нее нее запросы пересылают и она по репликам уже сама балансит, я насколько знаю дистибьютед нужна в рамках шардирования, а вот в рамках одного шарда это делать не особо понимаю смысл, хотя каждый первый с статьях так делает) может я чего то не знаю и это правильный кейс, соориетируйте если не сложно)
  • https://t.me/clickhouse_ru
    @mrmnfnv #319372 12:34 PM, 05 Apr 2023
    Привет! Подскажите, в чем может быть проблема

    Создаю схему вида

    syntax = "proto3";

    import "google/protobuf/timestamp.proto";

    message Test {
    google.protobuf.Timestamp created_at = 4;
    };

    При попытке селекта с этой схемой получаю ошибку

    SELECT today() AS created_at
    FORMAT Protobuf
    SETTINGS format_schema = 'test_dt:Test’

    Code: 434. DB::Exception: Code: 434. DB::Exception: Cannot parse 'test_dt.proto' file, found an error at line -1, column 0, File recursively imports itself: test_dt.proto -> test_dt.proto. (CANNOT_PARSE_PROTOBUF_SCHEMA) (version 23.2.2.20 (official build)). (CANNOT_PARSE_PROTOBUF_SCHEMA)

    С дефолтными полями, без импорта, ошибок нет

    Версия 23.2.2.20
  • https://t.me/clickhouse_ru
    @MakeReady #319373 12:40 PM, 05 Apr 2023
    Добрый день!

    Может ли не срабатывать при джойне условие в JOIN

    SELECT t2.dt,
    uniqExactMerge(uniqExactStateIf(t2.id)) OVER w
    ….
    FROM t1
    RIGHT JOIN t2 ON t2.id = t1.par_id AND has(t2.devices,1)

    WINDOW w AS (ORDER BY t2.dt ASC)
  • https://t.me/clickhouse_ru
    во первых писатели статей намекают что в будущем меньше переделывать когда станет 2 шарда.

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

    про балансировку: это вообще не про то, и не так.
  • https://t.me/clickhouse_ru
    @ademidov #319375 12:43 PM, 05 Apr 2023
    Привет, есть кластер с одним шардом и N (пусть три) узла в этом шарде, в кластере создана таблица (ReplicatedMergeTree) в которую вставляются данные (по 100 000 - 200 000 строк). Все вставляемые данные гарантированно попадают в одну партицию (так как ключ партиционирования - время вставки).

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

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

    В общем, есть тут какие то рекомендуемые подходы и общие соображения ?
  • https://t.me/clickhouse_ru
    @ademidov #319376 12:44 PM, 05 Apr 2023
    Хотя,смотрю ответ выше частично отвечает на мой вопрос
  • https://t.me/clickhouse_ru
    эм, и ошибки нет? должен кидать ошибку, что нельзя has(t2.devices,1) в ON
    и RIGHT JOIN реализован с кучей багов, лучше никогда не использовать
  • https://t.me/clickhouse_ru
    не не кидает
  • https://t.me/clickhouse_ru
    ужос
  • https://t.me/clickhouse_ru
    @MakeReady #319380 12:45 PM, 05 Apr 2023
    кстати да, были у меня уже проблемы с райтом
  • https://t.me/clickhouse_ru
    Понял спасибо, ну насколько я видел у нее есть алгоритм round robin и она может перебором реплики дергать
  • https://t.me/clickhouse_ru
    @last_knot #319382 12:46 PM, 05 Apr 2023
    Добрый день.

    Каким образом можно загрузить изображение в ячейку таблицы в ClickHouse?

    Есть ли удобный вариант представления изображения в какой-либо кодировке (можно со сжатием), чтобы она отображалась при просмотре в веб интерфейсе ClickHouse?

    Нужно передавать в INSERT не название изображения, а его представление в выбранной кодировке

    UPD:
    Тип поля должен быть blob, как я понял
    INSERT INTO images (id, image) VALUES (1, loadFile('/path/to/image.jpg'))

    loadFile('/path/to/image.jpg') возможно представить в кодировке?
  • https://t.me/clickhouse_ru
    а почему нельзя

    видимо просто игнорирует потому и не кидает
  • https://t.me/clickhouse_ru
    load_balancing это про выбор реплики в другом шарде.

    Если у вас один шард, то по дефолту load_balancing будет выполнять запрос локально, и никогда не уйдет на другую реплику

    это сделано чтобы тупо экономить сетевой трафик
  • https://t.me/clickhouse_ru
    аааа, понял, благодарю
  • https://t.me/clickhouse_ru
    переделал на LEFT
    тоже не кидает ошибку но и похоже не использует никак
  • https://t.me/clickhouse_ru
    какая версия КХ ?
  • https://t.me/clickhouse_ru
    22.8.15.23
  • https://t.me/clickhouse_ru
    можно, но не нужно. КХ не для хранения блобов.
    тип String позволяет хранить любой стрим байтов
  • https://t.me/clickhouse_ru
    А возможно ли сделать красивое отображение в SELECT запросе? Чтобы изображение было декодировано

    UPD:
    ChatGPT предлагает:
    SELECT Base64Decode(image)
  • https://t.me/clickhouse_ru
    конечно нельзя
  • https://t.me/clickhouse_ru
    в общем в итоге запихнул в подзапрос но вообще не понятно почему и не ругается и не использует словно и нет этого в ON
  • https://t.me/clickhouse_ru
    https://fiddle.clickhouse.com/

    я неправильно прочитал похоже запрос, я там увидел (t2.devices,t1)
    а оно не зависит от t1, т.е. это просто where, а не ON
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @MakeReady #319395 01:02 PM, 05 Apr 2023
    именно часть ОН
  • https://t.me/clickhouse_ru
    @MakeReady #319396 01:04 PM, 05 Apr 2023
    очень забавно, то есть он для того что не соответствует has соединение не делает но сами записи выводит
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @MakeReady #319398 01:07 PM, 05 Apr 2023
    я видимо чего-то вообще не понимаю про условия в ON
    https://fiddle.clickhouse.com/ad94507c-89d7-4a70-9b1d-893081bc6636
  • https://t.me/clickhouse_ru
    я понимаю что в ON запихали, и в КХ баг. Просто по идее это в where должно(могло бы) быть https://fiddle.clickhouse.com/5df47454-12ab-46e2-b4da-61b8bf263186
  • https://t.me/clickhouse_ru
    в данном случае да, в WHERE
    но когда это в лефт джойне то зачем в WHERE тянуть
  • https://t.me/clickhouse_ru
    @MakeReady #319401 01:11 PM, 05 Apr 2023
    но с лефтом вроде все корректно
    https://fiddle.clickhouse.com/6b51f62e-7bfd-4282-81e7-aecd0cd64cce
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    это логично
  • https://t.me/clickhouse_ru
    @MakeReady #319404 01:21 PM, 05 Apr 2023
    а вот это не логично
    https://fiddle.clickhouse.com/bb4fa99c-8fa2-4e24-b192-79988fc89cc9
  • https://t.me/clickhouse_ru
    это одно и тоже, вот результат из PG

    psql=> CREATE TABLE t1 (uid int, name char(6)) ;
    CREATE TABLE
    psql=> CREATE TABLE t2 (uid2 int, name2 char(6));;
    CREATE TABLE
    psql=> INSERT INTO t1 VALUES (1231, 'John');
    INSERT 0 1
    psql=> INSERT INTO t2 VALUES (1231, 'X');
    INSERT 0 1
    psql=> SELECT t1.*,t2.* FROM t1
    psql-> RIGHT JOIN t2 ON (t2.uid2 = t1.uid and t2.name2='Alice');
    uid | name | uid2 | name2
    -----+------+------+--------
    | | 1231 | X
    (1 row)
  • https://t.me/clickhouse_ru
    не понимаю
    из t2 же ничего не должно выбраться
  • https://t.me/clickhouse_ru
    @MakeReady #319407 01:25 PM, 05 Apr 2023
    а так как она справа то и общий результат должен быть пустым
  • https://t.me/clickhouse_ru
    left join и right join это одно и тоже если местами поменять таблицы
  • https://t.me/clickhouse_ru
    @MakeReady #319409 01:26 PM, 05 Apr 2023
    так я не меняю
    я говорю, прицепи мне к t2 при том что t2.name2='Alice'
    но такого там нет и я ожидаю видеть пустой результат
  • https://t.me/clickhouse_ru
    @MakeReady #319411 01:36 PM, 05 Apr 2023
    имхо должен быть вот такой результат
    https://fiddle.clickhouse.com/fdc74060-4e84-45d5-ad51-a3af78bac1d3

    но в целом ладно, раз условие в ON влияет только на присоединение и никак не мешает «основной» таблице, то просто буду знать

    Спасибо!
  • @ivanio11 #319412 01:38 PM, 05 Apr 2023
    Всем привет , подскажите
    Если в order by указано (id,id_2)
    И я делаю запрос select * from t where id_2 = 2
    По сути произойдёт фулскан ?
  • https://t.me/clickhouse_ru
    @vlkharlamov #319413 01:39 PM, 05 Apr 2023
    Как повезёт (зависит от однородности данных), но если индекс позволяет, то нет, не фулл скан
  • https://t.me/clickhouse_ru
    outer join возвращает все строки и не фильтрует, это просто условие как соединять

    https://dataschool.com/how-to-teach-people-sql/difference-between-where-and-on-in-sql/

    The join condition is different in this query. The LEFT JOIN brings in every row and the data that is JOINed in from linkedin only happens when facebook.name = linkedin.name AND facebook.city = ‘SF’. It does not filter out all of the rows that didn’t have facebook.city = ‘SF’
  • зависит от кардинальности id, если у вас там UUID, то да, считайте фулскан
  • именно)
  • https://t.me/clickhouse_ru
    Спасибо
    я просто за всю свою практику не пихал в ON условий
    во первый потому что в принципе предпочитал FROM t1,t2 а во вторых, это скорее КХ вынудил пытаться сначала ограничить явным образом а потом соединять, ну и от лени чтобы не писать подзапрос…
  • https://t.me/clickhouse_ru
    Еще раз спасибо! Как всегда конструктивно и с пользой! )
  • https://t.me/clickhouse_ru
    в КХ все чуть сложнее и как бы нет table scan.

    чтение всегда начинается из индекса.
    если у id маленькая кардинальность, то можно будет найти гранулы где id_2 = 2

    индекс:
    гранула | id | id2
    1 6 1
    2 6 1
    3 6 2
    4 6 2
    5 6 3

    т.е. потому что id одинаковый в соседних гранулах, можно предполагать что id2=2 нету в 1,2 и 5-й гранулах

    https://gist.github.com/den-crane/cbc6f0777d03a00417d70018378d360d
  • @nikvst #319420 02:03 PM, 05 Apr 2023
    Привет!

    У меня проблема с rabbitmq engine на ch 23.2.4.12, консюмеры создают большую нагрузку на cpu.
    Кто-нибудь сталкивался с таким?

    Таблица с rabbitmq_num_consumers = 1, rabbitmq_num_queues = 1, rabbitmq_flush_interval_ms = 7500 через MaterializedView переливает данные в ReplicatedMergeTree, вроде все по документации.

    Нагрузка есть даже тогда, когда очередь пустая
  • https://t.me/clickhouse_ru
    200% constant CPU usage while using RabbitMQ intergation on 23.2.4 revision 54461 (docker image) · Issue #48103 · ClickHouse/ClickHouse

    I reproduce the problem as follows. Start docker image (latest from here https://hub.docker.com/r/clickhouse/clickhouse-server) docker run -d --link rabbit1 --hostname clicktest1 clickhouse/clickho...

  • @Antonio_Gonzales #319422 02:12 PM, 05 Apr 2023
    Почему мерж партов может идти медленно? Есть кластер из 3 КХ версии 22.4.5.9. Вставка идет только в 1 КХ.
    На 2 накопилось большое количество партов и они не мержатся, либо мержатся очень медленно. Наблюдаю 80 активных партов и 6000 неактивных для таблицы, причем висит больше число партов за прошлые партиции. Optimize table не помогает.
    Как можно подтолкнуть КХ сделать старые мержи?
  • @nikvst ↶ Reply to #319421 #319423 02:19 PM, 05 Apr 2023
    похоже на мою проблему, спасибо
  • https://t.me/clickhouse_ru
    это баг в 22.4
    он забывал про неактивные парты https://github.com/ClickHouse/ClickHouse/issues/38807
    обновитесь в 22.4.6.53

    v22.4.6.53-stable.md:* Backported in [#38593](https://github.com/ClickHouse/ClickHouse/issues/38593): Fix parts removal (will be left forever if they had not been removed on server shutdown) after incorrect server shutdown. [#38486](https://github.com/ClickHouse/ClickHouse/pull/38486) ([Azat Khuzhin](https://github.com/azat)).
  • https://t.me/clickhouse_ru
    @dmchub #319425 03:06 PM, 05 Apr 2023
    Всем привет!
    Нам приходят данные такого типа:
    type_id transaction
    1 'aaaaaaaaaa'
    2 'bbbbbbbbbb'
    1 'aaaaaaaaaa'
    3 'aaaaaaaaaa'
    1 'bbbbbbbbbb'
    Необходимо, чтобы по точному списку типов возвращались транзакции с таким типом - т.е.:
    запрос {1} ничего не вернёт
    {1,2} вернёт 'bbbbbbbbbb'
    {1,3} вернёт 'aaaaaaaaaa'
    Как такое можно такое сделать без рекурсивного чтения всей таблицы?
  • с такой схемой без полного чтения никак, непонятно что вы имеете ввиду под рекурсивным чтением, достаточно 1 раз прочитать
  • https://t.me/clickhouse_ru
    @dmchub ↶ Reply to #319426 #319427 03:20 PM, 05 Apr 2023
    а как тогда искать транзакции, если нам приходит массив типов? например {1,1004, 10101, 8009, 400000} - получается надо либо список транзакции для конкретного массива хранить в матвью либо каждый раз под конкретный массив сканировать таблицу
  • https://t.me/clickhouse_ru
    @Emeleev_Ruslan #319429 03:36 PM, 05 Apr 2023
    Добрый день! Кто-нибудь знает какие-нибудь курсы по ClickHouse для команды разработки? Где можно узнать о лучших практиках при работе с ClickHouse и т.п.
  • https://t.me/clickhouse_ru
    Не делай JOIN, вставляй большими пачками .... Лучшие практики :)
  • https://t.me/clickhouse_ru
    Делайте плоские таблицы, не любите join, любите окна, выбирайте только нужные вам поля, а не *.
  • @aoparin #319432 03:38 PM, 05 Apr 2023
    ещё, правильно выбирай order by у таблицы ;)
  • https://t.me/clickhouse_ru
    Точно, забыл, вставка и выгрузка блоками а не отдельными инсертами
  • https://t.me/clickhouse_ru
    Точняк, забудь про классику от id :)
  • получается так, и если у одной транзакции в среднем мало типов, то мат вью особо не поможет, так как записей сильно меньше не станет

    передавайте сразу много массивов, чтобы за один раз прочитать всё что надо, а не дёргать запрос на каждую комбинацию
  • https://t.me/clickhouse_ru
    @dmchub ↶ Reply to #319435 #319436 03:43 PM, 05 Apr 2023
    Спасибо
  • https://t.me/clickhouse_ru
    Запрос наверное избитый. Но как не использовать JOIN, если требуется связать таблица фактов с рядом справочников?
  • https://t.me/clickhouse_ru
    Словари
  • https://t.me/clickhouse_ru
    @konnectrl #319439 03:46 PM, 05 Apr 2023
    Справочники в OLTP хранилище и всё, либо перед вставкой в CH ... Абсолютно пофигу CH сколько у вас одинаковых записей в колонке
  • вот скоро будет быстрый старт, говорят, что бесплатно https://clickhouse.com/company/events/clickhouse-workshop
    ClickHouse Workshop

    Apr 12 & 13 - You've heard about the power and performance of ClickHouse. Maybe you've even tried it yourself. In this 2-day (3 hrs per day) instructor-led workshop, you will learn what you need to be successful quickly.

  • https://t.me/clickhouse_ru
    @Emeleev_Ruslan #319441 03:54 PM, 05 Apr 2023
    спасибо
  • https://t.me/clickhouse_ru
    Если справочники маленькие и это не матрешка, то почему бы и не JOIN
  • https://t.me/clickhouse_ru
    сейчас попробовал на проде на настоящем запросе , справочник 150тыс. строк

    3 dictGet Elapsed: 0.019 sec.
    1 join (теже 3 поля) Elapsed: 0.058 sec.
  • https://t.me/clickhouse_ru
    @vlkharlamov #319445 04:15 PM, 05 Apr 2023
    ну сложно представить, что словарь будет медленнее чем джоин, там же вопрос в памяти только
  • https://t.me/clickhouse_ru
    @den_crane #319446 04:17 PM, 05 Apr 2023
    ну теоритически может, у меня есть словари на 40 атрибутов, если все атрибуты нужны, это 40 походов в 40 хеш-таблиц, джойн может быстрее, это будет одна хеш таблица
  • https://t.me/clickhouse_ru
    Если надо только по коду название то наверняка так
  • https://t.me/clickhouse_ru
    Вот я о таком
  • https://t.me/clickhouse_ru
    @vlkharlamov #319449 05:20 PM, 05 Apr 2023
    А есть вариант перевести такую структуру:
    date, name, value

    в

    date, name_1, name_2, ..., name_n
    ..., value, value, ..., value

    name_1, ..., name_n — уникальные значения из name?
  • https://t.me/clickhouse_ru
    select date,
    anyIf(value, name='name_1') as name_1,
    anyIf(value, name='name_2') as name_2,
    group by date

    https://kb.altinity.com/altinity-kb-queries-and-syntax/pivot-unpivot/
  • https://t.me/clickhouse_ru
    Привет, Сергей! в итоге через tsv залилось, при этом как-то в 10 раз быстрее, чем через csv, типа 300к за секунд 20. То есть точно пачки
  • https://t.me/clickhouse_ru
    А теперь попробуйте через родного клиента и зальется за секунды
  • 06 April 2023 (140 messages)
  • @tormew #319454 12:47 AM, 06 Apr 2023
    Как данные вставлять в такое поле
    field1 Array(Nested(
    id BIGINT,
    name String
    )),
  • https://t.me/clickhouse_ru
    Nested УЖЕ Array.

    99% вам надо

    field1Nested(
    id BIGINT,
    name String
    ),

    это два массива

    values ( ...., [id, id1, id2], [name1,name2,name3], ...)
  • @tormew ↶ Reply to #319455 #319456 12:50 AM, 06 Apr 2023
    это превращается в колонки field.id, field1.name
    а мне нужен массив, а не 1 значение
  • https://t.me/clickhouse_ru
    доку читайте

    https://fiddle.clickhouse.com/f6a59d73-5de7-4df0-af2e-e695ada50c32
  • @tormew ↶ Reply to #319457 #319458 01:03 AM, 06 Apr 2023
    ссылку на доку подскажите
  • https://t.me/clickhouse_ru
    Доброе утро! Если честно, по доке не понял, как через родного клиента сделать с облаком, поэтому искал обходные пути, но не через INSERT.
  • https://t.me/clickhouse_ru
    Ну так вам же просто подключиться нужно, облако яндекса ?
  • https://t.me/clickhouse_ru
    Ага, облако Яндекса, в ограниченных сроках не сложилась картинка, как через клиента файл затянуть туда, файл же должен быть уже локально на сервере? а значит туда надо как-то попасть, где логопас на сервер не нашел =)
  • https://t.me/clickhouse_ru
    https://cloud.yandex.com/en-ru/docs/managed-clickhouse/operations/connect#clickhouse-client

    +

    https://clickhouse.com/docs/en/integrations/data-formats/csv-tsv
  • https://t.me/clickhouse_ru
    Нет, не нужно ... Вам нужно файл иметь у себя на машине где есть clickhouse-client
  • https://t.me/clickhouse_ru
    @firefedot #319464 04:56 AM, 06 Apr 2023
    HiPhi Z AT, 2023, 3 км
    https://www.avito.ru/amurskaya_oblast_blagoveschensk/avtomobili/hiphi_z_2023_2745210572?utm_campaign=native&utm_medium=item_page_android&utm_source=soc_sharing
    HiPhi Z, 2023 купить в Благовещенске | Автомобили | Авито

    HiPhi Z, 2023: объявление о продаже авто в Благовещенске на Авито. Цена указана с учетом всех затрат, таможенных этапов включая пакет документов для дальнейшего постановки на учет, по курсу валют на день опубликования объявления. Gaohe HiPhi Z Четырёхместная версия Январь 2023. Имеет 32 датчика: 1 LIDAR, 13 камер, 5 радаров, 12 ультразвуковых радаров, 1 датчик рулевого управления. Оснащён программируемыми матричными фарами с возможностью проецирования изображения на поверхности. Два электромотора выдают суммарную мощность в 672 л.с. и 820 Нм крутящего момента. Представленный на фото автомобиль...

  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    @gsh404 #319467 06:40 AM, 06 Apr 2023
    Всем привет! Подскажите, пожалуйста, хотим хранить в clickhouse данные обновления стаканов на биржах, 1 день одной биржи в csv - примерно 1 гб веса.

    Безопасно ли их записывать в одну таблицу, например, orderbook или лучше сделать на каждый день и каждую биржу отдельную таблицу в формате orderbook_binance_06042023?
  • https://t.me/clickhouse_ru
    @gsh404 #319468 06:41 AM, 06 Apr 2023
    Может у кого то есть опыт хранения данных в больших объемах, хотелось бы найти рекомендацию, как лучше структурировать БД
  • https://t.me/clickhouse_ru
    1 гигабайт это разве много ?)
  • https://t.me/clickhouse_ru
    @konnectrl #319470 06:50 AM, 06 Apr 2023
    Запихивайте спокойно в одну таблицу :)
  • https://t.me/clickhouse_ru
    @gsh404 ↶ Reply to #319469 #319471 06:51 AM, 06 Apr 2023
    1гб * 5 бирж * 365 дней * 3 года = 5,47 тб
  • https://t.me/clickhouse_ru
    @vlkharlamov #319472 06:52 AM, 06 Apr 2023
    у нас 1 день таблички несколько террабайт и все работает
  • https://t.me/clickhouse_ru
    @vlkharlamov #319473 06:52 AM, 06 Apr 2023
    а данных за 5 лет
  • https://t.me/clickhouse_ru
    Короче вам кликхауса до скончания веков хватит ...
    Вопрос, вы аналитику будете делать по каждой отдельной бирже или вместе ?
  • https://t.me/clickhouse_ru
    @gsh404 ↶ Reply to #319474 #319475 06:53 AM, 06 Apr 2023
    Мы будем делать выборочные запросы, иногда взять 1 год, иногда 3, иногда 1 биржу, иногда все
  • https://t.me/clickhouse_ru
    Ну тогда кладите в одну таблицу всё
  • https://t.me/clickhouse_ru
    @gsh404 ↶ Reply to #319476 #319478 06:54 AM, 06 Apr 2023
    спасибо!
  • @d_gordyushin #319479 06:57 AM, 06 Apr 2023
    Добрый день.
    Знающие люди, подскажите пожалуйста в чем может быть проблема.
    Пытаемся перевести старые большие таблицы ClickHouse с движком MergeTree на движок ReplicatedMergeTree. Размер таблиц порядка 3 терабайт.
    Действуем по инструкции из официальной документации: переименовываем старые таблицы, создаем новые с движком ReplicatedMergeTree с прежними именами. Далее переносим данные из старых таблиц в новые в папку detached и приаттачиваем ее к новой таблице:
    SELECT DISTINCT partition_id FROM system.detached_parts WHERE table='metrics'
    ALTER TABLE metrics ATTACH PARTITION 19700101 (partition_id из первого запроса)
    Запрос ошибок не выдает, пишет ок, но ничего не происходит. В логах можно найти такое:
    <Debug> executeQuery: (from 127.0.0.1:33210) ALTER TABLE metrics ATTACH PARTITION 19700101 (stage: Complete)
    <Trace> ContextAccess (default): Access granted: INSERT ON graphite.metrics
    <Debug> graphite.metrics: Looking for parts for partition 19700101 in detached/
    <Debug> graphite.metrics: 0 of them are active
    <Debug> graphite.metrics: Checking 0 parts
    <Debug> MemoryTracker: Peak memory usage (for query): 0.00 B.
    <Debug> TCPHandler: Processed in 0.001350049 sec.
    Самое странное, что на тестовом стенде все это прекрасно работает - отличие только в том, что на стенде таблицы заполнены только свежими данными и в гораздо меньшем объеме, но в остальном - ровно тоже самое...
  • Спасибо про указание на баг старых неактивных партов.
    Есть смежная проблема возможно связанная с мержами: метрики ClickHouseAsyncMetrics_ReplicasMaxAbsoluteDelay периодически стали подниматься выше 1 минуты. Подозревал что КХ мержит накопившиеся старые парты, но если баг в том, что КХ "забывал" про мержи, почему может расти метрика на сервере репликации?
  • https://t.me/clickhouse_ru
    @dmikulikov #319481 07:58 AM, 06 Apr 2023
    Всем привет! Хочу подключить кликхаус на локальной машине к datalens.yandex.com через https. Доменного имени нет. Сертификат самоподписанный. В настройках на сервере указаны сертификаты и всё что нужно для self-signed
    <server>
    <certificateFile>/etc/clickhouse-server/server.pem</certificateFile>
    <privateKeyFile>/etc/clickhouse-server/server.key</privateKeyFile>
    <verificationMode>none</verificationMode>
    <loadDefaultCAFile>true</loadDefaultCAFile>
    ...
    </server>
    <client>
    <loadDefaultCAFile>true</loadDefaultCAFile>
    ...
    <invalidCertificateHandler>
    <!-- Use for self-signed: <name>AcceptCertificateHandler</name> -->
    <name>AcceptCertificateHandler</name>
    </invalidCertificateHandler>
    </client>

    Попытка коннекта от даталенза заканчивается ошибкой
    HTTPSConnectionPool(host='-', port=8443): Max retries exceeded
    Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:996)'))

    В логах сервера в момент запроса ошибка SSL BAD_PACKET_LENGTH
    <Error> ServerErrorHandler: Code: 210. DB::NetException: SSL Exception: error:10000070:SSL routines:OPENSSL_internal:BAD_PACKET_LENGTH, while reading from socket (178.154.242.166:57330). (NETWORK_ERROR)

    Подскажите плиз, что то не так с настройками или вообще с самоподписанным сертификатом не получится общаться с внешними сервисами с SSL? Пробовал также подписывать сертификат на сервере своим собственным CA и указывать в настройках <caConfig>/etc/clickhouse-server/ca.pem</caConfig> и <loadDefaultCAFile>false</loadDefaultCAFile>
  • https://t.me/clickhouse_ru
    Дак обратитесь в поддержку яндекса
  • https://t.me/clickhouse_ru
    Я написал, но они там продвигают свои облачные БД, вряд ли будут помогать мне настроить мою бесплатную)
  • @ishtan_ru #319484 08:23 AM, 06 Apr 2023
    Доброго, дамы и господа!
    Не могли бы проконсультировать по возможности по данному вопросу? (вопрос не я формулировал)

    "грубо говоря вставляем записи в таблицу с движком mergetree, делаем optimize table, смотрим в system.parts - слишком долго лежат inactive parts, удаляются слишком долго, можно ли процесс удаления настроить"

    Подробности по установленному ПО
    ADQM 22.8.6.71_arenadata1_b1-1
    ADQMDB 22.8.6.71_arenadata1

    В сети находили, что нужно поправить строку max_part_removal_threads в config.xml - но там я эту сроку не вижу в упор.
    Может кто с таким встречался?
  • https://t.me/clickhouse_ru
    Если они используются,то они не удалятся :)
  • @AlexNikkoo #319486 08:43 AM, 06 Apr 2023
    /stat@combot
  • https://t.me/clickhouse_ru
    @combot #319487 b o t 08:43 AM, 06 Apr 2023
    Total messages: 319486
  • https://t.me/clickhouse_ru
    Думаю стоит задать этот вопрос в саппорт datalens
  • https://t.me/clickhouse_ru
    @utkinmaximand #319490 10:05 AM, 06 Apr 2023
    коллеги добрый день, есть какие то системные таблички чтобы следить за проекциями, сколько они места занимают или что-то подобное, кроме просто посмотреть что они используются query_log и explain, и как можно оценить сколько партов засечек используется при запросе с проекцией?
  • @635404397 #319491 10:29 AM, 06 Apr 2023
    всем привет. обновился до 23.3 (с 22.11), появилась ошибка:

    2023.04.06 10:27:12.078214 [ 116 ] {} <Warning> myplant.idx_ts_data_double_monthly_bitmap (ReplicatedMergeTreeRestartingThread): Table was in readonly mode. Will try to activate it.
    2023.04.06 10:27:12.090132 [ 116 ] {} <Error> myplant.idx_ts_data_double_monthly_bitmap (ReplicatedMergeTreeRestartingThread): Couldn't start replication (table will be in readonly mode): Transaction failed (No node): Op #1, path: /clickhouse/tables/d61c0c9f-3d00-441f-bd76-df3232d5b738/0/replicas/chi-clickhouse-myplant-0-1/parts/all_2486840_2486840_0. Code: 999. Coordination::Exception: Transaction failed (No node): Op #1, path: /clickhouse/tables/d61c0c9f-3d00-441f-bd76-df3232d5b738/0/replicas/chi-clickhouse-myplant-0-1/parts/all_2486840_2486840_0. (KEEPER_EXCEPTION), Stack trace (when copying this message, always include the lines below):

    0. DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0xe18d895 in /usr/bin/clickhouse
    1. Coordination::Exception::Exception(String const&, Coordination::Error, int) @ 0x14e9aeb0 in /usr/bin/clickhouse
    2. Coordination::Exception::Exception(String const&, Coordination::Error) @ 0x14e9b1d8 in /usr/bin/clickhouse
    3. zkutil::KeeperMultiException::KeeperMultiException(Coordination::Error, std::vector<std::shared_ptr<Coordination::Request>, std::allocator<std::shared_ptr<Coordination::Request>>> const&, std::vector<std::shared_ptr<Coordination::Response>, std::allocator<std::shared_ptr<Coordination::Response>>> const&) @ 0x14eb1904 in /usr/bin/clickhouse
    4. zkutil::KeeperMultiException::check(Coordination::Error, std::vector<std::shared_ptr<Coordination::Request>, std::allocator<std::shared_ptr<Coordination::Request>>> const&, std::vector<std::shared_ptr<Coordination::Response>, std::allocator<std::shared_ptr<Coordination::Response>>> const&) @ 0x14ea6812 in /usr/bin/clickhouse
    5. DB::StorageReplicatedMergeTree::removePartAndEnqueueFetch(String const&, bool) @ 0x13fe21cf in /usr/bin/clickhouse
    6. DB::ReplicatedMergeTreeQueue::createLogEntriesToFetchBrokenParts() @ 0x146d9981 in /usr/bin/clickhouse
    7. DB::ReplicatedMergeTreeRestartingThread::tryStartup() @ 0x14714e37 in /usr/bin/clickhouse
    8. DB::ReplicatedMergeTreeRestartingThread::runImpl() @ 0x14713d96 in /usr/bin/clickhouse
    9. DB::ReplicatedMergeTreeRestartingThread::run() @ 0x14712c7a in /usr/bin/clickhouse
    10. DB::BackgroundSchedulePoolTaskInfo::execute() @ 0x126dfd86 in /usr/bin/clickhouse
    11. DB::BackgroundSchedulePool::threadFunction() @ 0x126e2c6a in /usr/bin/clickhouse
    12. ? @ 0x126e3aae in /usr/bin/clickhouse
    13. ThreadPoolImpl<std::thread>::worker(std::__list_iterator<std::thread, void*>) @ 0xe25cc73 in /usr/bin/clickhouse
    14. ? @ 0xe2628e1 in /usr/bin/clickhouse
    15. ? @ 0x7f367f7eab43 in ?
    16. ? @ 0x7f367f87ca00 in ?
    (version 23.3.1.2823 (official build))

    1 шард, 2 реплики. ошибка только на одной из реплик
    это известная проблема? как решать?
  • @635404397 #319492 10:31 AM, 06 Apr 2023
    drop replica && restore replica?
  • https://t.me/clickhouse_ru
    @AlexMorti #319493 10:32 AM, 06 Apr 2023
    А как можно вставить большой обьем данных через insert into select? Но есть ограничение по памяти 25гб , больше не могу использовать
  • разбить на несколько insert select поменьше?
  • https://t.me/clickhouse_ru
    Сортировать и запоминать последний id?
  • @705222528 #319496 10:39 AM, 06 Apr 2023
    ну да
  • https://t.me/clickhouse_ru
    Такая же проблема
    Загружаем по несколько дней за раз
  • https://t.me/clickhouse_ru
    А как решили? )
  • https://t.me/clickhouse_ru
    @grigory_korin #319499 10:43 AM, 06 Apr 2023
    Ну вот так и решили — данные в кх заливаем по несколько дней за операцию. Если таблица сильно жирная, то по одному дню
  • @635404397 #319501 10:49 AM, 06 Apr 2023
    еще вопрос. после обновления до 23.3 в логе очень много сообщений:

    2023.04.06 10:47:34.066610 [ 264 ] {2aaf9ef9-0719-45ce-b9e0-6a5db51a0012::201703_5085_15532_3508} <Information> myplant.ts_data_double_raw (2aaf9ef9-0719-45ce-b9e0-6a5db51a0012): The part /clickhouse/tables/2aaf9ef9-0719-45ce-b9e0-6a5db51a0012/0/replicas/chi-clickhouse-myplant-0-0/parts/201703_5085_15532_3508 on a replica suddenly appeared, will recheck checksums

    кажется на каждый insert появляется. это норма? что вообще значит это сообщение?
  • @tormew #319502 10:55 AM, 06 Apr 2023
    как вставить этот тип????
  • https://t.me/clickhouse_ru
    у меня просто и день не влазиет (( слишком много
  • https://t.me/clickhouse_ru
  • Вам же уже говорили, что nested это уже массив и что дополнительно в массив оборачивать не надо. Если не устраивает, что оно преобразуется в набор связанных массивов field.name1 field.nam2 то установите настройку flatten_nested=0
  • @tormew ↶ Reply to #319504 #319506 11:14 AM, 06 Apr 2023
    спасибо
  • https://t.me/clickhouse_ru
    @MakeReady #319507 11:18 AM, 06 Apr 2023
    Добрый день!
    Можно ли как-то поймать причину не переноса записи матвьюшкой?
  • https://t.me/clickhouse_ru
    @Dm3Ch #319509 11:57 AM, 06 Apr 2023
    Привет! А подскажите, пожалуйста, почему CH (version 22.3) может упираться в полку по CPU (~16), если на системе ~60 ядер (HT vCore), а max_threads стоит 32?
    CGroup контейра без лимитов, на сервере LA тоже в районе 16 (то есть "свободное" CPU время есть)

    Подозреваю, что есть какая-то настройка которая лимитирует потребление CPU
  • https://t.me/clickhouse_ru
    @nickitat #319510 11:59 AM, 06 Apr 2023
    посмотрите на пайплайн для начала
  • https://t.me/clickhouse_ru
    @MakeReady #319511 12:00 PM, 06 Apr 2023
    можно ли дропнуть все таблицы схемы не дропая саму схему?
  • https://t.me/clickhouse_ru
    @Lobodets #319512 12:03 PM, 06 Apr 2023
    Доброго времени суток. Подскажите, как можно дропнуть раздел таблицы, разбитой по колонке типа Int, используя номер раздела, который возвращает функция? Идея в том, чтобы использовать запрос типа ALTER TABLE schema.table DROP PARTITION get_part_number_to_drop();
  • https://t.me/clickhouse_ru
    ALTER TABLE schema.table DROP PARTITION tuple(get_part_number_to_drop());
  • https://t.me/clickhouse_ru
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-server-config-files/

    https://clickhouse.com/docs/en/operations/settings/merge-tree-settings#old-parts-lifetime
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    нет, настройки которая лимитирует hard

    вот такой запрос сколько ядер использует?
    select avg(number) from numbers_mt(10) settings max_threads = 32
  • https://t.me/clickhouse_ru
    system.parts
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    на самом деле нет.

    system.projection_parts
  • https://t.me/clickhouse_ru
    @utkinmaximand #319520 12:22 PM, 06 Apr 2023
    оооо супер, выручаете, спасибо большущее
  • https://t.me/clickhouse_ru
    вам зачем 22.4 ? это принципиально или просто так получилось?
  • @lainiwa6 #319522 12:42 PM, 06 Apr 2023
    привет всем!
    подскажите, пожалуйста, как побороть недостаточное использование ресурсов машины кликхаусом?
    использую k8s оператор, реквесты и лимиты пода одинаковые (60 CPU)
    но кликхаус использует максимум 16 ядер (точнее ~15.9) даже на большом OPTIMIZE FINAL запросе
    версия кликхауса 23.2
  • https://t.me/clickhouse_ru
    @Dm3Ch ↶ Reply to #319516 #319523 12:43 PM, 06 Apr 2023
    @lainwa6 ^
  • возвращает 4.5
    независимо от числа max_threads
    попробовал с max_threads=32, max_threads=1, max_threads=64
  • Давно не обновлял. За версию не держусь. Какую рекомендуете?
  • https://t.me/clickhouse_ru
    @MakeReady #319526 01:19 PM, 06 Apr 2023
    Все же как можно найти почему выпадают записи из мат вью?
  • https://t.me/clickhouse_ru
    @MakeReady #319527 01:24 PM, 06 Apr 2023
    может «не успевать» изза LEFT JOIN ов?
  • https://t.me/clickhouse_ru
    @s_nikolajus #319528 01:46 PM, 06 Apr 2023
    Привет! Для Clickhouse-backup, тот пользователь которым подключаемся к КХ, какие минимальные права нужны чтобы делать бэкапы?
    SHOW, SELECT on db.*?
    На базах которые хочу бэкапить? Не могу найти описания нормального.
  • https://t.me/clickhouse_ru
    Проверьте связь ch и zk
  • @kirik_sec #319530 02:18 PM, 06 Apr 2023
    Всем привет
    Использует ли кто-нибудь клиентов отличных от бобра для работы с кликом? Если да, то какие самые распространенные?
    Имеется ввиду GUI клиенты, для выполнения SQL аналитиками
  • @kirik_sec #319531 02:20 PM, 06 Apr 2023
    Сейчас наткнулись на багу в бобре довольно тупую
    1. создаём любую distributed таблицу
    2. заливаем данные в неё
    3. создаём любую вьюху над таблицей из 1.
    count(*) в таблице и вьюхе не совпадает

    в консольном клиенте такого нет
    из-за этого все вьюхи поломались
  • https://t.me/clickhouse_ru
    Alter table freeze

    Самое главное чтобы прошёл

    И select из system таблиц
  • https://t.me/clickhouse_ru
    @ivan_klass #319533 02:25 PM, 06 Apr 2023
    Всем привет. Столнулся с тем, что CH ни в какую не хочет делать два arrayJoin-а на одно и то же выражение - i.e. "cartesian product". Выдаёт только пары где первый элемет равен второму. Кто-нибудь знает, как это обойти?
  • https://t.me/clickhouse_ru
    arraySort для второго

    https://github.com/ClickHouse/ClickHouse/issues/24225
    Multiple arrayJoins with same expression being calculated only once. · Issue #24225 · ClickHouse/ClickHouse

    Clickhouse replaces second arrayJoin with result of first, but most likely it's not what users want in this situation. How to reproduce clickhouse version 21.6 SELECT arrayJoin([1, 2, 3, 4]) AS...

  • https://t.me/clickhouse_ru
    Точно, оно! Спасибо большое!
  • https://t.me/clickhouse_ru
    @ivan_klass #319536 02:31 PM, 06 Apr 2023
    Зря его закрыли, конечно. Ладно бы чёрным по белому в документации были упоминания
  • @o_terjeshkin #319537 02:37 PM, 06 Apr 2023
    Привет! Подскажите, у меня серваки постоянно утилизированы на 100% по cpu. При этом все работает стабильно, без нареканий. Можно как то ограничить утилизацию через конфиги?
  • max_threads?
    а что значит работает стабильно? Запросы не зависают и все быстро выполняются?
  • @o_terjeshkin #319539 02:45 PM, 06 Apr 2023
    Да
  • @o_terjeshkin #319540 02:46 PM, 06 Apr 2023
    Нагрузка на чтение у нас небольшая
  • @o_terjeshkin #319541 02:46 PM, 06 Apr 2023
    В основном запись Кафка энджин
  • а чем вы смотрите утилизацию?
    https://clickhouse.com/docs/en/operations/settings/settings#settings-max_threads
    Core Settings | ClickHouse Docs

    additionaltablefilters

  • @o_terjeshkin #319543 02:48 PM, 06 Apr 2023
    %cpu Zabbix
  • @o_terjeshkin #319544 02:48 PM, 06 Apr 2023
    Grafana визуализация
  • да и вообще)
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/high-cpu-usage/
  • @o_terjeshkin #319546 02:49 PM, 06 Apr 2023
    Спасибо
  • https://t.me/clickhouse_ru
    Понял, спасибо 🙏
  • https://t.me/clickhouse_ru
    @Ekaterina_Solodovnikova #319548 03:39 PM, 06 Apr 2023
    Друзья, а где можно поучиться основам ClickHouse? Есть ли хорошие курсы?
  • У Arenadata 😂
  • https://t.me/clickhouse_ru
    @Ekaterina_Solodovnikova #319550 03:41 PM, 06 Apr 2023
    Боюсь пойти по миру ))
  • https://t.me/clickhouse_ru
    Это будет SQL язык, или нет?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Больше построение базы, модели данных, оптимизация и тд
  • https://t.me/clickhouse_ru
    @MakeReady #319554 03:44 PM, 06 Apr 2023
    Неужели никто не знает куда копать почему в мат вью приезжают не все записи?
    Из криминала есть left join ы. Но поток записей не большой. Максимум несколько в секунду.
    Сейчас попробовал часть джойнов убрать.

    Но без джойнов не понятно как делать денормализацию? Лить раздельно в разные колонки какой нибудь agrigationMT?
  • https://t.me/clickhouse_ru
    сталкивался с проблемами в MV при использовании нескольких джоинов, но там был INNER, заменяемый на IN. так и решили заменой одного на другое
  • https://t.me/clickhouse_ru
    Мне Ин не подойдет, мне из джойнов данные нужны чтобы из чрезмерно нормализованных данных делать нормально для аналитики
  • https://t.me/clickhouse_ru
    @ghetto74 #319557 04:03 PM, 06 Apr 2023
    Привет! Подскажите, пожалуйста.
    У меня есть строка, в которой лежит массив сегментов, к которым подходит юзер '["seg1","seg2","seg3","seg4"]'. Но названия сегментов сложно читаемы, я бы хотел их назвать более человеческим языком
    seg1 - new
    seg2 - auth
    seg4 - active

    Но мне нужны не все сегменты, так как там их очень много, большая часть является технической информацией, которая мне не нужна. Я бы хотел вытащить часть сегментов, переназвать их, и создать массив. Но есть один момент: одному юзеру может отдаваться несколько сегментов. Еще мне может приходить противополный сегмент, который мне нужен, например, seg4 - это no_active, а мне нужен active, сегмента active нет, нужно просто вытащить юзеров, кому не приходит сегмент seg4

    Я подумал, что можно это решить через IF, который нужно отдать внутрь функции ARRAY

    array(
    if(match(segments, '"seg1"'), 'new', null),
    if(match(segments, '"seg2"'), 'auth', null),
    if(match(segments, '"seg4"'), null, 'active') -- противополжный сегмент, если юзеру не приходит seg4 - считаем, что юзер входит в сегмент active
    )

    Для сегментов, которые указал в начале сообщения при выполнения этого запроса, я бы хотел получить ['new','auth’], но получаю ['new','auth',NULL], как мне не отдавать NULL в массив?

    Пример: https://fiddle.clickhouse.com/168f0c58-3b9b-4ec3-a2c9-1ff8dcc19bba
    Версия КХ: 22.8.12.45
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Спасибо большое тебе
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #319557 #319560 04:15 PM, 06 Apr 2023
    Я думаю, есть много способов убрать null, например arrayDistinct.
  • https://t.me/clickhouse_ru
    Кажется, что это не слишком оптимально, я боюсь, что по производительности это очень сильно проиграет, но спасибо все равно
  • https://t.me/clickhouse_ru
    @ghetto74 #319562 04:17 PM, 06 Apr 2023
    Плюс мне бы хотелось иметь для каждого сегмента делать алтернативный вывод, например, если не пришел seg4 - то это active, если пришел , то no_active

    И таких сегментов много
  • @2070273164 #319563 04:17 PM, 06 Apr 2023
    Если вы потом по сегментам искать что-то будете, то это будет крайне медленно. Нормальный вариант - по Bool/UInt8 колонке на сегмент, а не массивы.
  • https://t.me/clickhouse_ru
    У меня может быть около 100 сегментов
  • Это немного
  • https://t.me/clickhouse_ru
    @ghetto74 #319566 04:19 PM, 06 Apr 2023
    Подумаю, спасибо
  • https://t.me/clickhouse_ru
    @ki_nanas #319568 05:55 PM, 06 Apr 2023
    Возьму желающих на обучение заработку на криптовалюте.
    Для начала торговли-арбитража необходим стартовый капитал.
    Предоплаты и аккаунты меня не интересуют ,в конце сделки мы подытожим ваш профит со сделки ,и тогда мы обсудим мой процент
    Вопросы на счет сотрудничества в личные сообщения
    🇦🇲🇷🇺🇺🇿🇰🇬🇰🇿🇧🇾
  • https://t.me/clickhouse_ru
    @fenogentov #319569 06:26 PM, 06 Apr 2023
    Надо получить последнее значение параметров
    выполняются несколько запросов
    SELECT * FROM history.measures
    WHERE unit_guid = ? AND tag = ? AND parameter = ?
    ORDER BY timestamp DESC
    LIMIT 1

    по ощущениям очень долгие запросы (это и понятно, все надо перелопатить и отсортировать)

    Можно как то оптимизировать этот запрос или в идиале сделать один запрос и получить все последние значения для unit_guid?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    argMax

    Без сортировки
  • https://t.me/clickhouse_ru
    @MakeReady #319572 07:21 PM, 06 Apr 2023
    kоги по работе матвью где-то есть?
  • https://t.me/clickhouse_ru
    я опечатался

    сколько ядер жрет вот этот запрос

    select avg(number) from numbers_mt(1e11) settings max_threads = 32;
  • https://t.me/clickhouse_ru
    select * from system.settings where changed
  • allow_drop_detached
    database_atomic_wait_for_drop_and_detach_synchronously
    distributed_directory_monitor_batch_inserts
    force_remove_data_recursively_on_drop
    insert_distributed_sync
    kafka_disable_num_consumers_limit
    log_queries
    log_queries_cut_to_length
    max_concurrent_queries_for_user
    max_result_rows
    result_overflow_mode
    s3_max_single_part_upload_size
    s3_min_upload_part_size
    timeout_before_checking_execution_speed
  • https://t.me/clickhouse_ru
    max_result_rows
    result_overflow_mode

    https://github.com/ClickHouse/ClickHouse/issues/44161
    https://github.com/ClickHouse/ClickHouse/issues/47257
  • https://t.me/clickhouse_ru
    помогите,плиз, с матвью
  • https://t.me/clickhouse_ru
    а смысл?
  • https://t.me/clickhouse_ru
    @den_crane #319579 07:33 PM, 06 Apr 2023
    джойн в матвью это приговор
  • https://t.me/clickhouse_ru
    ну то есть пропуски записей - ожидаемо при наличии джойна?
  • https://t.me/clickhouse_ru
    нет
  • а во что нужно max_result_rows поставить?
    чего-то не пойму по этим ишью и какой у него дефолт не найду
  • https://t.me/clickhouse_ru
    тогда почему приговор?

    какие альтернативы получения таблицы транзакций с добавленными данными?
  • https://t.me/clickhouse_ru
    @MakeReady #319584 07:37 PM, 06 Apr 2023
    там больше чем словари, условно + точка транзакции + оборудование на точке… везде по 2-3 поля которые надо подклеить
  • https://t.me/clickhouse_ru
    транзакции вам не помогут
    ну т.е. вы просто не осознаете race в вашей модели из-за паралльных вставок

    >тогда почему приговор?
    я 100 раз объяснял
    тормозятся же инсерты

    I don’t recommend using JOINs in MV because they slowdown inserts dramatically.
    CH uses a HashJoin algorithm and it requires to build a hash table in memory for the
    right table. And this hash table must be built for each block for every insert. It slows
    down inserts and wastes memory in case of parallel inserts.
  • https://t.me/clickhouse_ru
    да я это и перечитал и видео пересмотрел )
  • https://t.me/clickhouse_ru
    @MakeReady #319587 07:40 PM, 06 Apr 2023
    но тормозят ладно, пропадают почему?
  • https://t.me/clickhouse_ru
    ┌─name─────────────────┬─value─┐
    │ max_result_rows │ 0 │
    │ result_overflow_mode │ throw │
    └──────────────────────┴───────┘
    там в бивере в настройках наверное, через число строк в результате
  • https://t.me/clickhouse_ru
    вы просто не осознаете race в вашей модели из-за паралльных вставок
  • https://t.me/clickhouse_ru
    да, согласен
  • https://t.me/clickhouse_ru
    два паралеллельных инсерта не видят данных друг друга
  • https://t.me/clickhouse_ru
    есть рекомендации по получению денормализации?
  • https://t.me/clickhouse_ru
    ETL
  • https://t.me/clickhouse_ru
    вот это я опытнмм путем и интуитивно уже почти нашел ))
  • https://t.me/clickhouse_ru
    то есть либо до моей базы либо по крону CREATE OR REPLACE TABLE и внутри нужная склейка?
  • https://t.me/clickhouse_ru
    Посмотрите dbt
  • https://t.me/clickhouse_ru
    не очень понимаю чем он поможет
    проблема то простая - денормализация
    вопрос лишь в том как и чем ее делать
  • https://t.me/clickhouse_ru
    @MakeReady #319598 07:57 PM, 06 Apr 2023
    к фреймворкам у меня врожденная неприязнь )
  • 07 April 2023 (154 messages)
  • https://t.me/clickhouse_ru
    @afazulzyanov #319601 04:26 AM, 07 Apr 2023
    Доброго времени суток

    а почему тут toDate(MAX(dt)) стоит 7ое число?
    SELECT timeZone(), MAX(dt), toDate(MAX(dt)), toDate('2023-04-06 23:23:00') FROM ...
    Europe/Moscow | 2023-04-06 23:23:00 | 2023-04-07 | 2023-04-06
  • https://t.me/clickhouse_ru
    А где вы делаете запрос ?
  • https://t.me/clickhouse_ru
    @konnectrl #319603 04:51 AM, 07 Apr 2023
    Попробуйте выполнить в clickhouse-client .... Скорей всего ваш датагрип или дбивер врут :)
  • https://t.me/clickhouse_ru
    Спасибо, попробую

    Не ожидал от бобра такой подставы...
  • https://t.me/clickhouse_ru
    сверьте через toUnixTimestamp
  • https://t.me/clickhouse_ru
    Тут скорей не подстава https://fiddle.clickhouse.com/78c61ce4-df66-49ce-9fec-dfa0a393c782 . А что то напутана (изменил запрос)
  • https://t.me/clickhouse_ru
    По дебиверу этот запрос отрабатывает быстрее

    SELECT * FROM history.measures
    WHERE unit_guid = ? AND tag = ? AND parameter = ?
    ORDER BY timestamp DESC
    LIMIT 1
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319597 #319608 06:22 AM, 07 Apr 2023
    Денормализация - проблема не простая, а распространенная. Что не одно и тоже.

    Что делать "по простому", вы уже сами ответили - лить данные в AggMT. Только потом становится непонятно как оттуда быстро читать данные для отчетов. Неудобный ORDER BY и необходимость FINAL/GROUP BY сильно снижает применимость этого метода. Точечные запросы на 100-1000 строк работают более-менее, но сложные агрегации (среднее по какому-нибудь временному лагу за год) уже нет. Тем не менее этот метод можно использовать для небольших (до 100М строк) таблиц. У меня таким образом готовятся данные для словарей. Однако для миллиардных таблиц фактов ничего хорошего не получается.

    Если вы сможете уговорить OLTP команду сделать вам хороший ID (какой-нибудь snowflake), то границы применимости этого метода несколько расширятся. Можно будет хотя бы выборку по дате ограничивать. И играться с PREWHERE between min and max.

    > к фреймворкам у меня врожденная неприязнь

    Есть такое. Меня тоже DBT не впечатлил совсем. Вся эта навороченная махина делает только очень простые вещи. Самого нужного - инкрементальных обновлений считай что и нет. В последней версии курам на смех сделали инкрементальные обновления через LWD (light-wight-deletes), которые не то чтобы совсем работают, а если и работают, то тоже не то чтобы быстро. Варианта с CollapsingMT я там не нашел.

    Поэтому очевидный выход - пишите свой фреймворк. Внешний цикл, который делает ваш SELECT JOIN (по возможности не hash), а потом INSERT в таблицу фактов. В один тред. На одном сервере. Но можно миллионными блоками раз в минуту. Если поток ваших данных не такой большой, что этого миллиона в минуту хватает, то вам повезло, эта схема работает, дальше дело техники. Если же к вам прилетает несколько миллиардов строк в день/час, и вам надо паралелить потоки, то придется сделать полноценное шардирование - группы ID должны процессироваться от самого начала до самого конца ETL пайплайна совершенно независимо. И все компоненты вашего JOIN должны быть вовремя на месте, и еще куча приключений в паралельной среде с различными типами гонок.

    Это ни разу не просто. И это совсем не SQL в том виде как он задумывался и развивался до современных стандартов. То, что мы тут пишем на "типа SQL" с JOIN and GROUP BY не означает что у нас реляционная база. Clickhouse - это NoSQL база, с довольно интересным функциональным языком, напоминающим SQL и паралельной средой выполнения. Можно писать что угодно, как на java, но все равно получается сложно.
    Snowflake ID

    unique identifier format used by various platforms

  • "Clickhouse - это NoSQL база" - вот это поворот :)))
    NoSQL

    class of databases for storage and retrieval of modeled data other than relational databases

  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319609 #319610 06:43 AM, 07 Apr 2023
    Были сомнения? Вы статью в вики прочитайте. И современную расшифровку - Not-Only-SQL
  • Дак я ж не спорю. Но прозвучало как! Обсуждение SQL, а потом бац, и объявляем, что в общем-то КХ и не SQL даже :)))
  • @infisamk #319612 06:46 AM, 07 Apr 2023
    Кстати, если уж брать расшифровку NotOnlySQL, то аббревиатура должна быть уже NOSQL
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319611 #319613 06:47 AM, 07 Apr 2023
    Из этого распространенного заблуждения вылезает много недопониманий. Если бы люди представляли, что им вместо сумасшедших конструкций на JS как в монге выдали более-менее нормальный SQL, оставив при этом всю парадигму написания кода на обычном языке программирования, с полной ответственностью разработчика за все, то многих дискуссий тут бы и не было.
  • Потому я всегда и не любил различные фреймворки, ОРМ и подобное. SQL вполне себе не плохой язык для формализации запросов. Конечно, его не всегда хватает, и в целом, если думать только реляционной моделью, то в современном мире далеко не уедешь. Но вообще современные СУБД в большинстве своем уже давно стали "Не только SQL", существенно расширив тот самый SQL.
  • https://t.me/clickhouse_ru
    Большое спасибо за развернутый ответ!
    Сейчас у меня сделана внешняя функция, которая раз в 5 минут делает мне join-ы.
    Но так как структуры пока не устаканились, выполняется полная перезаливать данных, что постепенно тяжелеет.
    Думаю надо переделывать запросы на «доливку». Тут проблема с учетом изменений в словарях и то что исходные данные приносят яндексовый трансфер, который обновляемые записи приносит полагаясь на Replacing КХса. И разъезжаться данные стали из-за параллельности вставок/обновлений.
    Матвею в КХ выходит применим только для копий и агрегаций.
    Картина сложилась. Еще раз большое спасибо!
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319615 #319616 07:10 AM, 07 Apr 2023
    Понятия не имею кто такой яндексовый трансфер, но сразу возникает вопрос про ошибки (по аналогии с Кафкой). Вот он пришел со своим блоком, но что-то случилось и инсерт сломался. Этот "трансфер" придет снова? С тем-же самым блоком или уже с другим, чуть побольше? Будут дубликаты, которые вы вероятно борете через ReplacingMT/FINAL.
    И вот тут начинается самое интересное, когда вы попытаетесь сделать инкрементальные обновления.
  • https://t.me/clickhouse_ru
    @gsh404 #319617 07:17 AM, 07 Apr 2023
    Всем привет! Скажите, пожалуйста, если в таблице на десятки терабайт ячейки по timestamp хранятся в середине или в самом конце (последние данные) - есть ли разница по скорости селекта этих данных?
  • https://t.me/clickhouse_ru
    недоезжающих блоков пока за пол года не было
    а вот дублей, которые могут очень долго висеть - в достатке. В рабочей базе создается запись с идентификатором и датой создания, он ее приносит, следом в эту запись дописываются значений и он приносит ее еще раз с новым ключем для Replacing. Но не смотря на этот ключ обе записи могут жить очень долго.
    это еще одна причина переливки с дистинктом
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319617 #319619 07:20 AM, 07 Apr 2023
    Не важно где, важно чтобы вместе.
    Если вы выгребаете миллион строк, которые лежат вместе - where ts between min and max, то это одно, а если тот же миллион вразбивочку - where ts in (select ts from ... ) то совсем иное.
  • https://t.me/clickhouse_ru
    «where ts in (select ts from ... )» - это как. Не могу представить пример
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319618 #319621 07:22 AM, 07 Apr 2023
    Ну да, как в кафке at-least-once, иначе по простому не получится. Трудно вам придется с ингрементальными обновлениями, не за что там ухватиться - натуральные таймстемпы не подходят.
  • https://t.me/clickhouse_ru
    я со стороны аналитики и на прод, у которого на все это ответ, что надо быстрее бежать, влияния не имею
    но есть позитивный момент, я внешний и по опыту могу просто подождать, когда мои предупреждения сменятся реальной болью ))
  • https://t.me/clickhouse_ru
    это имеется ввиду когда даты выбираем по их наличию в другой таблице?
  • @nullptr_alike #319624 07:35 AM, 07 Apr 2023
    Добрый день!
    Вот так настраиваю клик в докере:
    clickhouse: container_name: clickhouse
    image: clickhouse/clickhouse-server:23-alpine environment:
    - CLICKHOUSE_DB=qryn - CLICKHOUSE_USER=username
    - CLICKHOUSE_PASSWORD=usersecret - CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1
    с clickhouse-client по 127.0.0.1:19000 могу подключится, но внутри docker-compose файла есть еще сервис, которому клик отвечает уже отказом (connection refused) что надо прописать чтобы клик принимал все соединения по сети?
  • https://t.me/clickhouse_ru
    @keksum666 #319625 07:47 AM, 07 Apr 2023
    Всем привет, по умолчанию JOIN отключен для соединения двух distributed таблиц, если я включу в настройках чтобы было можно, это как-то негативно повлияет на запрос? Почему по умолчанию это отключено?
  • внутри компоуза по имени сервиса, clickhouse:9000
  • это супер дорого, вам со всех шардов надо будет все данные в по сети переслать
  • https://t.me/clickhouse_ru
    Даже если условия будут которые сокращают выборку?
  • ну если у вас 2 записи остаётся, то конечно разницы не заметите, но потом кто-то напишет кривое условие и вы даже не узнаете. Поэтому обычно настройку не трогают, а пишут GLOBAL JOIN, чтобы все понимали при виде запроса что это узкое место и надо быть осторожным

    Ну и делайте join подзапроса на подзапрос, это правильный способ делать join в КХ. Тогда результаты подзапросов будут джойниться на инициаторе. И вы можете например сделать group by в подзапросе чтобы меньше данных было
  • https://t.me/clickhouse_ru
    @gsh404 #319630 07:57 AM, 07 Apr 2023
    а если хранить 300 терабайт данных (биржевой стакан) в одной таблице из которой будут вытаскиваться за разные периоды данные по таймстемпам, есть смысл делать partitions по date? задача чтобы данные можно старые удобно удалять, исправлять в случае форс мажоров
  • https://t.me/clickhouse_ru
    Окей, спасибо!
  • https://t.me/clickhouse_ru
    Ну так все зависит от времени хранения
  • https://t.me/clickhouse_ru
    бобер точно врет с временем
  • Если уж тут пошла речь про глюки бобра, то тоже на днях столкнулась с этим. Датагрип нормально отображал.
    PS: версия бобра последняя)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319630 #319635 08:05 AM, 07 Apr 2023
    Я бы иначе поставил вопрос - когда и почему надо НЕ делать партиционирование по дате, и даже более точно - по месяцам. Какие у вас есть основания и соображения, чтобы отойти от стандартного варианта?
  • Спасибо! Ошибок подключения больше не выдает, но и метрики не собирает ))) буду дальше копать
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #319636 #319637 08:07 AM, 07 Apr 2023
    а метрики на 8123 собирайте по http
  • Я пытаюсь настроить qryn otlp exporter. Он их сам собирать должкн и трансформировать и на 9000 в базу передает инфу.
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #319638 #319639 08:08 AM, 07 Apr 2023
    А все понял, пардон тред не читал
  • https://t.me/clickhouse_ru
    @Artem_Belov777 #319640 08:16 AM, 07 Apr 2023
    предлагаю дополнительный доход
  • https://t.me/clickhouse_ru
    @gsh404 ↶ Reply to #319635 #319641 08:16 AM, 07 Apr 2023
    А стандартный вариант это просто обычная таблица? Основания - пытаюсь понять, как сделать, чтобы было легко удалять старые данные, исправлять внутри одного дня данные
  • https://t.me/clickhouse_ru
    @gsh404 #319642 08:17 AM, 07 Apr 2023
    Я не работал с таблицами на 300 терабайт, у меня есть опасения, что в случае таких объемов данных, если они не будут разбиты на какие то партии или несколько таблиц ( я думал каждый день делать новой таблицей ) ими тяжело будет манипулировать
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319641 #319643 08:19 AM, 07 Apr 2023
    стандартный вариант это PARTITION BY toYYYYMM(ts).
    > исправлять внутри одного дня данные
    Clickhouse не самое хорошее место для исправлений данных внутри дня. Месячные партиции удалять будет просто и приятно, можно автоматически по TTL, можно руками. Но для модификаций внутри дня вам стоит применить что-то иное. Скажем CollapsingMergeTree
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319642 #319644 08:20 AM, 07 Apr 2023
    Если вы хотите сделать дневные партиции, то ставьте TTL на 90 дней и менее. Не должно быть слишком много партиций
  • @infl18 ↶ Reply to #319644 #319645 08:24 AM, 07 Apr 2023
    До 1000 партиций приемлимо же, мелькала часто эта цифра в вебинарах? 90 как-то слишком мало.
  • @ivanio11 #319646 08:26 AM, 07 Apr 2023
    Всем привет подскажите плиз , как узнать кол-во элементов в тупле ?

    select length( tuple(100070,46))
    выдаёт ошбику
  • https://t.me/clickhouse_ru
    Вы перепутали парты и партиции
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319645 #319648 08:26 AM, 07 Apr 2023
    Это все довольно условные цифры зависящие от многих факторов. Реально важным является количество партов, а не партиций. Важно какие запросы, какой в них WHERE, итд. Но на первом уровне понимания я всем советую дневные партиции с TTL 90.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319646 #319649 08:32 AM, 07 Apr 2023
    Никак. тупл не массив, а синтаксис для статической компиляции кода. Каждый элемент - это отдельная колонка. Что-то типа struct для C++.
    Вот скажем какая длина у такой структуры:
    struct StudentType {
    int idNumber;
    char name[30];
    StatusType status;
    float credits;
    float gpa;
    };
  • https://t.me/clickhouse_ru
    select length( array(untuple(tuple(100070,46))))
  • изи)))) спасибо
  • @Nilex19 #319652 09:20 AM, 07 Apr 2023
    Доброго времени суток!

    Подскажите, пожалуйста, делаю селект в таблицу, в которой есть json поле.
    Осуществляю его парсинг. В исходной таблице около 74 млрд. строк.
    После запроса получется около 50 000 строк.
    Запрос выполняется порядка 7 минут.
    В system.processes потребляет при этом только 8 мегабайт памяти.
    Можно ли как-то увеличить память, чтобы запрос потребял больше и выполнялся быстрее за счет этого?

    Пример запроса:
    SELECT JSONExtractString(body, 'key1') AS key1,
    JSONExtractString(body, 'key2') AS key2,
    JSONExtractString(body, 'key3') AS key3,
    `ts`
    FROM tbl
    WHERE some_param = 'some_value'
    AND ts BETWEEN '2023-03-25 23:50:00' AND '2023-03-25 23:54:59'
    AND JSONExtractString(body, 'key2') != ''

    Добавлял проекцию таким образом:
    ALTER TABLE tbl ADD projection p_tbl_by_ts_some_param (
    SELECT JSONExtractString(body, 'key1') AS key1,
    JSONExtractString(body, 'key2') AS key2,
    JSONExtractString(body, 'key3') AS key3,
    `ts`
    FROM tbl
    ORDER BY ts, some_param
    ;

    ALTER TABLE tbl MATERIALIZE projection p_tbl_by_ts_some_param;

    Прироста по скорости не дало.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319652 #319653 09:28 AM, 07 Apr 2023
    https://kb.altinity.com/altinity-kb-queries-and-syntax/jsonextract-to-parse-many-attributes-at-a-time/
    Проекция теоретически тоже могла помочь, возможно по какой-то причине она у вас не используется. (index, final, неверные where)
  • https://t.me/clickhouse_ru
    если позволите, еще вопрос
    если AggMT
    2 таблицы, с транзакциями и свойствами транзакции - две МВ соответственно, одна в левую часть, другая в правую
    id, val, val … par_id, val, val

    с правой частью все понятно, в ней всегда будет id транзакции, который подставится в левую часть
    а во левая вставка в par_id закинет 0

    туплю, что правильно включить в order by?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319655 #319656 09:33 AM, 07 Apr 2023
    id должен быть общий чтобы пустоты схлопывались при final:
    id, val1_A, val2_A … , val1_B, val2_B
  • https://t.me/clickhouse_ru
    это понимаю… с идеей буксую
    а можно задать чтобы идентификатор параметра брался последний?
  • https://t.me/clickhouse_ru
    @MakeReady #319658 09:36 AM, 07 Apr 2023
    тогда оставлю только идентификатор транзакции
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319652 #319659 09:36 AM, 07 Apr 2023
    Но вобще-то 7 минут чтобы достать 50к строк - это дофига. Может вам some_param поставить первым или вторым в order by таблицы?
    Судя по вашему запросу должно быть так:
    order by toDate(ts), some_param
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319657 #319660 09:37 AM, 07 Apr 2023
    я не понимаю. Рисуйте пример на fiddle
  • https://t.me/clickhouse_ru
    чтобы получить либо как первый запрос, либо как второй
    https://fiddle.clickhouse.com/9fa7f244-9a35-448c-9efa-a9d743679ae3
  • https://t.me/clickhouse_ru
    о, кажется надо просто с другой стороны… схлопывать по идентификатору справа ))
  • память для такого запроса особо не нужна, нужно много CPU чтобы парсить json

    надо смотреть из-за чего проекция не используется
    SET send_logs_level = 'trace' и вперёд изучать логи

    Возможно достаточно будет сделать ORDER BY some_param, ts
  • https://t.me/clickhouse_ru
    @MakeReady #319664 09:53 AM, 07 Apr 2023
    то есть id из t2
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319662 #319665 09:55 AM, 07 Apr 2023
    да, я же говорю - для этого трюка нужен общий идентификатор
    https://fiddle.clickhouse.com/b4d9a080-616c-4c38-bc63-80bf01bd7e92
  • @ksetherg #319666 09:59 AM, 07 Apr 2023
    У кого нибудь было, что после Alter Delete в таблицу не вставлются новые данные с тем же индексом?
  • https://t.me/clickhouse_ru
    но вот у меня изза асинхронности приехал 4 в первую и свойства для 6 во вторую
    https://fiddle.clickhouse.com/cbf7fc55-e5b4-4db5-afac-351e714f2512
  • все ядра жрет )

    спасибо, теперь разобрались:
    нагружали при помощи OPTIMIZE
    и упирались в background_pool_size
  • https://t.me/clickhouse_ru
    наверное как-то так
    спасибо, буду дальше думать не выпадет ли из-за этого чего
    https://fiddle.clickhouse.com/47d80572-4602-4fe7-897b-cba513dd06e0
  • https://t.me/clickhouse_ru
    @Shamsullin #319671 10:29 AM, 07 Apr 2023
    Всем привет.
    Прошу прощения за нубский вопрос, но есть ли механизм выдавать вот так права?
    GRANT SELECT ON *.table_name TO username
    Чтобы пользователь имел доступ только к определенной таблице, но во всех базах.
  • а мутация закончилась?
    а то может асинхронная мутация в бэкграунде и новые данные успевает подчистить
  • https://t.me/clickhouse_ru
    воспроизвел то что не пойму как решить
    слева приехало
    4,200
    справа ничего
    затем справа приехало 4,10,7
    в итоге имеем две строки
    4 340 0 0
    и 4 0 10 7
  • https://t.me/clickhouse_ru
    @MakeReady #319674 10:47 AM, 07 Apr 2023
    а если делать порядок по первому идентификатору у меня схлопнутся разные идентификаторы по второму
    на одну транзакцию может быть несколько t2
  • https://t.me/clickhouse_ru
    @gsh404 ↶ Reply to #319619 #319675 11:02 AM, 07 Apr 2023
    вразьивочку - разные таблицы или разные партиции тоже влияют?
  • https://t.me/clickhouse_ru
    @Alexandr_52 #319676 11:10 AM, 07 Apr 2023
    Товарищи, подскажите как победить проблему:
    Есть кластер СH, состоящий из 2-х шардов с 2-мя репликами каждый.
    Не получается осуществить бэкап кластера – получаю ошибку при выполнении команды BACKUP DATABASE dbo ON CLUSTER 'cluster' TO Disk('backups','DBo_test'):
    Received exception from server (version 23.3.1):
    Code: 999. DB::Exception: Received from localhost:9000. DB::Exception: Got error from бла-блаlocal:9440. Coordination::Exception. Coordination::Exception: Node exists, path: /clickhouse/backups/backup-3463c8b7-7c6e-4b95-8425-a98d704cfa58/repl_part_names/f92fd32d%2Da6d4%2D4220%2D86dc%2D792cfb6f5431/replica%2D1: While collecting data of table dbo.test for backup. (KEEPER_EXCEPTION)
    Подскажите что и где поправить?

    И 2-ой вопрос:
    Если кластер забэкапить не удалось – принял решение попробовать бэкап отдельно шардов.
    Бэкап без опции ON CLUSTER проходит успешно

    Но при попытке восстановления получаю следующую ошибку( RESTORE DATABASE dbo AS dbo3 FROM Disk('backups','DBo_test8'); ):
    Code: 62. DB::Exception: Received from localhost:9000. DB::Exception: Macro 'uuid' and empty arguments of ReplicatedMergeTree are supported only for ON CLUSTER queries with Atomic database engine: While creating table dbo3.test. (SYNTAX_ERROR)

    Добавляю опцию ON CLUSTER(BACKUP DATABASE dbo ON CLUSTER 'cluster' TO Disk('backups','DBo_test'):
    ) и раскатываю один и тот же бэкап на ВСЕ! шарды(несмотря на ошибку):
    Timeout exceeded while receiving data from server. Waited for 300 seconds, timeout is 300 seconds.

    Подскажите, как правильно бэкапить\ресторить, если используется кластер? Куда копать в этих ошибках?
  • https://t.me/clickhouse_ru
    @misharomanoff #319677 11:23 AM, 07 Apr 2023
    Всем привет. Предлагаю стать частью нашей дружной команды.
    Бесплатное обучение на всех этапах сотрудничества.
    Стабильный зара6оток
    Пишите✍️
    Звоните🤙
  • https://t.me/clickhouse_ru
    @zero_stranger #319678 11:51 AM, 07 Apr 2023
    Всем привет!
    Имеется таблица ReplicateMergeTree (по уникальному ID) для идемпотентности на случай вставки дублирующих данных
    Стоит задача в real-time получать сумму значений из одной колонки
    Первое что пришло в голову это сделать обычный VIEW, который является SELECT FROM GROUP BY id и уже из этого VIEW делать SELECT SUM()

    Насколько хорошим является подобное решение с точки зрения CH? Заранее спасибо за советы!
  • https://t.me/clickhouse_ru
    @andreypopp #319679 12:00 PM, 07 Apr 2023
    Можно как то в CH сказать чтобы процессил одним блоком подзапрос? Хочу использовать runningAccumulate и ему на входе нужен один блок.
  • ReplicateMergeTree или Replacing?

    тут можно посмотреть примеры как last state доставать, в зависимости от данных может быть быстрее какой-то вариант

    https://kb.altinity.com/engines/mergetree-table-engine-family/replacingmergetree/
  • почему не window function использовать?

    есть max_block_size для размера блока, но в целом звучит костыльно
  • https://t.me/clickhouse_ru
    да согласен, спасибо
  • https://t.me/clickhouse_ru
    @ncuqb #319683 12:21 PM, 07 Apr 2023
    Всем, привет. Подскажите, в CH есть способ оставить в строке только цифры?
  • select replaceRegexpAll('asd234dfv345', '\D', '')
  • https://t.me/clickhouse_ru
    @ncuqb ↶ Reply to #319684 #319685 12:30 PM, 07 Apr 2023
    Большое спасибо!
  • https://t.me/clickhouse_ru
    @krivdathetriewe #319686 12:33 PM, 07 Apr 2023
    подскажите пожалуйста, как делаются роли которые нужно явно задавать , чтобы получить
  • https://t.me/clickhouse_ru
    @qwerty3210 #319687 12:36 PM, 07 Apr 2023
    В 23.3. появились lightweight deletes. Кто то пользовался? Для Апдейта или добавления новых колонок что то похожее планируется?
  • про delete - https://github.com/ClickHouse/ClickHouse/issues/39870
    в целом всё так же нельзя часто и точечно вызывать его

    про update говорили что тоже планировали

    а что вы подразумеваете под добавлением новых колонок? что не так сейчас?
    known issues / limitations of lightweight deletes · Issue #39870 · ClickHouse/ClickHouse

    they will be delayed, then there are a lot of merges happening (=when there is a high inserts pressure, and the pool is busy) they 'touch' all the parts - so if the list of parts is big, it...

  • https://t.me/clickhouse_ru
    @qwerty3210 #319689 12:42 PM, 07 Apr 2023
    Добавляю новую колонку - если сложная логика заполнения, то нужен alter update
  • ну в этом ничего плохого нет, на новой колонке это работает быстро

    мы обычно делаем через словарь если сложная логика
    ADD COLUMN ... DEFAUTL dictGet
    MATERIALIZE COLUMN
    REMOVE DEFAULT
  • https://t.me/clickhouse_ru
    @qwerty3210 #319691 12:55 PM, 07 Apr 2023
    А под капотом разве это не обычная тяжеловесная мутация?
  • добавление колонки с default - это просто добавить новый файлик в каждый парт, это очень дешёво. Не надо всё перемерживать
  • https://t.me/clickhouse_ru
    да не добавляется в старые парты ничего, просто метаданные у таблицы меняются
  • я про materialize скорее
  • https://t.me/clickhouse_ru
    ааа
  • Спасибо, но уже стоит так в таблице-источнике: ORDER BY some_param, ts.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319678 #319697 01:33 PM, 07 Apr 2023
    Если к вам в таблицу прилетают дубли, то вам сначала их надо убрать. Это или FINAL или дополнительный group by. Если таблица большая, то это может оказаться проблематично для "real-time". Хотя зависит от запроса - если вам нужна сумма только по 1-му ID, то это быстро, а если top10 то уже нет.
  • https://t.me/clickhouse_ru
    Replacing, отпечатался :)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319674 #319699 01:54 PM, 07 Apr 2023
    Если у вас отношение связываемых таблиц 1:N, то надо хранить "эти самые N" в виде массива и использовать агрегационную функцию groupArrayArray.
  • https://t.me/clickhouse_ru
    а это вариант!
  • @1467348527 #319701 01:55 PM, 07 Apr 2023
    Здравствуйте!

    Postgres для себя стандартно не выводит младшие элементы массива которые не были явно присвоены (хотя бы null)

    create table tst_arr( id serial, arr integer []);
    insert into tst_arr(id) values(1);
    update tst_arr set arr[2]=2 where id=1;

    select array_dims(arr), arr from tst_arr;
    -- | array_dims | arr |
    -- | [2:2] | {2} |

    И в итоге когда

    create database pgbridge engine= PostgreSQL( 'localhost', 'postgres', 'postgres', '' );

    select * from pgbridge.tst_arr;

    Ошибка
    [07000][1002] std::exception.
    Code: 1001, type: pqxx::conversion_error,
    e.what() = Could not convert string to i: '[2:2]={2'.
    (version 22.12.1.1752 (official build))

    Clickhouse не может распарсить значение, не понимает синтаксис вывода postgres'а.

    Это можно как-то побороть настройками, без update tst_arr set arr[1]=1 where id=1; ?
  • https://t.me/clickhouse_ru
    но в этих массивах будут нули и пустые строки от тех случаев когда для левой части не было соответствия справа
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319702 #319703 02:08 PM, 07 Apr 2023
    С чего бы это? default для массива - пустой массив.
  • https://t.me/clickhouse_ru
    @Anryal #319705 02:19 PM, 07 Apr 2023
    добрый день, подскажите изменение типа данных у колонки (modify column) в клике 23.1 работает ?
  • да, в любой версии работает
  • https://t.me/clickhouse_ru
    хм, похоже вы правы и это вариант
    https://fiddle.clickhouse.com/bdb43b1a-ff75-4297-98b8-a3ca099af50b
  • https://t.me/clickhouse_ru
    @Anryal ↶ Reply to #319706 #319708 02:22 PM, 07 Apr 2023
    у меня при попытке изменить либо ошибки вылетают либо по таймауту отваливается запрос
  • https://t.me/clickhouse_ru
    @Anryal #319709 02:23 PM, 07 Apr 2023
    Code: 473.
  • всё ошибку покажите
  • https://t.me/clickhouse_ru
    @Anryal #319711 02:23 PM, 07 Apr 2023
    Received exception from server (version 23.1.1):
    Code: 473. DB::Exception: Received from localhost:9000. DB::Exception: Locking attempt for ALTER on "aa.bb" has timed out! (120000 ms) Possible deadlock avoided. Client should retry.. (DEADLOCK_AVOIDED)
  • база данных Ordinary?
  • https://t.me/clickhouse_ru
    @Anryal ↶ Reply to #319712 #319713 02:33 PM, 07 Apr 2023
    ENGINE = MergeTree
  • это таблица, какой Engine у базы данных
  • https://t.me/clickhouse_ru
    @Anryal ↶ Reply to #319714 #319715 02:37 PM, 07 Apr 2023
    дефолтное значение
  • что значит дефолтное значение? может вы создали когда дефолтное значение было другим

    покажите "show create database >>>ваше имя базы данных тут<<<"
  • https://t.me/clickhouse_ru
    @Anryal #319717 02:44 PM, 07 Apr 2023
    CREATE DATABASE mydbname
    ENGINE = Atomic
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @vlkharlamov #319719 03:04 PM, 07 Apr 2023
    Всем привет, а где можно глянуть ошибки которые может генерит Distributed при вставке? Заметили дубликаты, пытаемся разобраться откуда взялись
  • тогда странно, может вы выполнили первый запрос за modify column, он отвалился по таймауту в клиенте, но на сервере продолжил выполняться и дальше вы пробовали перезапустить и уже ошибка с lock была
    В КХ падение запроса по таймауту не значит что запрос упал, он продолжит выполняться дальше в бэкграунде

    посмотрите в processes что выполняется сейчас или по query_log смотреть что было
  • https://t.me/clickhouse_ru
    @Anryal ↶ Reply to #319721 #319723 03:39 PM, 07 Apr 2023
    Спасибо, буду разбираться тогда дальше
  • @andxray #319724 03:45 PM, 07 Apr 2023
    Всем привет! Подскажите, пожалуйста, как правильно писать запросы с использованием словаря через функции dictGet() или с использованием JOIN?
    В одной статье прочитал что Clickhouse может сам конвертировать join в вызов функций dictGet() с версии 20.4, но у меня при тестах скорость выполнения запроса при этом уменьшается (https://altinity.com/blog/2020/5/19/clickhouse-dictionaries-reloaded)
  • https://t.me/clickhouse_ru
    Alter materialize в этом случае берет эксклюзивный лок на таблицу?
  • https://t.me/clickhouse_ru
    Он работает отличным от мутации способом?
  • @dj_mixer #319727 03:58 PM, 07 Apr 2023
    никто не знает а почему в grace_hash_join не завезли full outer join...
  • https://t.me/clickhouse_ru
    @Vitaly_Ivanov #319728 04:11 PM, 07 Apr 2023
    Подскажите в чем может быть проблема? Один из серверов CH перестал принимать конекты после рестарта и не удаляет файл-флаг force_restore_data На SIGTERM не реагирует, просто пишет в логи что пришел сигнал Application: Received termination signal (Terminated) и продолжает что-то делать свое
  • https://t.me/clickhouse_ru
    @BillionerJoe #319729 04:42 PM, 07 Apr 2023
    Всем привет.

    Возникла проблема.

    Есть кластер, состоящий из 4 машин, 2 реплики, 2 шарда.

    Создаем таблицу на кластере, автоматически прописываются пути в зукипер. Льем с помощью INSERT INTO данные из других таблиц на кластере, все данные отлично записываются.

    Потом по какой-то причине, нужно таблицу переименовать, переименовываем таблицу вот таким способом
    RENAME TABLE db.name1 TO db.name2 ON CLUSTER cluster

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

    Подскажите, в чем может быть проблема?
  • @s4851 ↶ Reply to #319724 #319730 04:50 PM, 07 Apr 2023
    А где написано что ch конвертирует join?
  • @s4851 ↶ Reply to #319724 #319731 04:51 PM, 07 Apr 2023
    В статье в целом все четко написано(примеры) как использовать словари
    Какой у вас кейс?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319724 #319732 05:03 PM, 07 Apr 2023
    Если вы не под какой-то табло подстраиваетесь, а сами пишете запросы руками, то лучше конечно dictGet.
    Но еще лучше писать код красиво, не в стиле MySQL, а как в школе учили нормальному языку - с интерфейсными функциями:

    create or replace function getInventoryDeviceName on cluster {cluster} as (tenant_id, device_id) -> dictGet(`demo_1`.`inventory_device_dict`, 'name', tuple(`tenant_id`, `device_id`));

    select getInventoryDeviceName(tenant_id, device_id) from test;
  • В выводах написано “ClickHouse can automatically convert joins to dictionary calls”, и в статье пример где dictGet заменяется на INNER JOIN и получается одинаковая скорость выполнения запроса. Плюс в changelog’е к версии v20.4.2.9 (https://clickhouse.com/docs/en/whats-new/changelog/2020#performance-improvement-11) есть один из пуктов #10133 “Special HashJoin over StorageDictionary. Allow rewrite dictGet() functions with JOINs”

    У меня кейс следующий, есть таблица со статистикой (ReplicatedMergeTree) и есть словарь с комплексным ключом из 2 полей. Я делаю запрос в котором, в том числе нужно получить несколько полей из словаря. Clickhouse использую недавно, поэтому привычнее JOIN’ы, думал не нужно будет вызывать dictGet для каждого получаемого поля из словаря, но в реальности получаю большее время запроса (хотя по данным из статьи думал что будет одинаковая скорость)
  • https://t.me/clickhouse_ru
    Какая версия кх
  • У меня 22.11.6.44
  • https://t.me/clickhouse_ru
    Там эту оптимизацию поломпли
  • https://t.me/clickhouse_ru
    @unamedrus #319737 05:31 PM, 07 Apr 2023
    Поставьте настройку join_algorithm='default,direct'
  • https://t.me/clickhouse_ru
    @unamedrus #319738 05:31 PM, 07 Apr 2023
    Что то вроде такого нужно
  • https://t.me/clickhouse_ru
    Берет лок на ALTER, эксклюзивный лок берется например на DROP и TRUNCATE. Есть три типа локов как я понял - shared (берется на селект, например), ALTER (берется чтобы два альтера одновременно не прошли) и Exclusive - берется на дроп, транкейт, с таблицей делать нельзя даже селект, пока этот лок взят.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Говорят об эксклюзивном локе
  • Не помогло, также скорость осталась такой же. Исходя из explain’а делается JOIN FillRightFirst. Буду использовать стандартные функции dictGet()
  • https://t.me/clickhouse_ru
    странно, вот тут видно что на альтер и на дроп два разных лока. Соответственно селект пытается взять лок drop_lock в режиме READ, а DROP/DETACH/TRUNCATE пытается взять в режиме Write. как то не видно по исходникам, что альтеры как-то блочат эксклюзивно SELECTы, например, да и вроде на практике не помню, чтоб во время исполнения мутаций селекты не работали.
    https://clickhouse.com/codebrowser/ClickHouse/src/Storages/IStorage.h.html#639
  • https://t.me/clickhouse_ru
    @qwerty3210 #319744 06:34 PM, 07 Apr 2023
    У меня на практике тоже не было, но не просто же так в доку добавили
  • https://t.me/clickhouse_ru
    Документация имеет свойство устаревать/расходиться с реальным поведением, строчки документации конкретно эти модифицировались 15.07.2020, а строчки, отвечающие за локинг - 25.10.2021, так что всё возможно)
  • https://t.me/clickhouse_ru
    а зачем ему лок на таблицу?
    каждый парт отдельно обрабатывается
  • https://t.me/clickhouse_ru
    это работает только если у словаря простой ключ UInt64 (не работает с complex_key)
    и сломано https://github.com/ClickHouse/ClickHouse/issues/46543
    Join with a dictionary checks join_algorithm incorrectly · Issue #46543 · ClickHouse/ClickHouse

    The documentation states that join_algorithm = default (and default = 'direct,hash'). 23.1.3.5 drop database test; create database test; create table if not exists test.src( id UInt64, s St...

  • Спасибо за информацию
  • https://t.me/clickhouse_ru
    может быть есть конструктивная статья по getDict и getJoin?
  • https://t.me/clickhouse_ru
    @zero_stranger #319750 08:44 PM, 07 Apr 2023
    Всем привет еще раз

    На странице https://kb.altinity.com/engines/mergetree-table-engine-family/replacingmergetree/ обнаружил упоминание нового RFC которое вышло в последней версии https://github.com/ClickHouse/ClickHouse/pull/41005

    Есть более подробная информация о том, как это работает? Если честно, после прочтения RFC не понял как это практически использовать, но как будто это очень переспективная функция!
    [RFC] Replacing merge tree new engine by youennL-cs · Pull Request #41005 · ClickHouse/ClickHouse

    Changelog category (leave one): New Feature Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): Enrichment of the existing ReplacingMergeTree engine to a...

  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319750 #319751 09:17 PM, 07 Apr 2023
    Так вроде там все написано - скрестили RMT with CollapsingMT. Можно прочитать статьи про CollapsingMT и в особенности про VersionedCollapsingMT - их уже тонны написаны и в документации и отдельно.
    Если в двух словах, то добавили колонку (sign) куда можно вставить -1 , и тогда магия мерджей станет похожей на CollapsingMT - вместо того чтобы просто брать самую свежую строку из двух (как было раньше), теперь мердж может еще и схлопнуть обе строки в ничего. Получится как-бы удаление. Однако FINAL никто не отменял.

    И надо эти -1 ценить. Они нужны чтобы поверх RMT можно было делать MV с агрегацией по суммам и каунтам (без них дубликаты все сломают) . Другое дело что не всегда под рукой есть старые строки с предыдущими value.
  • https://t.me/clickhouse_ru
    Вот вы говорите про то, что вторая колонка в ReplacingMT это аналог CollapsingMT и должен быть -1 / 1

    Однако в pull request'ах идут примеры где эта колонка UInt8 с значениями 0 / 1

    Еще пример: в том же pull request'е в качестве примера дают некий SETTINGS clean_deleted_rows='always' но при попытке выполнить данный запрос CH отдает ошибку, что значение должно быть Always (с большой первой буквы)

    А что этот параметр делает - вообще не понятно, не было бы данного чата - я бы сидел тупил вечность...)

    Я правильно понимаю, что данная функциональность нужна только для того, чтоб была возможность удалять строчки, больше в ней смысла нет?
  • https://t.me/clickhouse_ru
    @zero_stranger #319753 09:30 PM, 07 Apr 2023
    Если я все правильно понял, можете пожалуйста объяснить ваше последнее предложение касательно MV

    Где можно найти примеры грамотного использования ReplacingMT и MV ?

    Я выше писал вопрос касательно лучших практик по SELECT'у из ReplacingMT самых свежих данных (argMax / sub-query с timestamp'ом). Имеется какое-то крутое решение данного вопроса с помощью MV, или я вообще не в ту сторону думаю?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319752 #319754 09:38 PM, 07 Apr 2023
    статьи на kb.altinity.com вы уже нашли. По мне так самое ценное кроме документации. Еще можете Роберта послушать - https://www.youtube.com/watch?v=G9MxRpKlbnI
    December 2022 ClickHouse Bay Area Meetup

    Join us for this session on latest #ClickHouse news. 0:10 Start of Meetup 9:07 Adventures with the ClickHouse ReplacingMergeTree Engine by Robert Hodges 46:28 ClickHouse ReplacingMergeTree in Telecom Apps by Alexandr Dubovikov 1:24:32 Doing Crazy Stuff with ClickHouse by Alexey Milovidov See the meetup invite for more information: https://www.meetup.com/san-francisco-bay-area-clickhouse-meetup/events/289605843 #datawarehouse #Meetup ----------------- Check out more ClickHouse resources here: https://altinity.com/resources/​ Join Reddit community: https://www.reddit.com/r/Clickhouse/​ ----------------- Learn more about Altinity, sponsors of this meetup. Site: https://www.altinity.com​ LinkedIn: https://www.linkedin.com/company/alti...​ Twitter: https://twitter.com/AltinityDB

  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319752 #319755 09:40 PM, 07 Apr 2023
    > Я правильно понимаю, что данная функциональность нужна только для того, чтоб была возможность удалять строчки, больше в ней смысла нет?

    Смысл в -1 конечно есть, я про это и говорю. Он и раньше был, просто сейчас чуть доделали, чтобы и delete работал
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319753 #319756 09:47 PM, 07 Apr 2023
    > Я выше писал вопрос касательно лучших практик по SELECT'у из ReplacingMT самых свежих данных (argMax / sub-query с timestamp'ом). Имеется какое-то крутое решение данного вопроса с помощью MV, или я вообще не в ту сторону думаю?

    можно и argMax, можно и FINAL. Что не получается-то? Вы же уже добрались до статьи в kb, там вроде все написано понятно. Может быть сделаете пример на fiddle со своими сомнениями?
  • https://t.me/clickhouse_ru
    У меня на текущий момент в проде используется вариант с обычным view в котором GROUP BY + argMax

    В статье (https://kb.altinity.com/engines/mergetree-table-engine-family/replacingmergetree/) приводятся примерные бенчмарки разных подходов к получению самых свежих данных, и исходя из представленной статистики group by + argMax является самым худшим решением

    Именно поэтому я пошел изучать вопрос альтернативных, более быстрых и эффективных решений
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319757 #319758 10:06 PM, 07 Apr 2023
    Бывает по разному. Зависит от данных. Попробуйте все указанные варианты на ваших данных и вашей версии КХ.
    Я обычно предпочитаю FINAL на свежих версиях с do_not_merge_across_partitions_select_final=1, однако недавно встретился с ситуацией когда argMax показывал сильно лучший результат. Но там данные были сильно разреженные, и какой-то оптимизации не хватило именно для FINAL, а для group by она работала. Так что проверяйте сами. И когда новые версии ставите тоже проверяйте.
  • https://t.me/clickhouse_ru
    За примерно год использования КХ отовсюду слышал что FINAL исключительно для дев окружения, похоже ситуация изменилась, изучу, спасибо!
  • 08 April 2023 (3 messages)
  • https://t.me/clickhouse_ru
    для таблиц которые пометились как read-only временно убрал все *.sql из каталога metadata/ , но сервер попрожнему отказывается принимать входящие конекты, в логи ничего подозрительного не пишет, файл flags/force_restore_data по прежнему не удаляет
  • @molchanovdp #319761 10:07 AM, 08 Apr 2023
    Все привет!
    Никто не сталкивался с ошибкой при инсерте в КХ?
    Caused by: ru.yandex.clickhouse.except.ClickHouseUnknownException: ClickHouse exception, code: 1002, host: ip, port: 8123; std::exception. Code: 1001, type: std::__1::future_error, e.what() = The associated promise has been destructed prior to the associated state becoming ready. (version 22.12.3.5 (official build))
    Запись идет через JDBC, ошибка стала большую часть данных стали записывать напрямую в КХ (до этого запись шла через кафку).
  • @molchanovdp #319762 10:10 AM, 08 Apr 2023
    а, нашел issue, https://github.com/ClickHouse/ClickHouse/issues/48545
    тогда вопроса нет, похоже такая же ситуация
    Unexpected exception while inserting empty data with async_insert=1 · Issue #48545 · ClickHouse/ClickHouse

    Unexpected behaviour Insertion of the empty data set (without records) causes an unexpected and unclear error when async_insert is enabled, error: The associated promise has been destructed prior t...

  • 09 April 2023 (6 messages)
  • https://t.me/clickhouse_ru
    @last_knot #319767 10:53 AM, 09 Apr 2023
    Добрый день.
    1) Загружаю в ClickHouse значение даты в формате python datetime.
    2) Забираю это значение из таблицы с помощью query_dataframe. Полученное значение в формате pandas timestamp.
    3) Снова загружаю данное значение формата pandas timestamp в таблицу, но получаю -3 часа ко времени.
    (где-то происходит потеря добавленных 3 часов от локализации)
    PS:
    Проблема не возникает на Windows с python 3.10, но на debian с python 3.5 всплывает
  • https://t.me/clickhouse_ru
    Вероятно драйвера вносят свою лепту.
    Из всех мытарств с датами вынес, что лучше не связываться с ТС с ТЗ и использовать либо родного клиента либо http интерфейс
    Особо много чудес приносит jdbc
  • https://t.me/clickhouse_ru
    в итоге сделал как тут на картинке
    пока полет нормальный
    https://excalidraw.com
    Excalidraw — Collaborative whiteboarding made easy

    Excalidraw is a virtual collaborative whiteboard tool that lets you easily sketch diagrams that have a hand-drawn feel to them.

  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @MakeReady #319771 01:31 PM, 09 Apr 2023
    правда в один MV юнион не прошел. Работают два MV
  • https://t.me/clickhouse_ru
    @vilkoc #319772 01:50 PM, 09 Apr 2023
    Добрый день. Когда делаю SELECT create_table_query FROM system.tables в SOURCE POSTGRESQL пароль получаю [HIDDEN], где и что нужно поменять чтобы получать нормальный пароль?
  • 10 April 2023 (149 messages)
  • @Gomodtidy #319773 05:52 AM, 10 Apr 2023
    Всем привет, сейчас может совсем нубский вопрос будет, но что-то не могу сообразить.
    Есть вот такой запрос для крона.
    insert into stats.diff_views select channel_id, post_id, date, value from (
    select
    channel_id,
    post_id,
    date as date,
    if(maxDate != minDate, toUInt64(maxVal - minVal), maxVal) as value,
    max(counter) OVER wndw as maxVal,
    min(counter) OVER wndw as minVal,
    max(date) OVER wndw as minDate,
    min(date) OVER wndw as maxDate
    FROM stats.views as s
    where date >= (select date from stats.avg_from_diff group by date order by date desc limit 1 offset 1)
    WINDOW wndw as (partition by (channel_id, post_id) order by date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW)
    )
    where date not in (select date from stats.avg_from_diff group by date order by date desc limit 1 offset 1);

    в условии where используется запрос, который используется как временная метка, на какой дате остановились прошлый проход. Но изначально таблица пустая. Можно ли как-то в этом случае сделать так, что бы если таблица пустая, то возращалось бы дефолтное значение? Или это только на уровне приложения можно сделать?

    Вот такая конструкция тоже не совсем рабочая)

    select if(count() != 0, date, toDateTime(0)) as date from stats.avg_from_diff group by date order by date desc limit 1 offset 1;
  • https://t.me/clickhouse_ru
    select defaultValueOfTypeName('DateTime64')
  • https://t.me/clickhouse_ru
    @divshch #319775 06:22 AM, 10 Apr 2023
    Всем привет! Подскажите пожалуйста, как работает mat view? как догружать и удалять данные из представления? требуется чтобы в представлении каждый день были данные за последние три месяца? в BQ догружал данные и удалял шедульным запросом, а как это в CH происходит пока не очень понятно😬
  • К сожалению, совсем не понимаю, как это применить. Тут больше вопрос в том, можно использовать это дефолтное значение, если подзапрос ничего не вернул
  • https://t.me/clickhouse_ru
    @yatoba ↶ Reply to #319773 #319777 07:04 AM, 10 Apr 2023
    Точно max(date) должно называться minDate?
  • Да, ошибся, спасибо)
  • https://t.me/clickhouse_ru
    @keksum666 #319780 07:45 AM, 10 Apr 2023
    Всем привет, может кто-то подсказать из-за чего оптимизация таблицы не запускается? (точнее запускается но ничего не делает и выполняется за 0.2 сек)

    Запускаю так:
    OPTIMIZE TABLE table PARTITION 202303 FINAL

    Такая партиция есть в таблице, уже проверил через system.parts.

    Движок таблицы: CollapsingMergeTree(sign)
  • https://t.me/clickhouse_ru
    а она не как '2023-03' записывается случайно? или '2023-03-01'
  • https://t.me/clickhouse_ru
    Неа, там стоит в таблице toYYYYMM(created_at), а created_at записывается в 2023-03-01
  • https://t.me/clickhouse_ru
    @vlkharlamov #319783 07:47 AM, 10 Apr 2023
    попробуйте '2023-03-01' указать
  • https://t.me/clickhouse_ru
    Вот партиции из system.parts
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319773 #319785 07:48 AM, 10 Apr 2023
    > select date from stats.avg_from_diff group by date order by date desc limit 1 offset 1
    Очень странная конструкция. Зачем тут вобще group by? Почему не сделать простой max() от всей таблицы?
  • https://t.me/clickhouse_ru
    Ошибка в преобразование UInt32, смысл в том что это работало раньше, но сейчас что-то не фурычит
  • https://t.me/clickhouse_ru
    @vlkharlamov #319787 07:49 AM, 10 Apr 2023
    Я видимо недостаточно чего-то знаю, странно, что у вас инцилизация сверху приводится к такому виду партиций и к тем более числу, но ладно
  • Мне не совсем max нужен, мне нужно значение предыдущее до максимального значения
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319788 #319789 07:51 AM, 10 Apr 2023
    Если это дни, и вам просто надо продолжить процесс включая последний день, то можно просто отнять 1 день. Даже если в нем не будет данных он пойдет для построения условия.
    select max(date) - interval 1 day from stats.avg_from_diff
    вобщем вам виднее, что там за логика требуется, но я бы подумал в эту сторону
  • В идеальном случае да, подойдет. В идеальном случае у нас сканирование раз в час, и можно просто сделать interval 1 hour. Но никто не гарантирует, что в какой-то момент сервис, который отвечает за сканирование не отвалится. Поэтому приходится вот такие костыли делать, предполагая, что интервал сканирования может быть недетерминированным
  • https://t.me/clickhouse_ru
    @Vitaly_Ivanov #319791 08:13 AM, 10 Apr 2023
    Подскажите, где бы почитать про устройство distributed очереди? Интересует:
    - можно ли безболезненно для CH удалить часть .bin файлов из очереди?
    - можно ли посмотреть во внуть .bin файла, чтобы понять какие там лежат данные и принять решение оставить или удалить?

    Зачем мне удалять .bin фалы, - иногда у меня падают SELECT-INSERT запросы, я бы хотел подчистить после них
  • https://t.me/clickhouse_ru
    Ну для начало, надо хотя бы доку открыть и прочитать что такое MV в Clickhouse
  • https://t.me/clickhouse_ru
    @Michael40000000 #319793 08:24 AM, 10 Apr 2023
    Приглашаю партнёров посетить обучение по спекуляции на kripte, Никаких залогов и взносов вперёд не требуем❗️
    Наша выгода - доля от Ваших дивидендов 💶
    Все вопросы в DM 📩
  • https://t.me/clickhouse_ru
    Прочитать можно вот так
    select * from file('/var/lib/clickhouse/data/default/distr_1/default@not_existing:9000/1.bin', 'Distributed')
  • https://t.me/clickhouse_ru
    и на первый вопрос, да. Вот тут объяснение https://t.me/clickhouse_ru/313945
    Denny [Altinity] in ClickHouse не тормозит

    нет. Нет там никакого партиционирования. 1.bin -- это данные инсерта как вы его сделали. Нету чуда. У вас 3 шарда, вы вставляете 1000 записей одним инсертом, Distributed таблица создает 3 bin файлика разрезав вашу 1000 записей по шардам, по ключу шардирования. Кладет bin файлы в каталоги. Другой процесс Distributed таблицы -- DirectoryMonitor , сканирует каталоги, и вставляет в шарды содержимое bin файлов. Distributed ни сном ни духом про MergeTree про репликацию, ему вообще пофигу кто на той стороне, просто как клиент засылает инсерты на 9000 порт, этот DirectoryMonitor туп и однопоточен.

  • @iamsodeadsplash #319796 08:35 AM, 10 Apr 2023
    привет!

    есть достаточно тривиальная задача, застрял на простом моменте

    бэкапы кластера клика храним через clickhouse-backup (https://github.com/AlexAkulov/clickhouse-backup)
    нужно из бэкапа достать одну таблицу, вынуть оттуда определенные партиции и перелить данные в такую же таблицу в другой схеме

    пробовал:
    clickhouse-backup restore --tables=schema1.table_name --restore-database-mapping=schema1:schema2 --partitions=202303,202302,202301 2023-04-07T00-00-01

    падает из-за конфликта путей (берет через show create, там пути зукипера хардом пишутся)

    попробовал создать таблицу сам и накинуть флаг только data:
    clickhouse-backup restore --tables=schema1.table_name --restore-database-mapping=schema1:schema2 --data --partitions=202303,202302,202301 2023-04-07T00-00-01

    падает с ошибкой
    error 'schema2.table_name' is not created. Restore schema first or create missing tables manually

    но таблица на месте

    кто-нибудь сталкивался?
    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
    @keksum666 #319797 08:40 AM, 10 Apr 2023
    Может кто-то подсказать по доке, не очень понял (движок CollapsingMergeTree). Схлопывание двух строк не будет происходить если только заносить разом и sign -1 и sign 1?

    Или не будет происходить вовсе если будет занесение данных только для sign -1?

    Просто задача в том чтобы удалить некоторые строки для этого я сделал INSERT INTO table SELECT .... сделав полный дубль записи изменив sign на -1
  • https://t.me/clickhouse_ru
    для каждой sign=1 нужно добавить -1, для полного удаления
  • https://t.me/clickhouse_ru
    Это я и сделал, но вопрос в том как долго будут схлопываться эти строки? Потому что через FINAL все работает, нужна ли оптимизация для данной таблицы?
  • https://t.me/clickhouse_ru
    в неопределенный момент, можно принудительно через оптимайз
  • https://t.me/clickhouse_ru
    Принудительно запускал, но оптимиазация выполняется за 0.13сек, но ничего не происходит
  • https://t.me/clickhouse_ru
    Вы прочитайте до конца сначала, а потом уже задавайте вопросы ... Попробуйте использовать SELECT * FROM table FINAL
  • https://t.me/clickhouse_ru
    Пробовал, через FINAL все корректно выводит, но оптимизация не выполняется
  • https://t.me/clickhouse_ru
    Что такое оптимизация ?
  • https://t.me/clickhouse_ru
    @keksum666 #319805 08:46 AM, 10 Apr 2023
    OPTIMIZE TABLE table PARTITION 202303 FINAL
  • https://t.me/clickhouse_ru
    Ну она выполняется за 0.1 секунду, а результата 0
  • https://t.me/clickhouse_ru
    точно существует PARTITION 202303?
  • https://t.me/clickhouse_ru
    Да, смотрел через system.partitions
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @konnectrl #319810 08:50 AM, 10 Apr 2023
    Всё работает .... как и ожидается
  • https://t.me/clickhouse_ru
    почему не просто удалить?
  • https://t.me/clickhouse_ru
    Так у меня тоже работает, но смысл в том что оптимизация на эту таблицу не срабатывает и он не схлопывает записи по sign
  • https://t.me/clickhouse_ru
    потому что дорого ?)
  • https://t.me/clickhouse_ru
    Дак я вам показал пример он работает и работает и оптимизация
  • https://t.me/clickhouse_ru
    @konnectrl #319815 08:51 AM, 10 Apr 2023
    Вы может покажите DDL таблицу на которой у вас не работает ?
  • 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
    @MakeReady #319820 08:53 AM, 10 Apr 2023
    ну и почему это должно быть дороже?
    Какой смысл сначала заливать копии с -1 а потом делать оптимизацию
    когда можно по тому же условию что расставляется -1 сделать удаление
  • https://t.me/clickhouse_ru
    Ну так он же для теста это делает .... ( Думаю Я )
  • https://t.me/clickhouse_ru
    А created_at совпадает у этих записей ?
  • https://t.me/clickhouse_ru
    @keksum666 #319823 08:55 AM, 10 Apr 2023
    Да
  • https://t.me/clickhouse_ru
    @konnectrl #319824 08:56 AM, 10 Apr 2023
    Просто походит, на то что они попадают в разные партиции ... а разные партиции никогда между собой не мержатся
  • https://t.me/clickhouse_ru
    @keksum666 #319825 08:57 AM, 10 Apr 2023
    Записи полный дубль, кроме как sign
  • https://t.me/clickhouse_ru
    @konnectrl #319826 08:57 AM, 10 Apr 2023
    А у вас же created_at в ORDER BY :)
  • https://t.me/clickhouse_ru
    Я не знаю, у вас какая то магия https://fiddle.clickhouse.com/b44145fb-bf87-4fd2-a0d0-ffb65f632e72
  • https://t.me/clickhouse_ru
    Очень странно
  • https://t.me/clickhouse_ru
    А версия у вас какая ?
  • https://t.me/clickhouse_ru
    22.2.2 revision 54455
  • https://t.me/clickhouse_ru
    @konnectrl #319831 09:05 AM, 10 Apr 2023
    Версия с тонной багов :) Может быть в них проблема ... Обычно когда видим в чате эту версию ... Говорим обновляться :)
  • https://t.me/clickhouse_ru
    @keksum666 #319832 09:05 AM, 10 Apr 2023
    А ничего не упадет если обновляться? Обратная совместимость имеется?
  • https://t.me/clickhouse_ru
    @keksum666 #319833 09:06 AM, 10 Apr 2023
    И до какой версии рекомендуете обновится?
  • https://t.me/clickhouse_ru
    @konnectrl #319834 09:06 AM, 10 Apr 2023
    https://clickhouse.com/docs/en/whats-new/changelog/2022
    например за 22 год, вам нужно смотреть на пункт Backward Incompatible Change
    2022 Changelog | ClickHouse Docs

    ClickHouse release 22.12, 2022-12-15

  • https://t.me/clickhouse_ru
    Последний LTS релиз 23.3, есть еще 22.3 и 22.8
  • https://t.me/clickhouse_ru
    @keksum666 #319836 09:07 AM, 10 Apr 2023
    Хорошо, попробую, спасибо!
  • https://t.me/clickhouse_ru
    внутрь подзапроса добавьте через union all дефолтное значение и сверху этой конструкции нужно обернуть еще в подзапрос и выбрать из значений максимальное.
    НО, лучше словарь сделать поверх таблицы и использовать его с суффиксом dictGetOrDefault
  • https://t.me/clickhouse_ru
    @MakeReady #319838 09:37 AM, 10 Apr 2023
    Добрый день!
    в 32.3 в появилась поддержка удаления
    ReplacingMergeTree([version_column],[is_deleted_column])
    поле is_deleted_column - UInt8

    если сейчас у меня есть таблицы с таймстемпом удаления
    можно ли как-то впихнуть его в параметры движка чтобы если таймстемп есть был 1 а если нет 0
  • https://t.me/clickhouse_ru
    @yatoba ↶ Reply to #319838 #319839 09:45 AM, 10 Apr 2023
    А вычислимую мат колонку там можно указать?
  • https://t.me/clickhouse_ru
    @MakeReady #319840 09:45 AM, 10 Apr 2023
    доберусь до компа проверю )
  • @Ant224 #319841 09:46 AM, 10 Apr 2023
    Добрый день, подскажите пожалуйста кто знает.
    Можно ли в КликХаус версии 22.8.5
    сделать бэкап чтобы автоматически к имени добавилась дата создания?
    вот пример команды:
    BACKUP TABLE test TO Disk('s3', 'test.zip') может функция какя-то есть?
  • https://t.me/clickhouse_ru
    Спасибо! Я правильно понимаю, что перед тем как делать select from file() мне надо сначала .bin файл из очереди скопировать в /var/lib/clickhouse/user_files ?
  • https://t.me/clickhouse_ru
    @D_vishnevskiy #319843 09:54 AM, 10 Apr 2023
    r
  • https://t.me/clickhouse_ru
    @timurzav #319844 10:01 AM, 10 Apr 2023
    Всем привет! У меня такой вопрос: я могу сгенерировать uuid при вставке из csv файла? Запрос выглядит так: clickhouse-client --password password --user user -q "INSERT INTO default.table FORMAT CSVWithNames" < bitnami/clickhouse/table.csv
  • https://t.me/clickhouse_ru
    делайте фича реквест default_backup_name
  • https://t.me/clickhouse_ru
    @Michael40000000 #319846 10:01 AM, 10 Apr 2023
    Приглашаю партнёров посетить обучение по спекуляции на kripte, Никаких залогов и взносов вперёд не требуем❗️
    Наша выгода - доля от Ваших дивидендов 💶
    Все вопросы в DM 📩
  • https://t.me/clickhouse_ru
    Вы всю историю храните?
  • https://t.me/clickhouse_ru
    удалений? сейчас да, удаления записей с «таймстемпом удалений» нет
  • https://t.me/clickhouse_ru
    @MakeReady #319849 10:03 AM, 10 Apr 2023
    но по идее должгна быть
  • https://t.me/clickhouse_ru
    @greenh_ua #319851 10:15 AM, 10 Apr 2023
    Добрый день. Сорри, возможно вопрос совсем нубский, но я не настоящий сварщик ) Можно ли кликхауз научит самостоятельно забирать данные из постгреса? Или нужна какая-то самоджельная прослойка?
  • Понял, благодарю!
  • https://t.me/clickhouse_ru
    вам постоянно нужно забирать обновления?

    Посмотрите в сторону CDC

    https://github.com/Altinity/clickhouse-sink-connector
    GitHub - Altinity/clickhouse-sink-connector: Altinity Sink Connector for ClickHouse

    Altinity Sink Connector for ClickHouse. Contribute to Altinity/clickhouse-sink-connector development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    да, постоянно, можно батчами
    ага, спасибо
  • https://t.me/clickhouse_ru
    а просто строить представления на данных из ПГ не подходит?
  • https://t.me/clickhouse_ru
    @timurbordie #319856 10:27 AM, 10 Apr 2023
    #вакансия
    Коллеги привет! Ищу себе в команду опытного DBA, крупная продуктовая компания, отдел разработки 40+ человек.
    Развёрнут кластер ClickHouse на 60+ТБ, обитаем в ДЦ, желательно с навыками кодить (таблицы, отчётности, мониторинг).
  • https://t.me/clickhouse_ru
    я так понимаю, что аналитика из ПГ будет ну очено долгой
  • https://t.me/clickhouse_ru
    @Michael40000000 #319858 10:28 AM, 10 Apr 2023
    Приглашаю партнёров посетить обучение по спекуляции на kripte, Никаких залогов и взносов вперёд не требуем❗️
    Наша выгода - доля от Ваших дивидендов 💶
    Все вопросы в DM 📩
  • 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
    @greenh_ua #319863 10:33 AM, 10 Apr 2023
    понял, спасиб
  • https://t.me/clickhouse_ru
    @filippsidorov #319864 10:51 AM, 10 Apr 2023
    Всем привет! Добавил к таблице TTL выражение, чтобы данные прошлого года перемещать в Object Storage.
    TTL toDate(`ym:pv:dateTime`) + toIntervalDay((today() - toDate('2023-01-01')) + 1) TO DISK 'object_storage'

    Хотел посчитать TTL интервал динамически из текущей даты. Но оказалось, что партиции за 1,2,3 января стали тоже перетекать в ObjectStorage. Такое ощущение что TTL интервал как-то фиксируется и не обновляется динамически.

    Подскажите почему так происходит? Правильно ли, что для этой задачи проще сделать вручную ALTER TABLE MOVE TO DISK без использования TTL выражений?
  • TTL надо считать из данных (даты) в таблице. Когда текущая дата равна или превышает вычисленную в TTL выражении, данные перекладываются/агрегируются/удаляются.

    TTL toStartOfYear(колонка с датой) + INTERVAL 1 YEAR MOVE TO ...
  • https://t.me/clickhouse_ru
    спасибо, понял решение, попробую :)
  • @oxkek #319870 12:02 PM, 10 Apr 2023
    Господа, подскажите пожалуйста.

    А нормально, что все таблицы реплецируются на 3 ноды корректно (прям до одной),
    а вот Materilaze view (создал без replecated движка),
    на основной ноде на 10к больше записей, чем в остальных?
  • https://t.me/clickhouse_ru
    да, так и должно быть. Данные MatView хранятся в обычной таблице, надо точно также делать replicated

    https://youtu.be/1LVJ_WcLgF8?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7597

    https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf
  • @oxkek ↶ Reply to #319871 #319872 12:18 PM, 10 Apr 2023
    Я правильно понимаю, что три разные ноды, с реплецированными таблицами, mw отработает по разному?
  • @oxkek #319873 12:18 PM, 10 Apr 2023
    Типа разное количество на каждой ноде выдаст
  • https://t.me/clickhouse_ru
    все это разжевано по тем ссылкам, посмотрите и поймете почему мат вью работают как работают
  • @oxkek ↶ Reply to #319874 #319875 12:19 PM, 10 Apr 2023
    Да, обязательно!
  • @oxkek #319876 12:19 PM, 10 Apr 2023
    Спасибо!
  • https://t.me/clickhouse_ru
    bin можно удалять у distributed таблиц, так и задумано

    посмотреть внутрь SELECT * FROM file('/var/lib/clickhouse/data/detault/test1/2.bin', 'Distributed')
  • https://t.me/clickhouse_ru
    есть настройка optimize_throw_if_noop, показывает почему мерж не может запустится

    optimize table db.table_r on cluster 'main_cluster'
    partition id '2023-03-29' settings optimize_throw_if_noop=1;
  • https://t.me/clickhouse_ru
    @kizimenko #319879 12:35 PM, 10 Apr 2023
    Привет, смотрю доку чет частно используется Parquet, для выкачки из CH в Parquet надо больше вычислительных ресурсов? Просто TSV он прям изи выкатывает не напрягаясь
  • https://t.me/clickhouse_ru
    создание паркет файлов требует в разы больше ресурсов, например там надо закомпрессировать выходной поток
  • https://t.me/clickhouse_ru
    понял, ладно TSV наше все =)
  • https://t.me/clickhouse_ru
    @veronikakhaliullina #319883 12:59 PM, 10 Apr 2023
    #вакансия #DataEngineer #Clickhouse #удаленка #fulltime #remote

    Всем привет!

    Нахожусь в поисках единственного Data-engineer с опытом работы ClickHouse + Airflow в нашу небольшую команду аналитики. Продуктовая IT компания Peter Partner - занимаемся созданием собственных интернет-проектов: веб-сервисов и мобильных приложений в финтех сфере, а также полным циклом их дальнейшего сопровождения.

    Дата инженеру предстоит создавать единый пайплайн обновления отчетности на базе Airflow + Clickhouse (122 гб) + Postgres (25 гб), развивать и поддерживать инфраструктуру аб тестов, создавать витрины с разными слоями данных (Airbyte и Airflow), создавать ETL-процессы, и др. 🚀
    Любой формат сотрудничества, можно за пределами РФ 🙂

    Если кому-то интересно - напишите в личку 📲
    Peter Partner

    Мы — продуктовая IT-компания. В Peter Partner разрабатываем финтех-проекты с 2019 года, которыми пользуются по всему миру. Ищем в команду крутых специалистов с амбициозными целями.

  • @366604348 #319884 01:00 PM, 10 Apr 2023
    Caused by: java.lang.UnsupportedOperationException: LZ4 is not supported. Please disable compression(compress=0), modify the algorithm(e.g. compress_algorithm=gzip), or add the missing libraries to the classpath.
    Посоны ищу эту либу, никак найти не могу, киньте ссылку где скачать и подключить
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/clickhouse-java

    вот тут вроде указана поддержка lz4
    GitHub - ClickHouse/clickhouse-java: Java client and JDBC driver for ClickHouse

    Java client and JDBC driver for ClickHouse. Contribute to ClickHouse/clickhouse-java development by creating an account on GitHub.

  • у меня последней версии 0.4.2 указано что есть уже в самой либе, но чёт не работает
  • CREATE TABLE table1
    (
    code String Comment 'code1',
    name String Comment 'Name1',
    )
    ENGINE = File('TabSeparated')
  • https://t.me/clickhouse_ru
    Спасибо! Сделал symlink в каталог user_files_path на базу с distributed таблицами, иначе не работало
  • https://t.me/clickhouse_ru
    сам jar с clickhouse jdbc не содержит lz4 либы.
    есть shaded jar - полный драйвер, он размером 5 мб.
  • а где он?
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/clickhouse-java/releases

    clickhouse-jdbc-0.4.2.jar 1.17 MB
    ....
    clickhouse-jdbc-0.4.2-shaded.jar 2.84 MB

    похудел похоже до 2.48
  • блин а как его в приложение подрубить?
  • @366604348 #319893 01:33 PM, 10 Apr 2023
    в мавене обычный лежит
  • https://t.me/clickhouse_ru
    ну так, родной, с этого надо было начинать.

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

    <!-- use uber jar with all dependencies included, change classifier to http for smaller jar -->
    <classifier>all</classifier>
    <exclusions>
    <exclusion>
    <groupId>*</groupId>
    <artifactId>*</artifactId>
    </exclusion>
    </exclusions>
  • https://t.me/clickhouse_ru
    аа chatgpt знает

    The equivalent Gradle dependency would be:

    arduino

    dependencies {
    implementation 'com.clickhouse:clickhouse-jdbc:0.4.1:all'
    }

    You can add this code to your build.gradle file, inside the dependencies block. Note that the classifier element in the Maven dependency is included in the artifact name as a suffix, so in Gradle we specify it using a colon (:) separator after the version number. The exclusions block is not necessary in Gradle, as transitive dependencies are managed differently.
  • спасибо!
  • https://t.me/clickhouse_ru
    @ilya7k #319899 01:51 PM, 10 Apr 2023
    Привет. А как в запросе можно сразу узнать query_id этого запроса? Есть какие-то внутренние переменные?
  • https://t.me/clickhouse_ru
    https://clickhouse.com/docs/en/sql-reference/functions/other-functions#queryid

    http и tcp возвращают query_id
    http например в header
  • https://t.me/clickhouse_ru
    select query_id()
  • https://t.me/clickhouse_ru
    @ilya7k #319902 01:53 PM, 10 Apr 2023
    Спасибо
  • https://t.me/clickhouse_ru
    @klug_pro #319903 02:24 PM, 10 Apr 2023
    Здравстуйте!
    А как бы понять, что этому clickhouse-copier не нравится?
    2023.04.10 17:16:00.133427 [ 980 ] {} <Error> : virtual int DB::ClusterCopierApp::main(const std::vector<std::string> &): Code: 62. DB::Exception: Syntax error (storage definition): failed at position 1 ('rand'): rand(). Expected one of: storage definition, ENGINE, PARTITION BY, PRIMARY KEY, ORDER BY, SAMPLE BY, TTL. (SYNTAX_ERROR)
  • https://t.me/clickhouse_ru
    @klug_pro #319904 02:25 PM, 10 Apr 2023
    таблицу что src что dst так делал:
    CREATE TABLE IF NOT EXISTS Resharded__Nginx.logs
    ON CLUSTER main_cluster
    AS Resharded__Nginx.logs_local
    ENGINE = Distributed(main_cluster, Resharded__Nginx, logs_local, rand());
  • https://t.me/clickhouse_ru
    @MakeReady #319905 02:32 PM, 10 Apr 2023
    Можно ли для AggregatingMergeTree указать правило по которому из нее будут исключаться записи? Что-то типа TTL но, например, по идентификатору
  • https://t.me/clickhouse_ru
    define исключаться
  • https://t.me/clickhouse_ru
    не нахожу
    https://clickhouse.com/docs/en/sql-reference/statements/create/table
    CREATE TABLE | ClickHouse Docs

    Creates a new table. This query can have various syntax forms depending on a use case.

  • https://t.me/clickhouse_ru
    я прошу объяснить что такое исключаться ?

    почему например просто в mat.view не написать where <>
  • https://t.me/clickhouse_ru
    таблица наполняется двумя мат вью
    и тот ID по которому выбрасывать есть только в одном

    да, подумал, вряд ли получится самоочитка
  • https://t.me/clickhouse_ru
    @MakeReady #319910 02:40 PM, 10 Apr 2023
    потому что надо чтобы сначала сагрегировалось а потом выбросилось 😕
  • https://t.me/clickhouse_ru
    т.е. хочется удалять уже смерженные данные?
    но мерж случается неизвестно когда, поэтому как бы здесь вам не тут.

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

    и да, уже подумал что не получится так ибо нет никакого после мерджа
  • @tassupolnomochenzayavit #319913 02:50 PM, 10 Apr 2023
    Ребят, всем привет!

    У меня есть таблица с исходными данными такого формата:

    key_id | param1 | param2 | ........... | param10
    key | [x,y, ..] | [a,b, ..] |............ | [ , , alpha, betta ..]

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

    Хочу транспонировать средствами самого КХ таблицу до вида:

    key_id | param_n | param1 | param2 | ........... | param10
    key | 1 | x | a | ........... | Null
    key | 2 | y | b | ........... | Null
    key | 3 | ... | ... | ........... | alpha
    key | 4 | ... | ... | ........... | betta

    До сих пор не сталкивался с КХ.
    Первое, что нагуглил - это функция arrayjoin
    Но получается, чтобы она корректно отработала в моем случае, мне нужно применить ее 10 раз для 10 колонок с параметрами, и потом сджоинить все получившиеся таблицы по ключу и номеру параметра (param_n) (этот параметр, кстати, видимо оконкой получать, или есть что-то встроенное?)

    Вопросы:

    Как лучше (наименее затратно) транспонировать исходную таблицу?
    Данных действительно много

    Спасибо!
  • https://t.me/clickhouse_ru
    Ааа я понял вам нужен не arrayJoin, а ARRAY JOIN пишется после FROM
  • Спасибо, посмотрю
    Еще нагуглил arrayZip, вроде тоже похоже, но результат в одной колонке
    Буду сравнивать
  • так arrayJoin(arrayZip(field1,field2....)) :)
  • https://t.me/clickhouse_ru
    @francesco_tortik #319918 04:00 PM, 10 Apr 2023
    Всем доброго вечера, подскажите плиз, как узнать сколько весит не вся таблица, а конкретный столбец? Этот вообще возможно?
  • https://t.me/clickhouse_ru
    system.columns
  • https://t.me/clickhouse_ru
    @francesco_tortik #319920 04:07 PM, 10 Apr 2023
    Как все просто, спасибо
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    @andrey_in777 #319923 07:49 PM, 10 Apr 2023
    💵Здравствуйте! Есть арбитражная cвязка внyтри бинaнca через BNB с прибылью 4-6%
    💲Беру % от вашего ежедневного заработка.
    ✖️Не принимаю ваши деньги на свои счета и не беру никаких предоплат (как это делают мошенники)✖️
    ☑️Набираю даже людей без опыта. Если не разбираетесь,все обьясню и покажу
    🟢По всем вопросам пишите в лс
  • @n317fe8129y #319924 08:04 PM, 10 Apr 2023
    Сегодня обновлял clickhouse c 23.1.1 на 23.3.1
    Контур тестовый, нагрузка около нуля по входящим данным, процессор утилизировался на 1-3%.

    После обновления стабильно вот уже 8 часов 200 % утилизации цпу процессом /usr/bin/clickhouse-server

    Запросы из https://kb.altinity.com/altinity-kb-setup-and-maintenance/who-ate-my-cpu/ ничего не дали.

    Какой инструмент далее посоветуете для диагностики?
    Who ate my CPU

    Queries to find which subsytem of Clickhouse is using the most of CPU.

  • https://t.me/clickhouse_ru
    rabbit ?
  • @n317fe8129y #319926 08:06 PM, 10 Apr 2023
    есть
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/48103
    исправлено 3 дня назад, и релиза не было
    200% constant CPU usage while using RabbitMQ intergation on 23.2.4 revision 54461 (docker image) · Issue #48103 · ClickHouse/ClickHouse

    I reproduce the problem as follows. Start docker image (latest from here https://hub.docker.com/r/clickhouse/clickhouse-server) docker run -d --link rabbit1 --hostname clicktest1 clickhouse/clickho...

  • ох, спасибо
    в открытых issues искал похожее - не нашел) теперь понятно почему
  • 11 April 2023 (119 messages)
  • @astrix8989 #319931 05:08 AM, 11 Apr 2023
    Доброго времени суток, есть вопрос по predefined_query_handler в связке с INSERT, там ограничений ни каких не было?
  • https://t.me/clickhouse_ru
    @MashinaMashina #319932 05:57 AM, 11 Apr 2023
    Добрый день!

    Сейчас есть запрос:
    SELECT
    keyword_id,
    groupArray([created_at_day_offset / 3600, pd.position]) AS positions,
    pd.created_at_day AS day
    FROM product_positions_dist AS pd
    GROUP BY keyword_id, created_at_day
    ORDER BY keyword_id, created_at_day

    Для каждой строки в результатах возвращаются все значения полей created_at_day_offset, page_position.

    Как можно сделать выборку только одного значения для полей, но по условию что created_at_day_offset ближе всего к 54000?
  • https://t.me/clickhouse_ru
    @MashinaMashina #319933 06:04 AM, 11 Apr 2023
    как-то можно в clickhouse выбрать ближайшее число при группировке?
  • https://t.me/clickhouse_ru
    @vlkharlamov #319934 06:15 AM, 11 Apr 2023
    argmin(abs(offset - 54000), offset)?
  • https://t.me/clickhouse_ru
    @ddddddpppppppp #319935 06:19 AM, 11 Apr 2023
    кто знает как использовать алиас таблицы внутри другого алиаса в одном запросе? К примеру,

    with t as (select … from …),

    tt as (
    select …
    from
    `table/url` as l
    join
    t
    on …
    )

    select …

    у меня падает с ошибкой Table YT.t doesn't exist
  • https://t.me/clickhouse_ru
    @vlkharlamov #319936 06:20 AM, 11 Apr 2023
    Допишите хоть запрос, а то не понятно что и где вы вызываете)
  • https://t.me/clickhouse_ru
    @francesco_tortik #319937 06:23 AM, 11 Apr 2023
    Всем доброго утра) Подскажите плиз, непонятно откуда прилетает нагрузка на зукипер, есть какие-то средства мониторинга его? Может готовые запросы есть у кого?)
  • https://t.me/clickhouse_ru
    @konnectrl #319938 06:47 AM, 11 Apr 2023
    Хотелось бы сохранить данные для которых сработала настройка input_format_skip_unknown_fields при вставке через http, это возможно ?
  • вот тут про мониторинг всё, я бы выбрал вариант с метриками для прометея
    https://zookeeper.apache.org/doc/r3.8.0/zookeeperMonitor.html
  • @shadowusr #319941 08:17 AM, 11 Apr 2023
    Привет!

    Есть база, в ней materialized view. Так получилось, что mv смотрит на несуществующую колонку. Теперь я делаю add column с недостающей колонкой в таблицу, на которую смотрит MV, но запрос завершается ошибкой, Missing columns. Как быть?
  • @shadowusr #319942 08:19 AM, 11 Apr 2023
    upd: решил тем, что дропнул MV и починил сначала таблицу, всем спасибо!
  • https://t.me/clickhouse_ru
    @francesco_tortik #319943 08:33 AM, 11 Apr 2023
    https://www.youtube.com/watch?v=JSLhU_LJ5VE
    слушал доклад Александра и он упомянул, что делать инсерт в дист таблицу - антипаттерн КХ, где еще можно почитать про другие антипаттерны?
    Паттерны хранения и обработки данных в ClickHouse / Александр Крашенинников (Badoo)

    Приглашаем на Saint HighLoad 2023, которая пройдет 26 и 27 июня 2023 в Санкт-Петербурге! Программа, подробности и билеты по ссылке: http://bit.ly/3JZHEg2 -------- Saint HighLoad++ 2019 Тезисы и презентация: https://www.highload.ru/spb/2019/abstracts/4862 В последние два года ClickHouse стал одним из лидирующих инструментов в задачах OLAP. Высокая производительность в совокупности с встроенными средствами масштабирования и отказоустойчивости дают широкие возможности по построению систем обработки данных. Однако при всём богатстве инструментов, есть ряд нюансов, которые стоит учитывать при проектировании хранилищ - движки хранения данных, система репликации, retention данных. ... -------- Нашли ошибку в видео? Пишите нам на support@ontico.ru

  • https://t.me/clickhouse_ru
    не делать JOIN :)
  • https://t.me/clickhouse_ru
    @konnectrl #319945 08:36 AM, 11 Apr 2023
    Вставлять большими бачами
  • https://t.me/clickhouse_ru
    я думал он маленькие инсерты не любит, а больше ему ок
  • https://t.me/clickhouse_ru
    Анти-патерны это такая вещь
  • https://t.me/clickhouse_ru
    @konnectrl #319948 08:43 AM, 11 Apr 2023
    что для тебя анти-патерны, а для кого то норм ... Мне вот было норм писать в дистрибьютед таблицу ....
  • https://t.me/clickhouse_ru
    @konnectrl #319949 08:43 AM, 11 Apr 2023
    А кому то норм делать JOIN'ы
  • https://t.me/clickhouse_ru
    @andynador #319950 09:39 AM, 11 Apr 2023
    Всем привет. Подскажите. пожалуйста, кто-нибудь реализовал запись из одной таблицы с Kafka Engine в две разные таблицы? Сделал две MV, у которой в создании прописано условие записи в соответствующую таблицу. И на выходе получаю результат, что ни в одной таблицы данных нет..
  • https://t.me/clickhouse_ru
    Попробовал и только GRANT ALTER FREEZE PARTITION похоже работает, без дополнительных грантов. System таблицы по дефолту и так доступны.
  • сделать две таблицы с различающимися kafka_group_name
  • https://t.me/clickhouse_ru
    @Diana_mstfn #319953 10:16 AM, 11 Apr 2023
    Всем добрый день! Меня зовут Диана и я работаю IT-рекрутером в агентстве Spice IT.

    Сейчас в работе у меня есть вакансия Администратора баз данных ClickHouse в компанию-фармдистрибьютор, вдруг кому-то будет интересно

    Задачи:
    Установка, настройка кластера и сопровождение ClickHouse; настройка системы мониторинга и анализа ошибок в части работы ClickHouse; внедрение систем миграций БД; настройка кластеров Apache Kafka, контроль и обеспечение непрерывной работы.

    По условиям: белая зарплата, все по ТК, ДМС, удаленный/гибридный формат работы (по желанию).

    Если вдруг данная вакансия заинтересовала, ставьте реакции или пишите в личку Diana_mstfn

    Спасибо за внимание!)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319950 #319954 10:57 AM, 11 Apr 2023
    Работает. Хоть 10 можно. Но учтите, что любая ошибка в любом из этих MV приводит к тому что все останавливается. Данных может совсем не быть, а могут быть и дубликаты. Читайте логи и system.errors
  • https://t.me/clickhouse_ru
    @MakeReady #319955 10:59 AM, 11 Apr 2023
    Добрый день!
    В какой лог сыпятся ошибки MV?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #319955 #319956 11:02 AM, 11 Apr 2023
    В общий лог сыпятся все ошибки. Но еще интересно читать system.errors.
    И еще интереснее отправлять общий лог не в текстовый файл, а в табличку system.text_log без ужасных перекладываний в графану и подобные. (по умолчанию выключено)
  • https://t.me/clickhouse_ru
    спасибо!
  • https://t.me/clickhouse_ru
    @realzhahanger #319958 11:59 AM, 11 Apr 2023
    Всем здравствуйте
    такая проблема
    добавил колонку на таблицу и хочу сделать апдейт этой колонки
    запрос синтаксис правильный запрос обрабатывается выполняется
    но апдейт не срабатывает
    так скажем
    создал колонку типом интежер внутри 0
    хотел поменять их на 100
    но не получается
  • https://t.me/clickhouse_ru
    @realzhahanger #319959 12:00 PM, 11 Apr 2023
    ALTER TABLE table name UPDATE columnname = 100 where columnname = 0;
  • https://t.me/clickhouse_ru
    @realzhahanger #319960 12:00 PM, 11 Apr 2023
    из за чего может быть
  • https://t.me/clickhouse_ru
    @realzhahanger #319961 12:00 PM, 11 Apr 2023
    не подскажите?
  • Что конкретно подразумевается под "не срабатывает"?
  • https://t.me/clickhouse_ru
    @realzhahanger #319963 12:03 PM, 11 Apr 2023
    команда Update
  • https://t.me/clickhouse_ru
    @ionite ↶ Reply to #319958 #319964 12:03 PM, 11 Apr 2023
    В system.mutations смотрели?
  • https://t.me/clickhouse_ru
    можно было просто add column default 100
  • https://t.me/clickhouse_ru
    Я просто пример привел там кондишны чуть посерьёзнее
  • https://t.me/clickhouse_ru
    select * from system.mutations where not is_done
  • Это не ответ на вопрос
  • @alkorgun #319970 12:07 PM, 11 Apr 2023
    > ALTER queries that are intended to manipulate table data are implemented with a mechanism called “mutations”, most notably ALTER TABLE … DELETE and ALTER TABLE … UPDATE. They are asynchronous background processes similar to merges in MergeTree tables that to produce new “mutated” versions of parts.
  • https://t.me/clickhouse_ru
    все они стоят нот из доне
  • https://t.me/clickhouse_ru
    это не ответ на вопрос(
  • https://t.me/clickhouse_ru
    @6131398347 #319973 12:11 PM, 11 Apr 2023
    всем привет!

    может, кто-нибудь сталкивался с подобным алертом:

    INSERT queries that are rejected due to high number of active data parts for partition in a MergeTree, please decrease INSERT frequency
    MergeTreeArchitecture
    system.part_log
    system.merge_tree_settings

    загрузка данных: 3 шарда, таблица Kafka Engine (kafka_max_block_size = 1048576) -> matView -> таблица replicatedMergeTree -> таблица Distributed
  • Он самый
  • https://t.me/clickhouse_ru
    все колонки смотрите, там last_exception, parts_to_do ...
  • https://t.me/clickhouse_ru
    select count() from system.parts where table = ... and active
  • https://t.me/clickhouse_ru
    максимальное количество партов 11 по этому запросу) ну либо что-то поменялось, т.к. ошибка за вчерашний день
  • https://t.me/clickhouse_ru
    понимаю что задаю тупые вопросы 😢🥲
    но что именно я должен увидеть в нот тудув мутейшнс?
  • https://t.me/clickhouse_ru
    а вы фотки выкладываете потому что доступа в интернет с компа нет?
  • https://t.me/clickhouse_ru
    @realzhahanger #319981 12:18 PM, 11 Apr 2023
    да
  • https://t.me/clickhouse_ru
    класс работа, завидую

    что вот этот запрос выдает

    select 'delete '||part_zoo
    from (
    select zoo.p_path as part_zoo, zoo.ctime, zoo.mtime, disk.p_path as part_disk
    from
    (
    select concat(path,'/',name) as p_path, ctime, mtime
    from system.zookeeper where path in (select concat(replica_path,'/parts') from system.replicas)
    ) zoo
    left join
    (
    select concat(replica_path,'/parts/',name) as p_path
    from system.parts inner join system.replicas using (database, table)
    ) disk on zoo.p_path = disk.p_path
    where part_disk='' and zoo.mtime <= now() - interval 1 day
    order by part_zoo);
  • https://t.me/clickhouse_ru
    @den_crane #319983 12:21 PM, 11 Apr 2023
    (ааааа, момент когда я понял что запрос придется напечатать вручную)
  • https://t.me/clickhouse_ru
    может, еще можно в какую-то сторону покопать? наверное, можно этот alert приравнять к too many parts?
  • https://t.me/clickhouse_ru
    ааа это алерт в Альтинити операторе
    похоже это просто RejectedInserts[1m]) > 0 почему Rejected неизвестно
    может места на диске не было
  • https://t.me/clickhouse_ru
    спасибо, буду смотреть!
  • https://t.me/clickhouse_ru
    @cmbcksrl #319987 12:38 PM, 11 Apr 2023
    всем привет
    есть вот такой нубский вопрос, пожалуйста, не бейте ногами

    вот следующий запрос
    SELECT
    sin(a),
    sum(b) AS sum_b
    FROM test_rep
    GROUP BY a
    HAVING count(c) < 4;
    в нем sin(a) будет применяться до фильтрации, описанной в HAVING или сначала будут отфильтрованы все группы, у которых COUNT(c) < 4, а потом уже для их поля a вычислен sin?
  • https://t.me/clickhouse_ru
    @nickitat #319988 12:46 PM, 11 Apr 2023
    where до группировки, having - после
  • https://t.me/clickhouse_ru
    @cmbcksrl #319989 12:46 PM, 11 Apr 2023
    а sin(a) когда?)
    после всего?
  • https://t.me/clickhouse_ru
    @nickitat #319990 12:47 PM, 11 Apr 2023
    посмотрите explain actions=1 <query>
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @cmbcksrl #319992 12:54 PM, 11 Apr 2023
    ну получается, что агрегация сразу выполнилась, а функция после фильтрации
  • https://t.me/clickhouse_ru
    Понял, спасибо! Как раз была проблема в одном из представлений
  • https://t.me/clickhouse_ru
    после.

    что бы до, надо писать GROUP BY a, sin(a)
  • https://t.me/clickhouse_ru
    @cmbcksrl #319995 01:25 PM, 11 Apr 2023
    Ага, понял
    Спасибо
  • https://t.me/clickhouse_ru
    ну т.е. я бы ожидал

    SELECT
    sin(a) as sina,
    sum(b) AS sum_b
    FROM test_rep
    GROUP BY sina
    HAVING count(c) < 4;
  • https://t.me/clickhouse_ru
    @den_crane #319997 01:26 PM, 11 Apr 2023
    иначе неожиданный запрос
  • https://t.me/clickhouse_ru
    @cmbcksrl #319998 01:28 PM, 11 Apr 2023
    Да просто вопрос больше был про то, в какой момент выполняются какие функции

    Вот я в эксплейне увидел, что SUM(b) и COUNT(c) выполняются на одном шаге, хотя одно описано в SELECT, а другое в HAVING
  • https://t.me/clickhouse_ru
    @andynador #319999 01:30 PM, 11 Apr 2023
    Подскажите ещё, пожалуйста, по движкам таблиц ExternalDistributed и PostgreSQL. Не совсем понял, копируют ли они физически данные из БД-источника в определённый период, как Dictionary, или же выполняют запросы налету?
  • https://t.me/clickhouse_ru
    тянут данные заново из бд источника в каждом запросе.

    есть еще, он перекладывает в КХ сам, как реплика PG
    https://clickhouse.com/docs/en/engines/table-engines/integrations/materialized-postgresql
    MaterializedPostgreSQL | ClickHouse Docs

    Creates ClickHouse table with an initial data dump of PostgreSQL table and starts replication process, i.e. executes background job to apply new changes as they happen on PostgreSQL table in the remote PostgreSQL database.

  • https://t.me/clickhouse_ru
    @andynador #320001 01:33 PM, 11 Apr 2023
    понял, спасибо!
  • https://t.me/clickhouse_ru
    А не лучше использовать cdc sink-connector от алтинити ?
  • https://t.me/clickhouse_ru
    я знаю про cdc sink-connector от алтинити ровно 0, я даже не знал что он PG умеет.
  • https://t.me/clickhouse_ru
    @269917803 #320004 01:43 PM, 11 Apr 2023
    Подскажите, пожалуйста, в чём может быть проблема.
    В kafka положили битый json, таблица с engine=kafka в клике приуныла, перестала забирать сообщения начиная с битого оффсета.
    Отключили таблицу kafka в клике, перемотали offset в kafka у партиций на валидные, подсоединили таблицу с engine=kafka в клике, сообщения он получать так и не стал, ошибок не видно.
    Пробовал дропать таблицу в клике вместе с мат. вью, которая на ней висит и создавать после перемотки - не помогает.
  • format JSONAsString? Если да, то: SETTINGS kafka_skip_broken_messages=1
  • @alkorgun #320006 02:02 PM, 11 Apr 2023
    > kafka_skip_broken_messages — Kafka message parser tolerance to schema-incompatible messages per block. If kafka_skip_broken_messages = N then the engine skips N Kafka messages that cannot be parsed (a message equals a row of data). Default: 0.
  • @alkorgun #320007 02:03 PM, 11 Apr 2023
    Либо поменяйте формат на RawBLOB
  • https://t.me/clickhouse_ru
    @albertbariev #320008 02:08 PM, 11 Apr 2023
    привет!
    а подскажите пожалуйста, каким образом работает explain estimate при подсчете количества строк?
    изначально думал, что там просто умножается количество гранул на размер гранулы для читаемых таблиц, но кажется это не всегда так (explain estimate каким-то образом учитывает «неполноту» гранул и лучше предсказывает)
  • https://t.me/clickhouse_ru
    размер гранулы не константа, не 8192.
    адаптивная гранулярность, и КХ знает размер гранул
  • https://t.me/clickhouse_ru
    @albertbariev #320010 02:16 PM, 11 Apr 2023
    уточню: появилась необходимость использовать explain json=1,actions=1 вместо explain estimate при предсказании количества читаемых строк, но точность сильно упала
  • https://t.me/clickhouse_ru
    во всех таблицах стоит такая настройка SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    еще раз, это не константа.

    вам сюда https://www.youtube.com/watch?v=7pyNmackUTw
    Адаптивная гранулярность индекса в MergeTree таблицах

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

  • https://t.me/clickhouse_ru
    @albertbariev #320013 02:18 PM, 11 Apr 2023
    хорошо, спасибо)
  • https://t.me/clickhouse_ru
    @den_crane #320014 02:19 PM, 11 Apr 2023
    уже давно index_granularity это верхняя граница, строк в грануле может быть меньше чем 8192
  • https://t.me/clickhouse_ru
    @albertbariev #320015 02:27 PM, 11 Apr 2023
    еще такой вопрос по explain estimate:
    правильно понимаю, что он игнорирует подзапросы, скрытые внутри конструкции GLOBAL IN?
  • https://t.me/clickhouse_ru
    ну да, estimate очень ограниченный, и не работает для distributed/mv/merge
  • https://t.me/clickhouse_ru
    @albertbariev #320017 02:40 PM, 11 Apr 2023
    на всякий случай уточню еще: explain estimate сейчас единственный способ получения информации о количестве читаемых строк до выполнения запроса?
  • https://t.me/clickhouse_ru
    Да, можно и так попробовать, но конкретно сейчас не помогает. Что ещё мешает получать уже валидные записи
  • https://t.me/clickhouse_ru
    @putopelatudo #320019 02:48 PM, 11 Apr 2023
    Привет ребята. Подскажите пожалуйста. Есть win serv, на нем виртуалка гипер в с убунту. на убунту серв это поднял клик хаус. если внутри нее делаю - curl http://localhost:8123 то все ОК. а если с самого сервака вин серв иду через браузер по http://192.168.1.2 то нет подключения. в чем может быть проблема?
  • Видимо не только JSON сломали, но и что-то по типам в матвьюхе с таблицей не сходится. Нужно посмотреть внимательней. Можно подвинуть оффсет обратно, создать сырую таблицу, где всё сообщение будет одной колонкой в стринге лежать, плюс метаданные сообщения в остальных, вставить данные туда и уже повозиться с ними
  • @alkorgun #320021 02:50 PM, 11 Apr 2023
    Но в принципе проблема в и логах должна бы отражаться. Не факт только, что всё очевидно будет
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    listen_host какой?
  • https://t.me/clickhouse_ru
    не знаю, я это нигде не указывал. не было даже просьбе о таком при установке
  • https://t.me/clickhouse_ru
    netstat -nltp | grep 8123
  • https://t.me/clickhouse_ru
    Это внутри виртуалки запустите
  • @2134873315 #320027 03:27 PM, 11 Apr 2023
    Приветствую. А кто знает можно ли на ALTER TABLE .. MODIFY ORDER BY убрать одну колонку, которая сейчас мешает схлопывать replacingMT. В доке только про добавление. По идее если меняется только метадата, то должно сработать. Новые данные начнут схлопываться, а старым можно в спокойном режиме попартиционно optimize final сделать. или нет?
  • https://t.me/clickhouse_ru
    @mazda1 #320028 03:30 PM, 11 Apr 2023
    Добрый вечер! Может, кто-то сталкивался с такой ошибкой?

    Проблема при работе с кластером ClickHouse через DataGrip. После подключения и выполнения нескольких запросов в DataGrip регулярно вылетает ошибка SSL peer shutdown incorrectly. И после этого, если не закрыть окно DG, сервер продолжает отвечать этой ошибкой (видимо, серверу надо, чтобы это проблемное соединение было прибито). То есть если окно DG после возникновения ошибки открыто, я не могу, например, из DBeaver подключится к бд, он той же ошибкой плюется, DataLens не может до бд достучаться и т. д. Если после возникновения ошибки окно DG закрыть, то сервер возвращается к нормальному режиму работы.

    Гуглил по этой проблеме, не нашел решения.
  • https://t.me/clickhouse_ru
    скорее всего нельзя.

    MODIFY ORDER BY позволяет убирать колонку с конца, если она не входит в pk
  • https://t.me/clickhouse_ru
    ClickHouse Meetup Amsterdam, June 8, 2022

    Slides: https://github.com/ClickHouse/clickhouse-presentations/tree/master/meetup59

  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    @IgVitaly #320033 04:15 PM, 11 Apr 2023
    Добрый вечер!
    Может кто-то работал с JSON в CH и сможет помочь - у меня есть колонка request_items с String значениями, к примеру:
    [{'code': '53974', 'price': 34999, 'quantity': 2}, {'code': '9002', 'price': 4499, 'quantity': 1}]
    Мне необходимо вытащить отсюда все price и quantity и записать в отдельные строки.

    Я написал скрипт, но он выводит пустые значения:
    select
    JSONExtractString(item, 'name') as name_,
    JSONExtractString(item, 'price') as price_
    from cart_recommendation_log
    left array join
    JSONExtractArrayRaw(request_items) as item

    Может, кто-то знает как его исправить?
  • https://t.me/clickhouse_ru
    Звучит, так что у вас данные не правильные :( Потому что у вас Array(String) по идее
  • https://t.me/clickhouse_ru
    Возможно дело в кавычках. Валидный json с двойными кавычками
  • @processer #320036 05:22 PM, 11 Apr 2023
    А есть ли в КХ эквивалент питонячьей нативной функции hash? Чтобы то же самое значение получать?
  • https://t.me/clickhouse_ru
    эм, так она разная в каждой версии питона

    hash('a');
    -839024934870873688

    hash('a');
    12416037344

    hash('a');
    -7446503259124477539

    еще и разная на arm и интел
  • @processer #320038 05:28 PM, 11 Apr 2023
    Точно, спасибо
  • Более того. Это хэш объекта, а не строки
  • https://docs.python.org/3/library/hashlib.html
    https://clickhouse.com/docs/ru/sql-reference/functions/hash-functions
    hashlib — Secure hashes and message digests

    Source code: Lib/hashlib.py This module implements a common interface to many different secure hash and message digest algorithms. Included are the FIPS secure hash algorithms SHA1, SHA224, SHA256,...

  • @fdeh75 #320041 06:11 PM, 11 Apr 2023
    если очень надо - то можно что-то около того сделать
    import hashlib

    class HashStr(str):
    def __hash__(self):
    return int.from_bytes(hashlib.md5(self.__str__().encode()).digest(), 'big')

    a = HashStr("1234")
    print(hash(a))
  • https://t.me/clickhouse_ru
    Точно, спасибо!
  • https://t.me/clickhouse_ru
    @vlkharlamov #320043 07:41 PM, 11 Apr 2023
    А у меня вопрос обратный как из Python'а получить достоверный sipHash64 как в CH?

    Изначально писали в дистрибьютер таблицу, там было такое хеширование, сейчас хотим локально писать, но по такому же правилу, чтобы ничего не сломать
  • @Ridnant #320044 08:11 PM, 11 Apr 2023
    Всем привет, сори, если тупой вопрос) подскажите пожалуйста у меня есть 2 айдишки и мне нужно из них сделать 1 уникальный индификатор. как обычно в таких случаях делают, выбирают определенную хэш функцию или можно в тупую просто складывать 2 числа ? данных может быть очень много
  • Сложение даст совсем плохой результат, ведь 2 + 3 = 4 + 1, например. Хэш функция тоже даст коллизии, их просто искать будет сложнее. Но если у вас просто два числа, то можно их в пару сложить или в целочисленный тип в 2 раза больше размером без всяких коллизий.
  • @Ridnant #320046 08:19 PM, 11 Apr 2023
    Спасибо 🥲
  • @alkorgun #320049 08:20 PM, 11 Apr 2023
    Но я бы не стал так делать
  • Ну не гогОл же скорее всего )) если бигинта не хватает, то используйте хеш и не парьтесь. Можно полученный хеш конвертнуть в uniqidentifier и тд. Всё от целей и задач зависит.
  • https://t.me/clickhouse_ru
    обычно берут просто строку id1 - id2
  • https://t.me/clickhouse_ru
    @vlkharlamov #320052 08:29 PM, 11 Apr 2023
    от нее можно уже хеш брать
  • @Ridnant #320053 08:32 PM, 11 Apr 2023
    понял принял) спасибо за ответы
  • 12 April 2023 (212 messages)
  • https://t.me/clickhouse_ru
    @Hardstep83 #320056 03:42 AM, 12 Apr 2023
    Здравствуйте, уважаемые знатоки.
    Вылетает ошибка при запросе такого вида:
    select col1,col2,col3,prefix_column_col1 from simple_view array join columns('^prefix_column') where prefix_column_col1 = '1' and col1 = 1
    Ошибка такая:
    Code: 47. DB::Exception: Cannot find column equals(col1, 1) in ActionsDAG result. (UNKNOWN_IDENTIFIER) (version 23.3.1.2823 (official build))

    Что примечательно simple_view - представление с запросом к таблице ну скажем simple_table, и если запрос перестроить на эту таблицу или явно развернуть запрос из представления в подзапрос - ошибка уходит
    Даже больше - если к запросу применить explain syntax, то КХ сам разворачивает представление в подзапрос.

    то есть вот такой запрос ошибки не вызывает
    select col1,col2,col3,prefix_column_col1 from simple_table array join columns('^prefix_column') where prefix_column_col1 = '1' and col1 = 1

    На КХ более старой версии (22.8.4.7- lts), ошибок нет.
    Даже больше. На другом сервере КХ с той же версией 23.3.1.2823 данный запрос без проблем выполняется, настройки там аналогичные.
    Воспроизвести ошибку на синтетических данных, создав тестовую таблицу - не удается :(
  • https://t.me/clickhouse_ru
    distributed таблицы учавствуют?
    что если сделать set optimize_move_to_prewhere=0 ?
  • https://t.me/clickhouse_ru
    На том сервере где ошибки нет - участвуют, set optimize_move_to_prewhere=0 пробовал, не помогает
  • @D9n15 #320059 03:56 AM, 12 Apr 2023
    Здравствуйте!
    Подскажите пожалуйста,
    у меня такой запрос работает на постгрессе :
    WITH t1 AS (
    SELECT field FROM table
    ),
    t2 AS (
    SELECT field FROM table
    )
    SELECT t1.field AS field1, t2.field AS field2 FROM t1, t2
    WHERE t1.field NOT IN (
    SELECT field1 FROM tablewithpairs
    WHERE field1=t1.field AND field2=t2.field
    ) AND t2.field NOT IN (
    SELECT field1 FROM tablewithpairs
    WHERE field1=t2.field AND field2=t1.field
    ) AND t1.field <> t2.field

    но на кликхаусе ошибка
    DB::Exception: Missing columns: 't1.field' 't2.field' while processing query:
    'SELECT field1 FROM tablewithpairs WHERE (field1 = t2.field) AND (field2 = t1.field)',
  • https://t.me/clickhouse_ru
    А еще если в фильтрах использовать обычную колонку ИЛИ развернутую то ошибки тоже нет
    Например так ошибки нет
    select col1,col2,col3,prefix_column_col1 from simple_view array join columns('^prefix_column') where prefix_column_col1 = '1'
    или Так тоже без ошибки
    select col1,col2,col3,prefix_column_col1 from simple_view array join columns('^prefix_column') where col1 = 1
    А еще какая то мистика, если добавить в условие 1=1 впереди всех условий - то тоже ошибки нет
    select col1,col2,col3,prefix_column_col1 from simple_view array join columns('^prefix_column') where 1=1 and prefix_column_col1 = '1' and col1 = 1
  • https://t.me/clickhouse_ru
    Ну так перепишите запрос на синтаксис CH
  • @D9n15 ↶ Reply to #320061 #320062 04:01 AM, 12 Apr 2023
    а что тут не так с синтаксисом? ошибка-то не синтаксическая
  • https://t.me/clickhouse_ru
    В КХ не работают латеральные запросы
  • https://t.me/clickhouse_ru
    Сделал копию таблицы, и перенес в неё данные на том же сервере, не помогло. ошибка та же...

    С пустой таблицей ошибки не было...
  • @D9n15 ↶ Reply to #320063 #320065 04:12 AM, 12 Apr 2023
    а как это можно обойти?
  • https://t.me/clickhouse_ru
    Словарь direct например, или своя функция, или через IN, join
  • https://t.me/clickhouse_ru
    @a4104c504 #320067 04:13 AM, 12 Apr 2023
    Добрый день
    Пытаюсь настроить движок Kafka
    Застрял с проблемой https://pastila.nl/?011739f8/4eaefa1c07c2401ffa6951b5936a8b24

    Подскажите пожалуйста на какой стороне может быть проблема и пути решения, все опубликовано через Docker на своих серверах
  • https://t.me/clickhouse_ru
    Set query_plan_optimize_primary_key=0
  • https://t.me/clickhouse_ru
    Не помогло
  • https://t.me/clickhouse_ru
    Кстати в доке не нашёл такой настройки, не подскажите где можно все настройки посмотреть?
  • @D9n15 ↶ Reply to #320066 #320071 05:06 AM, 12 Apr 2023
    Спасибо, помогло!
  • https://t.me/clickhouse_ru
    пожалуйста
  • https://t.me/clickhouse_ru
    Тупо написал код, со всеми булевыми настройками из system.settings и поменял на противоположное. Потом эту кучу запросов с антинастройками выполнил и посмотрел с какой настройкой выполнилось без ошибки). Выиграла настройка optimize_read_in_order=0
    Что то вроде:
    select 'select col1,col2,col3,prefix_column_col1 from simple_view array join columns(''^prefix_column'') where prefix_column_col1 = ''1'' and col1 = 1 settings '||name||'='||if(value::UInt8 = 0,1,0)::String||';\n' as anti_value from system.settings
    where type = 'Bool'
  • https://t.me/clickhouse_ru
    Правда так и не понятно почему так - optimize_read_in_order=0, ведь эта настройка вроде никак не связана с планом запроса...
  • https://t.me/clickhouse_ru
    а насколько быстрее стало? просто любопытно.

    Или просто запрос заработал?))
  • https://t.me/clickhouse_ru
    Не знаю, пока главное что ошибка ушла при отключении этой опции.
  • https://t.me/clickhouse_ru
    @Hardstep83 #320077 05:33 AM, 12 Apr 2023
    @den_crane - Спасибо что натолкнули на направление поиска проблемы.
  • https://t.me/clickhouse_ru
    @gsh404 #320078 06:43 AM, 12 Apr 2023
    Всем привет! Скажите, пожалуйста, у меня на C++ в приложении есть Поток, который бесконечно слушает WebSocket и я хочу раз в 1000 записей их отправлять в ClickHouse.

    Сейчас я делаю такие строки:
    auto qty = make_shared<ColumnDecimal>(10,9);
    qty->Append(to_string(event.quantity));

    Как очистить qty чтобы не хранить все их в памяти после Insert?
    Может у кого то есть пример кода или вкратце логики
  • https://t.me/clickhouse_ru
    @Alexeysaff #320079 07:13 AM, 12 Apr 2023
    всем привет, есть живая кафка интеграция, добавил столбец в таблицу, надо поменять MV.
  • https://t.me/clickhouse_ru
    @Alexeysaff #320080 07:13 AM, 12 Apr 2023
    это как-то можно сделать вживую?
  • https://t.me/clickhouse_ru
  • @chashnikov #320082 07:38 AM, 12 Apr 2023
    Доброго времени суток, после экспериментов с восстановлением бэкапа, на одной ноде при попытке создания таблицы с указанием UUID возникает ошибка:
    Code: 57. DB::Exception: Mapping for table with UUID=c1ae35d5-e401-409d-991e-cff0a8cf7a75 already exists. It happened due to UUID collision, most likely because some not random UUIDs were manually specified in CREATE queries.
    Где хранится этот Mapping и как-то можно его почистить?
  • https://t.me/clickhouse_ru
    @ActionNum #320083 07:52 AM, 12 Apr 2023
    Всем привет, подскажите плиз в вопросе типа рейда для КХ на NVMe дисках. Мы хотим поставить себе в новый ДЦ три реплики но при этом использовать raid-0
    https://clickhouse.com/docs/en/operations/tips
    Тут особо про это не сказано, может кто поделиться опытом, стоит ли так делать?
  • https://t.me/clickhouse_ru
    @ActionNum #320084 07:52 AM, 12 Apr 2023
    Планирую ставить в куб, через альтинити оператор.
  • https://t.me/clickhouse_ru
    @last_knot #320085 07:52 AM, 12 Apr 2023
    Добрый день. Существует ли возможность сделать ilike для множества значений подстрок? (например, получить эти значения select'ом)
  • https://t.me/clickhouse_ru
    @Alexeysaff #320086 07:54 AM, 12 Apr 2023
    Скажите, если у меня order by по полю symbol и symbol имеет вот такой формт. в where делаю
    CAL_BTC_230413_16050.00

    в where делаю
    WHERE symbol LIKE 'CAL_BTC_230413_%'
    и такой запрос не идёт в prewhere
  • https://t.me/clickhouse_ru
    @Alexeysaff #320087 07:54 AM, 12 Apr 2023
    это так и должно быть?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @php_dev4_hr54 #320089 07:55 AM, 12 Apr 2023
    Добрый день всем.
    Есть проблема с запросами в Clickhouse - иногда они начинают зависать и отваливаться по таймауту в 10 секунд, хотя выполняются обычно меньше чем за 0.5 секунд. Происходит в непредсказуемые промежутки времени в 10-20 минут, несколько запросов так падает, потом всё нормально и так по кругу.
    Таблица ReplicatedMergeTree, запрос очень простой, без join, обычный SELECT ... WHERE ... ORDER BY LIMIT..., кликхаус в кластере из 2 нод, пока работаем только с одной по своим причинам. В system.errors пусто, куда ещё можно смотреть, чтобы найти причину? Версия кликхауса - 22.12.2
  • @FratrerCRC #320090 08:00 AM, 12 Apr 2023
    Добрый день, господа.
    Есть ли в кликхасе способ сделать пивот таблицу.
    При этом, чтобы строки в части пивот таблицы моглы нулы содержать + заранее неизвестно количество столбцов в пивот части
  • https://t.me/clickhouse_ru
    Все известные PIVOT/UNPIVOT собраны тут https://kb.altinity.com/altinity-kb-queries-and-syntax/pivot-unpivot/
  • @1466132867 #320092 08:01 AM, 12 Apr 2023
    Привет! Вопрос больше теоретический :)
    Есть текстовый файл на 500гб (словарь паролей). Нужно каждую строчку прохешировать в md5/sha1/etc, и потом, соответственно, искать исходный пароль через хеш.
    Подойдет ли CH для подобной задачи (одна большая табличка) ?

    Сама БД будет обновляться крайне редко. Т.е. один раз заполнить и потом только чтение
  • https://t.me/clickhouse_ru
    @NataVolkova92 #320093 08:02 AM, 12 Apr 2023
    Добрый день!

    Сейчас для дедубликации при обновлении данных используется таблица с движком ReplicatedReplacingMergeTree
    с ORDER BY(uuid).
    В запросах SELECT из этой таблицы условия WHERE идут по другим трем полям(t_from, t_to, type).
    В итоге скорость запроса низкая из-за ORDER BY(uuid).

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

    пока смотрим в стороны MV с сортировкой под запрос, но там есть проблема в дубле данных
  • https://t.me/clickhouse_ru
    ReplacingMergeTree не гарантирует отсутствие дубликатов:
    https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/replacingmergetree
    ReplacingMergeTree | ClickHouse Docs

    The engine differs from MergeTree in that it removes duplicate entries with the same sorting key value (ORDER BY table section, not PRIMARY KEY).

  • https://t.me/clickhouse_ru
    Звучит, как анти-патерн, но мне кажется это реализуемо. https://clickhouse.com/docs/en/faq/use-cases/key-value
    Can I use ClickHouse as a key-value storage? | ClickHouse Docs

    can-i-use-clickhouse-as-a-key-value-storage}

  • https://t.me/clickhouse_ru
    Имхо, берите key-val db, а не ClickHouse, не тот юзкейс.
  • @1466132867 #320097 08:04 AM, 12 Apr 2023
    Понял, спасибо за ответы
  • https://t.me/clickhouse_ru
    Точечные чтения это антипаттерн КХ
  • https://t.me/clickhouse_ru
    Ну, тут зависит от насколько тяжелый будет индекс у key-value бд.

    В некоторых случаях кх может выиграть из за сортировки данных и легкого индекса.
  • Попробую сделать пару тестов с 50-100гб файлами, поглядимс. Но посыл понятен
  • https://t.me/clickhouse_ru
    Сделал подстановку в функцию select запроса по одной колонке, но возникла следующая ошибка:

    Code: 43. DB::Exception: Illegal type Array(Nullable(String)) of argument of function multiSearchAnyCaseInsensitive: While processing multiSearchAnyCaseInsensitive(text, [_CAST('test', 'Nullable(String)')]).

    UPD:
    SELECT multiSearchAnyCaseInsensitive(text, (SELECT word FROM table_2 WHERE ilike(word, '%test%') AND flag=1)) FROM table_1
  • @andxray #320102 08:37 AM, 12 Apr 2023
    Всем привет! Подскажите, пожалуйста, как можно в запросе соединить результат выполнения функции currentDatabase() и имя таблицы для секции FROM?
  • https://t.me/clickhouse_ru
    @Alexeysaff #320103 08:44 AM, 12 Apr 2023
    если нужно поменять order by?
    достаточно создать таблицу и сделать insert into select * from ?
  • https://t.me/clickhouse_ru
    @Alexeysaff #320104 08:44 AM, 12 Apr 2023
    на альтинити зачем-то указано через три таблицы
  • https://t.me/clickhouse_ru
    @Alexeysaff #320105 08:45 AM, 12 Apr 2023
    old, new and temp
  • https://t.me/clickhouse_ru
    @Hero_of_Comix #320106 08:58 AM, 12 Apr 2023
    Подскажите, пожалуйста, кто-то сталкивался при обновлениии на 23.3.1 (обновлялся с 22.2.2), что при старте судя по логам нормально стартует, удаляет tmp диры, инициализирует таблички, а затем просто чего-то ждет и в логи ничего не пишет?
    strace -p 1182283
    strace: Process 1182283 attached
    futex(0x7ffe070b7ea0, FUTEX_WAIT_PRIVATE, 0, NULL

    вот последние строчки в логе

    2023.04.12 11:26:48.000408 [ 1182474 ] {} <Debug> pulse.top_stat_all_by_week_replicated (c0602bff-6917-4249-9293-7a2c14ec5f10): Initializing table shared ID with c0602bff-6917-4249-9293-7a2c14ec5f10
    2023.04.12 11:26:48.001677 [ 1182474 ] {} <Information> pulse.top_stat_all_by_week_replicated (c0602bff-6917-4249-9293-7a2c14ec5f10): Became leader
    2023.04.12 11:26:48.651357 [ 1182477 ] {} <Debug> pulse.kafka2ch_replicated (1621d954-3ecc-4d74-b21c-5f619faff387): Loaded 1251 outdated data parts asynchronously
    2023.04.12 11:26:48.669412 [ 1182477 ] {} <Debug> pulse.top_stat_source_by_month_replicated (5a8df5a8-78c6-444d-b827-a419ce4ac4f0): Creating shared ID for table pulse.top_stat_source_by_month_replicated
    (5a8df5a8-78c6-444d-b827-a419ce4ac4f0)
    2023.04.12 11:26:48.670287 [ 1182477 ] {} <Debug> pulse.top_stat_source_by_month_replicated (5a8df5a8-78c6-444d-b827-a419ce4ac4f0): Initializing table shared ID with 5a8df5a8-78c6-444d-b827-a419ce4ac4f0
    2023.04.12 11:26:48.672129 [ 1182477 ] {} <Information> pulse.top_stat_source_by_month_replicated (5a8df5a8-78c6-444d-b827-a419ce4ac4f0): Became leader
  • https://t.me/clickhouse_ru
    @CYevhenii #320107 09:24 AM, 12 Apr 2023
    Всем привет, дали вот такие граны

    GRANT SELECT ON table TO user
    REVOKE SELECT(email) ON table FROM user

    GRANT SELECT ON view TO user
    REVOKE SELECT(email) ON view FROM user

    Привет этом запрос типа select id from view пишет что недостаточно привелегий, так как вьюха под капотом использует все столбцы. Можно ли как-то обойти такое?
  • @anotherbugmaster #320108 09:53 AM, 12 Apr 2023
    Есть вопросы по header:
    - Я правильно понимаю, что это те колонки, которые читаются на каждом этапе запроса?
    - Читаются ли все колонки из view при SELECT из него? Например:

    CREATE OR REPLACE TABLE table_1 (
    foo String,
    bar String
    )
    ENGINE = MergeTree
    ORDER BY foo;

    CREATE OR REPLACE TABLE table_2 AS table_1;

    CREATE OR REPLACE VIEW view_1
    AS
    SELECT * FROM table_1
    UNION DISTINCT
    SELECT * FROM table_2;

    EXPLAIN header = 1
    SELECT foo
    FROM view_1;

    Expression ((Projection + (Before ORDER BY + (Convert VIEW subquery result to VIEW table structure + Materialize constants after VIEW subquery))))
    Header: foo String
    Distinct
    Header: foo String
    bar String
    Union
    Header: foo String
    bar String
    Expression ((Projection + Before ORDER BY))
    Header: foo String
    bar String
    ReadFromPreparedSource (Read from NullSource)
    Header: foo String
    bar String
    Expression ((Projection + Before ORDER BY))
    Header: foo String
    bar String
    ReadFromPreparedSource (Read from NullSource)
    Header: foo String
    bar String

    Но

    EXPLAIN header = 1
    SELECT foo
    FROM table_1;

    Expression ((Projection + Before ORDER BY))
    Header: foo String
    ReadFromPreparedSource (Read from NullSource)
    Header: foo String

    В первом случае колонка bar отображается в header, во втором - нет. Почему так?
  • https://t.me/clickhouse_ru
    @greenh_ua #320109 09:53 AM, 12 Apr 2023
    Добрый день. Подскажите плиз
    Имеетяс постгресс база и кликхауз. В кликзхаузе настроен MaterializedPostgreSQL. Правильно ли я понимаю, что изменение структуры базы в посгресс намертво ломает репликацию?
  • https://t.me/clickhouse_ru
    "[экспериментальный] MaterializedPostgreSQL
    Создает базу данных ClickHouse с исходным дампом данных таблиц PostgreSQL и запускает процесс репликации, т.е. выполняется применение новых изменений в фоне, как эти изменения происходят в таблице PostgreSQL в удаленной базе данных PostgreSQL.

    Сервер ClickHouse работает как реплика PostgreSQL. Он читает WAL и выполняет DML запросы. Данные, полученные в результате DDL запросов, не реплицируются, но сами запросы могут быть обработаны (описано ниже)."
  • https://t.me/clickhouse_ru
    @greenh_ua #320111 09:57 AM, 12 Apr 2023
    не совсем понятно вот это не реплицируются, но сами запросы могут быть обработаны
  • https://t.me/clickhouse_ru
    Это значит что DDL сам не переползет из БД в БД, но с помощью настроек + ATTACH & DETACH можно таблицу перезагрузить (ну опять же насколько я понял документацию - сам не пробовал)

    UPD - наверное я все таки не прав, и можно с помощью materialized_postgresql_allow_automatic_update
  • https://t.me/clickhouse_ru
    @greenh_ua #320114 10:05 AM, 12 Apr 2023
    детач не работает )
    Received from localhost:9000. DB::Exception: Unknown setting materialized_postgresql_allow_automatic_update. (UNKNOWN_SETTING)
    materialized_postgresql_allow_automatic_update - посмотрю, спасиб, но там же logical wal
    он разве умеет изменения структурі?
  • https://t.me/clickhouse_ru
    @IvanTulaev #320115 10:06 AM, 12 Apr 2023
    Пытаюсь получить данные из таблицы с использованием функции histogram
    SELECT histogram(5)(myfield)
    FROM (
    SELECT myfield
    FROM mydb.mytable
    )

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

    v 22.2.2.1
  • https://t.me/clickhouse_ru
    logical wal конечно нет но
    "materialized_postgresql_allow_automatic_update
    Позволяет автоматически обновить таблицу в фоновом режиме при обнаружении изменений схемы. DDL-запросы на стороне сервера PostgreSQL не реплицируются с помощью движка ClickHouse MaterializedPostgreSQL, поскольку это запрещено протоколом логической репликации PostgreSQL, но факт DDL-измененений обнаруживается транзакционно. После обнаружения DDL по умолчанию прекращается репликация этих таблиц. Однако, если эта настройка включена, то вместо остановки репликации, таблицы будут перезагружены в фоновом режиме с помощью снимка базы данных без потери информации, и репликация для них будет продолжена."
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #320093 #320117 10:31 AM, 12 Apr 2023
    UUID - это самый ужасный вариант для ID. По возможности надо этого избегать.
    Если не получается сделать нормальный, мотононно растущий ID, то вставляйте в начало ORDER BY таблицы что-нибудь полезное и/или упорядочивающее этот рандомный порядок. Можно вставить ваш type. Неплохо получится с toDate(timestamp). На дедубликацию через FINAL это скорее всего не повлияет.

    Aggregating by MV для таблицы с дубликатами в общем случае невозможно. Нужно делать CollapsingMT c этими sign=1/-1, но будут проблемы с добычей старый данных. Вытаскивать их из той-же таблицы будет не очень просто/быстро, лучше получать из OLTP.
  • ORDER BY?
  • Кликхаус не гарантирует одинаковый порядок данных без ORDER BY
  • @anotherbugmaster #320120 10:38 AM, 12 Apr 2023
    А, пардон, не увидел histogram
  • https://t.me/clickhouse_ru
    Надо попробовать.
    Сейчас выяснил опытным путем. Что на маленьких таблицах все в норме.
    На тех что побольше начинаются проблемы
    Проблемные от 200 000 записей
  • https://t.me/clickhouse_ru
    На удивление работает 🙂
    Осталось только найти того безумца, который проверит “математику”

    SELECT histogram(5)(myfield)
    FROM (
    SELECT myfield
    FROM mydb.mytable
    ORDER BY myfield
    )
  • 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
    @runiverse_hiker #320128 11:07 AM, 12 Apr 2023
    Добрый день. Подскажите пожалуйста как провести проверку какие процессы внутри клика съедают больше всего памяти при пустом show processlist?
  • https://t.me/clickhouse_ru
    Посоветуйте пожалуйста
  • https://t.me/clickhouse_ru
    @sergeidanilovi4 #320130 11:20 AM, 12 Apr 2023
    Всем привет! Свежеустановленный кликхаус не пускает по паролю. Куда смотреть?
  • https://t.me/clickhouse_ru
    users.xml
  • https://t.me/clickhouse_ru
    сокет слушает?
    типо netstat -nlp | grep 9000
  • А вы уверены что проблемы с паролем?
  • https://t.me/clickhouse_ru
    @Alexeysaff #320134 11:31 AM, 12 Apr 2023
    хочу сделать некоторые честные тесты, но после первого квери. второй (такой же) выполняется намного быстрее
  • https://t.me/clickhouse_ru
    @Alexeysaff #320135 11:31 AM, 12 Apr 2023
    есть возможно сть сбросить кеши?
  • https://t.me/clickhouse_ru
    @igor_gorbenko #320136 11:36 AM, 12 Apr 2023
    Всем привет! Ребята, подскажите, пожалуйста, у кого был опыт имплементации сложной бизнес логики ETL на кликхаусе (рекурсивный поиск, апдейты, мердж процедуры)? Подходит ли Clickhouse для этого?
  • https://t.me/clickhouse_ru
    Проведите тесты и эксперименты относительно своих данных. Так-то в ClickHouse можно имплементировать многое, но надо готовиться к костылям и обходным решениям.
  • https://t.me/clickhouse_ru
    Не похоже на пароль :)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    в папке /etc/clickhouse-server/ есть только config.xml
  • https://t.me/clickhouse_ru
    Не уверен, что именно с паролем.
  • https://t.me/clickhouse_ru
    network error -- при чем тут пароль?
    КХ не запущен

    service clickhouse-server status
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    кстати вы задали пароль при установке КХ

    users.d/default-password.xml

    можете удалить или исправить этот файл
  • https://t.me/clickhouse_ru
    @yatoba #320145 12:32 PM, 12 Apr 2023
    скажите в system.distribution_queue должно быть пусто или постоянно присутствующие строки где все по нулям тоже допускаются по типу таких:
    Row 1:
    ──────
    database: aaaaq
    table: ggg
    data_path: /var/lib/clickhouse/store/c07/c07e7aa8-d583-4011-af6e-d5100251f4b6/shard2_replica1/
    is_blocked: 0
    error_count: 0
    data_files: 0
    data_compressed_bytes: 0
    broken_data_files: 0
    broken_data_compressed_bytes: 0
    last_exception:
    last_exception_time: 1970-01-01 03:00:00
    На одном шарде в таком виде, на другом пусто в этой табличке
  • https://t.me/clickhouse_ru
    это нормально.

    пока data_files не растет непрерывно, все ок
  • https://t.me/clickhouse_ru
    @yatoba ↶ Reply to #320146 #320147 12:47 PM, 12 Apr 2023
    спасибо
  • https://t.me/clickhouse_ru
    @mayamika #320148 12:50 PM, 12 Apr 2023
    Всем привет. Можно ли как-то сделать select из таблицы t1, на записи которые также находятся в таблицце t2. При этом в t1 находится мало записей 10-100k а таблица t2 очень большая. и чтобы это не взрывалось по памяти.
  • https://t.me/clickhouse_ru
    select * from t1
    where id in (select id from t2
    where id in (select id from t1)
    )
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    Вы не можете просто давать на view доступы, а на таблицу не давать. Требуется доступы и на таблицу
  • https://t.me/clickhouse_ru
    нет, не подходит
  • https://t.me/clickhouse_ru
    Я даю доступ и на табилцу и на вью, вопроси в том что вью делает запрос на все колонки, и если у пользователя нет доступа на одну из колонок, вью при любом селекте говорит что нехаватает доступа, можно это как-то обойти?
  • https://t.me/clickhouse_ru
    @Randomazer #320154 01:06 PM, 12 Apr 2023
    Коллеги, доброго дня, подскажите, какой размер у типов данный в clickhouse Date и DateTime?
  • https://t.me/clickhouse_ru
    @dusshmann #320155 01:12 PM, 12 Apr 2023
    Какой клиент обычно юзают для клика?
  • https://t.me/clickhouse_ru
    родной
  • смотря чем ходить в него)
    clickhouse-client
  • https://t.me/clickhouse_ru
    Он и для администрирования и для разработки?
  • https://t.me/clickhouse_ru
    конечно
  • https://t.me/clickhouse_ru
    @MakeReady #320160 01:15 PM, 12 Apr 2023
    он же, по сути, сути сам КХ и есть ))
  • https://t.me/clickhouse_ru
    В смысле? Движок причём
  • https://t.me/clickhouse_ru
    @dusshmann #320162 01:18 PM, 12 Apr 2023
    Такой ещё вопрос, сейчас на рынке ищут чтобы и админили кластер, и разрабатывали витрины? Или по отдельности
  • https://t.me/clickhouse_ru
    @s_nikolajus #320163 01:20 PM, 12 Apr 2023
    Привет! По S3 в Clickhouse-backup: кто-нибудь сталкивался с тем какие конкретно пермишены надо на бакет задавать? Необходим один R/O, и один R/W юзер, но никак не получается их сконфигурировать.
  • https://t.me/clickhouse_ru
    спасибо за ответ, а можно побольше подробностей узнать?
  • https://t.me/clickhouse_ru
    Нет
  • https://t.me/clickhouse_ru
    Что такое размер ?
  • https://t.me/clickhouse_ru
    чтобы умел делать все и решать задачи, а в чем проблема?
  • https://t.me/clickhouse_ru
    сколько занимает в байтах одно значение
  • https://t.me/clickhouse_ru
    А какие тулзы помимо клиента ещё нужны для администрирования? Типа зукипера итд
  • https://t.me/clickhouse_ru
    вам вакансию что ли надо составить на DBA? 🤣
  • https://t.me/clickhouse_ru
    Не, собес на разраба и похоже там админство будет
  • https://t.me/clickhouse_ru
    Кхм, DateTime пол собой хранит стандартный timestamp
  • https://t.me/clickhouse_ru
    Ты его уже не прошел :)
  • https://t.me/clickhouse_ru
    Эмммм, уж простите, но разработчик должен знать не более чем SQL запросы и движки баз данных, но чот прям задавая вопросы такие, не думаю, что вы сможете пройти собес.
  • https://t.me/clickhouse_ru
    это детям рассказывай)
  • https://t.me/clickhouse_ru
    👍
  • https://t.me/clickhouse_ru
    @dusshmann #320177 01:42 PM, 12 Apr 2023
    То есть по вашей логике чел с бэкграундом ms/postgre предварительно почитав доку и посмотрев видосики не сможет пройти собес на ссанный кликхаус?)
  • 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
    что делает вот этот SQL запрос

    SELECT arrayFilter( (z,x) -> not arrayExists(i -> x%i=0 and x<>i, r) , (arrayMap(z->z+2, range(20))) as r,r)
  • https://t.me/clickhouse_ru
    Ща хпт спросим)
  • https://t.me/clickhouse_ru
    @critskiy #320184 01:47 PM, 12 Apr 2023
    Понятно, можно банить)
  • https://t.me/clickhouse_ru
    В смысле можно банить?
  • https://t.me/clickhouse_ru
    @dusshmann #320186 01:47 PM, 12 Apr 2023
    Тут чо за духота хоть
  • https://t.me/clickhouse_ru
    еще спросите у gpt "how to change timezone in Clickhouse database"
  • https://t.me/clickhouse_ru
    ну гпт зачастую помогает, когда чатик игнорирует сообщения
  • https://t.me/clickhouse_ru
    а date тот же timestamp, только округленный до начала суток? ИГде это можно прочитать?
  • https://t.me/clickhouse_ru
    У меня другой вопрос, я как сюда не зайду, я вижу "кликхаус не умеет") чаму так?)
  • https://t.me/clickhouse_ru
    Нет, там кол-во дней вместо секунд
  • https://t.me/clickhouse_ru
    date - это целое, соответствующее числу дней
    dateTime - это целое, соответствующее числу секунд
  • https://t.me/clickhouse_ru
    mm КХ не умеет варить кофе? Не кофеварка. В чем вопрос-то?

    Чего КХ не умеет конкретно? Рекурсивные запросы? Ну в КХ индекс разреженный, поэтому поиск по индексу относительно медленный, поэтому рекурсивные запросы будут работать примерно в 10000 раз медленее чем обычно, а КХ не тормозит. Ну и например рекурсивные запросы потребуют 2 человека года на разработку, а нужны 1% пользователей. Ну и смысл их разрабатывать?
  • https://t.me/clickhouse_ru
    понял, но по размеру, если timestamp - это 8 байт, то date сколько? и где это документально увидеть?
  • https://t.me/clickhouse_ru
    @MakeReady #320195 01:54 PM, 12 Apr 2023
    Тут Яндекс подарил ошибку. Стал кидать вопросы с условием на поле Date, в формате dt IN (toDate32('2023-02-01’))
    в итоге ошибка
    Type mismatch in IN or VALUES section. Expected: Date. Got: Int64

    Вот такое
    select toDate32('2023-02-01')-toDate('2023-02-01');
    дает ошибку
    Illegal types Date32 and Date of arguments of function minus

    Вопрос, можно ли под это как-то подстроиться или ждать пока они починят?
  • https://t.me/clickhouse_ru
    timestamp (DateTime) это UInt32 -- 4 байта
    DateTime64 -- UInt64
  • https://t.me/clickhouse_ru
    Да вроде в документации всё было
  • https://t.me/clickhouse_ru
    А оконки появились?
  • https://t.me/clickhouse_ru
    да вроде есть все в доке
    https://clickhouse.com/docs/en/sql-reference/data-types/date
    Date | ClickHouse Docs

    A date. Stored in two bytes as the number of days since 1970-01-01 (unsigned). Allows storing values from just after the beginning of the Unix Epoch to the upper threshold defined by a constant at the compilation stage (currently, this is until the year 2149, but the final fully-supported year is 2148).

  • https://t.me/clickhouse_ru
    в 2021
    https://clickhouse.com/docs/en/sql-reference/window-functions#examples
    Window Functions | ClickHouse Docs

    ClickHouse supports the standard grammar for defining windows and window functions. The following features are currently supported:

  • https://t.me/clickhouse_ru
    А джоины заработали по-человечески?
  • https://t.me/clickhouse_ru
    нет, очень сложная задача, 20-30 человеко-лет
  • https://t.me/clickhouse_ru
    А оптимизатор появился нормальный?
  • https://t.me/clickhouse_ru
    нет
  • https://t.me/clickhouse_ru
    ну кстати, возьмите starrocks, там все есть и он быстрее чем кликхауз и там стандартный sql
  • https://t.me/clickhouse_ru
    Строгая типизация до сих пор?
  • https://t.me/clickhouse_ru
    ну и всегда можно выполнить
    select toInt16(today()), toInt32(now()),toUnixTimestamp64Nano(now64(9));
  • https://t.me/clickhouse_ru
    уже почти везде выпилили, к сожалению
  • https://t.me/clickhouse_ru
    И синтаксис стремный. Я поэтому и зашёл узнать, чо и как.
  • https://t.me/clickhouse_ru
    @wonder_off_u #320210 02:03 PM, 12 Apr 2023
    Добрый день. На version 23.2.4, не получается дать права пользователю из под default
    (Code: 497. DB::Exception: Received from localhost:9000. DB::Exception: default: Not enough privileges. To execute this query it's necessary to have grant SHOW, SELECT, INSERT, ALTER, CREATE, DROP, TRUNCATE, OPTIMIZE, BACKUP, KILL QUERY, KILL TRANSACTION, MOVE PARTITION BETWEEN SHARDS, ACCESS MANAGEMENT, SYSTEM, dictGet, INTROSPECTION, SOURCES ON *.* WITH GRANT OPTION. (ACCESS_DENIED))
    access_management = 1, на версии 22 таких проблем не наблюдается.
    кто-нибудь сталкивался?
  • https://t.me/clickhouse_ru
    я говорю, у нас новый король: starrocks, там все есть и он быстрее чем кликхауз и там стандартный sql
  • https://t.me/clickhouse_ru
    вероятно у вас access_management = 1 перекрывается
    вчера как раз делал эту настройку в 23.3.1 - все ок
  • https://t.me/clickhouse_ru
    RBAC access_management config does not grant ACCESS MANAGEMENT · Issue #47092 · ClickHouse/ClickHouse

    Describe the unexpected behaviour Following steps in https://clickhouse.com/docs/en/operations/access-rights/#access-control-usage , I have a user defined in users.xml with <access_management&gt...

  • https://t.me/clickhouse_ru
    Ну пусть будет у работодателей)
  • https://t.me/clickhouse_ru
    @den_crane #320215 02:08 PM, 12 Apr 2023
    забавно кстати

    how to change timezone in Clickhouse database

    To change the timezone in ClickHouse, you can follow these steps:

    Connect to the ClickHouse server using a client such as clickhouse-client.
    Run the SELECT timezone() query to check the current timezone setting.
    To change the timezone, run the SET timezone = 'timezone_name' query, where timezone_name is the name of the timezone you want to set. For example, to set the timezone to US Pacific Time, you would run SET timezone = 'America/Los_Angeles'.
    Run the SELECT timezone() query again to verify that the timezone has been set correctly.

    Note that the SET timezone command only affects the current session, so you will need to run it again if you want to change the timezone for future sessions. Also, the timezone_name should be a valid timezone identifier from the IANA Time Zone database (e.g. America/Los_Angeles, Europe/Paris, etc.).
  • https://t.me/clickhouse_ru
    @den_crane #320216 02:09 PM, 12 Apr 2023
    интересно это он галюцинирует или предсказывает будущее или это одно и то же
  • https://t.me/clickhouse_ru
    он генератор текстов, он так накопипастил ))
  • https://t.me/clickhouse_ru
    @den_crane #320218 02:11 PM, 12 Apr 2023
    пишу из 2023-08-01
  • https://t.me/clickhouse_ru
    @php_dev4_hr54 #320219 02:12 PM, 12 Apr 2023
    достойно
  • https://t.me/clickhouse_ru
    Спасибо помогло. Необходимо добавить в users.xml
    <access_management>1</access_management>
    <named_collection_control>1</named_collection_control>
    <show_named_collections>1</show_named_collections>
    <show_named_collections_secrets>1</show_named_collections_secrets>
  • https://t.me/clickhouse_ru
    +4 месяца, вместо часа
  • https://t.me/clickhouse_ru
    ???
  • https://t.me/clickhouse_ru
    предположение
  • https://t.me/clickhouse_ru
    @kolesand #320224 02:23 PM, 12 Apr 2023
    Всем привет! Вопрос такой. есть таблица в полем типа Array(UInt32). Стоит задача "развернуть" массив в строки и сгруппировать по количеству. Используется функция arrayJoin. Что то типа select arrayJoin(field_name) as alias_name, count() from table_name group by alias_name. Запрос работает крайне медленно. Есть способы улучшить производительность без изменений схемы хранения? Спасибо.
  • https://t.me/clickhouse_ru
    а у меня SET timezone = 'America/Los_Angeles';
    не работает
    :((
    Exception: Setting timezone is neither a builtin setting nor started with the prefix 'custom_' registered for user-defined settings
  • https://t.me/clickhouse_ru
    ну так я же говорил про будущее и gpt. В этом и был вопрос.

    так будет работать, когда-нибудь, наверное к осени
  • https://t.me/clickhouse_ru
    да и вот обидно, вы уже в нем, а я нет )
  • https://t.me/clickhouse_ru
    накидать железа
  • https://t.me/clickhouse_ru
    @Alexeysaff #320229 02:37 PM, 12 Apr 2023
    Как кх понимает, что надо в prewhere, а что нет?
  • https://t.me/clickhouse_ru
    @5840343691 #320230 02:40 PM, 12 Apr 2023
  • https://t.me/clickhouse_ru
    Настройте listen_host
    Должен быть 0.0.0.0
    Ищите в доке
  • https://t.me/clickhouse_ru
    двигаются маленькие по размеру колонки, которые не в PRIMARY KEY , индексные колонки как бы фильтруются до стадии prewhere, но в некоторых случаях их все равно имело БЫ смысл затолкать в prewhere, но КХ это не умеет, потому что это очень сложно определить без стоимостного оптимизатора
  • https://t.me/clickhouse_ru
    Ага, т.е лучше манипулировать вручную этим?
  • https://t.me/clickhouse_ru
    @Alexeysaff #320235 03:36 PM, 12 Apr 2023
    а я может глупый вопрос задам. но ведь в доке сказано, что order by заменяет индекс
  • https://t.me/clickhouse_ru
    @Alexeysaff #320236 03:36 PM, 12 Apr 2023
    или нет?
  • По умолчанию primary index совпадает с order by
  • @r3former #320239 03:52 PM, 12 Apr 2023
    Хотим обновить клик у себя в проде. Сейчас версия 21.11.2.2. Как лучше выбрать версию для обновления, переехать на последний stable или лучше на одну-две версии старше последней в репозитории? Може есть какие-нибудь подводные камни при обновлении? Хотим попробовать обновиться без даунтайма, сначала одну реплику шарда, затем вторую.
  • @r3former #320240 03:53 PM, 12 Apr 2023
    Читал в changelog секции Backward Incompatible Change. Ничего сломать нам не должно
  • https://t.me/clickhouse_ru
    @148363699 #320241 04:36 PM, 12 Apr 2023
    Добрый день. Инсерчу данные батчами по 20к-50k в несколько потоков. Иногда какие-то инсерты отваливаются с ошибкой: DB::Exception: Too large sizes of FixedString to deserialize: 1154506816. (TOO_LARGE_STRING_SIZE),. Если повторить инсерт еще раз все сработает.

    Что можно сделать лучше? Может ли кто-то подсказатьч то я делаю не так?

    (использую `clickhouse/clickhouse-server:23.2`)

    P.S. в целом если снизить размерность батча инсерта до 10к, то никаких ошибок нет…
  • https://t.me/clickhouse_ru
    прочитайте доку еще раз.
    order by и primary key не одно и тоже, там есть раздел про то когда набор полей может отличаться в order by и primary key
  • https://t.me/clickhouse_ru
    ту которую тестировали на стейдже
  • https://t.me/clickhouse_ru
    слишком мало инфомации
    чаще всего проблема в клиенте, который неправильно формирует rowbinary
    чем заливаете-то?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @148363699 #320246 04:48 PM, 12 Apr 2023
    питоном 🤷
  • @jktes22 #320247 04:49 PM, 12 Apr 2023
    Всем привет

    Подскажите пожалуйста, как получить число посетителей из сырых данных logs api?
  • https://t.me/clickhouse_ru
    Окей, понял, попробую подебажить, спасибо
  • @ph1lm ↶ Reply to #320235 #320249 04:49 PM, 12 Apr 2023
    primary key - это то что будет храниться в индексе в памяти
    order by - это то как данные будут отсортированны
  • https://t.me/clickhouse_ru
    @den_crane #320250 04:52 PM, 12 Apr 2023
    наверное проще понять вот так

    индекс есть всегда.
    если есть секция primary key, значит index = primary key
    если секции primary key нет, значи index = order by
  • @alexklklkl #320251 05:00 PM, 12 Apr 2023
    Доброго вечера, посоветуйте пожалуйста - в yandex cloud аналитики в скрипте из нескольких запросов создают временные таблички вида

    create table app1.temp_table engine=Memory as select 'Что то там' as some_value, * from app1.events where ...;

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

    На clickhouse cloud база реплицируема и такой способ не проходит, ошибка:

    CREATE AS SELECT is not supported with Replicated databases. Use separate CREATE and INSERT queries. (SUPPORT_IS_DISABLED) (version 23.3.1.30093 (official build)).

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

    Правильно ли я понимаю, что расширив временно настройки:

    <background_pool_size>40</background_pool_size>
    <background_merges_mutations_concurrency_ratio>4</background_merges_mutations_concurrency_ratio>
    <background_move_pool_size>36</background_move_pool_size>
    <background_common_pool_size>36</background_common_pool_size>

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

    т.е. какбы какую проблему решаем? залить все очень быстро разово? тогда просто можно макс кол-во партов поставить 3000000 временно у таблицы и вставить
  • https://t.me/clickhouse_ru
    @den_crane #320254 05:20 PM, 12 Apr 2023
    (если инсерты мелкие, то имеет смысл лить через engine=Buffer)
  • https://t.me/clickhouse_ru
    Ага, понял, спасибо. А из-за количества партов диск вероятно сильно разбухнет?
  • https://t.me/clickhouse_ru
    @148363699 #320256 05:23 PM, 12 Apr 2023
    Я подумал что можно просто отключить мерджинг, но диск съедало жутко :(
  • https://t.me/clickhouse_ru
    Спасибо, почитаю
  • https://t.me/clickhouse_ru
    @Vitaly_Ivanov #320258 05:27 PM, 12 Apr 2023
    Можно ли как-то попросить CH бросить все силы на мержи кусков? Пробую OPTIMIZE TABLE default.test_local FINAL получаю ошибку Code: 388. DB::Exception: Received from localhost:9000. DB::Exception: Cannot select parts for optimization: Part 202212_43560_43565_1 has already been assigned a merge into 202212_43560_43576_2 (in partition 202212). (CANNOT_ASSIGN_OPTIMIZE)

    Максимально освободил CH от внешней нагрузки, чтобы тот помержил все куски, но он как-то расслаблено это делает, хочется проц и/или диск утилизировать по максимуму
  • https://t.me/clickhouse_ru
    из-за кол-ва партов диск разбухнет? В смысле маленькие парты жмутся хуже чем большой? Или вы про inactive и 8 минут?
  • https://t.me/clickhouse_ru
    Маленькие парты жмутся хуже, да
  • https://t.me/clickhouse_ru
    background_pool_size

    как его выставлять зависит от версии КХ

    но вообще мерж естественно работает в один поток, поэтому большой мерж не распараллелить
  • https://t.me/clickhouse_ru
    Спасибо! А какое разумное значение можно попробовать поставить, вижу что по дефолту 16, если поставить 64 или 128 или еще больше?
  • https://t.me/clickhouse_ru
    Increase `max_replicated_merges_in_queue` by alexey-milovidov · Pull Request #47050 · ClickHouse/ClickHouse

    Changelog category (leave one): Performance Improvement Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): Increase the default value of max_replicated_...

  • https://t.me/clickhouse_ru
    @Vadim_822 #320264 06:38 PM, 12 Apr 2023
  • VPN в телеграме прям @webofrussia_vpn_bot лично я использую
  • https://t.me/clickhouse_ru
    @eegooor #320267 08:16 PM, 12 Apr 2023
    💵Здравствуйте! Есть арбитражная cвязка внyтри бинaнca через BNB с прибылью 4-6%
    💲Беру % от вашего ежедневного заработка.
    ✖️Не принимаю ваши деньги на свои счета и не беру никаких предоплат (как это делают мошенники)✖️
    ☑️Набираю даже людей без опыта. Если не разбираетесь,все обьясню и покажу
    🟢По всем вопросам пишите в лс
  • https://t.me/clickhouse_ru
    @5840343691 #320268 08:59 PM, 12 Apr 2023
  • https://t.me/clickhouse_ru
    @ActionNum #320269 10:57 PM, 12 Apr 2023
    Подскажите пожалуйста надо ли изменять stripe_cache_size для RAID-0 mdadm?
    Из 8 NVMe дисков 3.84Tb
    Или из 4 NVMe дисков по 7.68 Tb
  • https://t.me/clickhouse_ru
    stripe_cache_size имеет какое-то влияние только на raid5/6
  • https://t.me/clickhouse_ru
    Благодарю, а можете пояснить почему при RAID-0 не имеет значения?
  • 13 April 2023 (115 messages)
  • https://t.me/clickhouse_ru
    @628149948 #320272 04:39 AM, 13 Apr 2023
    Добрый день! Есть ли простой способ перетащить данные? Простой, ну как копирование папки.... роняем контейнер, архивируем папку, перетаскиваем на новое место, поднимаем контейнер. Сработает так?
  • https://t.me/clickhouse_ru
    @Alexeysaff #320273 05:15 AM, 13 Apr 2023
    ну если у вас докер персистент сторадж, не вижу проблемы
  • https://t.me/clickhouse_ru
    @Vitaly_Ivanov #320274 06:04 AM, 13 Apr 2023
    ловлю DB::assertResponseIsOk(), если я ловлю assert, это баг?
    2023.04.13 05:53:09.484232 [ 184 ] {} <Error> default.test_local (9f9c7631-83b3-469e-95d0-375da4937c11): auto DB::StorageReplicatedMergeTree::processQueueEntry(ReplicatedMergeTreeQueue::SelectedEntryPtr)::(anonymous class)::operator()(DB::StorageReplicatedMergeTree::LogEntryPtr &) const: Code: 86. DB::Exception: Received error from remote server /?endpoint=DataPartsExchange%3A%2Fclickhouse%2Ftables%2Fbender%2F03%2Freports%2Fmaster_spots_map_v3%2Freplicas%2Frch3n1&part=202303_2845071_2845079_2&client_protocol_version=7&compress=false. HTTP status code: 500 Internal Server Error, body: Code: 232. DB::Exception: No part 202303_2845071_2845079_2 in table. (NO_SUCH_DATA_PART), Stack trace (when copying this message, always include the lines below):

    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0xa3ffe9a in /usr/bin/clickhouse
    1. DB::Exception::Exception<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(int, fmt::v8::basic_format_string<char, fmt::v8::type_identity<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>::type>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0xa439ef8 in /usr/bin/clickhouse
    2. DB::DataPartsExchange::Service::findPart(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x157dd583 in /usr/bin/clickhouse
    3. DB::DataPartsExchange::Service::processQuery(DB::HTMLForm const&, DB::ReadBuffer&, DB::WriteBuffer&, DB::HTTPServerResponse&) @ 0x157dbe93 in /usr/bin/clickhouse
    4. DB::InterserverIOHTTPHandler::processQuery(DB::HTTPServerRequest&, DB::HTTPServerResponse&, DB::InterserverIOHTTPHandler::Output&) @ 0x15c58bce in /usr/bin/clickhouse
    5. DB::InterserverIOHTTPHandler::handleRequest(DB::HTTPServerRequest&, DB::HTTPServerResponse&) @ 0x15c594e5 in /usr/bin/clickhouse
    6. DB::HTTPServerConnection::run() @ 0x15cc3c02 in /usr/bin/clickhouse
    7. Poco::Net::TCPServerConnection::start() @ 0x18a2eb93 in /usr/bin/clickhouse
    8. Poco::Net::TCPServerDispatcher::run() @ 0x18a2feed in /usr/bin/clickhouse
    9. Poco::PooledThread::run() @ 0x18bf2849 in /usr/bin/clickhouse
    10. Poco::ThreadImpl::runnableEntry(void*) @ 0x18bf0102 in /usr/bin/clickhouse
    11. ? @ 0x7f9399a3d609 in ?
    12. __clone @ 0x7f9399962133 in ?
    (version 22.8.15.23 (official build)). (RECEIVED_ERROR_FROM_REMOTE_IO_SERVER), Stack trace (when copying this message, always include the lines below):

    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0xa3ffe9a in /usr/bin/clickhouse
    1. DB::assertResponseIsOk(Poco::Net::HTTPRequest const&, Poco::Net::HTTPResponse&, std::__1::basic_istream<char, std::__1::char_traits<char> >&, bool) @ 0xa60d430 in /usr/bin/clickhouse
    2. DB::detail::ReadWriteBufferFromHTTPBase<std::__1::shared_ptr<DB::UpdatablePooledSession> >::callImpl(Poco::URI, Poco::Net::HTTPResponse&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x15806857 in /usr/bin/clickhouse
    3. DB::detail::ReadWriteBufferFromHTTPBase<std::__1::shared_ptr<DB::UpdatablePooledSession> >::call(Poco::Net::HTTPResponse&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool) @ 0x1580224c in /usr/bin/clickhouse
    4. DB::detail::ReadWriteBufferFromHTTPBase<std::__1::shared_ptr<DB::UpdatablePooledSession> >::initialize() @ 0x15800d62 in /usr/bin/clickhouse
    5. DB::detail::ReadWriteBufferFromHTTPBase<std::__1::shared_ptr<DB::UpdatablePooledSession> >::ReadWriteBufferFromHTTPBase(std::__1::shared_ptr<DB::UpdatablePooledSession>, Poco::URI, Poco::Net::HTTPBasicCredentials const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<void (std::__1::basic_ostream<char, std::__1::char_traits<char> >&)>, unsigned long, DB::ReadSettin
  • https://t.me/clickhouse_ru
    @Vitaly_Ivanov #320275 06:04 AM, 13 Apr 2023
    gs const&, std::__1::vector<std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >, DB::detail::ReadWriteBufferFromHTTPBase<std::__1::shared_ptr<DB::UpdatablePooledSession> >::Range, DB::RemoteHostFilter const*, bool, bool, bool) @ 0x157fe887 in /usr/bin/clickhouse
    6. DB::PooledReadWriteBufferFromHTTP::PooledReadWriteBufferFromHTTP(Poco::URI, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<void (std::__1::basic_ostream<char, std::__1::char_traits<char> >&)>, DB::ConnectionTimeouts const&, Poco::Net::HTTPBasicCredentials const&, unsigned long, unsigned long, unsigned long) @ 0x157fe054 in /usr/bin/clickhouse
    7. DB::DataPartsExchange::Fetcher::fetchPart(std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, std::__1::shared_ptr<DB::Context const>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, DB::ConnectionTimeouts const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr<DB::Throttler>, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::optional<DB::CurrentlySubmergingEmergingTagger>*, bool, std::__1::shared_ptr<DB::IDisk>) @ 0x157e47d3 in /usr/bin/clickhouse
    8. ? @ 0x156178c2 in /usr/bin/clickhouse
    9. DB::StorageReplicatedMergeTree::fetchPart(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool, unsigned long, std::__1::shared_ptr<zkutil::ZooKeeper>, bool) @ 0x1554e596 in /usr/bin/clickhouse
    10. DB::StorageReplicatedMergeTree::executeFetch(DB::ReplicatedMergeTreeLogEntry&, bool) @ 0x1553f702 in /usr/bin/clickhouse
    11. DB::StorageReplicatedMergeTree::executeLogEntry(DB::ReplicatedMergeTreeLogEntry&) @ 0x1552d340 in /usr/bin/clickhouse
    12. ? @ 0x156152bf in /usr/bin/clickhouse
    13. DB::ReplicatedMergeTreeQueue::processEntry(std::__1::function<std::__1::shared_ptr<zkutil::ZooKeeper> ()>, std::__1::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&, std::__1::function<bool (std::__1::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&)>) @ 0x15ab3a65 in /usr/bin/clickhouse
    14. DB::StorageReplicatedMergeTree::processQueueEntry(std::__1::shared_ptr<DB::ReplicatedMergeTreeQueue::SelectedEntry>) @ 0x15576ebc in /usr/bin/clickhouse
    15. DB::ExecutableLambdaAdapter::executeStep() @ 0x15615f51 in /usr/bin/clickhouse
    16. DB::MergeTreeBackgroundExecutor<DB::OrdinaryRuntimeQueue>::routine(std::__1::shared_ptr<DB::TaskRuntimeData>) @ 0xa3cd7db in /usr/bin/clickhouse
    17. DB::MergeTreeBackgroundExecutor<DB::OrdinaryRuntimeQueue>::threadFunction() @ 0xa3cd450 in /usr/bin/clickhouse
    18. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0xa4c4126 in /usr/bin/clickhouse
    19. void std::__1::__function::__policy_invoker<void ()>::__call_impl<std::__1::__function::__default_alloc_func<ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda0'()>(void&&)::'lambda'(), void ()> >(std::__1::__function::__policy_storage const*) @
  • https://t.me/clickhouse_ru
    @Vitaly_Ivanov #320276 06:04 AM, 13 Apr 2023
    0xa4c5a77 in /usr/bin/clickhouse
    20. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0xa4c1a48 in /usr/bin/clickhouse
    21. ? @ 0xa4c4c5d in /usr/bin/clickhouse
    22. ? @ 0x7fd4d0302609 in ?
    23. __clone @ 0x7fd4d0227133 in ?
    (version 22.8.15.23 (official build))

    И clickhouse перезапускается
  • Можно через freeze partition, copy + attach

    https://clickhouse.com/docs/en/sql-reference/statements/alter/partition#freeze-partition
    Manipulating Partitions and Parts | ClickHouse Docs

    The following operations with partitions are available:

  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    сработает
  • @RychagovDenis #320280 06:51 AM, 13 Apr 2023
    Добрый день! Подскажите пожалуйста по кейсу:
    Есть таблица key, tag1, tag2, tag3, tag4.
    Пытаюсь создать MV на AggrMT c group by key.
    1)Нужны уники tag1 - AggregateFunction(groupUniqArray, UInt16)
    2)Нужны уники (tag2, tag3), если (tag3!=key И tag3!=null) - AggregateFunction(groupUniqArrayIf, Tuple(UInt64,Nullable(UInt64)),UInt8)
    3)Нужны уники tag4 и число сколько раз встретилась комбинация (key, tag4)
    Можно ли это сделать в одной MV?
    groupUniqArrayIf - можно ли использовать в п.2?
    Какую агрегатную функцию использовать в п.3?
  • @nbeliaev #320281 07:07 AM, 13 Apr 2023
    Привет!
    Подскажите, пожалуйста, где можно найти информацию о том, как работает движок таблиц S3? Интересует что там под капотом у него происходит при запросах.
  • https://t.me/clickhouse_ru
    @maaxxximm #320282 07:17 AM, 13 Apr 2023
    🔥Есть арбитражная cвязка внутри Бинанса 🔥
    💸Профит 5-6% с круга 💸
    Если не работали со связками то помогу обучится всему с нуля
    💰Моя выгода: % от прибыли 💰
    ❌Деньги под свое управление не беру ❌
    💥БЕЗ ОБМЕННИКОВ 💥
    Кому интересно, пишите в лс ✅
  • https://t.me/clickhouse_ru
    @Leossb ↶ Reply to #320282 #320283 07:28 AM, 13 Apr 2023
    Давайте уже бота что ли поставим антиспам) запарили разводилы
  • https://t.me/clickhouse_ru
    @greenh_ua #320284 07:29 AM, 13 Apr 2023
    У мудачья и криптоблядей весеннее обострение. Да, @maaxxximm?
  • @ShulcevVA #320285 07:30 AM, 13 Apr 2023
    Доброго времени суток, хочу у кластера из 2-нод сменить машину зукипера, для версии 22.8.5 только смены адреса зукипера достаточно или в этой версии так нельзя?
  • @kint36 #320286 07:32 AM, 13 Apr 2023
    Всем привет! Подскажите, пожалуйста, может есть какие-то способы оптимизации словарей (помимо Join таблиц)?
    Есть словарь с атрибутами товаров, довольно большой около 50 Гб и около 1 млрд строк
    Работает довольно медленно, часто возникают ошибки TOO_SLOW, либо превышение ожидаемого времени выполнения
    Источник таблица на локалхосте, размещается в памяти как hashed_array
  • Too slow скорее всего от диска а не словаря
  • @kint36 #320288 07:45 AM, 13 Apr 2023
    У нас везде SSD стоят
    При использовании Join таблицы таких проблем нет, но хочется понять можно ли как-то средствами словаря обойтись
  • https://t.me/clickhouse_ru
    Сколько словарь памяти жрет?
  • @kint36 ↶ Reply to #320289 #320290 07:48 AM, 13 Apr 2023
    48 Гб
  • https://t.me/clickhouse_ru
    А сколько по времени словарь грузится?
  • https://t.me/clickhouse_ru
    @php_dev4_hr54 #320292 07:54 AM, 13 Apr 2023
    Кстати, какие в целом преимущества словарей перед JOIN-ами к таблицам?
    Если есть таблица-словарь в MYSQL, в чем преимущество создания словаря из этой таблицы перед простым JOIN к таблице с движком MySQL?
    По запросам, которые я тестил, JOIN занимает меньше оперативы и времения для выполнения по сравнению со словарем и запросами dictGet
  • @kint36 #320293 07:55 AM, 13 Apr 2023
    Около 15 минут , при запуске system reload
  • какой движок словаря используете для вычитки из mysql?
  • https://t.me/clickhouse_ru
    @php_dev4_hr54 #320295 07:55 AM, 13 Apr 2023
    HASHED обычно
  • https://t.me/clickhouse_ru
    @php_dev4_hr54 #320296 07:55 AM, 13 Apr 2023
    словарь простейший, небольшой
  • https://t.me/clickhouse_ru
    @php_dev4_hr54 #320297 07:56 AM, 13 Apr 2023
    в районе 50к строк
  • https://t.me/clickhouse_ru
    @php_dev4_hr54 #320298 07:57 AM, 13 Apr 2023
    для некоторых словарей complex_key_hashed, но там уже словари в 500-600 записей, разницы никакой при join-ах и запросах к словарю нет
    но если таблица и словарь какой то +- средний/большой размер имеют, то джоин выигрывает у словаря по производительности, хотя я думал, что будет наоборот
  • а как вы оцениваете скорость запросов? в query_log, clickhouse-client смотрите?
  • https://t.me/clickhouse_ru
    @php_dev4_hr54 #320300 08:01 AM, 13 Apr 2023
    и там и там смотрел
  • словарь через dictGet используете?
  • https://t.me/clickhouse_ru
    @php_dev4_hr54 #320302 08:01 AM, 13 Apr 2023
    не то, чтобы полноценное исследование проводил
    но на глаз была заметна разница
  • https://t.me/clickhouse_ru
    да
  • круто тогда, если у вас это быстрее и лучше работает, можете скинуть пруфы какие-нибудь в pastila, например
    лучше конечно код запроса показать
  • @kint36 ↶ Reply to #320291 #320305 08:07 AM, 13 Apr 2023
    По памяти поправка занимает 57 Гб, по загрузке 19 минут
  • https://t.me/clickhouse_ru
    @Alexandr_52 #320307 09:02 AM, 13 Apr 2023
    Всем привет! Как правильно называются в CH выражения в {}? Например, {cluster}. Хочу про это почитать. Если поделитесь ссылкой - плюсик в карму.
  • https://t.me/clickhouse_ru
    @VBelyshev #320308 09:05 AM, 13 Apr 2023
    macros?
  • https://t.me/clickhouse_ru
    Вроде да, но что то не гуглится по "Clickhouse macros" ничего толком
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @vlkharlamov #320311 09:15 AM, 13 Apr 2023
    macros в ctrl + f
  • https://t.me/clickhouse_ru
    @Alexandr_52 #320312 09:41 AM, 13 Apr 2023
    А есть у кого-нибудь пример бэкапа CH в кроне по расписанию?
  • @ksetherg #320313 09:45 AM, 13 Apr 2023
    Резко поднялась нагрузка на зукипер, с 300 rps до 10к rps. Как узнать причину увелечения запросов со стороны CH?
  • https://t.me/clickhouse_ru
    @MakeReady #320314 09:52 AM, 13 Apr 2023
    Добрый день!
    Подскажите по
    ENGINE = Join(join_strictness, join_type, k1[, k2, ...])

    не очень понимаю про join_strictness

    если будет INNER JOIN и LEFT JOIN?
  • https://t.me/clickhouse_ru
    Очередь на репликацию при этом не увеличилась?
    Надо смотреть что много инсертит в КХ и какими чанками, если кривой сервис который вставляет по одной строчке то дело в нем.
  • Данные вставляем через кафку
  • https://t.me/clickhouse_ru
    Все сервисы через кафку вставляют? 100%?
  • да
  • https://t.me/clickhouse_ru
    нашел, сделал, получилось. спасибо большое. а можете подсказать как сделать тоже самое, только если у меня на этой виртуалке убунтовской докер с образом клик хаус.? я в сам докер зашел, поменял лист хост, но извне (с железки) все равно нет доступа
  • https://t.me/clickhouse_ru
    Читайте про проброс портов в докер на docs.docker.com
  • https://t.me/clickhouse_ru
    благо дарю вам
  • https://t.me/clickhouse_ru
    Было недавно такое, но причина была в сервисе который писал не чанками в КХ.
    Может кто то более опытный подскажет вам.
  • https://t.me/clickhouse_ru
    И еще попробуйте такой запрос выполнить, может что то прояснится:
    SELECT count(), table FROM system.replication_queue group by table;
  • https://t.me/clickhouse_ru
    я затупил. я просто забыл -p выставить в команде. спасибо еще раз
  • @DXYpT #320325 10:45 AM, 13 Apr 2023
    Привет, порядок аргументов в GROUP BY не имеет значения? GROUP BY a, b = GROUP BY b, a?
  • https://t.me/clickhouse_ru
    @Enchantner #320326 11:24 AM, 13 Apr 2023
    очень тупой вопрос, наверное, но - где найти документацию по State-функциям, хотя бы по самому argMaxState? поиск по доке не выдает ничего
  • https://t.me/clickhouse_ru
    @Enchantner #320327 11:26 AM, 13 Apr 2023
    Aggregate Function Combinators | ClickHouse Docs

    The name of an aggregate function can have a suffix appended to it. This changes the way the aggregate function works.

  • https://t.me/clickhouse_ru
    @6256183059 #320328 11:53 AM, 13 Apr 2023
    Открываем карты для оплаты заграницей 🌍
    • Работает в любой точке планеты
    • Пополнение в рублях
    • Быстрый выпуск,доставка пластика прямо до вас

    Так-же изготавливаем криптокарты
    Оплачиваем отели и авиабилеты

    Проверенный сервис ✅
    Пишите
  • https://t.me/clickhouse_ru
    @vozalel #320329 12:37 PM, 13 Apr 2023
    Добрый день!
    Подскажите пожалуйста,
    когда работаешь с системными топиками nats для update сведений по аккаунту (jwt) создается temporary пользователь под SYS аккаунтом, это делается для того, чтобы токены были отличные при каждом запросе?
    можно ли работать с одним токеном с большого количества соединений?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    отлично, спасибо
  • https://t.me/clickhouse_ru
    @krivtsov_artem #320332 01:11 PM, 13 Apr 2023
    Добрый день!

    есть ли лучшее решение для группировки не пустых элементов в массив чем его фильтрация через arrayFilter? Пробовал еще groupArrayIf(...) но там приходится дублировать извлечение элемента

    arrayFilter(x->notEmpty(x), groupArray((arrayElement(`answers.comment`,indexOf(`answers.question_id`, 59623)))))
  • @zhora9001 #320333 01:18 PM, 13 Apr 2023
    добрый день! подскажите, а есть ли хотя бы теоритическая возможность подружить клик с EBS снэпшотами в AWS? проблема, которая ломает всю красоту в том, что во время работы некоторые парты не fsync-ты с диском, и в снэпшоте образовываются битые файлы. было бы приемлимо это терпеть на "новых" партах (по сути, поломанные последние парты эквивалентны запуску бэкапа чуть раньше), но это ведь могут быть какие угодно парты, в том числе из далекого прошлого (если идут мержи)
  • https://t.me/clickhouse_ru
    Ну и что? Если был мерж то старые парты еще не удалены(8 мин не прошло), так что из них можно повторить
  • https://t.me/clickhouse_ru
    мержи не могут. Там защита 8 минут (неактивные парты)

    Я не вижу проблемы, все вокруг используют снэпшоты в AWS как бекап КХ, это ровно тоже самое что и внезапный рестарт, да, инсерт недавний сломается, это ровно тоже самое как если бы бекап случился на 10 сек. раньше.
  • про недавние инсерты – да, устраивает, про то и писал.
    про "поломанные" парты – но ведь тогда придется искать руками старые парты и как-то их включать заново? грубо говоря парты А и Б мержатся в С, клик пишет С на диск, но из-за отсутствия fsync С оказывается битый – к этому моменту А и Б будут выключены. или я чего-то не знаю/упускаю?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @den_crane #320338 01:23 PM, 13 Apr 2023
    Во время запуска сервер ClickHouse проверяет целостность кусков. Если новый (слитый) кусок поврежден, ClickHouse возвращает неактивные куски в список активных и позже снова выполняет слияние. В этом случае испорченный кусок получает новое имя (добавляется префикс broken_) и попадает в каталог detached. Если проверка целостности не выявляет проблем в слитом куске, то исходные неактивные куски переименовываются (добавляется префикс ignored_) и перемещаются в каталог detached.
  • @zhora9001 #320339 01:24 PM, 13 Apr 2023
    ой, так это просто прелесть, спасибо!
  • https://t.me/clickhouse_ru
    @den_crane #320340 01:24 PM, 13 Apr 2023
    Иначе КХ бы терял данные с каждым рестартом железа
  • https://t.me/clickhouse_ru
    @sergeidanilovi4 #320341 01:28 PM, 13 Apr 2023
    Всем привет!
    Строим в компании аналитическое хранилище, есть несколько таблиц фактов с общим объемом 16 млрд записей (примерно 2ТБ), хотим запустить туда примерно 40 человек пользователей, которые будут постоянно бросать туда простенькие запросы с GROUP BY/ORDER BY.
    Прикидываем кол-во ресурсов на сервер, из доков КХ не совсем понятно какая зависимость от CPU/RAM, подскажите, на что обратить внимание? Какую конфигурацию лучше использовать?
  • https://t.me/clickhouse_ru
    Берете 4 пользователей, делаете тест, экстраполируете на 40. Других вариантов нет.
  • https://t.me/clickhouse_ru
    @Reineke_fuchs #320343 01:39 PM, 13 Apr 2023
    Добрый день! Использую движок баз данных MaterializedPostgreSQL, но в реплицируемых таблицах не обновляются данные при изменении в Postgre, подскажите, как можно решить эту проблему?
  • https://t.me/clickhouse_ru
    А с чего начать по мощности? 64/128/256 ГБ оперативки. Хотелось бы на предварительном этапе понять, какой сервер нужен.
  • https://t.me/clickhouse_ru
    64
  • https://t.me/clickhouse_ru
    А если говорить про конфигурацию, которая с 90% вероятностью выстоит, то есть можно взять ресурсов с запасом, что бы вы могли посоветовать? Времени на тесты нет, требуют цифры…
  • В стейдже нет того количество данных и ETL-процессов, что есть на проде, увы(
    Обновилось в стейдже без проблем, но это не гарант, что на проде что-нибудь не выстрелит в процессе обновления
  • @RychagovDenis #320348 02:15 PM, 13 Apr 2023
    Можно ли сделать ttl на поле с типом AggregateFunction? Или SimpleAggregateFunction?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Hardstep83 #320350 02:49 PM, 13 Apr 2023
    Конфигурационные файлы | ClickHouse Docs
    https://clickhouse.com/docs/ru/operations/configuration-files#configuration_files
  • https://t.me/clickhouse_ru
    @Hardstep83 #320351 02:49 PM, 13 Apr 2023
    Или вот на русском
  • https://t.me/clickhouse_ru
    @Alexandr_52 #320352 03:02 PM, 13 Apr 2023
    Спасибо!
  • https://t.me/clickhouse_ru
    @Alexandr_52 #320353 03:03 PM, 13 Apr 2023
    Если кто то поделится своими скриптами по бэкапам в кроне - буду безмерно благодарен!
  • https://t.me/clickhouse_ru
    https://github.com/AlexAkulov/clickhouse-backup

    https://clickhouse.com/docs/en/operations/backup
    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
    тут идет резервное копирование через утилиту clickhouse-backup. А если без нее, встроенными средствами?
  • https://t.me/clickhouse_ru
    Backup and Restore | ClickHouse Docs

    In order to effectively mitigate possible human errors, you should carefully prepare a strategy for backing up and restoring your data.

  • https://t.me/clickhouse_ru
    @critskiy #320357 03:08 PM, 13 Apr 2023
    Вообще бэкапы можно и без скрипта делать, ну как бэкапы, мне сложно называть бэкапами запись через Distributed + MV в копию таблицы на другом сервере.

    А можно еще снэпшоты и тупо копирование дата-директорий делать...
  • Так а какие тогда скрипты нужны?
    Нужно просто например через clickhouse-client -q "BACKUP DATABASE ..."
    Одна строчка.
  • https://t.me/clickhouse_ru
    Тут общая информация о бэкапе.
    У меня есть скрипты, которые делают полный+дифф бэкап.
    Я хочу их положить в крон, чтобы они проходили по расписанию
    А какой скрипт нужно положить в крон я не понимаю
  • https://t.me/clickhouse_ru
    Ну так это не вопрос к кликхаусу, а к тем, кто ответственен у вас в отделе за это :)
  • https://t.me/clickhouse_ru
    Это разовый бэкап. Я хочу настроить, чтобы в имени файла было имя даты, иначе он повторно не создаться.
  • https://t.me/clickhouse_ru
    а у вас как это сделано? Можете поделиться решением?
  • https://t.me/clickhouse_ru
    Не могу, у меня соглашение по неразглашению информации.
  • https://t.me/clickhouse_ru
    @Alexandr_52 #320364 03:11 PM, 13 Apr 2023
    можно же обезличить, меня интересует как к файлу бэкапа мапится дата и делает его уникальным
  • https://t.me/clickhouse_ru
    @critskiy #320365 03:11 PM, 13 Apr 2023
    К тому же у вас уже есть скрипты, судя по вашему вопросу
  • https://t.me/clickhouse_ru
    Да, но весь вопрос в том, что нужно добавить, чтобы имя бэкапа было уникально при создании(типа переменной в виде даты)
  • на чём у Вас скрипты?
  • https://t.me/clickhouse_ru
    можно хэш попробовать, можно дату, просто в скрипте сделать это вроде проще, а гуглится на раз-два:
    https://unix.stackexchange.com/questions/96380/how-to-append-date-to-backup-filename
    How to append date to backup filename

    I need to make a backup of a file, and I would like to have a timestamp as part of the name to make it easier to differentiate. How would you inject the current date into a copy command? [root@...

  • https://t.me/clickhouse_ru
    00 23 * * 07 clickhouse-client --query="BACKUP DATABASE бла-бла TO Disk('backups','ctage_1_1_2');" --password=бла-бла --user бла-бла
    Вот мой скрипт, я его закинул в крон.
  • https://t.me/clickhouse_ru
    @Alexandr_52 #320370 03:16 PM, 13 Apr 2023
    Нужно, чтобы имя бэкапа(я так полагаю) содержало дату и при каждом создании бэкапа было уникально. Этим скриптом 1 раз создасться только бэкап.
  • это не скрипт, а запуск клиента КХ. его нужно в скрипт положить и вызывать скрипт уже. Сам скрипт что-то типа

    #!/bin/bash

    backupsuffix=$(date +%Y%m%d)
    clickhouse-client --query="BACKUP DATABASE бла-бла TO Disk('backups','backupfilename_${backupsuffix}');" --password=бла-бла --user бла-бла

    ссылку на возможные варианты суффиксов Вам уже дали
  • https://t.me/clickhouse_ru
    @Alexandr_52 #320372 03:23 PM, 13 Apr 2023
    Спасибо большое!
  • @bartonhammond #320373 04:10 PM, 13 Apr 2023
    Всем привет! Подскажите чем проще и быстрее близко к реалтайму реплицировать postgres -> clickhouse?
    Может кто пробовал Altinity Replicator for ClickHouse (Lightweight version)?
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #320377 05:01 PM, 13 Apr 2023
    Здравствуйте, кто-нибудь может подсказать, почему SummingMergeTree пустое?
    https://fiddle.clickhouse.com/ef1ef503-420d-4ce9-a7cc-43fa7c56e891
  • https://t.me/clickhouse_ru
    sum(sells) as sells
    по именам вставка идет
    https://fiddle.clickhouse.com/7c97435f-860c-4f99-a50d-c2cf8965606d

    вы вставляет 0 в колонку sells, summingMT не хранит строки и 0.
  • Сегодня читал https://clickhouse.com/docs/en/engines/database-engines/postgresql, как раз хотел попробовать...
    PostgreSQL | ClickHouse Docs

    Allows to connect to databases on a remote PostgreSQL server. Supports read and write operations (SELECT and INSERT queries) to exchange data between ClickHouse and PostgreSQL.

  • https://t.me/clickhouse_ru
    спасибо, постоянно про это забываю, как то кажется что порядка колонок достаточно. Про 0 вообще неочевидно, получается 1 и -1 схлопнется как в CollapsingMergeTree.
  • https://t.me/clickhouse_ru
    ну это все есть в доке
    просто никто не читает, непонятно что делать
  • https://t.me/clickhouse_ru
    @antonk0 #320383 07:16 PM, 13 Apr 2023
    Подскажите, стоит ли "преждевременную оптимизацию" наводить и вместо UUID хранить UInt32? Насколько такая оптимизация скажется на производительности и на объеме хранения данных?
  • https://t.me/clickhouse_ru
    @antonk0 #320384 07:17 PM, 13 Apr 2023
    Поле конечно в ORDER BY
  • @AlessandrD #320385 08:19 PM, 13 Apr 2023
    Как отформатировать map?
    SELECT возвращает json, а нужен формат таблицы field - value
    Размер небольшой, до 10 строк, но нужен чистый текст
  • https://t.me/clickhouse_ru
    Хорошо скажется
  • https://t.me/clickhouse_ru
    cdc debezium, писать в versioned collapsing mt
  • https://t.me/clickhouse_ru
    Это прокси к посгре, мутации сложно обрабатывать
  • https://t.me/clickhouse_ru
    @p_hamper #320389 11:15 PM, 13 Apr 2023
    А таймзоны которые GMT+x криво работают что ли? Ощущение что + и - перепутаны.
    toStartOfHour(now(), 'UTC') -> 2023-04-13 23:00:00
    toStartOfHour(now(), 'Europe/Moscow') -> 2023-04-14 02:00:00
    toStartOfHour(now(), 'Etc/GMT+0') -> 2023-04-13 23:00:00
    toStartOfHour(now(), 'Etc/GMT+3') -> 2023-04-13 20:00:00
    toStartOfHour(now(), 'Etc/GMT-3') -> 2023-04-14 02:00:00
  • https://t.me/clickhouse_ru
    @p_hamper #320390 11:26 PM, 13 Apr 2023
    Хм, это tzdata странно себя ведет... В языках программирования аналогичное поведение. GMT+x вычитает x из текущего пояса.
  • https://t.me/clickhouse_ru
    @p_hamper #320391 11:39 PM, 13 Apr 2023
    Хм, только сейчас узнал что в таймзонах Etc/GMT по сравнению с ISO 8601 инвертированы по знаку.
  • 14 April 2023 (107 messages)
  • https://t.me/clickhouse_ru
    @Alexeysaff #320393 04:13 AM, 14 Apr 2023
    скажите, в чем может быть проблема в следующем сценарии: есть CH и есть какие-то запросы. В режиме без нагрузки запрос выполняется за 0.1-0.3 секунды. всё супер. Подключаем графану и запросов становится много (точное кол-во не скажу, но в пределах 15-20 сессий от клиентов с рефрешем от 1 до 5 секунд). После этого тот же запрос в clickhouse-client начинает выполняться 3-10 секунд. Грешил на IO, но iotop не показывает никакой нагрузки, памяти 220гигов, занято только 10 гиг, нагрузки на CPU тоже нет.

    Более того. после апдейта 22.12 на 23.3 ситуация стала хуже, если на 22.12 запросы были 1-4 секунды, на 23.3 теперь 3-8 секунды
  • chproxy смотрели? Чтобы ограничить количество сессий к КХ как минимум
  • https://t.me/clickhouse_ru
    @Alexeysaff #320395 05:47 AM, 14 Apr 2023
    нет, сейчас почитаю, это что-то типа pgbouncer?
  • @toktomambetov_s #320396 05:49 AM, 14 Apr 2023
    добрый день!
    есть json такого вида:

    {"EventDateTime":"2023-03-31T15:22:19","EventType":"BALTHD","Msisdn":"996221202407","RequestID":"17521718","Source":"DBSS","TransactionID":"17521718","CampaignID":"","Value":"","Duration":"","ExpiryPeriod":"","GenericParams":{"KeyValueOfstringstring":[{"Key":"balanceId","Value":"683091"},{"Key":"threshold","Value":"0"}]}}

    подскажите как извлечь вложенные значения через JSONExtract? например GenericParams.KeyValueOfstringstring[0].Value ?
  • https://t.me/clickhouse_ru
    Ну типа, главный плюс от него вот в этой фичи на селетк https://www.chproxy.org/configuration/caching
    Caching

    undefined

  • https://t.me/clickhouse_ru
    json-functions | ClickHouse Docs

    There are two sets of functions to parse JSON.

  • спасибо!
  • https://t.me/clickhouse_ru
    @Alexeysaff #320400 06:03 AM, 14 Apr 2023
    пытаюсь поменять order by
    https://kb.altinity.com/altinity-kb-schema-design/change-order-by/

    но все мои запросы выдают partiton как tuple()
    How to change ORDER BY

    How to change ORDER BY.

  • https://t.me/clickhouse_ru
    @Alexeysaff #320401 06:04 AM, 14 Apr 2023
    и мне не понятно, зачем всё-таки в данном солюшн используется помимо old/original table еще и temp table?
  • можно аттачить и tuple() - это значит, что у вас нет партиции
  • https://t.me/clickhouse_ru
    @Alexeysaff #320403 06:10 AM, 14 Apr 2023
    но как?
  • https://t.me/clickhouse_ru
    @Alexeysaff #320404 06:10 AM, 14 Apr 2023
    Code: 248. DB::Exception: Received from localhost:9000. DB::Exception: Invalid partition format: tuple(). (INVALID_PARTITION_VALUE)
  • https://t.me/clickhouse_ru
    @Alexeysaff #320406 06:13 AM, 14 Apr 2023
    ага, без ID
  • https://t.me/clickhouse_ru
    @Alexeysaff #320407 06:13 AM, 14 Apr 2023
    спасибо
  • просто по-разному можно сделать, в примере, сначала ренейм делают, а дальше создают со старым именем, старой структурой полей, но с разным ключом ключом.
    Можете просто сделать рядом темп таблицу, туда перелить, пересоздать старую и залить данные из темповой. как вам удобнее
  • https://t.me/clickhouse_ru
    @Alexeysaff #320409 06:16 AM, 14 Apr 2023
    почему нельзя сделать rename table to table_old
    create table with new order by
    insert to table select * from table_old
  • https://t.me/clickhouse_ru
    @Alexeysaff #320410 06:16 AM, 14 Apr 2023
    т.е. не понимаю, зачем три таблицы
  • можно
  • https://t.me/clickhouse_ru
    @Alexeysaff #320412 06:18 AM, 14 Apr 2023
    уффф, спасибо. я уж думал, что какой-то скрытый смысл в 3х таблицах есть
  • ну там 3 пункт есть же)
  • https://t.me/clickhouse_ru
    @Alexeysaff #320414 06:19 AM, 14 Apr 2023
    правильно, но в моём примере же остаётся create table with new order by
  • если у вас нет МВ или еще каких-то зависимостей, то это не проблема. Мало ли у вас на таблице, которую вы хотите изменить висят мв, и при переливе у вас задублируются данные из-за инсерта
  • https://t.me/clickhouse_ru
    @Alexeysaff #320416 06:21 AM, 14 Apr 2023
    ахххх
  • https://t.me/clickhouse_ru
    @Alexeysaff #320417 06:21 AM, 14 Apr 2023
    мерси
  • @hsv000 #320418 06:51 AM, 14 Apr 2023
    добрый день.
    есть MV таблица, которая смотрит на mysql в докер-сварме. Соотв, если контейнер с mysql переедет на другую ноду, то будет проблема.
    Как можно это решить?
    CREATE TABLE pp.mysql_countries ON cluster pp_cluster
    (
    `id` UInt32,
    `iso` String,
    `continent` String,
    `name_ru` String,
    `name_us` String
    )
    ENGINE = MySQL('dsw01-htz-de:3306', 'pp', 'countries', 'clickhouse', 'PASSWORD');
  • https://t.me/clickhouse_ru
    Сделать https://clickhouse.com/docs/en/operations/named-collections и заменить строку подключения
    Storing details for connecting to external sources in configuration files | ClickHouse Docs

    Details for connecting to external sources (dictionaries, tables, table functions) can be saved

  • @hsv000 #320420 07:21 AM, 14 Apr 2023
    спасибо!
  • https://t.me/clickhouse_ru
    @klug_pro #320421 08:08 AM, 14 Apr 2023
    Здравствуйте!
    Подскажите пожалуйста, как правильно переименовать базу в кластере?
    Переименовываю:
    RENAME DATABASE My_DB TO My_DB__OLD ON CLUSTER main_cluster;
    проверяю:
    SHOW DATABASES;
    всё ок, база переименована
    делаю запрос:
    SELECT * FROM My_DB__OLD.table;
    получаю ошибку:
    DB::Exception: Database My_DB__OLD doesn't exist. (UNKNOWN_DATABASE)
    смотрю в zookeeper - там база называется по-старому
  • @joyful ↶ Reply to #320421 #320424 08:13 AM, 14 Apr 2023
    переконнектились ?
  • https://t.me/clickhouse_ru
    @klug_pro #320425 08:14 AM, 14 Apr 2023
    да. всё тоже UNKNOWN_DATABASE
  • https://t.me/clickhouse_ru
    @klug_pro #320426 08:16 AM, 14 Apr 2023
    в show databases новое название, в zookeeper старое.
    может, там как-то засинхать надо? :-/
  • https://t.me/clickhouse_ru
    @klug_pro #320427 08:16 AM, 14 Apr 2023
    и по старому имени базы тоже UNKNOWN_DATABASE :-/
  • @tarabarasg #320428 08:36 AM, 14 Apr 2023
    Всем привет!
    Не пойму как сделать эндпоинт через HTTP Interface, который будет отдавать HTTP status в зависимости от результата запроса. https://clickhouse.com/docs/en/interfaces/http

    Идея в том, чтобы сделать k8s httpGet Liveness Probe эндпоинт и при отсутствии данных в CH перезапускать контейнер.

    Вариант через exec понятен, но хотелось бы без изменения самого контейнера.
    HTTP Interface | ClickHouse Docs

    The HTTP interface lets you use ClickHouse on any platform from any programming language in a form of REST API. The HTTP interface is more limited than the native interface, but it has better language support.

  • https://t.me/clickhouse_ru
    @francesco_tortik #320429 09:09 AM, 14 Apr 2023
    Всем привет! коллеги, подскажите пожалуйста - настройка max_memory_usage_for_user "пляшет" в зависимости от нод. Запускаю запрос для чтения настройки и вижу на 5 из 6 нод значение 90750000000, а на 6-ой ноде значени 0. Почему так происходит?
  • @msmk_cn #320430 09:10 AM, 14 Apr 2023
    Добрый день. Подскажите, пожалуйста, как объединить все строки в массив с массивами?

    Например, есть результат
    ┌─total_tansactions─┬─transactions_success─┬─transactions_fail─┐
    │ 95 │ 85 │ 10 │
    │ 856 │ 428 │ 428 │
    │ 1204 │ 614 │ 590 │
    │ 897 │ 475 │ 419 │
    └───────────────┴─────────────┴──────────────┘
    Я хочу получить:
    [[95, 85, 10], [856, 428, 428], [1204, 614, 590], [897, 475, 419]]
  • может быть ее кто-то изменил в конфиге?
    select * from system.settings where name='max_memory_usage_for_user'
    если изменено значение changed=1 будет
  • https://t.me/clickhouse_ru
    Именно этот запрос и показывает что он равен 0 на одной из 6 нод, а все остальные 90750000000, страннсть в том, что при повторном запуске нода, на которой этот параметр отличается от других будет уже другая
  • мб и проще можно, но вот что сходу вспомнилось
    https://fiddle.clickhouse.com/3d547917-c055-404d-9b5d-e437acf5b454
  • Не совсем то. Он по колонкам объединяет, а мне именно по строкам надо
  • https://t.me/clickhouse_ru
    Select groupArray(array(col1,col2,col3)) но столбцы должны быть одного типа
  • значит наоборт надо cначала обернуть колонки в array, потом groupArray
  • @ivanio11 #320437 09:39 AM, 14 Apr 2023
    Всем привет а можешь кто то сказать в чем проблема
  • https://t.me/clickhouse_ru
    @kolesand #320438 09:49 AM, 14 Apr 2023
    Приветствую! Помогите, пожалуйста, разобраться, как работает настройки max_bytes_before_external_sort и max_bytes_before_external_group_by. Правильно ли я понимаю, что при достижении максимального значения памяти выставленного в этих параметрах для сортировки и группировки соответственно, сервер начинает выгружать результаты этих операций на диск и продолжает операции с этими данными?
  • https://t.me/clickhouse_ru
    Да. Только не забывайте, что в самом конце работы запроса все эти промежуточные результаты будут подтягиваться разом в оперативку и если их размер превысит доступный объем, вы все равно можете получить out-of-memory.
  • https://t.me/clickhouse_ru
    ага, понятно. То есть прежде чем на инициаторе включился этот механизм нужно, что бы он получил весь этот обьем данных, а обьем большой и получаем MEMORY_LIMIT_EXCEEDED. Что тут можно предпринять? distributed_aggregation_memory_efficient = 1, LIMIT на запросе, увеличение памяти и max_memory_usage, куда еще можно посмотреть?
  • https://t.me/clickhouse_ru
    @francesco_tortik #320441 10:04 AM, 14 Apr 2023
    коллеги, подсткажите плиз еще вопрос:
    у нас 6 нод, на 3ей ноде показывает настройку max_memory_usage_for_user = 0 при запросе

    SELECT hostName() AS hostname,
    *
    FROM clusterAllReplicas('cluster_name', 'system', 'settings')
    where name = 'max_memory_usage_for_user'

    а при запросе select * from system.settings where name = 'max_memory_usage_for_user' показывает там значение как и на всех остальных нодах. Оба запроса выполняются на 3ей ноде
  • https://t.me/clickhouse_ru
    max_bytes_before_external_group_by
    max_memory_usage
    max_threads
    aggregation_memory_efficient_merge_threads
    optimize_aggregation_in_order
  • https://t.me/clickhouse_ru
    Ну и join_algorithm, который сейчас в hash выставлен, видимо в auto?
  • @magicdata #320444 10:29 AM, 14 Apr 2023
    Всем привет! Пытаюсь создать таблицу и мне выдается ошибка Code: 497. DB::Exception: : Not enough privileges. To execute this query it's necessary to have grant CREATE TABLE ON clickhouse1.hits. (ACCESS_DENIED) (version 22.8.15.23 (official build))
    Захожу через sql (https://clickhouse.com/docs/en/cloud/users-and-roles), пытаюсь добавить админа, но и там аналогичная ошибка.
    CH на яндекс клауд.
    Подскажите где и как поменять роль и решить ошибку
    Users and Roles | ClickHouse Docs

    If you are working with self-managed ClickHouse please see SQL users and roles.

  • https://t.me/clickhouse_ru
    @onarainydayillwinanyway #320445 11:10 AM, 14 Apr 2023
    а в WITH можно определять лямбды и передавать их в как ФВП?
  • https://t.me/clickhouse_ru
    @NINJACOREJZ #320446 11:14 AM, 14 Apr 2023
    привет! а может кто помочь понять, должен ли слот логической репликации в PostgreSQL быть active=true или нет, при испольовании связки с кликом на движке MaterializedPostgres.
    настроили реплику с Postgres на движке MatreilizedPostgresql и слот на мастеровой бд висит в active=false. вроде где-то в ишьюс читал что слот используется только для первичного слепка базы. но официальных доков на эту тему не нашел.
    но видеть алерт о том, что слот репликиции лежит - так себе. заранее спасибо!
  • https://t.me/clickhouse_ru
    разобрался, в старых версиях нельзя
  • https://t.me/clickhouse_ru
    <access_management>1</access_management> у пользователя, под которым вы пытаетесь сделать эту операцию

    https://clickhouse.com/docs/ru/operations/settings/settings-users
  • https://t.me/clickhouse_ru
    @Karazhev #320449 11:31 AM, 14 Apr 2023
    Добрый день коллеги, подскажите пожалуйста, использую для бэкапа клика clickhouse-backup, провожу тестовое восстановление, удаляю базу и при ресторе выдают такую партянку
    "apping for table with UUID=37173e82-d7db-4bf4-b717-3e82d7db9bf4 already exists. It happened due to UUID collision, most likely because some not random UUIDs were manually specified in CREATE queries. after 15 times, please check your schema dependencies"
    и через непродолжительное время все таки дает восстановить базу, он не чистит метаданные или в схеме еще какое то время хранится эта информация?
    Может кто знает как это пофиксить, буду благодарен, в гугле особо ничего похожего не нашел
  • https://t.me/clickhouse_ru
    кажется только с включенным аналайзером, но он еще не в релизе
  • https://t.me/clickhouse_ru
    drop database .... sync

    8 минут, корзина, Атомик датабейз
  • https://t.me/clickhouse_ru
    @vlkharlamov #320452 11:39 AM, 14 Apr 2023
    А можно как-то вернуть из корзины?
  • https://t.me/clickhouse_ru
    в новой версии добавили undrop
  • https://t.me/clickhouse_ru
    благодарю
  • https://t.me/clickhouse_ru
    @den_crane #320455 11:40 AM, 14 Apr 2023
    ну руками всегда можно было
  • https://t.me/clickhouse_ru
    это 23.*? или какая новая?
  • https://t.me/clickhouse_ru
    23.3
  • https://t.me/clickhouse_ru
    @den_crane #320458 11:43 AM, 14 Apr 2023
    https://github.com/ClickHouse/ClickHouse/blob/master/CHANGELOG.md
    Support for UNDROP TABLE query. Closes #46811. #47241 (chen).
    ClickHouse/CHANGELOG.md at master · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @nick_chumichev #320459 12:07 PM, 14 Apr 2023
    Всем привет!
    Где в своем https://clickhouse.cloud/ узнать host и port?
  • https://t.me/clickhouse_ru
    ClickHouse Cloud Quick Start | ClickHouse Docs

    The quickest and easiest way to get up and running with ClickHouse is to create a new

  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @VTaLiKK #320462 12:21 PM, 14 Apr 2023
    Коллеги, простите за нубский вопрос.
    Если Click устанавливался из tar архивов, существует штатный механизм удаления?

    Изначально задача обновить версию
    Или достаточно выполнить установку с новой версией?
  • @FratrerCRC #320463 12:30 PM, 14 Apr 2023
    Я правильно понимаю что если мы несколько раз используем подзапрос с with, то он несколько раз перевыполняется? Нельзя его в рам закешить?
  • https://t.me/clickhouse_ru
    WITH работает с ближайшим к нему снизу SELECT-ом
  • @FratrerCRC #320465 12:53 PM, 14 Apr 2023
    спасибо
  • @anotherbugmaster #320466 01:15 PM, 14 Apr 2023
    Кстати - можно как-то заставить кликхаус предпосчитать CTE, а не делать пушдаун вызова функции из основного запроса в CTE?

    Это кажется называется Materialize CTE
  • https://t.me/clickhouse_ru
    КХ не умеет в материализацию CTE
  • Жаль, спасибо(
  • видимо 0. хотя роли нужные он показывает
    но я не совсем понял как это сделать во встроенном sql редакторе
  • @hsv000 #320472 02:38 PM, 14 Apr 2023
    не могу понять почему не может работать через named connection, пишет не такого
  • https://t.me/clickhouse_ru
    зависит от того в каком каталоге лежит xml и был рестарт или нет
  • @hsv000 #320474 02:44 PM, 14 Apr 2023
    рестарт не делал. конфиг положил в config.d/named_connections.xml
  • @hsv000 #320475 02:44 PM, 14 Apr 2023
    нужен рестарт?
  • https://t.me/clickhouse_ru
    да
  • @hsv000 #320477 02:44 PM, 14 Apr 2023
    оу. понял, спасибо
  • @hsv000 #320478 02:45 PM, 14 Apr 2023
    а как надо, чтобы без рестарта? положить в config.xml?
  • https://t.me/clickhouse_ru
    а никак
  • https://t.me/clickhouse_ru
    @den_crane #320480 02:45 PM, 14 Apr 2023
    нет такой фичи
  • @hsv000 #320481 02:45 PM, 14 Apr 2023
    я смотрел через tail -f clickhouse.log, конфиг перечитывается при сохранении
  • @hsv000 #320482 02:45 PM, 14 Apr 2023
    т.е. в логи сыпет чегото
  • https://t.me/clickhouse_ru
    но НЕ применяется
  • @hsv000 #320484 02:45 PM, 14 Apr 2023
    ааа
  • @hsv000 #320485 02:45 PM, 14 Apr 2023
    хитро)
  • @hsv000 #320486 02:45 PM, 14 Apr 2023
    чтоб никто не догадался. как операция Ы
  • https://t.me/clickhouse_ru
    @den_crane #320487 02:46 PM, 14 Apr 2023
    да все знают, еще в 2016 все объяснили в этом чате
  • @hsv000 #320488 02:46 PM, 14 Apr 2023
    понял, спасибо
  • @hsv000 #320489 02:53 PM, 14 Apr 2023
    а еще такой момент - а никакие изменения не применяются?
    я несколько месяцев назад игрался с конфигом стораджей - и там вроде все на лету применялось, сразу при изменении файла. Или я что-то неправильно понял?
  • @misgorod #320490 02:54 PM, 14 Apr 2023
    Подскажите, пожалуйста, без даунтайма можно как-то включить tls на репликацию и distributed запросы на работающем кластере?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @fenogentov #320492 04:17 PM, 14 Apr 2023
    Есть запрос
    SELECT * FROM (
    SELECT ПоследнееИзмерениеДоПериода
    UNION ALL
    SELECT ИзмеренияЗаПериод
    UNION ALL
    SELECT ИзмерниеПослеПериода
    )
    ORDER BY timestamp

    Т.е. "внешняя" выборка только для того чтоб значения трех запросов отсортировать

    Можно как-то без него обойтись?
  • Queries that are parts of UNION can be enclosed in round brackets. ORDER BY and LIMIT are applied to separate queries, not to the final result. If you need to apply a conversion to the final result, you can put all the queries with UNION in a subquery in the FROM clause.
  • https://t.me/clickhouse_ru
    чет не догоняю смысла
  • you can put all the queries with UNION in a subquery in the FROM clause
    То есть написано, что делать как вы и написали)
  • https://t.me/clickhouse_ru
    @yelnarmurat #320496 04:34 PM, 14 Apr 2023
    Всем привет!
    В таблице есть поле, который содержит {'name': ['TEST'], 'surname': ['TEST2']}
    Можете плиз подсказать как вытащить значение name?
  • https://t.me/clickhouse_ru
    Разве для Json не должны быть двойные кавычки?
  • Точно. Сорян 🙈
  • https://t.me/clickhouse_ru
    @yatoba ↶ Reply to #320496 #320500 04:57 PM, 14 Apr 2023
    классная структура, у вас реально имена так хранятся или это замаскированные какието другие данные?)
  • https://t.me/clickhouse_ru
    Данные замаскированные, на самом деле в кафке это Json, в клике сохранили все в одно поле
  • А почему кавычки одинарные если в кафке json?
  • 15 April 2023 (53 messages)
  • https://t.me/clickhouse_ru
    Если так и лежит в КХ, то выглядит как map тип, в значениях которого массив. Извлекать тогда нужно select your_field['name'] from table; далее что хотите делайте с массивом
  • https://t.me/clickhouse_ru
    @Hardstep83 #320505 03:24 AM, 15 Apr 2023
    Игровая площадка ClickHouse
    https://fiddle.clickhouse.com/8d5cfe2a-3f48-4f4c-b337-aed8abfcffa0

    @yelnarmurat -FYI
  • https://t.me/clickhouse_ru
    @Hardstep83 #320506 03:35 AM, 15 Apr 2023
    Всем привет, если вдруг кому то нужен числовой авто-инкремент для таблицы то вот моя поделка. https://fiddle.clickhouse.com/8b03fd64-b7d6-4bad-9950-10331d409383
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #320492 #320507 05:11 AM, 15 Apr 2023
    Если разбиение на периоды правильное (нет аномалий) и сделано по тому же полю, что order by, никто не мешает засунуть order by в каждый запрос и убрать внешний select.
    Update. Пардон, это вранье, у CH нет определенного порядка в результате union, все может быть перемешано, т.е.внешний select действительно необходим.
  • https://t.me/clickhouse_ru
    @fenogentov #320508 05:13 AM, 15 Apr 2023
    SELECT ИзмеренияЗаПериод ORDER BY timestamp

    А первый и третий запрос там всего по одному значению возвращается
  • https://t.me/clickhouse_ru
    @fenogentov #320509 05:15 AM, 15 Apr 2023
    внешний селект с ордером для того чтоб первый и третий запрос всегда были в начале и в конце выборки
  • https://t.me/clickhouse_ru
    IMHO при параллельных вставках работать не будет

    max будет повторяться
    Ну и cpu будет жрать как не в себя насилуя pk в памяти
  • https://t.me/clickhouse_ru
    Всем кому нужен автоинкремент

    Стоит прочитать про snowflake Id и генерировать его на стороне приложения
  • https://t.me/clickhouse_ru
    Генерировать на стороне приложения можно и более простым способом, я предложил способ не зависящий от приложения
  • https://t.me/clickhouse_ru
    Про cpu согласен, про параллельные вставки нет если их пустить через асинхронный инсерт, это же и нагрузку на cpu нивелирует.

    Max(id) к тому же вычисляется 1 раз на одну вставку. Если вставка большой пачкой строк и не чаще раза в секунду, то не критично для cpu это будет
  • https://t.me/clickhouse_ru
    @d_emelyanov #320514 07:56 AM, 15 Apr 2023
    Подскажите, плиз, если создаётся новая replicated табличка (новая версия, с другим путем), то старая в зукипере сама удалится или нужно их как-то чистить?
  • https://t.me/clickhouse_ru
    По моему в предложенной схеме getMax будет для каждой строки вызываться как default expression при вставке
  • https://t.me/clickhouse_ru
    Старая таблица как удалялась? Через drop table?
  • https://t.me/clickhouse_ru
    А может и нет, ведь пока транзакция не прошла, будет один и тот же результат, будет ли выражение на кадой строке выполняться, как бы проверить...?
  • https://t.me/clickhouse_ru
    Думаю да, мы dbt используем и не уверен как он под капотом перезагружает таблицу. Скорее всего он создаёт тмп таблицу а потом exchange делает и дроп тейбл временной
  • https://t.me/clickhouse_ru
    Ну а откуда тут метризация возьмётся?
  • https://t.me/clickhouse_ru
    Надо смотреть
    Временная таблица вроде не умеет в replicated

    Ну или у вас обычная ReplicatedMergeTree
    С префиксом в имени

    И тогда drop table почистит zookeeper
    Но надо смотреть какой там replication_path тогда и есть ли ещё реплики на этот путь
  • https://t.me/clickhouse_ru
    Роман Болдырев:
    ClickHouse Playground
    https://fiddle.clickhouse.com/a5e9543a-440d-48d5-a6f2-1f0bba2b3086

    Судя по тому как КХ преобразует запрос, могу предположить что он 1 раз считает выражение.
  • https://t.me/clickhouse_ru
    @vlkharlamov #320524 09:07 AM, 15 Apr 2023
    Кажется слышал от Алексея Миловидова, что считается 1 раз выражение
  • https://t.me/clickhouse_ru
    @MakeReady #320525 09:32 AM, 15 Apr 2023
    Добрый день!

    Дает ли какой-то профит SimpleAggregateFunction
    в сравнении с
    AggregateFunction
    в AggregatingMergeTree
    кроме лаконичности теекста запросов?

    и смежный вопрос, почему не дает создать
    SimpleAggregateFunction(sum,Int16)?
  • https://t.me/clickhouse_ru
  • @fanymagnet #320527 09:36 AM, 15 Apr 2023
    Привет!

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

    Сейчас для этого использую буфферные таблицы, хотел перейти на асинхронные инсерты, но поведение отличается.
  • https://t.me/clickhouse_ru
    @vlkharlamov #320528 09:39 AM, 15 Apr 2023
    SimpleAggregateFunction хранит только итоговый результат же, а AggregateFunction хранит стейт для вычисления, а не самом результат.

    Поэтому для каких-нибудь медиан симпл не подойдет.
  • https://t.me/clickhouse_ru
    @vlkharlamov #320529 09:40 AM, 15 Apr 2023
    А в чем вообще плюс SimpleAggregateFunction, если я могу просто хранить значение просто?
  • https://t.me/clickhouse_ru
    SimpleAggregateFunction содержит инструкцию для кх, какую агрегатную функцию нужно применить во время мержа.

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

    IMHO и у вас тут просто вызов функции для вычисления default выражения для каждой строки по идее должен считаться
  • https://t.me/clickhouse_ru
    Ну про транзакции я в курсе. Просто к слову пришлось.

    Тем не менее логика моя такова: есть блок данных, в котором для столбца вычисляется выражение, но известно что это выражение константа, я на месте КХ бы вычислил константу 1 раз и применил ко всему столбцу, что на плане запроса и видно. Чем каждый раз константу получать на каждую строку. И это очень похоже на транзакцию кстати, поскольку на время записи блока данных единожды посчитанные константы не изменяются. Если взять и дефолтом поставить now() то для всего вставляемого блока данных время будет одинаковое. Даже если с наносекундами в unixtime перевести
  • https://t.me/clickhouse_ru
    откуда кликхаус поймет что ваша функция константа если там sub query?
    которое константу не возвращает...
  • https://t.me/clickhouse_ru
    Если выполнить subquery 1 раз на время записи блока данных, то результат однозначно будет константой.
  • https://t.me/clickhouse_ru
    так я пытюсь сказать, что там нет блока данных

    DEFAULT EXPRESSION будет вычисляться для каждой строки...
  • https://t.me/clickhouse_ru
    Даже если вставка не по одной строке, а пачкой?
  • https://t.me/clickhouse_ru
    без разницы

    https://fiddle.clickhouse.com/ee5e5e33-fa02-49a5-abe7-6f38960384ba
  • https://t.me/clickhouse_ru
    так и работает при сбросе.
    вы видимо не осознаете что по дефолту асинхронные инсерты копятся 0.2 сек.
  • https://t.me/clickhouse_ru
    в некоторых случаях SimpleAggregateFunction быстрее чем AggregateFunction

    >и смежный вопрос, почему не дает создать SimpleAggregateFunction(sum,Int16)?
    тупо забыли сделать. Используйте Int64 и codec T64
  • https://t.me/clickhouse_ru
    @MakeReady #320543 02:09 PM, 15 Apr 2023
    «тупо забыли сделать» :))
    Спасибо!
  • https://t.me/clickhouse_ru
    а ниче что max будет считаться минут 10 ?
  • https://t.me/clickhouse_ru
    @dusshmann #320545 02:38 PM, 15 Apr 2023
    Приветствую
    Доку в pdf где взять можно?
  • https://t.me/clickhouse_ru
    нигде
    только самому если сгенерировать из
    https://github.com/ClickHouse/ClickHouse/tree/master/docs
    и из
    https://github.com/ClickHouse/clickhouse-docs/
    ClickHouse/docs 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
    Так материлизация де описана в драйвере клика. Вы стандартной польщуетесь?
  • https://t.me/clickhouse_ru
    @kobzevvv #320548 04:18 PM, 15 Apr 2023
    Там кау раз наш разраб вроде и комитил изменения для атомик
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #320520 #320549 06:21 PM, 15 Apr 2023
    Уже месяц как умеет ;)
    https://github.com/ClickHouse/ClickHouse/pull/46071

    Вроде.
    Add support of arbitrary engines for temporary tables by rvasin · Pull Request #46071 · ClickHouse/ClickHouse

    Changelog category (leave one): New Feature Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): Added support of arbitrary tables engines for temporary t...

  • https://t.me/clickhouse_ru
    В дбт материлиазации явным образом есть команда drop relation, соответственно зависит от драйвера кх. Но скорее всего если пути разные то старая сохранится. Почти при любой реализации драйвера
  • https://t.me/clickhouse_ru
    А как можно проверить? У нас пусть репликации выглядит как /.../table/{uuid}. Попробовал смотреть через system.zookeeper where path и там вижу только последнюю версию
  • https://t.me/clickhouse_ru
    так, а я верно понимаю что таблица с тем же именем и в той же схеме. а все изменения это только внутри строки описания движка репликейтет мержтри? если так то нормально дбт удаляет прошлую таблицу и с нуля создает новую. это все матарилизации стабильно делают если вы свою кастомщину не писали
  • https://t.me/clickhouse_ru
    @kobzevvv #320553 06:35 PM, 15 Apr 2023
    поэтому вы видите только последнюю таблицу и всё верно
  • https://t.me/clickhouse_ru
    Да, все так. Спасибо🙏
  • @RychagovDenis #320555 06:57 PM, 15 Apr 2023
    Всем привет! Есть табличка в постгресе с иерархией, но ключи типа uuid. Дерево примерно 3к узлов. Как можно создать иерархический словарь? Хочется избежать лишних сущностей. Можно ли при выполнении селекта в Клике, в котором нужен обход дерева, создать какие то временные структуры, чтобы получить иерархический словарь?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @MakeReady #320557 07:18 PM, 15 Apr 2023
    а какого хера эритрея от эфтиопии отделилась?
  • https://t.me/clickhouse_ru
    Так уже 30 лет как. Была колонией Италии, автономией потом со своим правительством, а Эфиопия хотела себе забрать земли.
  • https://t.me/clickhouse_ru
    @Vitaly_Ivanov #320559 10:24 PM, 15 Apr 2023
    Наблюдаю странную ошибку:
    Code: 49. DB::Exception: Part 202209_28950_35740_7 intersects next part 202209_28950_39093_7.
    При этом на реплика1 партиция 202209 состоит только из одного куска 202209_28950_53862_9 (смотрю на файловой системе)
    на реплика2
    31G 202209_28950_39093_7
    34G 202209_39094_50560_8
    13G 202209_50561_53020_5
    6.1G 202209_53021_53861_5
    9.5M 202209_53862_53862_0

    т.е. кусок 202209_28950_53862_9 на реплика1 полностью перекрывает все куски на риплика2 и при этом получаю intersect error и таблица переходит в read-only

    2023.04.15 22:12:45.530431 [ 227 ] {} <Error> default.test_local (ReplicatedMergeTreeRestartingThread): void DB::ReplicatedMergeTreeRestartingThread::run(): Code: 49. DB::Exception: Part 202209_28950_35740_7 intersects next part 202209_28950_39093_7. It is a bug or a result of manual intervention in the ZooKeeper data. (LOGICAL_ERROR), Stack trace (when copying this message, always include the lines below):

    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0xa3ffe9a in /usr/bin/clickhouse
    1. DB::Exception::Exception<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(int, fmt::v8::basic_format_string<char, fmt::v8::type_identity<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>::type, fmt::v8::type_identity<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::type>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&) @ 0xc76ba53 in /usr/bin/clickhouse
    2. DB::ActiveDataPartSet::add(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >*) @ 0x157b9244 in /usr/bin/clickhouse
    3. DB::ReplicatedMergeTreeQueue::insertUnlocked(std::__1::shared_ptr<DB::ReplicatedMergeTreeLogEntry> const&, std::__1::optional<long>&, std::__1::lock_guard<std::__1::mutex>&) @ 0x15a8f58a in /usr/bin/clickhouse
    4. DB::ReplicatedMergeTreeQueue::load(std::__1::shared_ptr<zkutil::ZooKeeper>) @ 0x15a8dd6b in /usr/bin/clickhouse
    5. DB::ReplicatedMergeTreeRestartingThread::tryStartup() @ 0x15ad9edf in /usr/bin/clickhouse
    6. DB::ReplicatedMergeTreeRestartingThread::runImpl() @ 0x15ad0f30 in /usr/bin/clickhouse
    7. DB::ReplicatedMergeTreeRestartingThread::run() @ 0x15acdb3e in /usr/bin/clickhouse
    8. DB::BackgroundSchedulePoolTaskInfo::execute() @ 0x13f2eef8 in /usr/bin/clickhouse
    9. DB::BackgroundSchedulePool::threadFunction() @ 0x13f317d6 in /usr/bin/clickhouse
    10. ? @ 0x13f3250c in /usr/bin/clickhouse
    11. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0xa4c1a48 in /usr/bin/clickhouse
    12. ? @ 0xa4c4c5d in /usr/bin/clickhouse
    13. ? @ 0x7f5e3e0fa609 in ?
    14. __clone @ 0x7f5e3e01f133 in ?
    (version 22.8.15.23 (official build))
  • https://t.me/clickhouse_ru
    ну это нормально, так обычно и бывает при intersects

    можно в логе посмотреть откуда взялся 202209_28950_35740_7
  • 16 April 2023 (48 messages)
  • Спасибо. А это нормально если маппинг сделать в Клике?. Т.е. у меня есть постоянно живущий словарь повторяющий постгрес с ключом string соответствующий uuid-у. Тогда перед выполнением селекта, я делаю временную Memory таблицу, в ней маппинг uuid -Int64, и уже на ее основе временный иерархический словарь, который и буду использовать в селекте. А по завершении запроса, drop временный словарь и drop временную таблицу. Или есть другой вариант?
  • https://t.me/clickhouse_ru
    на реплика1 в логах ничего нет про 202209_28950_35740_7, а в логах реплика2
    такое же сообщение как и выше

    Можно ли как-то таблицу принудительно вывести из read-only? я бы сделал DETACH-ATTACH для проблемной партиции, думаю это помогло бы. Или удалить узел связанный с этой таблицей в ZooKeeper
  • https://t.me/clickhouse_ru
    @vlkharlamov #320563 07:28 AM, 16 Apr 2023
    Всем привет! Хочу поэкспериментировать с настройками таблицы (всякие ключи order by / сжатия / индексы), насколько рабочим будет способ создать таблицу с новыми настройками и вставить в нее через insert into select из старой таблицы для тестов?
  • Обычно таким способо и тестируем
  • https://t.me/clickhouse_ru
    @vlkharlamov #320565 07:33 AM, 16 Apr 2023
    Спасибо, были опасения, что вставка произойдет с сохранением каких-то настроек старой структуры
  • такого точно не произойдет)
  • Можно попробовать на партиции attach/detach так быстрее получается.
  • ммм
    человек задал вопрос что он хочет изменить ключ сортировки

    Читайте 3 пункта тут:
    https://clickhouse.com/docs/en/sql-reference/statements/alter/partition#attach-partition-from
    Manipulating Partitions and Parts | ClickHouse Docs

    The following operations with partitions are available:

  • https://t.me/clickhouse_ru
    @vzubr #320569 08:39 AM, 16 Apr 2023
    Всем привет, подскажите стоит ли в сортировку добавлять первым поле даты, которое в свою очередь является партицией , запросы всегда выполняются с фильтром на дату в первую очередь. , будет ли выигрыш ?
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #320569 #320570 08:42 AM, 16 Apr 2023
    Если дата без времени и партиционирование по дням, то не будет выигрыша. По ключу партиционирования КХ отберёт нужные партиции и будет искать нужные записи в них по индексу. И какой тогда смысл в дате в индексе, если у всех записей внутри партиции она одинаковая? Только индекс раздуете.
  • https://t.me/clickhouse_ru
    @vzubr ↶ Reply to #320570 #320571 08:44 AM, 16 Apr 2023
    Спасибо , видел просто примеры похожие
  • https://t.me/clickhouse_ru
    @Xiooowu #320572 08:48 AM, 16 Apr 2023
    Hello🐶🐶🐶🐶🐶🐶
  • https://t.me/clickhouse_ru
    @timson81 #320573 09:12 AM, 16 Apr 2023
    Добрый день! Запутался в синтаксисе массивов из кортежей. Не получается вставить строку, может кто подскажет где ошибка?

    CREATE TABLE metrics (ebpf Array(Tuple(port UInt16, pid UInt32, v Float64))) ENGINE=Memory;

    INSERT INTO metrics VALUES ([(8080, 10000, 5.0)]);

    SELECT * FROM metrics;
  • там вроде CREATE TABLE metrics (ebpf Array(Tuple(UInt16, UInt32, Float64))) ENGINE=Memory;

    Или если вы хотите key-value, то там json формат нужно использовать
  • https://t.me/clickhouse_ru
    Спасибо большое!
    Они в таблице хранятся как String, а можно ли в Клике кастануть String в Map(String, Array(String)) ?
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #320571 #320576 10:13 AM, 16 Apr 2023
    Есть смысл в том случае, если у вас есть, например, дата и время поступления события и вы делаете партиционирование по дате (по дням, неделям или месяцам), а внутри уже сортируете по дате и времени.
  • https://t.me/clickhouse_ru
    Понял, спасибо!
  • https://t.me/clickhouse_ru
    Насколько я знаю- нет, из json в map можно, а из строки нет
  • https://t.me/clickhouse_ru
    @rclick #320579 02:40 PM, 16 Apr 2023
    Ребят, подскажите плз, не понимаю, что происходит. Есть большая по числу полей и данных таблица.
    Делаю простейший селект вида select count() where id=123.
    order by у таблицы ровно по этому id
    и вот магия, если просто выполняю - происходит чтение 1.17млн строк за 0.3 секунды условно.
    Если добавляю allow_experimental_projection_optimization = 0 - 0.004 секунды, прочитано 41к строк.
    В предыдущей инсталляции такой проблемы не наблюдал (был 23.1.1, сейчас 23.3.1, заменили физически сервера, переливали данные через insert from remote)
    На что обратить внимание, где могут быть проблемы?

    https://pastila.nl/?01b84b53/2c765ea83820b70a1218b1ded906cb2b
  • https://t.me/clickhouse_ru
    explain plan indexes = 1 добавьте к запросам вначале и покажите вывод или settings send_logs_level = 'trace'
  • https://t.me/clickhouse_ru
    стоит сделать issue на гитхаб вместе с explain estimates, скорее всего деградация какая то
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    получается когда проекции включены primary key вообще в расчет не берется и ничего не отсекается... Похоже на багу в оптимайзере
  • https://t.me/clickhouse_ru
    @rclick #320584 04:22 PM, 16 Apr 2023
    :( пишу issue
  • https://t.me/clickhouse_ru
    https://fiddle.clickhouse.com/a5d2c546-3bec-45ff-bec7-03bc896b770e

    Вот кстати вроде воспроизвел на минималках
  • https://t.me/clickhouse_ru
    @rclick #320586 04:39 PM, 16 Apr 2023
    23.2 вроде нормально себя ведет под этим тестом...
  • https://t.me/clickhouse_ru
    @rclick #320587 04:40 PM, 16 Apr 2023
    Можно ли поставить версию 23.2 поверх 23.3? есть ли шансы на проблемы с данными?
  • https://t.me/clickhouse_ru
    кстати вот есть баг https://github.com/ClickHouse/ClickHouse/issues/35966 незакрытый - у меня тоже при send_logs_level = 'trace' показывает кучу сообщений Used generic exclusion search over index for part t_reverse.all_9_9_0, так что видимо проблема в этом
    Can't omit certain projections that make query 100x slower · Issue #35966 · ClickHouse/ClickHouse

    Clickhouse scans the index of each projection that matches a query- but sometimes this can result in an extremely inefficient index scan. The scan can become so slow, that its 100x slower to read t...

  • https://t.me/clickhouse_ru
    по идее можно один сервак даунгрейднуть и посмотреть, реплику какую-нибудь.
  • https://t.me/clickhouse_ru
    @rclick #320590 04:57 PM, 16 Apr 2023
    мне всегда кажется, что если 1 даунгрейднуть, погонять немного тестов и все как будто б ОК, следом опускаем остальные и все обязательно превратиться в тыкву)
  • https://t.me/clickhouse_ru
    А почему кстати на старых версия не отрабатывает? Чето не выводит использование индекса нормально.

    Пробую на <23.ххх
  • https://t.me/clickhouse_ru
    https://fiddle.clickhouse.com/d3de6c02-c36e-4c90-8ea6-6998d07eac16

    вот так выводит, просто ReadFromNUllSource это видимо когда нет данных...
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #320593 05:10 PM, 16 Apr 2023
    те айдишник не хитнул вообще - это и понятно, рандомный UInt64 тяжело хитнуть
  • https://t.me/clickhouse_ru
    @vlkharlamov #320594 05:12 PM, 16 Apr 2023
    а, не распарсил, спасибо.

    Ну т.е. баг исключительно в новых версиях судя по fiddle?
  • https://t.me/clickhouse_ru
    @den_crane #320595 05:20 PM, 16 Apr 2023
    23.3 LTS, 2023-03-30
    This improvement should be invisible for users. Re-implement projection analysis on top of query plan. Added setting query_plan_optimize_projection=1 to switch between old and new version. Fixes #44963. #46537 (Nikolai Kochetov).

    select count() from t where id = 154601880 SETTINGS query_plan_optimize_projection=0;
    1 row in set. Elapsed: 0.002 sec.
  • https://t.me/clickhouse_ru
    @ya_petrov #320597 06:03 PM, 16 Apr 2023
    Всем привет!
    Нужно перенести данные CH ( v22.6.1.1985) на отдельный том с минимальным временем простоя. Клик на одном сервере, без репликации.
    Попробовал rsync на горячую, затем остановить клик и ту же команду, чтоб докопировались измененные данные – не взлетело:

    Detaching broken part /var/lib/clickhouse/store/fd5/fd5d4c32-c9f1-41e1-8be2-b332620364fd/20230412_1490327_1490327_0 (size: 0.00 B). If it happened after update, it is likely because of backward incompability. You need to resolve this manually

    пока вижу два варианта, если всё правильно понял:
    1. копирование данных при остановленном CH
    2. поднять ещё один инстанс CH с хранением данных в нужной директории, и настроить репликацию.

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

    >`0230412_1490327_1490327_0 (size: 0.00 B)`
    ну 0 байт и что? почему КХ вообще ищет данные в /var/lib/clickhouse ?

    >пока вижу два варианта, если всё правильно понял:
    вообще все не так и проблема не в этом
  • https://t.me/clickhouse_ru
    @ya_petrov #320599 07:16 PM, 16 Apr 2023
    да, написал недостаточно ясно, исправляюсь.
    Директория с данными в /var/lib/clickhouse
    <!-- Path to data directory, with trailing slash. -->
    <path>/var/lib/clickhouse/</path>

    <!-- Multi-disk configuration example: -->
    т.е. в корневой фс. Я создал отдельный том, чтоб перенести туда данные.
    Далее, выполнял в таком порядке:
    rsync -a -H --progress /var/lib/clickhouse/ /mnt/
    systemctl stop clickhouse-server.service
    mv /var/lib/clickhouse /var/lib/clickhouse.bak
    mv /var/lib/clickhouse.mnt /var/lib/clickhouse
    umount /mnt && mount -o user,noatime /dev/mapper/nvmedata-clickh /var/lib/clickhouse
    chown -Rv clickhouse:clickhouse /var/lib/clickhouse
    systemctl start clickhouse-server.service

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

    основной вопрос был в том: допустимо ли копировать данные "на горячую" (при работающем сервисе), остановить сервис и докопировать изменения? с целью уменьшить время простоя сервиса.
  • https://t.me/clickhouse_ru
    @ya_petrov #320600 07:18 PM, 16 Apr 2023
    просьба не набрасываться так сразу 🙂 с кликхаузом не работал плотно ранее, а теперь приходится
  • https://t.me/clickhouse_ru
    >основной вопрос был в том: допустимо ли копировать данные "на горячую" (при работающем сервисе), остановить сервис и докопировать изменения?

    допустимо, но у вас кмк у rsync недостаточно ключей, надо удалить все лишние файлы (КХ удаляет файлы)
    --delete delete extraneous files from dest dirs
  • https://t.me/clickhouse_ru
    Угу, уже сам понял пока писал. Спасибо!
  • https://t.me/clickhouse_ru
    ОК. Ну в след. раз пишите сразу больше.

    Потому перенос на отдельный том это вообще фиг поймешь что, притом что у КХ тоже есть тома и диски.
  • @maxpiter #320604 08:24 PM, 16 Apr 2023
    Всем привет. Недавно занимаюсь CH но есть вопрос который мне не дает покоя. Подскажите где в документации смотреть как размещать нужную мне базу на нужные мне диски? в доках увидел только описание как создавать Using Multiple Block Devices for Data Storage но там так всё невнятно.. может обладает кто сакральным знанием? есть ли какая то внятная дока по этому?
    Нашел только это:
    https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-multiple-volumes

    Но дело в том что там есть xml теги назначение и обязательность которых мне совсем не ясна. Я попробовал и у меня получилось создать политику размещения для таблиц, но непонятно зачем нужен <default> или тэг <single> как их использовать?
    MergeTree | ClickHouse Docs

    The MergeTree engine and other engines of this family (*MergeTree) are the most robust ClickHouse table engines.

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

    Если же она создана, то по-умолчанию содержится на default volume , ее так же можно перенести

    https://altinity.com/blog/2019/11/29/amplifying-clickhouse-capacity-with-multi-volume-storage-part-2
    Amplifying ClickHouse Capacity with Multi-Volume Storage (Part 2)

    This article is a continuation of the series describing multi-volume storage, which greatly increases ClickHouse server capacity using tiered storage. In the previous article we introduced why tiered storage is important, described multi-volume organization in ClickHouse, and worked through a concrete example of setting up disk definitions. 

  • А подскажите какие лучшие практики в данном вопросе? Я привых что в рдбмс я сам рулю тем что у меня и где лежит... а здесь как? "под ногами"? ТОесть где сервер стоит? (в моем случае разворачиваю онпремис где то на 10 Тб хранения для внутрефирменного использования взамен SSAS)
  • https://t.me/clickhouse_ru
    Ну по-умолчанию, если ничего не менять, то лежит в директории из конфига.
    А там смотрите сами , можете изменить на нужный ваш том по-умолчанию, и не ломать голову с volume , если не требуется .

    https://clickhouse.com/docs/ru/operations/server-configuration-parameters/settings#server_configuration_parameters-path
  • Вот как раз таки "по умолчанию" совсем не устраивает (работает конечно, но имхо "детский сад" напоминает).. читаю статью которую Вы мне дали... спасибо... я приблизительно так и думал что оно так работает, по сути в КХ парадигма БД сведена к "таблице" .. что в случае с КХ является более важной и натуральной сущностью
  • 17 April 2023 (97 messages)
  • https://t.me/clickhouse_ru
    @krivdathetriewe #320609 06:19 AM, 17 Apr 2023
    А кто где ищет кликхаус дба? А то у нас появляются кластера большое количество , нужно это все уметь менеджить и туллинг базовый писать, где такого человека найти ?
  • https://t.me/clickhouse_ru
    Можете в этот чат вакансию закинуть :)
  • https://t.me/clickhouse_ru
    https://hh.uz/vacancy/79160572 можно писать мне в лс с вопросами , также опсов ищем. Удалена полная в любой точке планеты ( я например сейчас в Японии ), но можно и в Москве
    Вакансия Clickhouse DBA в Ташкенте, работа в компании «UZUM TECHNOLOGIES».

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

  • https://t.me/clickhouse_ru
    @francesco_tortik #320612 06:53 AM, 17 Apr 2023
    Коллеги, подскажите плиз еще вопрос:
    у нас 6 нод, на 3ей ноде показывает настройку max_memory_usage_for_user = 0 при запросе

    SELECT hostName() AS hostname,
    *
    FROM clusterAllReplicas('cluster_name', 'system', 'settings')
    where name = 'max_memory_usage_for_user'

    а при запросе select * from system.settings where name = 'max_memory_usage_for_user' показывает там значение как и на всех остальных нодах. Оба запроса выполняются на 3ей ноде. С чем может быть связано? Почему запрос себя так ведет?
  • https://t.me/clickhouse_ru
    а что показывают колонки user, initial_user в system.query_log по этим запросам? Может разный юзер в итоге получился при запросах?
  • https://t.me/clickhouse_ru
    @269917803 #320614 07:43 AM, 17 Apr 2023
    Добрый день!
    Подскажите, пожалуйста, есть ли эффективный способ фильтрации данных из таблицы pg_table_1 с Engine=PostgreSQL?

    Суть проблемы в следующем,
    если таким образом получать данные из PG:
    select * from pg_table_1 where id in (2, 4, 6);
    то эффективно работает фильтрация по id на стороне PG.
    Если же нужно фильтровать по значениям полученным запросом на стороне CH:
    select * from pg_table_1 where id in (select id from ch_table_2 where code in ('2', '4'));
    то фильтрация по id на стороне PG не работает, работает только на стороне CH, что в моём случае гораздо менее эффективно.
  • @6085542566 #320615 07:51 AM, 17 Apr 2023
    Привет всeм

    В дaнный момент oткрылся набор к нaм для зарaботкa!!!

    От тебя никaкoгo oпыта о тeмe. Всe бесплатнo!

    Зaрабoтoк oт 110 баксoв в двa часа.

    Всeму нaучу сaм:@visher_GOGo
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #320614 #320616 07:52 AM, 17 Apr 2023
    список для IN не передается в сторону PG. Так что пишите
    select * from pg_table_1 where id = 2 or id=4 or id=6.
    Не очень удобно, но работает, и таким образом можно послать хоть сотни тысяч значений. Для удобства применения (при несколько ином запросе) можно применить Direct словарь. Он сам сформирует этот безумный список OR для запроса в PG.
  • https://t.me/clickhouse_ru
    Юзер один и тот же
  • https://t.me/clickhouse_ru
    Настройки при дистрибьютид запросах передаются с ининциатора на другие сервера. Нельзя увидеть настоящую settings
  • https://t.me/clickhouse_ru
    @vlkharlamov #320619 08:11 AM, 17 Apr 2023
    А можно distributed над системными таблицами сделать?
  • https://t.me/clickhouse_ru
    Можо. но для settings не имеет смысла
  • https://t.me/clickhouse_ru
    @den_crane #320621 08:13 AM, 17 Apr 2023
    Я предлагаю обычно сделать вот так https://kb.altinity.com/altinity-kb-setup-and-maintenance/sysall/
  • https://t.me/clickhouse_ru
    @rclick ↶ Reply to #320595 #320622 08:14 AM, 17 Apr 2023
    Спасибо! Отключение этого параметра привело к резкому росту скорости выполнения запросов (снижению числа прочитанных строк), средний ЛА5 на машинках снизился с 60-80 до 20-30. Если вдруг у кого то много проекций и последняя версия - потестируйте у себя.
  • https://t.me/clickhouse_ru
    Лучшая практика, это использовать mdraid
  • https://t.me/clickhouse_ru
    @kolesand #320624 08:23 AM, 17 Apr 2023
    Привет! max_server_memory_usage включает в себя max_memory_usage?
  • https://t.me/clickhouse_ru
    max_server_memory_usage > max_memory_usage должно быть, очевидно.
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    @Alexeysaff #320627 08:46 AM, 17 Apr 2023
    всем, привет, как в кафка енджин продолжить консьюмить сообщения?

    2023.04.17 08:42:02.248911 [ 291 ] {} <Error> void DB::StorageKafka::threadFunc(size_t): Code: 117. DB::Exception: Unexpected end of file while parsing JSON object.: (at row 1): while parsing Kafka message (topic: lt.quoter.quoter_stats, partition: 0, offset: 2193674267)': While executing Kafka. (INCORRECT_DATA), Stack trace (when copying this message, always include the lines below):
  • https://t.me/clickhouse_ru
    @notionista #320629 08:54 AM, 17 Apr 2023
    Всем привет, мы в компании настраиваем сквозную аналитику. Хотим использовать clickhouse в яндекс облаке, data lens для отчетов. Источники данных: рекламные кабинеты, битрикс crm и 1С на ms sql с транзакциями. Вопросов несколько:
    1. Как лучше получать данные с директа в clickhouse?
    2. Для стриминга сырых данных, что лучше использовать?
    3. Стоит ли бросить google analytics и использовать метрику?
    Вопросов больше, если кто-то решал подобную задачу, прошу помочь, провести консультацию. Естественно, не бесплатно. Также, возможно, потребуется участие для решения задач по тз.
    Компания — федеральная розничная сеть мебели и интернет-магазин
  • https://t.me/clickhouse_ru
    Для моего понимания. Сервер RAM 128Gb, max_server_memory_usage == 120Gb, max_memory_usage == 50Gb, max_server_memory_usage_to_ram_ratio = 0.9. Вопрос первый: если один запрос начнет потреблять > 50Gb я получу MEMORY_LIMIT_EXCEEDED. Так? Вопрос второй: Если я заставлю выполняться 20 запросов и каждый будет потреблять по 10Gb, я получу туже ошибку (MEMORY_LIMIT_EXCEEDED) или другую?
  • https://t.me/clickhouse_ru
    @Alexeysaff #320631 09:02 AM, 17 Apr 2023
    будет ли работать kafka_skip_broken_messages c форматом JSONAsString
  • https://t.me/clickhouse_ru
    @Alexeysaff #320632 09:02 AM, 17 Apr 2023
    ?
  • https://t.me/clickhouse_ru
    она будет выглядеть как MEMORY_LIMIT_EXCEED в обоих случаях. В таком стиле
    "Memory tracker{}{}: limit exceed. Would use {} (attempt to allocate chunk of {} bytes), maximum: {}"
  • https://t.me/clickhouse_ru
    @darkydash #320634 09:15 AM, 17 Apr 2023
    Всем привет! Может ли кто-то подсказать про allow_nullable_key? Чем опасен, может ли что-то пойти не так и тд?) Пробовал ли кто-то его использовать? Планируем использовать редко, для пары тройки таблиц
  • https://t.me/clickhouse_ru
    @Alexeysaff #320635 09:25 AM, 17 Apr 2023
    Input format doesn't allow to skip errors): (at row 1)
    : while parsing Kafka message (topic: lt.quoter.quoter_stats, partition: 0, offset: 2193674267)': While executing Kafka. (INCORRECT_DATA), Stack trace (when copying this message, always include the lines below):
  • @csitrovsky #320636 10:14 AM, 17 Apr 2023
    Всем привет. У меня "Эль проблема".

    Вкратце.
    Устанавливаю: `yandex/clickhouse-server:21.1.2.15`.
    OS: macOS; С чипом: Apple M1.

    После генерации выдает следующую ошибки приведенная в скриншоте.

    Понятное дело, что жалоба идет на процессор.

    Такой вопрос.

    Есть ли актуальная минорная версия, когда необходимо использовать мажорку 21?

    Или же, существуют альтернативное решение по данному вопросу?
  • https://t.me/clickhouse_ru
    @greenh_ua #320637 10:15 AM, 17 Apr 2023
    запуск в докере с --arch не вариант?
  • Хм... есть подробна информация на счет данного флага?

    А то не знаком с ним
  • https://t.me/clickhouse_ru
    @ivans58 #320639 10:36 AM, 17 Apr 2023
    Добрый день, подскажите пжл.
    Имеется кластер 2 шарда по 2 реплики.

    Создаю распределённую таблицу, которая смотрит на реплицированную.
    Вставляю в distr записи. На 1 шард данные ложатся нормально на обе реплики - половина всех записей при одинаковых весах и на 1 и на 2 реплике. На 2 шард половина записей ложится только на одну релику, почему на вторую реплику ничего не ложится?

    internal_replication = true
  • https://t.me/clickhouse_ru
    сорри
    --platform linux/amd64
  • https://t.me/clickhouse_ru
    Select * from system.macros
    Select * from system.replication_queue
  • https://t.me/clickhouse_ru
    Макросы правильно стоят. А вот queque помог понять, что коннект не проходит
  • https://t.me/clickhouse_ru
    @m1khal3v #320643 10:51 AM, 17 Apr 2023
    Всем привет. Последовательно удалял 3 колонки: c1,c2,c3. при удалении второй и третьей на некоторых шардах валится ошибка в мутации

    Code: 47. DB::Exception: Missing columns: 'с1' while processing query:

    и

    Code: 47. DB::Exception: Missing columns: 'с2' while processing query:

    что-то с этим можно сделать?
  • https://t.me/clickhouse_ru
    @m1khal3v #320644 10:53 AM, 17 Apr 2023
    latest_failed_part при этом не меняется
  • Пробовал так. Не, не взлетает.
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #320645 #320647 10:56 AM, 17 Apr 2023
    И не взлетит - увы я не смог завести 21 через обратную совместимость (мак м1)
  • https://t.me/clickhouse_ru
    @solard #320648 10:56 AM, 17 Apr 2023
    На отдельной виртуалке крутить пришлось
  • https://t.me/clickhouse_ru
    @hpcos #320651 11:36 AM, 17 Apr 2023
    Товарищи, позвольте вопрос про самые азы. Вот есть таблица:

    create table table1
    (
    fieldInt1 UInt64,
    fieldInt2 UInt64,
    fieldText String,
    fieldDate DateTime,
    flag UInt8 default 0,
    inserttime DateTime default now()
    )
    engine = ReplicatedReplacingMergeTree('/clickhouse/tables/{shard}/table1', '{replica}')
    PARTITION BY toYYYYMM(fieldDate)
    ORDER BY (fieldInt1, fieldInt2, fieldDate)
    SETTINGS index_granularity = 8192;

    И я вставляю сначала:

    INSERT INTO table1
    (fieldInt1, fieldInt2, fieldText, fieldDate)
    VALUES
    (123, 234, 'some text', toDate('2023-01-01 00:00:00')) ;

    А спустя какое-то время:

    INSERT INTO table1
    (fieldInt1, fieldInt2, fieldText, fieldDate, flag)
    VALUES
    (123, 234, 'some text', toDate('2023-01-01 00:00:00'), 1) ;

    Т. е. те же данные, но с включенным флагом. Верно ли я понимаю, что эти две записи схлопнутся в одну со значением флага, которое было вставлено позже? Т.е. в данном случае останется запись с flag=1.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @hpcos ↶ Reply to #320652 #320653 11:41 AM, 17 Apr 2023
    ну да, я запросы выполнял и видел такой же результат, хочется просто убедиться, что это так работает, а не какое-то совпадение (:
  • https://t.me/clickhouse_ru
    @pic_Nick77 #320654 12:25 PM, 17 Apr 2023
    Здравствуйте. Вот с такой проблемой столкнулся. Обновляю версию КХ с 22.10.7.13 (а так же 22.11.6.44) на 22.12.х. До 22.12.3.5 обновление нормально проходит, а с 22.12.4.76 сервер при рестарте больше не запускается с сообщением
    Job for clickhouse-server.service failed because the control process exited with error code.
    See "systemctl status clickhouse-server.service" and "journalctl -xe" for details.
    при этом systemctl status clickhouse-server.service выдаёт
    System has not been booted with systemd as init system (PID 1). Can't operate.
    а journalctl -xe
    -- Subject: Automatic restarting of a unit has been scheduled
    -- Defined-By: systemd
    -- Support: http://www.ubuntu.com/support
    --
    -- Automatic restarting of the unit clickhouse-server.service has been scheduled, as the result for
    -- the configured Restart= setting for the unit.
    Apr 17 15:16:16 clickhouse-test-update.ekblocal systemd[1]: Stopped ClickHouse Server (analytic DBMS for big data).
    -- Subject: Unit clickhouse-server.service has finished shutting down
    -- Defined-By: systemd
    -- Support: http://www.ubuntu.com/support
    --
    -- Unit clickhouse-server.service has finished shutting down.
    Apr 17 15:16:16 clickhouse-test-update.ekblocal systemd[1]: Starting ClickHouse Server (analytic DBMS for big data)...
    -- Subject: Unit clickhouse-server.service has begun start-up
    -- Defined-By: systemd
    -- Support: http://www.ubuntu.com/support
    --
    -- Unit clickhouse-server.service has begun starting up.
    Apr 17 15:16:16 clickhouse-test-update.ekblocal systemd[54476]: clickhouse-server.service: Failed to connect stdout to the journal socket, ignoring: No such file or directory
    Apr 17 15:16:16 clickhouse-test-update.ekblocal systemd[1]: clickhouse-server.service: Main process exited, code=exited, status=169/n/a
    Apr 17 15:16:16 clickhouse-test-update.ekblocal systemd[1]: clickhouse-server.service: Failed with result 'exit-code'.
    Apr 17 15:16:16 clickhouse-test-update.ekblocal systemd[1]: Failed to start ClickHouse Server (analytic DBMS for big data).
    -- Subject: Unit clickhouse-server.service has failed
    -- Defined-By: systemd
    -- Support: http://www.ubuntu.com/support
    --
    -- Unit clickhouse-server.service has failed.
    --
    -- The result is RESULT.
    Apr 17 15:16:19 clickhouse-test-update.ekblocal dbus-daemon[1223]: [system] Failed to activate service 'org.freedesktop.timedate1': timed out (service_start_timeout=25000ms)
    Apr 17 15:16:19 clickhouse-test-update.ekblocal dbus-daemon[1223]: [system] Activating via systemd: service name='org.freedesktop.timedate1' unit='dbus-org.freedesktop.timedate1.service' reque
    Apr 17 15:16:19 clickhouse-test-update.ekblocal systemd[1]: Starting Time & Date Service...
    -- Subject: Unit systemd-timedated.service has begun start-up
    -- Defined-By: systemd
    -- Support: http://www.ubuntu.com/support
    --
    -- Unit systemd-timedated.service has begun starting up.
    Apr 17 15:16:19 clickhouse-test-update.ekblocal systemd[54507]: systemd-timedated.service: Failed to connect stdout to the journal socket, ignoring: No such file or directory
    Apr 17 15:16:19 clickhouse-test-update.ekblocal systemd[54507]: systemd-timedated.service: Failed to set up mount namespacing: No such file or directory
    Apr 17 15:16:19 clickhouse-test-update.ekblocal systemd[54507]: systemd-timedated.service: Failed at step NAMESPACE spawning /lib/systemd/systemd-timedated: No such file or directory
    Apr 17 15:16:19 clickhouse-test-update.ekblocal systemd[1]: systemd-timedated.service: Main process exited, code=exited, status=226/NAMESPACE
    Apr 17 15:16:19 clickhouse-test-update.ekblocal systemd[1]: systemd-timedated.service: Failed with result 'exit-code'.
    Apr 17 15:16:19 clickhouse-test-update.ekblocal systemd[1]: Failed to start Time & Date Service.
    -- Subject: Unit systemd-timedated.service has failed
    -- Defined-By: systemd
    -- Support: http://www.ubuntu.com/support
    --
    -- Unit systemd-timedated.service has failed.
    --
    -- The result is RESULT.
    и если виртуалку ребутнуть, то она уже больше не поднимается. Что делать?
  • https://t.me/clickhouse_ru
    @pic_Nick77 #320655 12:26 PM, 17 Apr 2023
    ОС: Ubuntu 18.04.4
  • @maxpiter #320656 12:28 PM, 17 Apr 2023
    В файле users.xml раскомментил строку
    <!-- User can create other users and grant rights to them. -->
    <access_management>1</access_management>
    Перезапустил .... ничего не помогает.. пытаюсь создать юзера - создает, пытаюсь дать ему
    GRANT ALL ON *.* TO clickhouse_admin WITH GRANT OPTION; пишет что у меня нет прав... хотя я default ...что не так? Помогите плз... весь мозг сломал...

    Пишет:
    SQL Error [497] [07000]: Code: 497. DB::Exception: default: Not enough privileges. To execute this query it's necessary to have grant SHOW, SELECT, INSERT,....... и тд
  • https://t.me/clickhouse_ru
    /var/log/clickhouse-server/clickhouse-server.err.log что-нибудь есть?
  • https://t.me/clickhouse_ru
    Вот это, похоже, первые записи после рестарта:
    2023.04.17 15:17:18.030607 [ 54728 ] {} <Error> DNSResolver: Cannot resolve host (localhost), error 0: DNS error.
    2023.04.17 15:17:18.030841 [ 54728 ] {} <Error> Cluster: Code: 198. DB::Exception: Not found address of host: localhost. (DNS_ERROR), Stack trace (when copying this message, always include the lines below):

    0. DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0xddd64f5 in /usr/bin/clickhouse
    1. ? @ 0x8bd1984 in /usr/bin/clickhouse
    2. ? @ 0xdda9d4d in /usr/bin/clickhouse
    3. ? @ 0xdda7dc8 in /usr/bin/clickhouse
    4. ? @ 0xdda8c6e in /usr/bin/clickhouse
    5. DB::DNSResolver::resolveAddress(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned short) @ 0xdda9447 in /usr/bin/clickhouse
    6. DB::Cluster::Address::getResolvedAddress() const @ 0x129e26ec in /usr/bin/clickhouse
    7. DB::Cluster::Address::Address(Poco::Util::AbstractConfiguration const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int, unsigned int) @ 0x129e34aa in /usr/bin/clickhouse
    8. DB::Cluster::Cluster(Poco::Util::AbstractConfiguration const&, DB::Settings const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) @ 0x129e96e2 in /usr/bin/clickhouse
    9. DB::Clusters::updateClusters(Poco::Util::AbstractConfiguration const&, DB::Settings const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, Poco::Util::AbstractConfiguration*) @ 0x129e75eb in /usr/bin/clickhouse
    10. DB::Clusters::Clusters(Poco::Util::AbstractConfiguration const&, DB::Settings const&, std::__1::shared_ptr<DB::Macros const>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) @ 0x129e685a in /usr/bin/clickhouse
    11. DB::Context::setClustersConfig(Poco::AutoPtr<Poco::Util::AbstractConfiguration> const&, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) @ 0x12a30916 in /usr/bin/clickhouse
    12. ? @ 0xde8550f in /usr/bin/clickhouse
    13. ? @ 0xde84886 in /usr/bin/clickhouse
    14. DB::ConfigReloader::reloadIfNewer(bool, bool, bool, bool) @ 0x14c73dd6 in /usr/bin/clickhouse
    15. DB::ConfigReloader::ConfigReloader(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, zkutil::ZooKeeperNodeCache&&, std::__1::shared_ptr<Poco::Event> const&, std::__1::function<void (Poco::AutoPtr<Poco::Util::AbstractConfiguration>, bool)>&&, bool) @ 0x14c6fe0a in /usr/bin/clickhouse
    16. DB::Server::main(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&) @ 0xde66231 in /usr/bin/clickhouse
    17. Poco::Util::Application::run() @ 0x1759b542 in /usr/bin/clickhouse
    18. DB::Server::run() @ 0xde5885c in /usr/bin/clickhouse
    19. Poco::Util::ServerApplication::run(int, char**) @ 0x175af89a in /usr/bin/clickhouse
    20. mainEntryClickHouseServer(int, char**) @ 0xde55286 in /usr/bin/clickhouse
    21. main @ 0x884a973 in /usr/bin/clickhouse
    22. __libc_start_main @ 0x21c87 in /lib/x86_64-linux-gnu/libc-2.27.so
    23. _start @ 0x7ea89ee in /usr/bin/clickhouse
    (version 23.1.5.24 (official build))
    2023.04.17 15:17:18.031388 [ 54728 ] {} <Error> DNSResolver: Cannot resolve host (localhost), error 0: DNS error.
  • https://t.me/clickhouse_ru

    2023.04.17 15:17:18.031453 [ 54728 ] {} <Error> Cluster: Code: 198. DB::Exception: Not found address of host: localhost. (DNS_ERROR), Stack trace (when copying this message, always include the lines below):
    и дальше в том же духе про DNS
  • https://t.me/clickhouse_ru
    в /etc/hosts есть что-нибудь про localhost?
  • https://t.me/clickhouse_ru
    @MashinaMashina #320661 12:55 PM, 17 Apr 2023
    Всем привет,

    Хочу провести запрос optimize table orders_products_current_7 final

    Но получаю ошибку Code: 84. DB::Exception: Directory /var/lib/clickhouse/store/a59/a593d2d3-fc4d-4155-85f6-780a6163b64a/tmp_merge_1680998400_1_10_1/ already exists. (DIRECTORY_ALREADY_EXISTS) (version 22.1.3.7 (official build))

    Это значит что оптимизация идет или ошибка какая-то это и фиксить надо?
  • https://t.me/clickhouse_ru
    вот всё, что там есть:
    ::1 ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
  • https://t.me/clickhouse_ru
    должно быть ещё что-то типа:
    127.0.0.1 localhost
  • https://t.me/clickhouse_ru
    У меня в ::1 также есть localhost
  • https://t.me/clickhouse_ru
    Я сам не админ, но вообще, с таким hosts работают 10 боевых нод...
  • https://t.me/clickhouse_ru
    Тады разберись, как там localhost ресолвится. Ибо у меня везде он в hosts есть.
  • https://t.me/clickhouse_ru
    Везде - это несколько больше 10 :-)
  • https://t.me/clickhouse_ru
    Ну вообще
    administrator@clickhouse-test-update:~$ ping localhost
    PING localhost(ip6-localhost (::1)) 56 data bytes
    64 bytes from ip6-localhost (::1): icmp_seq=1 ttl=64 time=0.031 ms
    64 bytes from ip6-localhost (::1): icmp_seq=2 ttl=64 time=0.045 ms
    64 bytes from ip6-localhost (::1): icmp_seq=3 ttl=64 time=0.040 ms
    64 bytes from ip6-localhost (::1): icmp_seq=4 ttl=64 time=0.048 ms
    64 bytes from ip6-localhost (::1): icmp_seq=5 ttl=64 time=0.043 ms
    64 bytes from ip6-localhost (::1): icmp_seq=6 ttl=64 time=0.040 ms
    но
    administrator@clickhouse-test-update:~$ ping clickhouse-test-update.ekblocal
    ping: clickhouse-test-update.ekblocal: Temporary failure in name resolution
  • https://t.me/clickhouse_ru
    RBAC access_management config does not grant ACCESS MANAGEMENT · Issue #47092 · ClickHouse/ClickHouse

    Describe the unexpected behaviour Following steps in https://clickhouse.com/docs/en/operations/access-rights/#access-control-usage , I have a user defined in users.xml with <access_management&gt...

  • https://t.me/clickhouse_ru
    возьмите 22.3.20.29
  • https://t.me/clickhouse_ru
    dns надо проверять типа nslookup localhost
  • https://t.me/clickhouse_ru
    ;; connection timed out; no servers could be reached
  • НИЗКИЙ ТЕБЕ ПОКЛОН!!! ДОБРЫЙ ЧЕЛОВЕК!!!!!!!!!..................аааааааааааааааа чето ору уже... сорри..
    пс. Спасибо БОЛЬШОЕ!
  • https://t.me/clickhouse_ru
    та же ошибка
    Code: 84. DB::Exception: Directory /var/lib/clickhouse/store/a59/a593d2d3-fc4d-4155-85f6-780a6163b64a/tmp_merge_1680998400_1_10_1/ already exists. (DIRECTORY_ALREADY_EXISTS) (version 23.3.1.2823 (official build))
  • https://t.me/clickhouse_ru
    именно её надо? 22.3.20.29 Поставил последнюю версию которая в докере есть - ошибка остается
  • https://t.me/clickhouse_ru
    @zero_stranger #320676 03:31 PM, 17 Apr 2023
    Всем привет! Разрабатываю Multi-Tenant приложение, в каждом запросе к CH присутствует WHERE project_id = '{id}'

    Правильно ли я понимаю, что для эффективности следует указать ключ партиций как PARTITION BY (project_id, toYYYYMM(timestamp)) ?
  • https://t.me/clickhouse_ru
    @vlkharlamov #320677 03:32 PM, 17 Apr 2023
    А сколько строчек для project_id и сколько их различных?
  • https://t.me/clickhouse_ru
    вот тут Миша Филимонов рассказывает почему так делать не надо https://youtu.be/DP7l6Swkskw?t=3798

    надо сделать project_id первым полем в orderby
    ClickHouse Meetup Amsterdam, June 8, 2022

    Slides: https://github.com/ClickHouse/clickhouse-presentations/tree/master/meetup59

  • https://t.me/clickhouse_ru
    ну удалите этот каталог

    что в логе КХ грепается по строке 1680998400_1_10
  • https://t.me/clickhouse_ru
    Я удалял уже - в таблице данные пропали. Залил данные, снова делаю optimize - та же ошибка
  • https://t.me/clickhouse_ru
    Ошибка в wsl видимо и решения нет
    https://github.com/ClickHouse/ClickHouse/issues/31946
    Error Code: 84: Directory already exists · Issue #31946 · ClickHouse/ClickHouse

    i meet this error in every merge tree table 2021.11.29 05:44:38.294340 [ 71 ] {} void DB::MergeTreeBackgroundExecutorDB::MergeMutateRuntimeQueue::routine(DB::TaskRuntimeDataPtr) [Queue = DB::MergeM...

  • https://t.me/clickhouse_ru
    Было 9млн записей, все пропали сразу
  • https://t.me/clickhouse_ru
    в wsl надо на ext4 диск положить внутри wsl
  • https://t.me/clickhouse_ru
    Понял, видео обязательно изучу, а есть еще какие-то способы оптимизации, с учетом того что не может быть случая где мне нужны данные с разными project_id одновременно ?
  • https://t.me/clickhouse_ru
    @Vitaly_Vaskovich #320685 07:42 PM, 17 Apr 2023
    День добрый!
    Подскажите, что можеь быть не так.
    Есть 3 шарда, в них распределённые таблицы, некоторые достаточно большие, по 15-20 млрд записей со сроком хранения 1 неделя (есть как и MergedTree, так и ReplicatedMegreTree). Добавил к этим трём шардам 3 "новые" сервера, каждому по реплике. На репликах создал базу, создал таблицы, всё запускается без ошибок. Но вот select coun(*) from table_distributed на "основных" серверах теперь показывает то 7млрд, то 15, то нормальное к-по под 20млр, какой-то рандом. Выключаю сервера-реплики и всё считается нормально. Куда смотреть, что менять?
  • https://t.me/clickhouse_ru
    ну вот в MergedTree не реплицируются данные сами, как бы странно ожидать что строки магически появятся на репликах
  • https://t.me/clickhouse_ru
    @Vitaly_Vaskovich #320687 07:47 PM, 17 Apr 2023
    так и ReplicatedMergeTree примерно так же себя ведут
  • https://t.me/clickhouse_ru
    @Vitaly_Vaskovich #320688 07:47 PM, 17 Apr 2023
    или это остаточно долго будет при млрд записей?
  • https://t.me/clickhouse_ru
    есть макросы, shard / replica , они должны быть правильно заполнены
    select * from system.macros
  • https://t.me/clickhouse_ru
    что долго?
  • https://t.me/clickhouse_ru
    @Vitaly_Vaskovich #320691 07:48 PM, 17 Apr 2023
    репликация на реплики при перком запуске
    я же атк понимаю, CLick на реплики будет копировать все записи?
  • https://t.me/clickhouse_ru
    да но дистрибьютид таблица не должна ходить в такие реплики.
  • https://t.me/clickhouse_ru
    select count() from replicated на новой реплике сильно отличается?
  • https://t.me/clickhouse_ru
    @Vitaly_Vaskovich #320694 07:50 PM, 17 Apr 2023
    да, очнеь сильно отличаются
  • https://t.me/clickhouse_ru
    @Vitaly_Vaskovich #320695 07:51 PM, 17 Apr 2023
    в макросах пропсиал
    shard = имя сервера
    replica = на «основных» 1, на «репликах 2
  • https://t.me/clickhouse_ru
    @Vitaly_Vaskovich #320696 07:51 PM, 17 Apr 2023
    internar_replication=false
  • https://t.me/clickhouse_ru
    макрос replica должен быть уникальным у каждой ноды
    обычно используют имя хоста
  • https://t.me/clickhouse_ru
    у вас случайно uuid нету в пути реплики?
  • https://t.me/clickhouse_ru
    для replicated таблиц, надо true
  • https://t.me/clickhouse_ru
    uuid нет, есть только shard=server_name, replica=1
    видимо, сбда копать
    раз replica дб уникальное для ноды
  • https://t.me/clickhouse_ru
    @Vitaly_Vaskovich #320701 07:53 PM, 17 Apr 2023
    у меня наоборот получается
  • https://t.me/clickhouse_ru
    шард как раз должен быть одинаковым для шардов
  • @alkorgun #320703 07:54 PM, 17 Apr 2023
    Привет. А чем принципиально отличаются data source плагины для графаны от Altinity и от самой Grafana Labs? Стоит вообще разбираться самому, или есть очевидный победитель?
  • https://t.me/clickhouse_ru
    ага, спасибо
    направление куда копать понятно
  • @fulgerx2007 #320705 08:49 PM, 17 Apr 2023
    такой вопрос: есть дистрибютед таблица dist.probe
    как я могу создавать row policy для нее?

    У меня есть row policy для MergeTree таблиц и для ReplicatedMergeTree таблиц.
    Но для дистрибютед эти правила не работают.
  • https://t.me/clickhouse_ru
    Создавайте для mergeTree
  • Это будет достаточно?
  • https://t.me/clickhouse_ru
    да
  • 18 April 2023 (205 messages)
  • https://t.me/clickhouse_ru
    Есть ещё такая статья https://clickhouse.com/blog/clickhouse-grafana-plugin-2.0
    ClickHouse Plugin for Grafana - 2.0 Release

    The 2.0 release of the ClickHouse plugin for Grafana improves filtering while adding support for HTTP and JSON.

  • https://t.me/clickhouse_ru
    @kolesand #320710 07:36 AM, 18 Apr 2023
    Привет! А как максимально точно оценить сколько памяти потребляет сервер в процессе слияния партов?
  • @396887717 #320711 09:27 AM, 18 Apr 2023
    Добрый день!

    Есть генератор запросов он собирает огромный IN (миллион адишников формата uuid) (как обычно пользаки жгут эксельками со списками). Вот вопрос пролезет ли этот запрос в стандартный odbc драйвер и переварить ли это скл парсер и далее? Во сколько порядков это будет дольше по сравнению с сохранением списка в темповую таблицу и джойн/семиджойн уже с ней?
  • https://t.me/clickhouse_ru
    оба плагина работают.
    но пока есть паритет по функциям...

    sql код писать в altinity немножечко удобнее...

    но в целом новые фичи графаны типа tracing пока только в плагине от grafana labs
  • https://t.me/clickhouse_ru
    парсер переварит, ODBC драйвер тоже должен,
    можно попробовать потюнить настройки на стороне сервера

    https://clickhouse.com/docs/en/operations/settings/settings#settings-max_query_size
    https://clickhouse.com/docs/en/operations/settings/query-complexity#max-ast-depth
    https://clickhouse.com/docs/en/operations/settings/query-complexity#max-ast-elements
    Core Settings | ClickHouse Docs

    additionaltablefilters

  • https://t.me/clickhouse_ru
    @yakhontovyi #320714 09:45 AM, 18 Apr 2023
    Привет всем. Подскажите, плиз, есть ли у кликхауса что-то аналогичное pg_dump --schema-only?
  • Спасибо 🙏
  • @Ferdinant122 #320716 10:13 AM, 18 Apr 2023
    Всем привет, можете подсказать такой вопрос.
    Обновили три новых кликхауса с версии 21.9.4.35 на версию 23.3.1.2823
    При обновлении сохранили старый файл config.xml
    После успешного обновления всех нод, через время стала выскакивать на всех ошибка
    CODE 252 Too many parts (600 with average size 15.25MiB)
    По данным на кликхаусах ничего не менялось. Подскажите с чем это может быть связано?
  • https://t.me/clickhouse_ru
    system.parts смотрите на NewPart какой размер
    и идут ли мержи в system.merges?

    не факт что config.xml вообще как то влиял, но хорошая практика такая что config.xml оставлять тот который идет с пакетом
    а все настройки и переопределения хранить в config.d/*.xml
  • https://t.me/clickhouse_ru
    @manuscript71 #320718 10:19 AM, 18 Apr 2023
    Всем привет!
    Использую Кликхаус 21.11.4 revision 54450

    Есть qz-файл на 30Гб такого вида
    insert into h values (...);
    insert into h values (...);
    ...

    Хочу его загнать в клик, но не получается, выедает всю память и аверейдж за сотню.
    Делаю так:
    cat ./h.sql.gz | gzip -d | clickhouse-client --multiquery --ignore-error --verbose

    Как победить?
  • @Ferdinant122 #320719 10:30 AM, 18 Apr 2023
    Спасибо за ответ!
    System merges идут и на основной ноде, но их стало гораздо больше чем раньше.
  • я бы попробовал бы в csv переделать файл и загрузить уже csv... 😳
  • https://t.me/clickhouse_ru
    вставлять по одной записи в clickhouse это самоубийство

    конвертируйте в CSV / TSV
  • https://t.me/clickhouse_ru
    @manuscript71 #320722 11:22 AM, 18 Apr 2023
    Спасибо за советы. Сделал чуть по-другому
    cat h.sql.gz | gzip -d | py 1.py | clickhouse-client --query="insert into h values " --verbose

    где скрипт 1.py преобразует строки
    insert into h values (...);
    insert into h values (...);

    в формаат Values
    (...)
    ,(...)

    Закачка пошла "как надо".
  • System merges идут, replicas есть, кроме этой ошибки одна база выдаёт ошибку по с партами
  • https://t.me/clickhouse_ru
    @Kechakz #320724 11:31 AM, 18 Apr 2023
    Здравствуйте, у меня есть таблица с пользоватлями, и мне нужно обновлять данные, если пользователь стал заблокирован

    Постоянно обновление данных в таблице не будет ресурсоёмкой задачей? Или лучше для этого сделать отдельную таблицу?
  • https://t.me/clickhouse_ru
    @vlkharlamov #320725 11:35 AM, 18 Apr 2023
    Смотря что вы имеете в виду под обновлением данных
  • https://t.me/clickhouse_ru
    если это чисто таблица с пользователями не очень большая - то можно и через UPDATE, а если это таблица с событями огромная у которой есть user_id, то я бы словарь сделал, user_id -> is_blocked
  • https://t.me/clickhouse_ru
    @vlkharlamov #320727 11:35 AM, 18 Apr 2023
    Условный флаг 0 / 1 заблокирован он или нет?
  • https://t.me/clickhouse_ru
    Да, это имею ввиду
  • https://t.me/clickhouse_ru
    @vlkharlamov #320729 11:36 AM, 18 Apr 2023
    Тогда вариант Артема лучший (причем хранить только заблокированных в словаре, а по дефолту в колонке держать 0)
  • https://t.me/clickhouse_ru
    @Kechakz #320730 11:37 AM, 18 Apr 2023
    Хорошо, спасибо!
  • @Nizovskikh #320731 11:49 AM, 18 Apr 2023
    Всем привет.
    Есть таблица с 15 млрд записей. В ней есть столбцы название домена, ссылка, дата.
    Каждый день добавляется около 30 млн записей.
    Подскажите как лучше оптимизировать таблицу чтобы быстро вытаскивать данные?
    Фильтрация обычно происходит по дате в диапазоне и есть ограничение в выборке (limit, offset)
    Может быть партиции как то указать
  • https://t.me/clickhouse_ru
    Если фильтрация обычно захватывает диапазоны от месяца и больше, то выгодно партицировать по месяцам, если обычно дни, то по дням. Ну и order by (date) сделать таблице. Limit, offset - во всех базах тяжело, если оффсеты большие
  • обычно по дням
  • а если при создании таблицы указан ключ сортировки один, а при селекте другой, то будет дольше отрабатывать?
  • https://t.me/clickhouse_ru
    Ну да, индекс не отработает тогда и ничего не отсечет, будет фул скан по партиции
  • @ivanio11 #320736 12:31 PM, 18 Apr 2023
    Всем привет , а подскажите плиз как можно примерно оценить сколько врмение будет выполняться этот запрос , полагаю надо будет уточнить какое у нас железо ?
    Имеется таблица 135кк строк , 40 столбцов
    Резко появилась необходимость ее перезаписать с другим DDL
    оперативки на сервере 32 гб , ядер 16 ( мб это пригодится)
    Уложимся ли в 5 минут ?
  • https://t.me/clickhouse_ru
    @vlkharlamov #320737 12:32 PM, 18 Apr 2023
    А откуда такой жесткий тайминг 5 минут? Если будет 6 что случится?))
  • @ivanio11 #320738 12:34 PM, 18 Apr 2023
    Ну в эту таблицу пишется раз в 5 минут данные новые по принципу
    select max(dttm) max_dttm from Таблица

    этот дейттайм идёт в запрос
    select *
    from t
    where dttm > {max_dttm}

    И отсюда выгружается , ну хотя можно выключить джобу , чёт только щас подумал

    Но если скажите как можно примерно оценивтаь время выполнения инсерта такого кол-во строк , был бы благодарен
  • Сложно оценить, но что можно сделать - при выгрузке указать insert into new_table select * from old_table where dttm < '2023-04-18 12:00:00';
  • @ivanio11 #320740 12:37 PM, 18 Apr 2023
    А что это даст
  • @mminaev #320741 12:38 PM, 18 Apr 2023
    Ну на сколько я понимаю вы переживаете что не успеете перелить все данные из старой таблицы в новую
  • @mminaev #320742 12:38 PM, 18 Apr 2023
    И что в старой могут появится новые данные?
  • @ivanio11 #320743 12:39 PM, 18 Apr 2023
    А ну понял да
  • Но если скажите как можно примерно оценивтаь время выполнения инсерта такого кол-во строк , был бы благодарен

    Так создайте временную таблицу и сделайте инсерт в нее, узнаете сколько времени длится. Джоба может писать дальше в старую
  • Хорошая идея , спасибо большое
  • кроме партиций есть еще какие то варианты?
  • https://t.me/clickhouse_ru
    кх очень неэффективно выполняет запросы типа select * from order by limit offset ( тратит слишком много ресурсов ), ну и пагинацию лучше делать по where, а не по offset, но это в любой базе, они все будут прокачивать все записи каждый раз чтобы дойти до нужного offset
    ну т.е. я бы проголосовал за вариант не использовать кх.
  • @PavelPavlov39 #320748 01:15 PM, 18 Apr 2023
    Всем привет! Подскажите, пожалуйста, каким наиболее оптимальным типом можно представить данные в СН, хранимые в MySQL-е с типом TIME?
    То есть просто время, вроде "100:00:00"
  • https://t.me/clickhouse_ru
    Int16 всё равно маловат для 6 мультов допустимых значений, если отрицательные значения не нужны просто приклейте дату и пишите как DateTime, он хранится как UInt32
  • https://t.me/clickhouse_ru
    @floxard #320750 01:23 PM, 18 Apr 2023
    если отрицательные значения нужны, то Int32
  • https://t.me/clickhouse_ru
    @Sablast #320751 01:25 PM, 18 Apr 2023
    подскажите, из-за чего kafkaEngine может игнорировать параметры kafka_flush_interval_ms & kafka_max_block_size ?
    сервер 22.8.9.24
    описание движка:
    ENGINE = Kafka
    SETTINGS kafka_broker_list = 'kafka.kafka:9092', kafka_topic_list = 'events', kafka_group_name = 'stream-events', kafka_format = 'JSONEachRow', kafka_flush_interval_ms = 180000, kafka_max_block_size = 500000

    вставляет гораздо чаще и меньшими пачками:
    ┌──────────event_time─┬─written_rows─┐
    │ 2023-04-18 13:23:08 │ 6 │
    │ 2023-04-18 13:23:38 │ 519 │
    │ 2023-04-18 13:23:48 │ 4258 │
    │ 2023-04-18 13:23:52 │ 4257 │
    │ 2023-04-18 13:24:00 │ 11 │
    │ 2023-04-18 13:24:25 │ 11 │
    │ 2023-04-18 13:25:10 │ 3633 │
    │ 2023-04-18 13:25:15 │ 40 │
    │ 2023-04-18 13:25:39 │ 6144 │
    │ 2023-04-18 13:25:43 │ 6162 │
    │ 2023-04-18 13:25:47 │ 18 │
    │ 2023-04-18 13:26:32 │ 22 │
    │ 2023-04-18 13:26:36 │ 5 │
    │ 2023-04-18 13:26:47 │ 289 │
    │ 2023-04-18 13:27:09 │ 4603 │
    │ 2023-04-18 13:27:13 │ 4963 │
    └─────────────────────┴──────────────┘
  • Это не подойдет, так как в случае необходимости положить туда длительность больше 24 часов возникнут сложности.
  • https://t.me/clickhouse_ru
    Тогда только UInt32/Int32 в зависимости от нужности отрицательных значений.
    Нет аналога типа TIME в КХ, ближайший похожий DateTime но он не подходит.
  • Имеешь ввиду хранить количество секунд и после приводить значение к более читаемому виду?
  • https://t.me/clickhouse_ru
    да
  • Ясно. Спасибо!
  • https://t.me/clickhouse_ru
    @ilejn #320757 01:39 PM, 18 Apr 2023
    Почему не подходит DateTime?
  • https://t.me/clickhouse_ru
    @floxard #320758 01:41 PM, 18 Apr 2023
    потому что в mysql TIME это не просто время, а продолжительность, она может быть больше 24 часов. Ну да, можно и в DateTime её сохранить, к какой то константной дате прибавить, но это вряд ли будет удобно, проще уж просто количество секунд сохранить в Int/Uint.
  • https://t.me/clickhouse_ru
    @floxard #320759 01:43 PM, 18 Apr 2023
    сам не ожидал что мускуль богат такими типами )
  • https://t.me/clickhouse_ru
    @ilejn #320760 01:44 PM, 18 Apr 2023
    Да, мощных преимуществ от использования DateTime вроде нет, но и причин чтобы исключить такой вариант я тоже не вижу.
  • https://t.me/clickhouse_ru
    @kolesand #320761 01:48 PM, 18 Apr 2023
    Коллеги, а что означает "Присвоить профиль пользователю" (что то я не нахожу to username в описании синтаксиса) вот тут

    https://clickhouse.com/docs/ru/sql-reference/statements/create/settings-profile

    и чем это отличается от alter user username SETTINGS PROFILE profilename ?
    CREATE SETTINGS PROFILE | ClickHouse Docs

    create-settings-profile-statement}

  • Тут от обратного, профиль присваивается пользователю, а не наоборот, поэтому и нет синтаксиса

    «Присвоить профиль пользователю robin:»
  • https://t.me/clickhouse_ru
    Хмм. Ну а что тогда делает alter user settings profile?
  • https://t.me/clickhouse_ru
    @kolesand #320764 01:58 PM, 18 Apr 2023
    И, кстати. Хочу поменять в уже созданном профайле настройку. Иду в

    https://clickhouse.com/docs/en/sql-reference/statements/alter/settings-profile

    и не понимаю что такое to name1.
    settings-profile | ClickHouse Docs

    ALTER SETTINGS PROFILE

  • это разные команды же
  • https://t.me/clickhouse_ru
    я понимаю что разные. Я пытаюсь понять в чем разница конечная. Пока понял, что возможно смысл первой в привязке профиля к пользователю (то есть что бы он смог делать set prifilename, по профиль по умолчанию не используется), а второй пользователя к профайлу и пользователь может использовать профиль сразу, не указывая set. Похоже на правду?
  • 1 вариант - устанавливаем профиль пользователю сразу при создании профиля
    2 вариант - хотите сменить профиль у пользоватлея.
    вот и вся разница.
  • https://t.me/clickhouse_ru
    спасибо
  • @Igor_godin #320769 02:26 PM, 18 Apr 2023
    Добрый день.
    ClickHouse используется в нескольких коммерческих SIEM системах для хранения событий безопасности. При этом события из журналов собираются и отправляются в ClickHouse с помощью коммерческих коннекторов, являющихся частью SIEM систем
  • @Igor_godin #320770 02:27 PM, 18 Apr 2023
    А какие есть open-source способы собрать события из windows event log и положить в ClickHouse. Есть ли на это счёт best-practice?
  • @Igor_godin #320771 02:30 PM, 18 Apr 2023
    Беглый поиск дал winlogbeats из ELK стека, но он вроде бы не умеет класть в Clickhouse и fluentd/logHouse, но он больше не поддерживается
  • Sending Windows Event Logs to ClickHouse with Fluent Bit

    Monitor your Windows servers and workstations for security threats by sending Event Logs to ClickHouse using FluentBit

  • https://t.me/clickhouse_ru
    @ievgenpro #320773 02:31 PM, 18 Apr 2023
    Добрый день. подажите плз, как поступить с зафейленными мутациями? например по причине корявого запроса - удалить строчку мутации через альтер?
  • Отлично, спасибо!
  • https://t.me/clickhouse_ru
    KILL MUTATION WHERE
  • https://t.me/clickhouse_ru
    Спасибо большое
  • https://t.me/clickhouse_ru
    SELECT database, table, event_type, count() c, quantiles(0.5,0.9)(rows) r FROM system.part_log GROUP BY database, table, event_type;
  • Спасибо!
  • @624775847 #320779 03:02 PM, 18 Apr 2023
    Всем привет.
    Столкнулся с интересной ситуацией: есть 2 поля, одно входит в primary key (т. е. есть первичный индекс), по второму есть вторичный индекс.
    При запросе с условием по любому из полей видно, что индексы работают и гранулы скипаются (смотрю через SET send_logs_level='debug' и EXPLAIN indexes=1).
    При запросе с двумя условиями через OR ни один индекс не работает, гранулы не скипаются. Это норма?
  • https://t.me/clickhouse_ru
    я хочу вас к мысли подвести
    что если вы много вставляете мелкими кусками
    и оно просто может не успевать мержить...
    либо могут быть фейлы на мержах

    по разным причинам

    смотрите MergePart события детальнее там если фейл был то запишется почему
    доку почитайте какие полячто значат

    https://clickhouse.com/docs/en/operations/system-tables/part_log
    part_log | ClickHouse Docs

    The system.partlog table is created only if the partlog server setting is specified.

  • @Ferdinant122 #320781 03:07 PM, 18 Apr 2023
    спасибо ещё раз, буду смотреть
  • Ага, видел, спасибо. Как эту статью сравнивал с тем, что в доке у плагинаот Альтини, сложилось в печатление, что у родного плагина фичей поменьше
  • Ну раз в целом одинаково, то логично взять родной плагин, полагаю. Спасибо
  • (Апну свой вопрос)
  • https://t.me/clickhouse_ru
    это норма. КХ не умеет смешивать pk и skip индексы для OR

    >одно входит в primary key
    кстати вот это вообще можно понять например как
    order by a,b,c,d, ONE_COLUMN, e,f,g
    ONE_COLUMN входит в индекс, но запросам where ONE_COLUMN= не поможет
  • > это вообще можно понять например как order by a,b,c,d, ONE_COLUMN, e,f,g
    Поле действительно не в начале primary key, перед ним стоит другое низкокардинальное поле. Индекс при этом, как ни странно, работает (согласно EXPLAIN, PrimaryKey ... Granules: 14/228315).

    > КХ не умеет смешивать pk и skip индексы для OR
    А два skip-индекса умеет? Можно про это где-то почитать?
  • @624775847 #320787 04:55 PM, 18 Apr 2023
    И еще, подскажите, пожалуйста, можно ли как-то оценить дополнительную нагрузку при вставке данных от добавления индекса?
    Пока нашел только Memory and CPU usage for Inserts
  • https://t.me/clickhouse_ru
    зависит от индекса, блумфильтры могут и в два раза замедлять инсерты
  • https://t.me/clickhouse_ru
    >А два skip-индекса умеет? Можно про это где-то почитать?

    в гитхабе в issues
    or работает если оба поля(выражения) в одном индексе.
    все зависит, мне проще показать на примере как решить проблему, чем 4 часа объяснять почему.
  • https://t.me/clickhouse_ru
    А если primary key f(one_column) order by f(one_column), a, b, c, d, one_column нужно делать where f(one_column) == f(x) and one_column == x или one_column == x уже будет работать быстро и кликхаус внутри себя оптимизирует запрос?
  • У меня на одной таблице так и получилось с ngrambf, на вставку одной строки с индексом в среднем уходило в 2 раза больше времени.
  • https://t.me/clickhouse_ru
    зависит от f
  • https://t.me/clickhouse_ru
    ну да, ожидаемо
  • Удалось понять? У меня та же история сейчас
  • https://t.me/clickhouse_ru
    В примере на altinity я видел 2 основных примера, которые использую: toYYYYMM / … и userId % 16
  • https://t.me/clickhouse_ru
    ну вообще можно просто создать две таблицы и заинсертить и посмотреть в квери логе сколько ресурсов сожрет. быстрее сделать через рисерчить:)
  • https://t.me/clickhouse_ru
    в случае toYYYYMM не надо
    в случае % надо
  • https://t.me/clickhouse_ru
    Понял, спасибо!
  • https://t.me/clickhouse_ru
    Нет, в итоге только до 22.8 обновился, а на след версиях не смог запустить
  • У меня так только на нескольких шардах, все остальные запустились без проблем
  • https://t.me/clickhouse_ru
    Хм... Я только на одном сервере попробовал и у меня сразу проявилась проблема, если найдешь решение, напиши, пожалуйста. Потому что я хз что с этим делать
  • https://t.me/clickhouse_ru
    а сколько replicated таблиц ?
    а таблицы replicated в новом синтаксисе? partition by / order by или в старом (без partition by / order by) ?
  • Моя проблема горе от ума. Есть поле со строкой вида prefix-id1-id2-, формат у строки постоянный, отличаются только id1 и id2. Нужно быстро найти все строки где id1 или id2 равно заданному. С ngrambf все работает, но, по ощущениям, медленная вставка.
    Хотел заменить ngrambf на сортировку по этому полю (что дает быстрый поиск по id1) и отдельную колонку с извлеченным id2 и более легковесным индексом по ней. Но запрос с OR не работает. Можно просто делать 2 запроса, конечно, но как-то неаккуратно.
  • https://t.me/clickhouse_ru
    каким выражением вы выдираете id1 id2?
  • У меня синтаксис таблиц на всех шардах одинаковый, набор таблиц тоже. Часть шардов запустилась, а другая - нет. Висит на table_name become leader ...
    Что помогает? Открыл схему на шарде, что стоит рядом, сделал show tables. Взял таблицу, что идет после той, которая последняя в логе в строке с 'Became leader', дропнул ее мету в зукипере, сделал рестарт реплике шарда, пошло дальше, дальше новая таблица находится, на которой зависает, повторяем процедуру, ...
  • https://t.me/clickhouse_ru
    эм я не это спросил

    вы знаете что такое старый синтаксис?
  • @r3former #320807 05:20 PM, 18 Apr 2023
    Ну я про то, что не факт, что это имеет значение в этом случае
  • https://t.me/clickhouse_ru
    ну ок.
  • https://t.me/clickhouse_ru
    я думаю что поможет проагрейдить все ноды в 22.8 и потом сразу в 23.3
  • https://t.me/clickhouse_ru
    @den_crane #320810 05:22 PM, 18 Apr 2023
    но это баг и я хотел бы его воспроизвести
  • Если нужен ответ на конкретный вопрос, то у нас все таблицы в новом синтаксисе, их много, несколько сотен
  • https://t.me/clickhouse_ru
    спасибо
  • А в чем заключается баг? Я думал, что у меня часть реплик при остановке оставила какие-то потроха в знодах таблиц в зукипере, которые теперь мешают по этим таблицам включить реплицирование после запуска и поэтому реплика никак не может запуститься полностью
  • Если поможет обновление до 22.8, то попробую. Можно сейчас все стопнуть, сделать даунгрейд пакета до 22.8 и запуститься снова?
  • https://t.me/clickhouse_ru
    зачем? если уже все работает в 23.3 то уже смысла нет
  • @r3former #320816 05:26 PM, 18 Apr 2023
    Ну часть шардов то не работает
  • @r3former #320817 05:26 PM, 18 Apr 2023
    4 из 16
  • https://t.me/clickhouse_ru
    ну так эту часть проагредите в 22.8 и затем в 23.3
  • https://t.me/clickhouse_ru
    @den_crane #320819 05:27 PM, 18 Apr 2023
    даунгрейдить то зачем
  • @r3former #320820 05:27 PM, 18 Apr 2023
    Понял, попробую сейчас
  • id1 не выдираю, а делаю запрос вида
    WHERE id_column LIKE 'prefix-id-%'
    где id это интересующее нас значение id1.
    id2 забираю в отдельную колонку как
    id2_col String DEFAULT extract(id_column, 'prefix-.+-(.+)-')
    и строю по ней bloom_filter-индекс.
    Или, для варианта с ngrambf, просто делаю запрос вида
    WHERE id_column LIKE 'prefix%-id-%'
    Возможно, стоит попробовать выдрать id1 и id2 в array, а по нему уже строить общий индекс, как в статье.
  • https://t.me/clickhouse_ru
    если что, то в моем случае, порядка 130 репликейтед таблиц и все в новом синтаксисе были созданы
  • https://t.me/clickhouse_ru
    @kobzevvv #320823 05:32 PM, 18 Apr 2023
    а напомните пожалуйста ссылку на кликхаус плейграунд где можно просто онлайн проверить синтаксис
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    ааа, теперь понятно.

    можно не делать колонку отдельную, можно сделать индекс по функции

    INDEX x1 (extract(s, '.*-(.*)-.*'), extract(s, '.*-.*-(.*)')) TYPE bloom_filter GRANULARITY 3

    и потом where extract(s, '.*-(.*)-.*') = 'some' or extract(s, '.*-.*-(.*)')='some1
    будет использовать индекс
  • Интересно, подумаю над таким вариантом. Спасибо за ответы.
  • На всех проблемных шардах остановил сервис. Взял один из проблемных шардов, одну его реплику. Сделалл даунгрейд до версии пакета 22.8.16.32. Запустил сервис, ловлю ошибку:
    <Error> Application: Coordination::Exception: Transaction failed (Bad version): Op #0, path: /clickhouse/tables/$shard_number/$db_name/$table_name/leader_election
  • https://t.me/clickhouse_ru
    даунгрейд? что?
  • На тех шардах, с которыми была проблема, на них уже стояла версия 23.3.1. Они с этой версией не запускались
  • https://t.me/clickhouse_ru
    а как они работали тогда ?
    выключены были?
  • @r3former #320831 05:52 PM, 18 Apr 2023
    Мы обновили версию с 21.11 до 23.3. Часть шардов запустилась успешно, другая - нет, виснет на table became leader.
  • https://t.me/clickhouse_ru
    ОК, и что вы оставили систему в нерабочем состоянии?
  • @r3former #320833 05:54 PM, 18 Apr 2023
    Вы посоветовали на тех, на которых не работает - поставить 22.8, запуститься на ней, а потом уже сделать апгрейд их до 23.3. Я правильно вас понял?
  • https://t.me/clickhouse_ru
    да, именно так.

    но сейчас у меня впечатление что вы под словом шард подразумеваете что-то другое, поэтому возможно мои советы не имеют смысла.
  • Шард в моем случае - это пара реплик. Понятие шарда совпадает с тем, что указано в конфиге кликхауса. Вот у меня таких 4 пары не хотят запускаться с версией 23.3. Я стопнул на них сервис, поставил пакет 22.8, попробовал запуститься
  • https://t.me/clickhouse_ru
    выложите на pastila.nl полностью кусок clickhouse-server.log с момента старта до конца
  • https://t.me/clickhouse_ru
    @den_crane #320837 05:59 PM, 18 Apr 2023
    и для 23.3 и для 22.8
  • 26.4мб для 22.8 выдернул сейчас. Вставится?
  • https://t.me/clickhouse_ru
    не знаю,
    ну выложите на любой файлообеменник
  • В личку если пришлю - норм? Просто у нас trace стоит. Могу конечно поменять уровень и прогнать для разных версий, чтобы лог был коротким
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #320775 #320841 06:21 PM, 18 Apr 2023
    А что будет если не удалять?
  • https://t.me/clickhouse_ru
    Какова вероятность что движок игнорит параметры при создании и использует системные?
    stream_flush_interval_ms
    The default value is 7500.

    stream_poll_timeout_ms
    Default value: 500.
  • https://t.me/clickhouse_ru
    присылайте
    нужен trace
  • https://t.me/clickhouse_ru
    мержить эти парты не будет, все застрянет со временем короче
  • https://t.me/clickhouse_ru
    @socketpair #320845 07:36 PM, 18 Apr 2023
    CREATE TABLE syslog.logs21
    (
    `timestamp` DateTime64(6),
    `priority` Int8,
    `boot_id` UUID,
    `machine_id` UUID,
    `message` String,
    `syslog_identifier` LowCardinality(String),
    `unit` LowCardinality(String),
    `instance` LowCardinality(String),
    `unit_type` LowCardinality(String),
    `transport` LowCardinality(String)
    )
    ENGINE = MergeTree
    PARTITION BY toYYYYMM(timestamp, 'UTC')
    ORDER BY (timestamp, boot_id)
    TTL toDate(timestamp, 'UTC') + toIntervalMonth(3)
    SETTINGS index_granularity = 8192

    SELECT
    count(*) AS aa,
    cityHash64(message) AS bb
    FROM syslog.logs21
    SAMPLE 1 / 10
    WHERE unit = 'strongswan'
    GROUP BY bb
    ORDER BY aa ASC

    Received exception from server (version 22.3.2):
    Code: 141. DB::Exception: Received from localhost:9000. DB::Exception: Illegal SAMPLE: table doesn't support sampling. (SAMPLING_NOT_SUPPORTED)

    ЧЯДНТ ?
  • https://t.me/clickhouse_ru
    @vlkharlamov #320846 07:38 PM, 18 Apr 2023
    чтоб можно было использовать sample в MergeTree при создании нужно передать по какому полю сэмплировать
  • https://t.me/clickhouse_ru
    надо при создании таблицы указать sample by
  • https://t.me/clickhouse_ru
    @socketpair #320848 07:38 PM, 18 Apr 2023
    тоесть если не указал заранее то ой. и всё, никак . верно ?
  • https://t.me/clickhouse_ru
    ещё можно alterом
  • https://t.me/clickhouse_ru
    ищите в документации alter table
  • https://t.me/clickhouse_ru
    @socketpair #320851 07:39 PM, 18 Apr 2023
    кароч. суть. у меня адовая таблица на 400 млн строк.
  • https://t.me/clickhouse_ru
    @socketpair #320852 07:39 PM, 18 Apr 2023
    и мне надо сделать запрос. я сначала гроупбай сделал. не хватило памяти. окей, заменил строки на хеши. уже лучше. но всеравно не хватило. думал самплинг сделать. и хрен
  • https://t.me/clickhouse_ru
    @socketpair #320853 07:40 PM, 18 Apr 2023
    что можно поделать? мне надо понять какие записи самые частоповторябщиеся
  • https://t.me/clickhouse_ru
    @socketpair #320854 07:40 PM, 18 Apr 2023
    точно не надо
  • https://t.me/clickhouse_ru
    @m1khal3v #320855 07:40 PM, 18 Apr 2023
    запрос одноразовый?
  • https://t.me/clickhouse_ru
    @socketpair #320856 07:40 PM, 18 Apr 2023
    да, одноразовый
  • https://t.me/clickhouse_ru
    @socketpair #320857 07:40 PM, 18 Apr 2023
    повторяющиеся в рамках одного столбца. другие точно разные
  • https://t.me/clickhouse_ru
    @m1khal3v #320858 07:40 PM, 18 Apr 2023
    max_bytes_before_external_group_by попробуйте
  • https://t.me/clickhouse_ru
    это через сваливание на диск. а есть так чтобы ещё и не тормозило?
  • https://t.me/clickhouse_ru
    @socketpair #320860 07:41 PM, 18 Apr 2023
    через уменьшение точности запросов какнибудь
  • https://t.me/clickhouse_ru
    @m1khal3v #320861 07:41 PM, 18 Apr 2023
    ну семплинг, фильтры и т.д
  • https://t.me/clickhouse_ru
    Вот VPN прямо из телеграма: @webofrussia_vpn_bot пользуюсь им
  • https://t.me/clickhouse_ru
    сэмплинг я так понял ниалё..... а с фильтрами.. не знаю что там можно отфильтровать
  • 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
    where rand()%100=0
  • https://t.me/clickhouse_ru
    всё так, да
  • https://t.me/clickhouse_ru
    о, годный прикол
  • https://t.me/clickhouse_ru
    @socketpair #320871 07:43 PM, 18 Apr 2023
    а для штабильности можно и столбце со временм так сделать
  • https://t.me/clickhouse_ru
    @socketpair #320872 08:06 PM, 18 Apr 2023
    select timestamp,message from syslog.logs21 where unit='strongswan' and message like '%but MAC mismatched%' order by timestamp desc

    ....

    Progress: 669.75 million rows, 103.56 GB (10.25 million rows/s., 1.58 GB/s.)

    |
    и продолжается. а тем временем:

    SELECT count(*)
    FROM syslog.logs21

    Query id: 520051af-59ed-4110-b9c0-c8c283557f48

    ┌───count()─┐
    │ 386099572 │
    └───────────┘
  • https://t.me/clickhouse_ru
    @socketpair #320873 08:06 PM, 18 Apr 2023
    Это где это он столько строк-то нашёл ?
  • https://t.me/clickhouse_ru
    @socketpair #320874 08:06 PM, 18 Apr 2023
    что блин происходит
  • https://t.me/clickhouse_ru
    @socketpair #320875 08:08 PM, 18 Apr 2023
    сто процентно воспроизводится
  • https://t.me/clickhouse_ru
    @socketpair #320876 08:08 PM, 18 Apr 2023
    неужели я нашёл баг в КХ
  • https://t.me/clickhouse_ru
    settings max_threads=1
  • https://t.me/clickhouse_ru
    тоже самое
  • https://t.me/clickhouse_ru
    SELECT count(*)
    FROM syslog.logs21

    Ну, это из метадаты же
  • https://t.me/clickhouse_ru
    @socketpair #320880 08:17 PM, 18 Apr 2023
    и шо, думаешь у мну коррапт таблиц на диске ? очень сомнительно
  • https://t.me/clickhouse_ru
    @unamedrus #320881 08:18 PM, 18 Apr 2023
    SELECT count(*)
    FROM syslog.logs21 SETTINGS optimize_trivial_count_query=0;
  • https://t.me/clickhouse_ru
    @socketpair #320882 08:18 PM, 18 Apr 2023
    localhost :) SELECT count(*)
    FROM syslog.logs21 SETTINGS optimize_trivial_count_query=0;

    SELECT count(*)
    FROM syslog.logs21
    SETTINGS optimize_trivial_count_query = 0

    Query id: 2292d0d7-2ce9-469c-b8f3-e64cc08d3617

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

    1 rows in set. Elapsed: 0.002 sec.
  • https://t.me/clickhouse_ru
    @socketpair #320883 08:18 PM, 18 Apr 2023
    (причём кстати тоже мгновенно)
  • https://t.me/clickhouse_ru
    @unamedrus #320884 08:19 PM, 18 Apr 2023
    Мх, там накрутили всякого, мб уже просто так обычный коунт не выключить
  • https://t.me/clickhouse_ru
    @socketpair #320885 08:20 PM, 18 Apr 2023
    localhost :) SELECT count(*)
    FROM syslog.logs21 where message != '';

    SELECT count(*)
    FROM syslog.logs21
    WHERE message != ''

    Query id: f1254e15-6b2e-4889-b874-ad2f9f26effd

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

    1 rows in set. Elapsed: 10.143 sec. Processed 386.10 million rows, 56.47 GB (38.07 million rows/s., 5.57 GB/s.)
  • https://t.me/clickhouse_ru
    @socketpair #320887 08:20 PM, 18 Apr 2023
    дак а в чём прекол то
  • https://t.me/clickhouse_ru
    @socketpair #320888 08:20 PM, 18 Apr 2023
    как дебажить?
  • https://t.me/clickhouse_ru
    @orantius #320889 08:20 PM, 18 Apr 2023
    а что дебажить
  • https://t.me/clickhouse_ru
    @socketpair #320890 08:21 PM, 18 Apr 2023
    почему КХ находит больше строк чем есть в таблице на некотором запросе
  • https://t.me/clickhouse_ru
    зыс
  • https://t.me/clickhouse_ru
    а так сортировка же кстати
  • https://t.me/clickhouse_ru
    @orantius #320893 08:21 PM, 18 Apr 2023
    так а запрос-то завершается?
  • https://t.me/clickhouse_ru
    я не стал ждать. контрол цэ сделал. вангую что он вечный
  • https://t.me/clickhouse_ru
    и шо
  • https://t.me/clickhouse_ru
    @den_crane #320896 08:22 PM, 18 Apr 2023
    проблема в смысле Progress: 669.75 million rows ?
  • https://t.me/clickhouse_ru
    @socketpair #320897 08:22 PM, 18 Apr 2023
    ENGINE = MergeTree
    PARTITION BY toYYYYMM(timestamp, 'UTC')
    ORDER BY (timestamp, boot_id)
  • https://t.me/clickhouse_ru
    @orantius #320898 08:22 PM, 18 Apr 2023
    чтобы был вечный запрос надо ему на вход хотя бы бесконечное количество данных подать
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    @den_crane #320900 08:23 PM, 18 Apr 2023
    это из-за skip index-в наверное или проекций
  • https://t.me/clickhouse_ru
    ничего такого нет у меня
  • https://t.me/clickhouse_ru
    @socketpair #320902 08:23 PM, 18 Apr 2023
    тупейшая таблица. определение выше, могу сдублировать сюда ещё раз
  • https://t.me/clickhouse_ru
    SELECT *
    FROM ---
    FORMAT `Null`

    0 rows in set. Elapsed: 0.532 sec. Processed 4.20 million rows, 1.05 GB (7.89 million rows/s., 1.97 GB/s.)

    SELECT *
    FROM ---
    ORDER BY date DESC
    FORMAT `Null`

    0 rows in set. Elapsed: 1.704 sec. Processed 4.55 million rows, 1.16 GB (2.67 million rows/s., 683.77 MB/s.)
  • https://t.me/clickhouse_ru
    @den_crane #320904 08:24 PM, 18 Apr 2023
    короче неверный Progress это не то чтобы безумный баг
  • https://t.me/clickhouse_ru
    чем помочь в его отладке ?
  • https://t.me/clickhouse_ru
    show create table
  • https://t.me/clickhouse_ru
    CREATE TABLE syslog.logs21
    (
    `timestamp` DateTime64(6),
    `priority` Int8,
    `boot_id` UUID,
    `machine_id` UUID,
    `message` String,
    `syslog_identifier` LowCardinality(String),
    `unit` LowCardinality(String),
    `instance` LowCardinality(String),
    `unit_type` LowCardinality(String),
    `transport` LowCardinality(String)
    )
    ENGINE = MergeTree
    PARTITION BY toYYYYMM(timestamp, 'UTC')
    ORDER BY (timestamp, boot_id)
    TTL toDate(timestamp, 'UTC') + toIntervalMonth(3)
    SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    есть идеи ?
  • @624775847 #320909 08:36 PM, 18 Apr 2023
    Подскажите, пожалуйста, когда CH мержит в фоне куски MergeTree, индексы для смерженых кусков тоже пересчитываются?
    Если так, то, получается, нагрузка на сервер после добавления индексов (без MATERIALIZE) должна постепенно расти из-за того, что со временем увеличивается объем данных, для которых при мерже нужно пересчитывать индексы.
  • https://t.me/clickhouse_ru
    ЕМНИП индексы на каждый парт (или партишн?) всё время путаю.
  • https://t.me/clickhouse_ru
    @socketpair #320911 08:36 PM, 18 Apr 2023
    так что если старое не трогается (ибо смержено ужо) то ничо там пересчитываться не будет
  • https://t.me/clickhouse_ru
    скип индексы? кажется да, пересчитываются.
  • https://t.me/clickhouse_ru
    ProfileEvents for number of rows in GROUP BY, DISTINCT, ORDER BY, IN, and JOIN states. · Issue #43235 · ClickHouse/ClickHouse

    A metric for the number of rows in memory (sum across all queries) and the total state size - for every type of state. A metric indicating conversion to two-level aggregation.

  • https://t.me/clickhouse_ru
    @m1khal3v #320914 08:46 PM, 18 Apr 2023
    мб это про это
  • 19 April 2023 (221 messages)
  • https://t.me/clickhouse_ru
    @MakeReady #320916 06:27 AM, 19 Apr 2023
    Добрый день!
    При вставке данных из CSV можно компактнее чем через INPUT добавить поле со значением справа или слева?
  • @Amun_Raaa #320917 06:49 AM, 19 Apr 2023
    Всем привет! Подскажите, можно ли использовать таблицу mergetree без указания Primary Key(физически это возможно)? Что с этого будет и как сильно это повлияет на производительность таблицы?
  • https://t.me/clickhouse_ru
    Всмысле при создание не указать ?
  • @Amun_Raaa #320919 06:51 AM, 19 Apr 2023
    да
  • https://t.me/clickhouse_ru
    Значит будет PRIMARY KEY = ORDER BY
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #320917 #320921 06:51 AM, 19 Apr 2023
    Можно, так и делают почти всегда.
    Но нужен ORDER BY.
    Если вы хотите, чтобы упорядочивания не было, пишите ORDER BY tuple()
  • @Amun_Raaa #320922 06:52 AM, 19 Apr 2023
    аа, значит указывая набор колонок в order by, без указания PrimaryKey автоматически PrimaryKey подтянет эти колонки с OrderBy
  • https://t.me/clickhouse_ru
    @ilejn #320923 06:54 AM, 19 Apr 2023
    Да.
    Но нужно аккуратно с терминами.
    primary key в CH не очень традиционен. К примеру, нет уникальности.
  • @Amun_Raaa #320924 06:57 AM, 19 Apr 2023
    Ещё хотел спросить про сетап записи при помощи engine=kafka.
    Насколько изучил это:
    Kafka topic => Kafka engine table => MV => MergeTree.
    А как быть когда кластер имеет шарды? После MV => в Distributed table? (Знаю что в Distributed писать это оверхед).
    Или на уровне кафки раскидывать данные точечно по шардам ?
  • https://t.me/clickhouse_ru
    @ilejn #320925 07:01 AM, 19 Apr 2023
    Я не эксперт в эксплуатации, но если раскидывание в кафке ничему не противоречит, то так будет меньше overhead.
    А противоречить может желанию упростить администрирование. Ну и разбиение по шардам в CH должно соответствовать тому, как они приходят из кафки.
  • https://t.me/clickhouse_ru
    @vlkharlamov #320926 07:07 AM, 19 Apr 2023
    А в каких реальных случаях может понадобиться не сортировать таблицу? Дергать случайные значения из таблицы?
  • https://t.me/clickhouse_ru
    @rostish #320927 08:17 AM, 19 Apr 2023
    Всем привет.
    А может быть такое. Сервер по ресурсам загружен в полку и в этот момент системная таблица клика перестает отвечать?
    При этом запросы в обычную таблицу идут без падений, но с задержкой.

    Вопрос про специфику обращений в системную таблицу. Может она не такая устойчивая к недостатку ресурсов?
  • @Antonio_Gonzales #320928 08:31 AM, 19 Apr 2023
    Подскажите, запускаю в докере чистый КХ версии 22.4. Однако при старте еще не созданы некоторые системные таблицы. Например Table system.query_log doesn't exist. Эти таблицы создаются с задержкой в несколько секунд после первых запросов. Как можно запустить создание системной таблицы при старте докера? CI падает, sleep(9) не помогает
  • Системные таблицы это обычные MergeTree таблицы. Они ничем не отличаются от ваших
  • @5857659142 #320930 08:40 AM, 19 Apr 2023
    good workaround :)
  • https://t.me/clickhouse_ru
    @fimcho #320931 09:11 AM, 19 Apr 2023
    Коллеги, добрый день!
    Подскажите пожалуйста как решить задачу.
    Есть таблица такой структуры:
    id, value, date
    Как получить прирост по колонке value на каждый день?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @ievgenpro #320933 09:15 AM, 19 Apr 2023
    подскажите плз, база крашится на старте из-за кривой мутации. как ее удалить непосредственно из файловой системы? доступа к ch получается не могу получить
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #320926 #320934 09:18 AM, 19 Apr 2023
    Скорее все, чем случайные. Возможно, все из партиции.
    Ну или в таблице просто много колонок, запросы разнообразные, и явного фаворита не видно, поэтому не видно и смысла сортировки.
    Для аналитических баз отсутствие упорядоченности скорее типично.

    Впрочем, у @Time может быть более интересный кейс ;)
  • https://t.me/clickhouse_ru
    @vlkharlamov #320935 09:20 AM, 19 Apr 2023
    Даже если фаворита не видно, то имеет смысл упорядочить, читать все данные целиком всегда — ну это не типичный кейс для КХ
  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #320932 #320936 09:21 AM, 19 Apr 2023
    спасибо!
  • https://t.me/clickhouse_ru
    @Alexey_037 #320937 09:21 AM, 19 Apr 2023
    Что то типа такого, дальше сами можете докрутить )
    https://fiddle.clickhouse.com/a18fa13d-9ccc-415f-8b8a-1a7da6a2503b
  • https://t.me/clickhouse_ru
    @m1khal3v #320938 09:23 AM, 19 Apr 2023
    Всем привет. Подскажите что я делаю не так? Ожидаю что вернётся [100,150,120]

    SELECT minForEach([[100, 200, 300], [150, 250], [120, 220]]) AS min_each

    Query id: 11eb480c-0504-4a2b-81a6-cb1adfbca3fb

    ┌─min_each────────────────────────────┐
    │ [[100,200,300],[150,250],[120,220]] │
    └─────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    minArrayForEach
  • https://t.me/clickhouse_ru
    Огромное спасибо!
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #320935 #320941 09:31 AM, 19 Apr 2023
    Очень может быть, что упорядочить есть смысл. Например для компактности хранения. Если автор вопроса вернется, можно будет продолжить обсуждение ;)
  • @Subudei #320942 09:54 AM, 19 Apr 2023
    Всем привет, пытаюсь добавить время в указанном часовом поясе: через toTimeZone('время', 'часовой пояс'), но все равно добавляется в utc. Как можно исправить?
  • https://t.me/clickhouse_ru
    @MashinaMashina #320943 10:02 AM, 19 Apr 2023
    Всем привет! Используется ли order by таблицы при получении данных с указанием order by в запросе?

    Есть таблица, есть запрос с одинаковыми order by. В запросе есть limit. По логике клик должен по order by получить необходимое количество записей и вернуть, а он считывает все записи из таблицы. Надо это как-то побороть
  • https://t.me/clickhouse_ru
    @MashinaMashina #320944 10:03 AM, 19 Apr 2023
    Таблица:
    create table orders_products
    (
    created_at_day DateTime,
    day_orders_n UInt64,
    created_at_hour DateTime,
    product_id UInt64
    )
    engine = ReplacingMergeTree PARTITION BY created_at_day
    ORDER BY (created_at_day, day_orders_n, product_id, created_at_hour)
    SETTINGS index_granularity = 16384, merge_with_ttl_timeout = 21600;

    Запрос:
    SELECT day_orders_n, product_id, created_at_hour
    FROM orders_products
    WHERE created_at_day = 1680998400
    ORDER BY day_orders_n desc, product_id DESC
    LIMIT 32768

    В таблице более 10 миллионов записей, хочу получить 32тыс записей. Как не считывать все данные?
  • @Amun_Raaa #320945 10:08 AM, 19 Apr 2023
    Всем привет! Использование типа данных Nullable(data_type) кроме того, что он больше места занимает, по скорости это негативно аффектит, при сканировании или записи? Лучшее решение это ведь хранить пустые значения, верно?
  • https://t.me/clickhouse_ru
    @vlkharlamov #320946 10:17 AM, 19 Apr 2023
    Nullable(data_type) просто дополнительно хранит колонку Int8 скрытую, которая содержит в себе 0 или 1, типа является ли нулом или нет
  • https://t.me/clickhouse_ru
    @vlkharlamov #320947 10:17 AM, 19 Apr 2023
    отсюда все деградации на скорость
  • Я вот не уверен что так получится, но как минимум можно попробовать из первичного ключа (order by) убрать created_at_day, это же поле партицонирования
  • @pbaturin #320949 10:21 AM, 19 Apr 2023
    Кто нибудь использует нагруженные очереди раббита в кликхаусе? Версии кликхауса свежее чем 22.12 у меня отказываются забирать сообщения из раббита. Есть у кого такие же проблемы?
  • https://t.me/clickhouse_ru
    @imt16r029 #320950 10:41 AM, 19 Apr 2023
    Всем привет, подскажите, синтаксис BACKUP|RESTORE в какой версии появился?
  • у Вас order by в запросе и в таблице отличаются
  • https://t.me/clickhouse_ru
    если вы про created_at_day в order запроса - то оно ничего не меняет, в том числе когда смотрю explain
  • сделайте order by в запросе таким же, как в таблице и посмотрите
  • https://t.me/clickhouse_ru
    я пытался уже делать
    SELECT day_orders_n, product_id, 1 as created_at_days_n, created_at_hour
    FROM orders_products_current_2
    WHERE created_at_day = 1680998400
    ORDER BY created_at_day, day_orders_n, product_id, created_at_hour
    LIMIT 10

    - считываются все данные из таблицы
  • https://t.me/clickhouse_ru
    @MashinaMashina #320955 10:45 AM, 19 Apr 2023
    сортировки 100% такая же как в таблице - результата 0
  • уберите WHERE created_at_day = 1680998400 из запроса или замените на WHERE day_orders_n = 1680998400
  • https://t.me/clickhouse_ru
    day_orders_n = 1680998400 - таких результатов нет
    полностью убрал where - всё равно все строки считываются
  • а сортировка в обратную сторону специально сделана в order by?
  • https://t.me/clickhouse_ru
    в результатах мне надо данные от большего в меньшему
  • к сожалению, затрудняюсь подсказать... вижу только что partition by у Вас по DateTime полю, может быть это как-то сказывается.... нужно по toYYYYMMDD(created_at_day) если по дням или как рекомендуют по месяцам toYYYYMM(created_at_day)
  • https://t.me/clickhouse_ru
    Ок, посмотрю, спасибо
    Время в created_at_day всё равно лежит округленное до дня, вряд ли поможет
  • в system.parts можно посмотреть
  • @maxpiter #320963 11:06 AM, 19 Apr 2023
    /stat@combot
  • https://t.me/clickhouse_ru
    @combot #320964 b o t 11:06 AM, 19 Apr 2023
    Total messages: 320963
  • если desc убрать нормально работает?
  • https://t.me/clickhouse_ru
    ничего не меняет
  • https://t.me/clickhouse_ru
    вот запрос
  • а optimize_read_in_order включен?
  • exact_rows_before_limit выключен?
  • @maxpiter #320970 11:10 AM, 19 Apr 2023
    Подскажите пожалуйста. Есть mssql надо перегнать таблицы в КХ. Использую bcp. Уже мозг сломал, какие только настройки не ставил при импорте в КХ. И csv, tsv. И настройки всякие. Кто как делает?
  • https://t.me/clickhouse_ru
    хороший вопрос
  • https://t.me/clickhouse_ru
    всё как и должно быть
  • а как проверяете что все данные читаются?
  • https://t.me/clickhouse_ru
    в explain selected granules == initial granules
    и в query_log read_rows - там столько же, сколько всего записей в таблице
  • https://t.me/clickhouse_ru
    @ievgenpro #320975 11:24 AM, 19 Apr 2023
    подскажите пожалуйста, как в ClickHouseInstallation в сеции configuration: поставить лимит на использование памяти, какая то халепа и база жрет всю память на ноде и как результат OOM Killed
  • @Kirill_M #320976 11:27 AM, 19 Apr 2023
    а как заставить adqm забыть что он был установлен на хосты и прогнать все установку по новой?
  • ну число гранул определяется условием поиска, тут оно должно выбрать все гранулы в партиции. А дальше по наступлению лимита просто прекратит читать
  • создал таблицу как у вас

    https://fiddle.clickhouse.com/a5ef629e-c3f8-4458-9a8b-c78842bce7ec

    3c89e830120b} <Debug> executeQuery: Read 65536 rows, 1.50 MiB in 0.003841 sec., 17062223.3793283 rows/sec., 390.52 MiB/sec.

    результат будет зависеть от числа потоков и размера гранул
  • https://t.me/clickhouse_ru
    не обратил на это внимание, чаще смотрел explain и selected granules. Возможно из-за этого что-то упустил
  • https://t.me/clickhouse_ru
    Там 7.5 сек задержка для flush. Можно 1мс сделать.
  • https://t.me/clickhouse_ru
    toTimeZone это не позволяет

    Надо делать toDateTime(toString(time,'tz1'),'tz2')
  • @Civilized_man #320982 12:44 PM, 19 Apr 2023
    Доброго дня, подскажите пожалуйста.
    При обновлении crd для ch-operator, первый chi-0-0 запускается нормально
    А следующие не могут прорезолвить dns Not Found address of host
  • https://t.me/clickhouse_ru
    @s_nikolajus #320983 01:28 PM, 19 Apr 2023
    Привет, при восстановлении бэкапа на другом сервере с помощью Clickhouse-backup, делаю clickhouse-backup restore_remote --data --table=....
    И получаю error can't restore 'db.table': error during filepath.Walk for part 'xxx' failed to create hard link '/data/clickhouse/backup/shard01_db_table/shadow/db/table/default/20211203_95_95_0/checksums.txt' -> 'detached/20211203_95_95_0/checksums.txt': invalid cross-device link

    Куда смотреть?
  • https://t.me/clickhouse_ru
    /var/lib/clickhouse/shadow
    и /data на разных device ?

    что такое /data и как оно в КХ определено?
  • https://t.me/clickhouse_ru
    на source сервере default диск он /var/lib/clickhouse/, а на destination он на /data/clickhouse
    Соответственно shadow на сервере где восстанавливаем бэкап - в /data/clickhouse/shadow/
  • https://t.me/clickhouse_ru
    @s_nikolajus #320986 01:51 PM, 19 Apr 2023
    это если в system.disks глянуть
  • @shadowusr #320987 02:00 PM, 19 Apr 2023
    Привет!

    Как можно понять, что вызвало пики высокого входящего трафика на сервере clickhouse?
    Насколько я понимаю, можно предположить, что производилось больше вставок/вставлялось больше данных, чем обычно?
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #320987 #320988 02:01 PM, 19 Apr 2023
    Можно глянуть в system.part_log
  • А на что именно там стоит обратить внимание?
  • Просто глядя на количество операций не увидел каких-то отклонений в проблемном интервале
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #320989 #320991 02:16 PM, 19 Apr 2023
    Можно сгруппировать записи с типом NewPart по таблицам и часам, например, и посмотреть как менялась сумма вставленных строк или байт.
  • @shadowusr #320992 02:16 PM, 19 Apr 2023
    Попробовал посуммировать size_in_bytes за интервал, тоже никаких отклонений. Есть дни, когда это значение в интервале было в 4 раза выше, но с сетью было всё ок
  • @aoparin #320993 02:17 PM, 19 Apr 2023
    а в system.query_log смотрели? там вижу такие поля:
    query_start_time: 2023-04-05 12:25:52
    query_start_time_microseconds: 2023-04-05 12:25:52.417326
    query_duration_ms: 581
    read_rows: 797631
    read_bytes: 11166834
    written_rows: 797631
    written_bytes: 11166834
    result_rows: 797631
    result_bytes: 11166834
    memory_usage: 75025618