• 01 September 2021 (193 messages)
  • https://t.me/clickhouse_ru
    @sibbarb #232857 03:22 AM, 01 Sep 2021
    Всем привет, просветите плиз. У нас сейчас кх версии 20… какой то, там нет оконок,с версии 21.3(вроде бы) их завезли , болезненно ли будет переехать ? Могут ли какие-то данные потеряться , или перестанет работать БД? Стоит ли вообще оно того
  • @Sapar1999 #232858 06:13 AM, 01 Sep 2021
    Подскажите кто сможет, перевый раз с таким сталкиваюсь. Использую ch в docker контейнере. Вот docker пишет что всё запущено (уже даже перезапускал). Но ни через http ни через datagrip подключиться к ch не получается. ch-client через отдельный контейнер не подключается, но если зайти внутрь контейнера с ch то ch-client работает.
  • https://t.me/clickhouse_ru
    У вас, скорее всего, порты не проброшены на машину хоста, или network_mode: host не выбран.
  • Поищите в чатике по listen_host, очень много таких вопросов
  • У нас довольно легко прошло обновление до 21.3. Почитайте документацию Altinity, у них на каждый stable release довольно хорошо расписано какие были изменения между релизами
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #232857 #232863 07:10 AM, 01 Sep 2021
    У нас отвалились Materialized View на дистрибьютед таблицах при обновлении с 20.5 до 21.8
  • Там вопросы по первоначальной настройке. У меня же все работало и в один момент перестало на нескольких машинах
  • Так вы не написали что раньше работало) Просто само перестало и ничего не трогали?
  • именно. ночью перестало работать
  • https://t.me/clickhouse_ru
    и таких вопросов было много и всегда там оказывалось, что всё-таки были какие-то небольшие изменения, которые ни на что не могли повлиять, но повлияли.
    так что стандартный подход: проверяйте порты, файевлол и т.д.
  • @l_dar #232870 09:57 AM, 01 Sep 2021
    Подскажите пожалуйста, кликхаус периодически производит дисконект. Через минуту снова работает нормально.
    В логах вот это:

    2021.09.01 09:50:30.125841 [ 2792599 ] {} <Fatal> BaseDaemon: ########################################
    2021.09.01 09:50:30.125870 [ 2792599 ] {} <Fatal> BaseDaemon: (version 21.8.4.51 (official build), build id: F8BD60273E32A369A2F51EADA624A8E2B522CDF0) (from thread 2789598) (query_id: ad26bd21-bdcf-4d65-830f-ef71df44b21d) Received signal Segmentation fault (11)
    2021.09.01 09:50:30.125888 [ 2792599 ] {} <Fatal> BaseDaemon: Address: NULL pointer. Access: read. Address not mapped to object.
    2021.09.01 09:50:30.125911 [ 2792599 ] {} <Fatal> BaseDaemon: Stack trace: 0x8f8fc10 0x1082597c 0x10618c7c 0x10c6f5d0 0x10c77818 0x10c77db1 0x10c77db1 0x10c77db1 0x10c6d7b0 0x10d59cd4 0x10d6c6fb 0x10d72147 0x8fd8f18 0x8fdaabf 0x8fd61ff 0x8fd9ae3 0x7efebaaf9609 0x7efebaa0f103
    2021.09.01 09:50:30.125941 [ 2792599 ] {} <Fatal> BaseDaemon: 1. memcpy @ 0x8f8fc10 in /usr/bin/clickhouse
    2021.09.01 09:50:30.125966 [ 2792599 ] {} <Fatal> BaseDaemon: 2. DB::ColumnString::insert(DB::Field const&) @ 0x1082597c in /usr/bin/clickhouse
    2021.09.01 09:50:30.125985 [ 2792599 ] {} <Fatal> BaseDaemon: 3. DB::MergeTreeSetIndex::checkInRange(std::__1::vector<DB::Range, std::__1::allocator<DB::Range> > const&, std::__1::vector<std::__1::shared_ptr<DB::IDataType const>, std::__1::allocator<std::__1::shared_ptr<DB::IDataType const> > > const&) const @ 0x10618c7c in /usr/bin/clickhouse
    2021.09.01 09:50:30.126009 [ 2792599 ] {} <Fatal> BaseDaemon: 4. DB::KeyCondition::checkInHyperrectangle(std::__1::vector<DB::Range, std::__1::allocator<DB::Range> > const&, std::__1::vector<std::__1::shared_ptr<DB::IDataType const>, std::__1::allocator<std::__1::shared_ptr<DB::IDataType const> > > const&) const @ 0x10c6f5d0 in /usr/bin/clickhouse
    2021.09.01 09:50:30.126021 [ 2792599 ] {} <Fatal> BaseDaemon: 5. ? @ 0x10c77818 in /usr/bin/clickhouse
    2021.09.01 09:50:30.126040 [ 2792599 ] {} <Fatal> BaseDaemon: 6. ? @ 0x10c77db1 in /usr/bin/clickhouse
    2021.09.01 09:50:30.126076 [ 2792599 ] {} <Fatal> BaseDaemon: 7. ? @ 0x10c77db1 in /usr/bin/clickhouse
    2021.09.01 09:50:30.126082 [ 2792599 ] {} <Fatal> BaseDaemon: 8. ? @ 0x10c77db1 in /usr/bin/clickhouse
    2021.09.01 09:50:30.126104 [ 2792599 ] {} <Fatal> BaseDaemon: 9. DB::KeyCondition::checkInRange(unsigned long, DB::FieldRef const*, DB::FieldRef const*, std::__1::vector<std::__1::shared_ptr<DB::IDataType const>, std::__1::allocator<std::__1::shared_ptr<DB::IDataType const> > > const&, bool, BoolMask) const @ 0x10c6d7b0 in /usr/bin/clickhouse
    2021.09.01 09:50:30.126117 [ 2792599 ] {} <Fatal> BaseDaemon: 10. DB::MergeTreeDataSelectExecutor::markRangesFromPKRange(std::__1::shared_ptr<DB::IMergeTreeDataPart const> const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, DB::KeyCondition const&, DB::Settings const&, Poco::Logger*) @ 0x10d59cd4 in /usr/bin/clickhouse
    2021.09.01 09:50:30.126139 [ 2792599 ] {} <Fatal> BaseDaemon: 11. ? @ 0x10d6c6fb in /usr/bin/clickhouse
    2021.09.01 09:50:30.126146 [ 2792599 ] {} <Fatal> BaseDaemon: 12. ? @ 0x10d72147 in /usr/bin/clickhouse
    2021.09.01 09:50:30.126169 [ 2792599 ] {} <Fatal> BaseDaemon: 13. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0x8fd8f18 in /usr/bin/clickhouse
    2021.09.01 09:50:30.126185 [ 2792599 ] {} <Fatal> BaseDaemon: 14. ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda0'()>(void&&, void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda0'()&&...)::'lambda'()::operator()() @ 0x8fdaabf in /usr/bin/clickhouse
    2021.09.01 09:50:30.126195 [ 2792599 ] {} <Fatal> BaseDaemon: 15. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x8fd61ff in /usr/bin/clickhouse
  • @l_dar #232871 09:57 AM, 01 Sep 2021
    2021.09.01 09:50:30.126206 [ 2792599 ] {} <Fatal> BaseDaemon: 16. ? @ 0x8fd9ae3 in /usr/bin/clickhouse
    2021.09.01 09:50:30.126215 [ 2792599 ] {} <Fatal> BaseDaemon: 17. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    2021.09.01 09:50:30.126225 [ 2792599 ] {} <Fatal> BaseDaemon: 18. __clone @ 0x122103 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
    2021.09.01 09:50:30.215705 [ 2792599 ] {} <Fatal> BaseDaemon: Checksum of the binary: C0E8A4BA8BCF68C95FE1474C27665185, integrity check passed.
    2021.09.01 09:50:50.192258 [ 2789444 ] {} <Fatal> Application: Child process was terminated by signal 11.
  • https://t.me/clickhouse_ru
    и как часто? раз в пару часов?
  • @l_dar ↶ Reply to #232872 #232873 10:00 AM, 01 Sep 2021
    примерно да
  • https://t.me/clickhouse_ru
    линукс наверно сам убивает долговисящие коннекты. максимум часа 4 может провисеть по идее при дефолтных настройках. зависит от дистриба
  • @l_dar #232875 10:03 AM, 01 Sep 2021
    конекты не долговисящие. Просто в какой то момент,делаю запросю, задумывается и выкидывает ошибку. Около минуты, больше не могу подключится. Потом снова все нормльно
  • https://t.me/clickhouse_ru
    @solard #232876 10:05 AM, 01 Sep 2021
    2021.09.01 09:50:30.125870 [ 2792599 ] {} <Fatal> BaseDaemon: (version 21.8.4.51 (official build), build id: F8BD60273E32A369A2F51EADA624A8E2B522CDF0) (from thread 2789598) (query_id: ad26bd21-bdcf-4d65-830f-ef71df44b21d) Received signal Segmentation fault (11)
  • https://t.me/clickhouse_ru
    @solard #232877 10:05 AM, 01 Sep 2021
    Диск гляньте там и оперативку
  • Там же сегфолт, это скорее баг. Надо для начала сделать кейс для воспроизведения (если получится), core-file желательно сохранить. Иначе сложно разобраться. Хотя что-то можно понять по стек-трейсу.
  • @BBRSOFF #232881 10:23 AM, 01 Sep 2021
    Всех приветствую! После обновления с 18.10.3 на последнюю стабильную, отвалилась репликация. Таблица system.zookeeper пустая. Все реплики стали лидерами. Надо ли в ZK пересоздать путь или что то ещё? Прошу помощи
  • @Missoun #232882 10:24 AM, 01 Sep 2021
    Всем привет!
    Есть два лога
    1. Лог с логинами
    2. Лог с действиями

    Хочу собрать инфу по каждой сессии формате:
    * ts логина
    * ts последнего действия (после этого логина и до ts следующего логина)

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

    Думал про ASOF JOIN, но он ищет ближайшее только с одним неточным соответствием
  • @anotherbugmaster #232884 10:31 AM, 01 Sep 2021
    Привет! Делаю бэкфилл из S3 с логами, по-умолчанию в таблице с S3 engine строки располагаются по времени создания соответствующего файла, но было бы круто читать их в обратном порядке, чтобы сначала подтягивать свежие логи, а потом более старые.

    Вопрос: есть ли возможность читать файлы с S3 в обратном порядке?
  • https://t.me/clickhouse_ru
    @dmitry_fomin #232885 10:52 AM, 01 Sep 2021
    Добрый день! подскажите пожалуйста есть ли какой-то готовый анализатор логов CH по аналогии с pgbadger для postgres
  • https://t.me/clickhouse_ru
    Настройки | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @morozovsk #232887 10:58 AM, 01 Sep 2021
    Внимание вопрос:
    упёрся в max_bytes_to_merge_at_max_space_in_pool, я вообще только недавно узнал про его существование. в общем не мёржатся и я решил поменять схему таблицы пока не сильно поздно. сейчас такая схема:
    create table entites
    (
    t DateTime64(6) DEFAULT now64(6),
    entity String,
    profile_id UInt64,
    ...
    ) Engine = ReplacingMergeTree(t)
    ORDER BY (entity, profile_id, uuid);
    хочу добавить
    PARTITION BY (entity, round(profile_id/1000000))
    обычно советуют что-то типа profile_id%10 , но есть ощущение, что через какое-то время опять упрусь в размер парта, а при моём подходе новые партиции будут создаваться на каждый миллион пользователей (сейчас их 10). и в принципе то на то и выходит, только в моей схеме заложен рост.
    в общем какие подводные камни могут быть?
  • https://t.me/clickhouse_ru
    @ikushmantsev #232888 10:59 AM, 01 Sep 2021
    Можно как-то в КХ организовать хранение только N последних записей? Т.е. при вставке сверх лимита, удалять старые записи. В таблице хранятся логи разных пользователей системы. В качестве первой колонки PK - ID пользователя. И вот нужно для каждого пользователя хранить не больше N логов
  • https://t.me/clickhouse_ru
    можете сделать обычный джоин или asof, а потом в WHERE дописать нужное условие.
  • https://t.me/clickhouse_ru
    можно использовать TTL, а количестве N задавать уже в limit в запросе. так чтобы прям хранить именно только N в кликхаусе вроде нету.
  • Не проходит по памяти (
  • https://t.me/clickhouse_ru
    тогда merge join, для него не надо чтобы правая таблица влезала в память
  • @safronov_m #232894 11:10 AM, 01 Sep 2021
    А чего бы не партиционировать по дате ? С любой нужной градацией - хоть ежедневные партиции. Что-то типа https://github.com/ClickHouse/ClickHouse/issues/20159 Опять же дропать старые данные удобно.
    DateTime64 or hourly partitions not being optimized well? · Issue #20159 · ClickHouse/ClickHouse

    Describe the situation We have a MergeTree table which has ~300b rows in it over 1 year and looks like: CREATE TABLE logs ( time DateTime64(3) CODEC(DoubleDelta, ZSTD(1)), ... ) ENGINE = MergeTree(...

  • @BBRSOFF #232895 11:10 AM, 01 Sep 2021
    Должен ли файл /var/lib/clickhouse/metadata/system/zookeeper.sql автоматически создаться при старте кликхауса? В файле конфигурации настройки Zk прописаны. В таблице errors Cannot open file /var/lib/clickhouse/metadata/system/zookeeper.sql, errno: 2, strerror: No such file or directory
  • @BBRSOFF #232896 11:10 AM, 01 Sep 2021
    Таблица system.zookeeper кстати создана
  • https://t.me/clickhouse_ru
    используйте функцию "ответить" иначе не понятно то ли вы отвечаете вникуда, то ли задаёте риторический вопрос
  • а entity много уникальных у вас?
  • Я промахнулся с ответом, казалось что выбрал. Но дату в качестве ключа партиционирования крайне рекомендую. Иначе чистить таблицы от устаревших данных будет практически нереально.
  • https://t.me/clickhouse_ru
    нет. 5 штук
  • https://t.me/clickhouse_ru
    Не должна. Это виртуальная таблица. Это отображение структур памяти.

    Ошибка потому что кто-то делал селекты пока таблицы не было. Она создается только когда кх смог подключиться к зк. Это не настоящие ошибки.
  • https://t.me/clickhouse_ru
    ну у меня нет устаревших данных и у меня ReplacingMergeTree, мне надо перезатирать данные на их новые версии, а при партицировании по дате это невозможно и я буду хранить кучу устаревших данных.
  • t DateTime64(6) DEFAULT now64(6) ?
  • https://t.me/clickhouse_ru
    Нельзя
  • https://t.me/clickhouse_ru
    да, это по сути дата последнего обновления, её нет в ключе
  • Стало спокойнее, но эта ошибка вылезает каждую минуту. И в таблицах system.replicas у всех реплик стоит is_leader=1
  • https://t.me/clickhouse_ru
    Слишком мелкое партиционирование приведет к полной жопе намного быстрее
  • @BBRSOFF #232908 11:22 AM, 01 Sep 2021
    Репликация вроде работает, но эти данные удручают
  • https://t.me/clickhouse_ru
    Так и должно быть. Начиная с 20.4
  • https://t.me/clickhouse_ru
    Кто удручает?
  • @BBRSOFF #232911 11:24 AM, 01 Sep 2021
    ошибки, но если всё так и должно быть, то ок
  • https://t.me/clickhouse_ru
    Ошибок не должно быть. Все таблицы лилеры начиная с 20.4
    Показывайте лог с ошибками.
  • https://t.me/clickhouse_ru
    ну вот, стараюсь, чтобы было не слишком мелкое, но и чтобы в 150гб на партицию уложиться. да и по идее последние пользователи более активны чем предыдущие, значит большинство вставок будет в последнюю партицию. а при остатке от деления практически гарантировано, что будет писать во все 10.
  • из таблицы system.errors: Cannot open file /var/lib/clickhouse/metadata/system/zookeeper.sql, errno: 2, strerror: No such file or directory
  • @BBRSOFF #232915 11:27 AM, 01 Sep 2021
    KEEPER_EXCEPTION Transaction failed (Node exists)
  • https://t.me/clickhouse_ru
    Не надо мне system.errors.
    Лог нужен
  • @BBRSOFF #232917 11:29 AM, 01 Sep 2021
    2021.09.01 11:43:44.840471 [ 624 ] {} <Error> default.*********_shard (ReplicatedMergeTreeRestartingThread): Couldn't start replication (table will be in readonly mode): Replica /clickhouse/tables/ch-shard-01/**********/replicas/ch101 appears to be already active (host: *******, port: 9009, tcp_port: 9000, database: *****, table:**********_shard, scheme: http, ). If you're sure it's not, try again in a minute or remove znode /clickhouse/tables/ch-shard-01/*********/replicas/ch101/is_active manually. Code: 224, e.displayText() = DB::Exception: Replica /clickhouse/tables/ch-shard-01/**********/replicas/ch101 appears to be already active (host: **********, port: 9009, tcp_port: 9000, database: default, table: ********_shard, scheme: http, ). If you're sure it's not, try again in a minute or remove znode /clickhouse/tables/ch-shard-01/*********/replicas/ch101/is_active manually, Stack trace (when copying this message, always include the lines below):
  • @BBRSOFF #232918 11:30 AM, 01 Sep 2021
    Было 3 часа назад. После этого только system.errors
  • Быть может, надо с ZK что то провести?
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #232922 11:48 AM, 01 Sep 2021
    Здравствуйте, подскажите пожалуйста, нормально ли не партицировать таблицу, если не нужны операции с манипулированием отдельными партициями и не планируется много параллельных вставок? Беспокоит то, что образуются большие файлы с колонками в партах (70Гб UInt64 колонки, например). Может ли в какой-то момент это упереться в оперативную память? Или кликхаус вставляет в такие парты без использования оперативки порядка размера файла?
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #232923 11:49 AM, 01 Sep 2021
    И второй вопрос, если вставляется скажем 1000 строк в колонку, которая весит 70Гб на диске (файл .bin в папке парта), то весь ли он перезапишется? Или оно в конец аккуратно дописывает?
  • https://t.me/clickhouse_ru
    @rodosskiand #232924 11:53 AM, 01 Sep 2021
    Привет! Кто сталкивался и использованием s3 бакета в качестве холодного хранилища в кх, подскажите на сколько законно использовать один s3 эндпоинт для всех реплик? Или же наоборот лучше для каждой реплики выделить отдельный эндпоинт (почему?)?
    Или все же выбор зависит от задачи?
  • https://t.me/clickhouse_ru
    тогда забейте, system.errors врет
  • https://t.me/clickhouse_ru
    ни в коем случае
  • https://t.me/clickhouse_ru
    @Caside #232927 11:55 AM, 01 Sep 2021
    Таблица Engine = URL, есть колонки строковые с кавычками одинарными. CH их игнорирует и в таблице они уже без кавычек. Как исправить?
  • https://t.me/clickhouse_ru
    sum(cen) AS cen

    почему так есть объяснение тут

    https://youtu.be/1LVJ_WcLgF8?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7597
    https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf
  • https://t.me/clickhouse_ru
    таблица в формате ..... ?
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #232929 #232931 11:58 AM, 01 Sep 2021
    формат CSVWithNames
  • https://t.me/clickhouse_ru
    1 нормально.
    2 не может.
    3 без использования
    4 Парты иммьютабл (это самое важно в понимании). каждый инсерт создает новый парт, ничего не дописывается, затем когда-нибудь несколько партов слияются, это называется мерж.
  • https://t.me/clickhouse_ru
    settings format_csv_allow_single_quotes=0
  • https://t.me/clickhouse_ru
    сейчас у КХ есть zero copy replication (надо включить параметр), тогда все реплики смотрять на один объект в S3
  • https://t.me/clickhouse_ru
    Спасибо, теперь понятно почему там один самый большой парт и много маленьких хвостов, вплоть до сотен мегабайт. Тогда вопрос про слияние - может ли оно как то зафейлиться / очень долго выполняться из-за большого размера партов? Требуется ли в момент слияния 2x памяти на диске от размера партов?
  • Спасибо большое
  • https://t.me/clickhouse_ru
    1) не может
    2) может
    3) требуется

    в system.merges это видно и есть все ответы на ваши вопр.
  • https://t.me/clickhouse_ru
    Есть ли какие то рекомендации по таким непартицированным таблицам в плане уменьшения максимального размера парта? Что это за настройка - не нашел в system.settings like '%part%'
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    падает КХ. и рестартует через минуту кроном.

    что делал ad26bd21-bdcf-4d65-830f-ef71df44b21d, грепайте лог
  • @l_dar ↶ Reply to #232941 #232943 12:11 PM, 01 Sep 2021
    Спасибо за наводку
  • https://t.me/clickhouse_ru
    @Fullherdi #232944 12:14 PM, 01 Sep 2021
    Всем привет, подскажите MODIFY ORDER BY работает в обе стороны? (можно как добавлять столбцы, так и удалять?)
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #232933 #232945 12:24 PM, 01 Sep 2021
    Это в настройках самого кх делается, не в DDL таблицы?
  • https://t.me/clickhouse_ru
    Только добавлять и только если новую колонку из того же запроса
  • https://t.me/clickhouse_ru
    @Fullherdi #232947 12:29 PM, 01 Sep 2021
    Спасибо
  • https://t.me/clickhouse_ru
    @nyoroon #232948 12:29 PM, 01 Sep 2021
    Т.е. в одном запросе должно быть add column и order by
  • https://t.me/clickhouse_ru
    @Fullherdi #232949 12:30 PM, 01 Sep 2021
    да, я понял, интересовала возможность откатиться обратно
  • https://t.me/clickhouse_ru
    можно с конца, если поля не входят в primary key
  • https://t.me/clickhouse_ru
    и в ddl тоже
  • https://t.me/clickhouse_ru
    ну нет
  • https://t.me/clickhouse_ru
    можно
  • https://t.me/clickhouse_ru
    решили по другому сделать, спасибо
  • https://t.me/clickhouse_ru
    лучше сразу в github открыть issue.
    21.8 очень стабильная и всем будет интересно починить это
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #232933 #232956 12:41 PM, 01 Sep 2021
    В сессии клиента засетили параметр в 0 - не помогло. Вернули 1 - результат тот же. В csv одинарные кавычки, в таблице их нет.
  • https://t.me/clickhouse_ru
    что такое одинарные кавычки по вашему? Пример покажите
  • https://t.me/clickhouse_ru
    @Caside #232958 12:43 PM, 01 Sep 2021
    'word'
  • https://t.me/clickhouse_ru
    т.е. у вас файл типа

    'word','xxx',0,"2010-10-10"
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #232959 #232960 12:47 PM, 01 Sep 2021
    есть стринги с кавычками и без
  • https://t.me/clickhouse_ru
    @Caside #232961 12:47 PM, 01 Sep 2021
    Двойные не игнорируются, но они и не нужны
  • https://t.me/clickhouse_ru
    эта картинка это что? Это вход или выход?
  • https://t.me/clickhouse_ru
    @Caside #232963 12:48 PM, 01 Sep 2021
    это вход, на выходе тот же Bing без кавычек
  • https://t.me/clickhouse_ru
    а если "Bing" на входе то в КХ тоже "Bing" ?
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #232964 #232965 12:49 PM, 01 Sep 2021
    да, но нам такие кавычки не нужны будут
  • https://t.me/clickhouse_ru
    это какой-то бред. Все наоброт должно быть

    select * from system.settings where changed
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Caside #232968 12:52 PM, 01 Sep 2021
    вру, двойные тоже игнорирует
  • https://t.me/clickhouse_ru
    вы курлом свой файл скачайте и посмотрите что возвращается
  • https://t.me/clickhouse_ru
    @den_crane #232970 12:56 PM, 01 Sep 2021
    возможно там пул коннектов и format_csv_allow_single_quotes не используется из сессии, но это странно
  • https://t.me/clickhouse_ru
    @Caside #232971 12:59 PM, 01 Sep 2021
    Сделал запрос SELECT с секцией SETTINGS format_csv_allow_single_quotes=0 и =1 - разницы нет, кавычек нет
  • https://t.me/clickhouse_ru
    select from ... url ( ) ... ETTINGS format_csv_allow_single_quotes=0 ?
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #232972 #232973 01:02 PM, 01 Sep 2021
    селект с таблицы, где ENGINE = URL
  • https://t.me/clickhouse_ru
    я прошу проверить поведение табличной функции url
  • https://t.me/clickhouse_ru
    возможно там пул коннектов и format_csv_allow_single_quotes не используется из сессии, но это странно
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #232975 #232976 01:07 PM, 01 Sep 2021
    SELECT FROM URL ... SETTINGS format_csv_allow_single_quotes=0 получилось, кавычки появились
  • https://t.me/clickhouse_ru
    теперь попробуйте создать еще одну таблицу ENGINE = URL и в ее DDL допишите SETTINGS format_csv_allow_single_quotes=0
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #232977 #232978 01:10 PM, 01 Sep 2021
    Спасибо, помогло. Почему-то с самого начала не давал создать с таким DLL
  • https://t.me/clickhouse_ru
    @Zhenya_aks #232981 01:28 PM, 01 Sep 2021
    #вакансия
    Добрый день, коллеги! Меня зовут Женя, я представляю рекрутинговую компанию Marksman. Есть очень крутая вакансию на позицию Администратора баз данных ClickHouse и Elasticsearch

    Компания - ключевой игрок в экосистеме маркировки.

    Чем предстоит заниматься:
    Сопровождение ClickHouse и Elasticsearch;
    Установка и настройка СУБД;
    Обеспечение непрерывной работы СУБД;
    Диагностика и устранение неполадок;
    Управление доступом к БД;
    Тюнинг работы БД;
    Консультации разработчиков по вопросам работы СУБД;
    Настройка резервного копирования и восстановления;
    Разработка регламентов и инструкций по сопровождению БД;
    Настройка системы мониторинга в части работы БД.

    Что для нас важно:
    Опыт сопровождения ClickHouse или
    Elasticsearch от 2-х лет;
    Опыт диагностики проблем и тюнига
    ClickHouse или Elasticsearch;
    Опыт резервного копирования и восстановления ClickHouse или Elasticsearch.
    Желательно:
    Опыт работы с операционной системой
    Linux (CentOS, Ubuntu);
    Опыт автоматизации с использованием
    Ansible будет плюсом;
    Знание английского языка - свободное чтение технической документации.

    Что мы предлагаем:
    Офис в Москве. Возможен частично-удаленный, либо полностью удаленный формат работы.
    Технически сильная команда
    Корпоративное обучение
    Конкурентная ЗП, оформление по ТК РФ, ДМС, скидки на обучение английского языка

    Скажу сразу по поводу вилки зап.платы- ее так таковой нет, ориентир идет на ваши финансовые ожидания и на уровень по рынку

    По всем вопросам можно писать мне!)
  • https://t.me/clickhouse_ru
    @katyfrolova #232982 01:38 PM, 01 Sep 2021
    Здравствуйте! Есть 2 шарда и свежесозданнная (если это важно) Distributed таблица с ключом шардирования toYYYYMMDD(created_at), которая полностью дублирует данные на оба шарда, вместо того, чтобы их раскладывать по ключу. Никто не сталкивался с подобной проблемой?

    Остальные таблицы с идентичной схемой работают нормально
  • https://t.me/clickhouse_ru
    проверьте что она везде одинаковая, скорее всего имя кластера неправильное
  • https://t.me/clickhouse_ru
    абсолютно одинаковые таблицы везде, имя кластера тоже указано верно
  • https://t.me/clickhouse_ru
    единственное различие с работающими таблицами, которое я нашла - вместо имени базы данных при создании Distributed таблицы в этот раз было указано имя базы, а в предыдущие разы - пустая строка
  • https://t.me/clickhouse_ru
    @mezhekov #232988 02:36 PM, 01 Sep 2021
    Всем привет! Столкнулся со странной ситуацией, нужно было из таблицы MATERIALIZED VIEW (ReplicatedSummingMergeTree) удалить данные и залить их новыми за одну и туже дату в эту же таблицу, удалиение прошло успешно ALTER TABLE table DELETE WHERE date = '2020-01-01', но при добавлении данных, данные в MV не добавляются, точнее запрос отрабатывает и не каких ошибок нет, ни в логах ни при инсерте, но при селекте данных не находит, тоесть какбудто они не добавились. В какую сторону копать? Мутации отработали со статусом 1
  • @green_pea #232989 02:46 PM, 01 Sep 2021
    Есть таблица А и B отношение 1 ко многим
    Данные связаны по id

    На выходе хочу получить json
    где у таблицы А в качестве дочерних элементов данные таблицы В.

    Как их сгруппировать?
  • https://t.me/clickhouse_ru
    set insert_deduplicate=0
  • https://t.me/clickhouse_ru
    это очень странно, ищите ошибку, попробуйте воспроизвести на маленьком примере
  • @zhora9001 #232992 02:54 PM, 01 Sep 2021
    #ReplacingMergeTree добрый день, подскажите, хорошая ли идея использовать ReplacingMergeTree для хранения постоянно обновляющихся данных из внешнго источника, которые хочется синхронизировать с CH раз в какое-то время? Количество инсертов ~ 1M/сутки, то есть таблица сама не большая, но данные меняются стабильно - а трекать предыдущие значения и дописывать дельты как-то больно.
  • https://t.me/clickhouse_ru
    select a.id, groupArray(B.*)
    from ... join on id = id
    group by a.id
  • https://t.me/clickhouse_ru
    1 М в сутки в строках это ?
  • https://t.me/clickhouse_ru
    можно ещё в сторону EmbeddedRocksDB глянуть
  • да
  • https://t.me/clickhouse_ru
    1М строки? тогда никаких проблем
  • а забират "последние" данные просто с argMax(tuple(val1, val2, ..., valN), version) и не париться?
  • https://t.me/clickhouse_ru
    если будете использовать её в качестве джойна, то нужно будет учесть, что JOIN t FINAL не работает
  • это для хранения словаря "того, что уже было" вы предлагаете?
  • https://t.me/clickhouse_ru
    по разному, зависит...
    например вы знаете что закончили обновлять и запускаете optimize final , дальше просто select
    есть например параметры которые ускоряют select final, возможно их можно использовать
    и еще 49 вариантов
  • https://t.me/clickhouse_ru
    если у вас апдейты по ключу, то оно просто перезапишет всю строку, а не так как ReplacingMergeTree потом может быть когда-нибудь в фоне
  • https://t.me/clickhouse_ru
    это не совсем правда, нужен подзапрос

    select .... from ... join (select * from t final) as t

    и это баг, его починят
  • ну вот тут напряжение в том, что "закончили обновлять" считай не бывает. есть грубо говоря внешняя база, которую периодически опрашиваем и получаем "актуальные" значения, и поменяться они могут как для свежих записей, там и для достаточно старых
  • https://t.me/clickhouse_ru
    я и говорю у меня есть 51 вариант
  • https://t.me/clickhouse_ru
    @den_crane #233006 03:02 PM, 01 Sep 2021
    create table test( A Int64, B Int64, C String, D Date, sign Int8, version Int64)
    Engine = VersionedCollapsingMergeTree (sign, version) partition by toYYYYMM(D) order by A;

    insert into test select number, 1, '1', today(), 1, 1 from numbers(100000000);

    optimize table test final;
    Elapsed: 15.702 sec. ---<---- 15

    optimize table test final;
    Elapsed: 16.025 sec. ---<---- each time optimize merges full table

    set optimize_skip_merged_partitions=1;

    optimize table test final; ---<---- optimize merges nothing because nothing to optimize and enabled optimize_skip_merged_partitions
    Elapsed: 0.000 sec.

    optimize table test final;
    Elapsed: 0.000 sec.

    select count() from test where C='1';
    Elapsed: 0.150 sec.

    select count() from test final where C='1';
    Elapsed: 4.941 sec. ----------- 4 sec. FINAL

    select count() from test final where C='1';
    Elapsed: 4.663 sec.

    set do_not_merge_across_partitions_select_final=1;

    select count() from test final where C='1';
    Elapsed: 0.502 sec. ------------ 0.5 sec. FINAL
  • @zhora9001 #233007 03:04 PM, 01 Sep 2021
    ну final/optimize понятно, но думаю для наших кейсов (учитывая маленький размер таблицы) проще отдать оптимизацию на откуп CH и выгребать с помощью argMax там где надо
  • @zhora9001 #233008 03:05 PM, 01 Sep 2021
    хотя будем еще бенчмаркать, конечно
  • @zhora9001 #233009 03:05 PM, 01 Sep 2021
    спасибо!
  • https://t.me/clickhouse_ru
    Механика какая? Запросы записываются в бэклог и сравнивает их и при очередном запросе?
  • https://t.me/clickhouse_ru
    КХ записывает в ZK контр. сумму инсерта, если у след. инсерта такая же сумма КХ пропускает инсерт.
    set insert_deduplicate=0 это отключает.
    по умолчанию 100 сумм хранятся неделю

    https://clickhouse.tech/docs/ru/operations/settings/merge-tree-settings/#replicated-deduplication-window

    https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/replication/

    Блоки данных дедуплицируются. При многократной записи одного и того же блока данных (блоков данных одинакового размера, содержащих одни и те же строчки в одном и том же порядке), блок будет записан только один раз. Это сделано для того, чтобы в случае сбоя в сети, когда клиентское приложение не может понять, были ли данные записаны в БД, можно было просто повторить запрос INSERT. При этом не имеет значения, на какую реплику будут отправлены INSERT-ы с одинаковыми данными. Запрос INSERT идемпотентный. Параметры дедуплицирования регулируются настройками сервера merge_tree
    Настройки MergeTree таблиц | Документация ClickHouse

    Настройки MergeTree таблиц Значения настроек всех MergeTree таблиц собраны в таблице system.merge_tree_settings. Их можн

  • https://t.me/clickhouse_ru
    @ilejn #233012 03:10 PM, 01 Sep 2021
    Тут смущает '2020-01-01' из примера. Данные реально старые?
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    в таких случаях пациенты просто несколько раз повторяют попытку и после первой у них начинается проблема
  • https://t.me/clickhouse_ru
    Это для примера, данные добавлены недавно
  • https://t.me/clickhouse_ru
    @den_crane #233016 03:17 PM, 01 Sep 2021
    кстати replicated-deduplication-window работает совсем не так как написано в доке (я не знал когда ее писал)
    там время относительное, и 100 очищается не сразу а периодически
  • https://t.me/clickhouse_ru
    @konnectrl #233017 03:18 PM, 01 Sep 2021
    Чем кто визуализрует данные из CH ?
  • https://t.me/clickhouse_ru
    Чем угодно. power bi, tableau, redash, superset, metabase, grafana
  • https://t.me/clickhouse_ru
    metabase/tableau
  • Superset
  • https://t.me/clickhouse_ru
    +
  • https://t.me/clickhouse_ru
    @dmitriynvkv #233022 04:01 PM, 01 Sep 2021
    superset
  • https://t.me/clickhouse_ru
    set insert_deduplicate=0 помогло, спасибо.
  • https://t.me/clickhouse_ru
    @rodosskiand #233025 05:09 PM, 01 Sep 2021
    ребят
    возможно глупый вопрос
    но правильно же понимаю, что allow_s3_zero_copy_replication будет работать только на merge_tree движке ?
  • да, это настройка для merge_tree движка
  • https://t.me/clickhouse_ru
    принял
    спасиб большое
  • https://t.me/clickhouse_ru
    @Shabashev #233028 05:26 PM, 01 Sep 2021
    Всем добрый вечер, подскажите как вставить данные в map внутри nested?
    Таблица: `
    CREATE TABLE test.producers (
    id String,
    name String,
    store Nested(
    id String,
    test_params Map(String, String)
    )
    ) ENGINE = MergeTree()
    `
    Попытки вставить: `
    INSERT INTO test.producers VALUES ('e69c40f7-22b3-4c83-853a-696df428beda', 'name', ['store.id'], [{'ves':'100'}])
    INSERT INTO test.producers VALUES ('e69c40f7-22b3-4c83-853a-696df428beda', 'name', ['store.id'], [map('ves', '100')])
    `
    Результат в test_params лежит пустая строка
  • https://t.me/clickhouse_ru
    Вы неправильно вставляете мап. Посмотрите доку. Он вставляется как жсон, только с одинарными кавычками. Ваша форма только в селекте может работать.
  • https://t.me/clickhouse_ru
    INSERT INTO test.producers VALUES ('e69c40f7-22b3-4c83-853a-696df428beda', 'name', ['store.id'], [{'ves':'100'}])
    Вот попытка вставить как json, такая же пустая строка
  • https://t.me/clickhouse_ru
    А теперь посмотрите доку как правильно вставлять нестед, а потом покажите вашу ошибку
  • создал у себя вашу таблицу, всё ок вставило с вашим примером
  • какая версия КХ? у меня 21.3.15
  • https://t.me/clickhouse_ru
    @gagushichev #233035 05:46 PM, 01 Sep 2021
    Доброго времени суток!
    Есть таблица с сырыми данными, привезенными Kaffka (на каждый день ~500млн. строк)

    CREATE TABLE raw.ts_float_local
    (

    `id` UInt64 CODEC(DoubleDelta,
    LZ4),

    `dt` DateTime64(6) CODEC(Delta(8),
    ZSTD(1)),

    `created_dt` DateTime64(6) CODEC(Delta(8),
    ZSTD(1)),

    `value` Float32 CODEC(ZSTD(1))
    )
    ENGINE = MergeTree
    PARTITION BY toYYYYMMDD(created_dt)
    ORDER BY (id,
    dt)
    SETTINGS index_granularity = 8192;

    Необходимо создать deduplicated слой данных из этой таблицы.
    Подскажите, пож, как каким способом удобнеее всего это делать?

    Каждый день переливать сырые данные в слой уникальных данных и делать optimize deduplicated не пойдет, потому что при большом объеме данных в итоговой таблице optimize будет падать.
    Налету при вставке удалять дубликаты тоже не хватает оперативки
  • INSERT INTO test_map VALUES ('e69c40f7-22b3-4c83-853a-696df428beda', 'name', ['store.id'], [map('ves', '100')])
    INSERT INTO test_map VALUES ('e69c40f7-22b3-4c83-853a-696df428beda', 'name', ['store.id'], [{'ves': '100'}])

    SELECT *
    FROM test_map
    FORMAT Vertical

    Query id: d7ce1a0f-0877-419c-b600-96c5373e187e

    Row 1:
    ──────
    id: e69c40f7-22b3-4c83-853a-696df428beda
    name: name
    store.id: ['store.id']
    store.test_params: [{'ves':'100'}]

    Row 2:
    ──────
    id: e69c40f7-22b3-4c83-853a-696df428beda
    name: name
    store.id: ['store.id']
    store.test_params: [{'ves':'100'}]
  • https://t.me/clickhouse_ru
    Действительно все работает, проблема оказывается в ui яндекс клауда который не отображает мне в результате, если делать запрос не в нем, то видно, что все правильно отработало, спасибо большое
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233035 #233038 06:16 PM, 01 Sep 2021
    50 сообщений вверх Денни пояснял этот вопрос. Смотрите про final.
    Делаете таблицу ReplacingMergeThree, все выборки с final. Чтобы даром не проверять дубликаты в старых партициях (которые и так уйдут при мерджах), включаете do_not_merge_across_partitions_select_final.
    Партиции у вас дневные - это хорошо для select/final, но но плохо, если у вас не стоит TTL на месяц-квартал - получите слишком много подкаталогов партов в директории с таблицей, и выборки будут тормозить.
    500М/день - это немало. Пробуйте найти баланс, может быть недельные партиции будут более удачным вариантом.
    Или решайте вопрос дедубликации как-то иначе - в своем приложении (оно точно не может не порождать дубликатов?), или же в Кафке - там есть инструменты для этого.
  • https://t.me/clickhouse_ru
    а в продолжение этой темы

    табличный движок MergeTree

    но отдает все такую же ошибку

    Unknown setting allow_s3_zero_copy_replication

    версия кх последняя

    ни у кого не было ?
  • https://t.me/clickhouse_ru
    @ikkalinkin #233040 06:41 PM, 01 Sep 2021
    Подскажите, такая ошибка: Code: 47, e.displayText() = DB::Exception: Unknown identifier: total; there are columns: query, count(): While processing query, count() / total AS ratio (version 21.6.1.1-arcadia)
  • https://t.me/clickhouse_ru
    откатился на 21.7.4
    заработало

    было 21.8.4.51
  • https://t.me/clickhouse_ru
    настройку переименовали

    allow_remote_fs_zero_copy_replication
  • https://t.me/clickhouse_ru
    спасиб
    видимо доку недосмотрел )
  • https://t.me/clickhouse_ru
    @MagiaGroz #233044 06:58 PM, 01 Sep 2021
    Всем привет правильно я понимаю что нет смысла создавать materialized view на селекты с операциями равенства (where row='something') при условии что искомое значение каждый раз меняется
  • обернуть в под селект поидее надо

    select count() / total from (select count() total) cross join ()
  • https://t.me/clickhouse_ru
    спасибо! а почему так не получается, не знаешь?
  • прям объяснить наверное не могу) такой синтаксис в КХ с джойнами
  • https://t.me/clickhouse_ru
    понял, спасибо))
  • https://t.me/clickhouse_ru
    Describe how identifiers in SELECT queries are resolved · Issue #23194 · ClickHouse/ClickHouse

    Query analysis in ClickHouse is more complicated than it is in standard SQL due to the following extensions: aliases can be defined and used in any part of the query; expressions can be used in any...

  • https://t.me/clickhouse_ru
    спасибо
  • @rikkir ↶ Reply to #232856 #233051 07:23 PM, 01 Sep 2021
    спасибо!
  • @subotic0 #233053 07:30 PM, 01 Sep 2021
    Привет, можно в кх узнать версию другой базы по remote?
  • SELECT version() FROM remote
  • @simpl1g #233055 07:35 PM, 01 Sep 2021
    хотя наверное соврал
  • @subotic0 #233056 07:35 PM, 01 Sep 2021
    этот запрос вернет версию текущей базы)
  • SELECT hostname() FROM remote
    возвращает у меня хост удалённой базы

    version() не могу проверить потому что все базы одинковые)
  • https://t.me/clickhouse_ru
    репликация и S3 работает у семейства Replicated*MergeTree
  • https://t.me/clickhouse_ru
    MergeTree ? Именно MergeTree ? параметр для Replicated
  • https://t.me/clickhouse_ru
    а это обязально картинки постить ? Лень набирать.
    и мы тут не саппортим 21.6.1.1-arcadia
  • https://t.me/clickhouse_ru
    можно SELECT materialize(version()) FROM remote
  • https://t.me/clickhouse_ru
    @graid2030 #233063 08:31 PM, 01 Sep 2021
    Подскажите почему для CREATE MATERIALIZED VIEW … TO … запрещен POPULATE
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233063 #233064 08:47 PM, 01 Sep 2021
    потому что он избыточен и не нужен. insert as select делает ровно то что вам нужно
  • https://t.me/clickhouse_ru
    Не сделали. Никто не использует pooulate
  • https://t.me/clickhouse_ru
    Почему? А если записей навтыкают между запросами, там же засечку не поставить
  • https://t.me/clickhouse_ru
    Populate так же все пропустит.

    https://youtu.be/1LVJ_WcLgF8?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7597
    https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf
  • https://t.me/clickhouse_ru
    @graid2030 #233068 09:05 PM, 01 Sep 2021
    @bvt123, @den_crane спасибо!
  • https://t.me/clickhouse_ru
    @maksim_melnichuk #233069 09:28 PM, 01 Sep 2021
    добрый день, подскажите пожалуйста такая задача по бд данным:
    относительно не большие вставки (10-50к записей пару раз в день), данных в таблице сейчас около 10 млн, записи представляют из себя строки с около 20 колонками, задачи для пользователей, которые назначаются после добавления в полу автоматическом режиме равномерно. задачи могут повторятся, а значит таблица мусорка получается)) самое важное - нужно осуществить быстрый поиск по ней, подсчет обработанных задач по статусу, подойдет ли clickhouse для этой задачи? mysql тормозит при поиске даже за небольшой период, т.к. нужно выбирать по разным комбинациям полей (по отделам, пользователю, выгрузке, статусу и в итоге считать sum count). Не получилось оптимально подобрать индекс в mysql, ранее пробовал clickhouse для записи статистики и агрегации (около 300к в минуту записей), кх подошел, сейчас не знаю
    Посоветуйте пожалуйста. заранее спасибо
  • 02 September 2021 (89 messages)
  • https://t.me/clickhouse_ru
    @Gulshan5k #233071 04:43 AM, 02 Sep 2021
    Добрый день! Подскажите пожалуйста, после апгрейда КХ перестал работать odbc коннект:

    SQL Error [86]: ClickHouse exception, code: 86, host: , port: 8123; Code: 86, e.displayText() = DB::Exception: Received error from remote server /columns_info?connection_string=DSN%3Ddzone&table=BASEDICT&external_table_functions_use_nulls=true. HTTP status code: 500 Internal Server Error, body: Error getting columns from ODBC 'std::exception. Code: 1001, type: nanodbc::database_error, e.what() = ../contrib/nanodbc/nanodbc/nanodbc.cpp:2788: HY09: [Oracle][ODBC]Invalid string or buffer leng <-25>. (version 21.8.4.51 (official build))'
    (version 21.8.4.51 (official build))
  • @SolomonFoxiys #233074 05:42 AM, 02 Sep 2021
    Всем привет. Я работаю в компании (пока не буду озвучивать) выбираем технологию на старте проекта. Вопрос КХ работает с тайм трекерами? Есть примеры кейсов, где КХ применяли именно как часть тайм-трекинговой стемы?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233069 #233075 05:42 AM, 02 Sep 2021
    10М совсем немного. такая задача решается при помощи любой СУБД на современном оборудовании. Странно что не получилось с mysql. Может надо купить новый SSD?
    Но КХ тоже может. Если вам с ним комфортно, он уже есть в эксплуатации, и самое главное - есть желание углубиться именно в его особенности (а не учиться строить индексы в mysql/postgress), то почему бы и нет?
    Делайте по простому - ReplacingMT order by taskID partition by month , select/final с описанной выше оптимизацией по партишенам, чуть подумайте над запросами - может где-то prewhere вставить или подзапрос сделать. Но скорее всего оно заведется и так, прямо из коробки, на 10 миллионах записей.
  • @subotic0 #233078 07:13 AM, 02 Sep 2021
    подскажите плс, на 1 машине крутится 2 образа на 8123\9000, 8124\9001 портах, как по remote обратится с одного образа на другой? пробовал указывать и хост, и локалхост, не хочет работать
  • https://t.me/clickhouse_ru
    под Replicated имеется в виду движок самой бд ведь ?
    вроде как завелось на Atomic

    Но Replicated основан на нем же как раз
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233079 #233080 07:29 AM, 02 Sep 2021
    Replicated в данном контексте - это движок таблицы, не путать с движком базы данных, который про DDL. Да, тут есть некоторая терминологическая путаница, однако разобраться можно.
  • https://t.me/clickhouse_ru
    @hrKamila #233081 07:59 AM, 02 Sep 2021
    Мы компания INNOVA GROUP инновационная IT-компания, лидер в области разработки и внедрения финансовых, высоконагруженных и крипто решений.
    Ищем АНАЛИТИКА БАЗ ДАННЫХ со знанием ClickHouse на проектную работу, либо part-time.
    Задачи:
    - Анализ проблем производительности СУБД и выдача рекомендаций по повышению эффективности работы приложений;
    - Развитие и обновление инфраструктуры БД;
    - Участие в разработке и поддержке БД внутренних сервисов;
    - Анализ возникновения нестандартных ситуаций в СУБД.
    Оплата будет обсуждаться лично.
    Направляйте свое резюме @hrKamila .
  • https://t.me/clickhouse_ru
    @dmitry_fomin #233090 11:30 AM, 02 Sep 2021
    Добрый день! подскажите пожалуйста есть ли какой-то готовый анализатор логов CH по аналогии с pgbadger для postgres
  • https://t.me/clickhouse_ru
    если у вас нет специалистов по кх, то берите классическую субд, когда упрётесь в большие объёмы, тогда легко можно будет переключиться на кх. если уже есть опыт с кх, то делайте сразу на нём.
  • @Snowmanru #233092 11:41 AM, 02 Sep 2021
    Добрый день

    Поделитесь пожалуйста советом.

    Из MSSQL, нужно сделать несколько селектов с джоинами и потом забросить это в clickhouse.

    Пытаюсь сделать это через Python (clickhouse-driver): выгржаю данные из MSSQL (pyodbc + pandas) в DataFrame, немного причесываю и хочу отправить в Clickhouse. Вот тут возникают проблемы, то с Датой, то еще с чем то. Как вообще оптимально организовать этот процесс?
  • спасибо, есть примеры именно с тайм трекингом и КХ?
  • https://t.me/clickhouse_ru
    сейчас планируется нагрузка на таблицу ~ 1-2 млн записей в месяц вставок и обновлений (понимаю что КХ не эффективен для update, можно писать только результирующие строки, когда запись уже закрыта и имеет все необходимые значения в полях). 10 млн вы правильно говорите не большой объем для той же mysql при правильно проставленных индексах, но бизнес модель такова, что нельзя просто взять id диалога среди миллиарда диалогов и потом получить по диалогу просто сообщения. у нас это напоминает jira issue, когда есть задача и поля меняются пока задача не будет закрыта, а потом нужно искать эти задачи быстро по многим полям и индексы тут не спасают (не говоря о том что индекс строится по всей таблице, а не по периоду в неделю как мы обычно берем) + проблема поиска a b c | a c b | b c a и т.д. чем больше полей тем больше комбинаций, составной индекс не эффективен и не предсказуем и приводит к огромной индексной таблице - больше чем сама таблица с данными)) одинарный индекс по каждому из полей не всегда mysql оптимально выбирает и запросы тормозят. ssd кстати есть + расширен буфер кеш с 128 мб до 10гб
  • https://t.me/clickhouse_ru
    хз. гуглите.
  • Я написал сюда именно потому, что не нагуглил
  • https://t.me/clickhouse_ru
    @rostish #233098 11:55 AM, 02 Sep 2021
    Коллеги, всем привет.
    Проблема. Есть две машины, одна 256 гигов оперативы, 24 ядра, хдд 7200 20 версия. Вторая 48 гигов оперативы, 8 ядер, жесткий то ли 15000, то ли еще больше 21.5 версия.

    На одной селект 10 минут, на другой 30 секунд, все одинаково в части данных. Что делать?
  • https://t.me/clickhouse_ru
    кликхаус используется для аналитики, в том числе для трекинга, сколько времени провёл пользователь в приложении или на сайте, длинна сессии и т.д. именно по вашей задаче вам нужно смотреть где подойдёт кх, а где не подойдёт, потому что полностью весь проект на кх вы всё равно не сделаете. так что декомпозируйте свои таски и смотрите уже более предметно.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233097 #233100 11:57 AM, 02 Sep 2021
    задача тайм трекинга не отличается принципиально от типичного для КХ кликстрима (Яндекс метрика как ориентир). Так что смело можете на нее ссылаться в обосновании применения :)
  • классно, спасибо
  • а почему всё нельзя сделать на кХ раз уж взяли копать технологию, если нет специалиста?
  • @SolomonFoxiys #233103 12:00 PM, 02 Sep 2021
    я читал что КХ плохо выделяет одинарные запросы, но так ли это важно если речь идёт о времени?
  • https://t.me/clickhouse_ru
    потому что если у вас на сайте будет логин, то пользователей вы будете хранить в мускуле/постгре, потому что кликхус не для одиночных вставок и апдейтов
  • большое Вам спасибо
  • @SolomonFoxiys #233106 12:03 PM, 02 Sep 2021
    напишу руководителю, дальше будем смотреть
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233104 #233107 12:06 PM, 02 Sep 2021
    юзеров можно положить в таблицу с Engine=EmbeddedRocksDB и будут вам быстрые апдейты не отходя от кассы.
  • https://t.me/clickhouse_ru
    думал об этом, но там запись надо только целиком обновлять
  • https://t.me/clickhouse_ru
    да и обновлять через инсерт, а удалять альтером - мегакостыли в приложении и отказ от стандартных орм
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233109 #233110 12:28 PM, 02 Sep 2021
    - обновлять одно поле в RocksDB довольно просто через insert as select.
    - удалять данные вовсе не надо в наше время (ну почти) - достаточно поставить флаг удаления.
    - частичная утрата функций ORM - хороший обмен за отказ от поддержания второй СУБД и интеграции между ними. Каждая СУБД - это минимум два инстанса и свой ДБА.
  • @1349292690 #233111 12:35 PM, 02 Sep 2021
    Подскажите пожалуйста, по какой еще причине могут появиться файлы в директории detached, кроме выполнения "ALTER TABLE X DETACH PARTITION 'YYYYDD'"?
  • @1349292690 #233112 12:38 PM, 02 Sep 2021
    в system.detached_parts.reason пусто
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233103 #233113 12:38 PM, 02 Sep 2021
    дело не в одинарности запросов, а в их рейте. скажем инсерты не стоит делать чаще 1 раза в 10 сек. а 100 селектов в секунду - это уже много (сравните с тысячами для mуsql/pg). Зато можно инсертить 100к строк разово и за это ничего не будет, и делать большие сложные запросы.
  • https://t.me/clickhouse_ru
    выделенный дба редко бывает даже в командах по 10 разработчиков. обычно у разрабов мозгов хватает, чтобы не стрелять себе в ногу.
    2 инстанса в облаках тоже редко кто держит. и так сойдёт.
    а в крупных проектах даже не представляю, чтобы кто-то использовал кх как синглсторе, там выхлоп от такого ещё меньше.
  • https://t.me/clickhouse_ru
    но при этом сам с нетерпением жду, когда кликхаус будет сам как синглстор
  • https://t.me/clickhouse_ru
    RocksDB нереплицированная, что сильно уменьшает ее полезность.

    И маловероятно что будет такой, китайцы ее делали для своего ограниченного юзкейса. (они там чуть ли не список партов хранят)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233116 #233117 12:58 PM, 02 Sep 2021
    Точно? Как она вышла я делал тест с on cluster, и данные при инсертах появлялись на другом сервере. Перепроверить?
  • https://t.me/clickhouse_ru
    Ну а как?)

    Вы же путь в ZooKeeper есть не указываете с ZooKeeper она не общается.
  • @Sapar1999 #233120 01:32 PM, 02 Sep 2021
    Подскажите из-за чего может при перезагрузке порты ch (8123,9000) занимать процесс dockerd? Из-за чего ch ругается что пор already use. После рестарта докера порты занимает clickhouse-se
  • https://t.me/clickhouse_ru
    Файлы? Например ?
  • да файлы с данными как при детаче, например table_name/detached/202108_214322_214335_2/column_name.bin/brk2
  • https://t.me/clickhouse_ru
    Так кх в докере? При чем тут докер?
  • https://t.me/clickhouse_ru
    Вы в логе поищите по имени. Не должно быть такого без detach part
  • https://t.me/clickhouse_ru
    Не может такого быть
  • спасибо, поищу. У нас как раз в прошлом месяце умер зукипер и восстанавливали через SYSTEM RESTART REPLICA, подозрение что из-за этого, так как в основом в детаче партишн 202108
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233125 #233127 01:44 PM, 02 Sep 2021
    да, не может. нашел ошибку в настройках хоста в датагрипе - смотрел туда-же. Эх, а я уже обрадовался :) Так что - правда шансов нет?
  • https://t.me/clickhouse_ru
    Шансов нет. Апдейт делит прикрутить легко к нему. А репликацию нет.
  • https://t.me/clickhouse_ru
    Возможно.
  • https://t.me/clickhouse_ru
    @nbsbbs #233130 02:00 PM, 02 Sep 2021
    Добрый день! MySQL движок надо как-то в настройках включать? Мне пишет
    DB::Exception: Unknown table engine MySQL.
    (version 21.3.6)
  • https://t.me/clickhouse_ru
    @rostish #233131 02:04 PM, 02 Sep 2021
    Кто-нибудь подскажет в чем могло быть дело.
    Было два сервера, подохлее и помощнее.
    На подохлее стояла 21.7 версия
    На помощнее стояла 20 версия

    На дохлом запрос выполнялся 30 секунд, на мощном 10 минут
    Обновили мощный до 21.7, все стало тоже ок.

    Интересно в чем была проблема, что такого в 20 версии?
  • В том и дело что ch в докере, но он запускается и через некоторое время падает с ошибкой Address already use. Netstat показывает что порт 8123 занят процессом dockerd. Если перезапустить вручную докер то порт уже занят clickhouse-server
  • и сам клик начинает работать без ошибок
  • https://t.me/clickhouse_ru
    Собран билд без движка. Это macos?
  • https://t.me/clickhouse_ru
    @nbsbbs ↶ Reply to #233134 #233135 02:17 PM, 02 Sep 2021
    freebsd
  • https://t.me/clickhouse_ru
    А ну вот так он собран. Там выключен MySQL. Не собирается с ним.
  • https://t.me/clickhouse_ru
    Я знаю 43 причины.
  • https://t.me/clickhouse_ru
    @nbsbbs ↶ Reply to #233136 #233139 02:19 PM, 02 Sep 2021
    Черт побери. А так, для того, чтобы понять, долбаться или нет:
    Каким образом транслирует запросы в mysql? Прямо или как-то хитро? Если у меня есть manticoreSearch с mysql-интерфейсом, сможет работать через движок mysql?
  • https://t.me/clickhouse_ru
    Там функция используется? Тогда не будет работать.
  • https://t.me/clickhouse_ru
    @nbsbbs ↶ Reply to #233140 #233141 02:22 PM, 02 Sep 2021
    Какая функция?
    У них есть собственная функция MATCH(), то есть запрос выглядит примерно так:
    select * FROM table where MATCH('query')
    Разного рода mysql-клиенты (PDO, да и родной консольный клиент) вполне работают, вот будет ли работать clickhouse?
  • https://t.me/clickhouse_ru
    @nbsbbs ↶ Reply to #233140 #233142 02:22 PM, 02 Sep 2021
    Ну то есть если он просто транслирует запрос в базу, а потом читает результат, то должно работать
  • https://t.me/clickhouse_ru
    Кх не просто транслирует. Скорее всего не будет работать.
  • https://t.me/clickhouse_ru
    А можно почитать где-нибудь? Хочу разобраться. Или сарказм))
  • @githubreleases_bot #233145 b o t 02:47 PM, 02 Sep 2021
    ClickHouse/ClickHouse description changed: v21.7.9.7-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.7.9.7-stable
    Release notes:
    ClickHouse stable release v21.7.9.7-stable
    Release v21.7.9.7-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.7.9.7-stable

  • https://t.me/clickhouse_ru
    Так надо смотреть запрос. Постоянно добавляются оптимизации, постоянно ломают что-то. Вы в system.settings посмотрите все параметры которые называются optimize...
    Или например в какой то момент в prewhere стали переносить только 2 поля. Потом вернули назад.
  • https://t.me/clickhouse_ru
    @rostish #233147 02:50 PM, 02 Sep 2021
    Там специфический запрос на 460000 символов с большим where условием
  • https://t.me/clickhouse_ru
    Там есть длинное перечисление значений в in ?
  • https://t.me/clickhouse_ru
    @rostish #233149 02:53 PM, 02 Sep 2021
    Да
  • https://t.me/clickhouse_ru
    Я знаю тогда почему. Позже напишу.
  • https://t.me/clickhouse_ru
    @rostish #233151 02:56 PM, 02 Sep 2021
    Есть еще одно различие. Я вообще заметил проблему случайно.
    У нас данные поставляются неделями. Клиент считает в разбивке месяцев, но последний кусок так как не полный там фильтр date_it BETWEEN и джойны, ну и вообще весь расчет как бы по дням. А в месячных по month_id.
    Остальная часть, даже с фильтром и использованием in одинаковая.

    Я заметил по нагрузке CPU, CPU на деве давал 1%, а на проде улетал в полку, посмотрел, разница только в версиях, обновили, все стало ок.
  • @vmihailenco #233152 02:57 PM, 02 Sep 2021
    Добрый день. Есть ли в CH native protocol какой-то протокол закрытия соединения? Или можно просто закрыть сокет в любой момент? Спрашиваю потому что CH крэшится при рестарте приложения и подозреваю что клиент неправльно закрывает соединение...
  • https://t.me/clickhouse_ru
    Да все так. Это широко известный в узких кругах ишью.
  • А в 21.3.Х он ещё был?
  • https://t.me/clickhouse_ru
    @rostish #233155 02:58 PM, 02 Sep 2021
    Если расскажите, буду очень признателен. А то скандалил всю неделю с девопс
  • https://t.me/clickhouse_ru
    @rostish #233156 02:59 PM, 02 Sep 2021
    Не скандалил, но доставал их)
  • https://t.me/clickhouse_ru
    High server load after upgrade to 20.x · Issue #9621 · ClickHouse/ClickHouse

    Hello, I have tried to switch from Altinity 19.17.4.11 rpms to Clickhouse 20.1.6.30 rpms on RH7. No changes in config. After a short time system load increases until the system is unresponsive. per...

  • https://t.me/clickhouse_ru
    Ещё был.
  • @githubreleases_bot #233159 b o t 03:27 PM, 02 Sep 2021
    ClickHouse/ClickHouse description changed: v21.8.5.7-lts
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.8.5.7-lts
    Release notes:
    ClickHouse lts release v21.8.5.7-lts
    Release v21.8.5.7-lts · ClickHouse/ClickHouse

    ClickHouse lts release v21.8.5.7-lts

  • @pavel_maksimow #233161 04:16 PM, 02 Sep 2021
    добрый вечер. Подскажите, как это вылечить?
    Запросы падают с ошибкой 500

    Code: 24, e.displayText() = DB::Exception: Cannot write to ostream at offset 682342: While executing ParallelFormattingOutputFormat (version 21.8.4.51 (official build))
  • https://t.me/clickhouse_ru
    Слишком долго отрабатывают наверно. Оптимизируйте заппосы.
  • https://t.me/clickhouse_ru
    @brbrbr #233163 04:20 PM, 02 Sep 2021
    Подскажите, пожалуйста, а есть какой-нибудь аналог toJSONString() для 21.3?
  • https://t.me/clickhouse_ru
    Вы на клиенте эту ошибку получаете?
  • https://t.me/clickhouse_ru
  • Дашборд в Power BI берет данные из КХ по http, там я вижу только ошибку 500, более детальной инфы там не видно. Подробности ошибки я нашел в таблице query_log

    Недавно обновился до новой версии. Раньше подобных ошибок не возникало
  • https://t.me/clickhouse_ru
    Parallel output format надо отключить
  • https://t.me/clickhouse_ru
    @den_crane #233169 04:44 PM, 02 Sep 2021
    $ cat /etc/clickhouse-server/users.d/output_format_parallel_formatting.xml
    <?xml version="1.0"?>
    <yandex>
    <profiles>
    <default>
    <output_format_parallel_formatting>0</output_format_parallel_formatting>
    </default>
    </profiles>
    </yandex>
  • Теперь это выходит

    Code: 24, e.displayText() = DB::Exception: Cannot write to ostream at offset 682436: While executing TabSeparatedRowOutputFormat (version 21.8.4.51 (official build))
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #233165 #233173 05:29 PM, 02 Sep 2021
    Спасибо! Похоже то что надо, правда на плейграунде любопытно себя ведёт:
    19.14 - всё ок
    20.3 LTS - Cannot execute query in readonly mode (version 21.3.15.4 (official build) (не знаю почему 21.3, хотя выбрана 20.3)
    20.8 LTS - Not enough privileges. To execute this query it's necessary to have the grant CREATE TEMPORARY TABLE ON *.*
  • https://t.me/clickhouse_ru
    В гитхаб. Файлите баг
  • а можете объяснить из-за чего? мне бы починить это побыстрее, может я что-то перенастрою на стороне клиента и будет работать
  • https://t.me/clickhouse_ru
    @wXhexo #233177 08:00 PM, 02 Sep 2021
    Подскажите по следующему кейсу. Таблица с partition by id, за один insert вставляются все значения партиции, от 100к до 2кк+ рядов, после этого только select, новых вставок больше в эту конкретную партицию не будет.
    В день ~10-100 таких партиций.

    Знаю что кх любит поменьше партиций, насколько рационально такое использование?
    Минусы как я понимаю - хуже сжатие.
    Плюсы - я могу быстро почистить базу от лишнего, быстрые селекты из партиций по id.
    Что-то ещё я упускаю?
  • со временем всё начнёт замедляться и к 10_000 партиций может колом всё стать, лучше так не делать
  • https://t.me/clickhouse_ru
    @270358043 #233179 10:32 PM, 02 Sep 2021
    допустим есть таблица в которой хранится где хранится snmp счеткик байт и таймштампы, как посчитать 95 percentile скорости? Те percentile95_of( val(ts2)-val(ts2)/ts2-ts1)
  • 03 September 2021 (109 messages)
  • https://t.me/clickhouse_ru
    @270358043 #233180 12:05 AM, 03 Sep 2021
    такой запрос не дает результата. выдает мак и мин равные просто value
    SELECT
    max(value),
    min(value) OVER (ORDER BY timestamp ASC ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING),
    value,
    timestamp
    FROM data
    WHERE (metric = 'xxxxx.ifHCInOctets') AND ((date >= toDate(1615531649)) AND (date <= toDate(1616633967))) AND ((timestamp >= toDateTime(1615531649)) AND (timestamp <= toDateTime(1616633967)))
    GROUP BY
    value,
    timestamp
    ORDER BY timestamp ASC
  • https://t.me/clickhouse_ru
    @270358043 #233181 01:20 AM, 03 Sep 2021
    решено вот так http://pastebin.fr/95010
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233181 #233183 05:40 AM, 03 Sep 2021
    WF перебор для такой простой задачи. в КХ есть прекрасная функция arrayDifference.
    Что-то типа такого - select arrayMap(x,y -> x/y, arrayDifference(value), arrayDifference(timestamp)) from data
    начальный ноль может помешать, но вам для последующих процентилей будет нормально.
  • https://t.me/clickhouse_ru
    @ployd #233184 06:10 AM, 03 Sep 2021
    А есть issue на тему того, что fromUnixTimestamp64Nano(1630648581371000) выдаёт ошибку must be Int64 и нужно писать CAST(1630648581371000, 'Int64')?
  • @vmihailenco #233185 06:39 AM, 03 Sep 2021
    Добрый день. Есть ли в CH native protocol какой-то протокол закрытия соединения? Или можно просто закрыть сокет в любой момент? Спрашиваю потому что CH крэшится при рестарте приложения и подозреваю что клиент неправльно закрывает соединение... Go и Python клиенты вроде просто закрывают сокет...
  • https://t.me/clickhouse_ru
    @kreygasmus #233187 06:45 AM, 03 Sep 2021
    ребят, подскажите, как сбэкапить кликхаус на локальную машину
  • Резервное копирование данных | Документация ClickHouse

    Резервное копирование данных Репликация обеспечивает защиту от аппаратных сбоев, но не защищает от человеческих ошибок:

  • @214612813 #233189 06:56 AM, 03 Sep 2021
    Я делаю через alter freeze, затем скачиваете себе, создаёте такую же схему и выполняете attach
  • @214612813 #233190 06:57 AM, 03 Sep 2021
    Если таблицы маленькие можете INSERT INTO SELECT FROM remote....
  • https://t.me/clickhouse_ru
    Выглядит как баг, кх не должен падать даже при некорректном завершении клиентской сессии. Что в логах?
  • я не уверен что это связано с закрытием - пытаюсь все проверить
    https://github.com/ClickHouse/ClickHouse/issues/28524
    Received signal Segmentation fault (11) when reading LowCardinality(String) · Issue #28524 · ClickHouse/ClickHouse

    I have the following in the logs 2021.09.02 13:04:47.539273 [ 119318 ] {} <Fatal> BaseDaemon: (version 21.7.8.58 (official build), build id: 95F91F78B10AC6F0E542A4C4F8D7B8162144DE39) ...

  • починил. В PowerBI после обновления, начали по другому формироваться запросы, была ошибка в синтаксисе запросов. После исправления, этой ошибки не получаю.
  • https://t.me/clickhouse_ru
    а как не скачивая сбэкапить сразу на другую машину?
  • А чем другая машина отличается от вашей? Она тоже другая. freeze, rsync, attach или insert into select from remote самые простые методы. посложнее clickhouse-copier
  • @214612813 #233196 07:20 AM, 03 Sep 2021
    clickhouse-copier | Документация ClickHouse

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

  • Я использую вот это софтинку. Работает хорошо. Если надо может сразу на амазон или азур бекапы закидывать. Ну и локально конечно.
    В принципе она внутри делает то же что и писали freeze и т.д но не надо руками скрипты писать.
    https://github.com/AlexAkulov/clickhouse-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
    да вот сейчас читаю об ней, есть пример скрипта, чтобы с другого сервера стянуть на свой бэкап? не совсем пойму по документации как это сделать
  • https://t.me/clickhouse_ru
    @kreygasmus #233200 07:37 AM, 03 Sep 2021
    просто сервер на котором находится кликхаус, по памяти не позволит еще сохранить там бэкап
  • Так бекап кликхауса место фактически не занимает, это хардлинки на существующие файлы (и с этим надо аккуратно, права не менять и т.д)
  • https://t.me/clickhouse_ru
    если у меня бд весит терабайт, бэкап будет несколько мегов?)
  • https://t.me/clickhouse_ru
    Не занимает пока мержей не случилось
  • https://t.me/clickhouse_ru
    @kreygasmus #233204 07:39 AM, 03 Sep 2021
    я думал это как с постгрешкой, где сжимается процентов на 30-40
  • https://t.me/clickhouse_ru
    Это по сути просто снепшот
  • https://t.me/clickhouse_ru
    @nyoroon #233206 07:40 AM, 03 Sep 2021
    Как в LVM/ZFS/etc
  • Ну это понятно что дельта будет. Но по факту бекап базы размером в терабайт не будет требовать еще терабайт на диске
  • Нет, как я говорил это хардлинки на существующие файлы на момент бекапа. То есть в момент бекапа насколько я понимаю места на диске он занимать будет по факту нисколько (грубо говоря).
    Я например делаю так, бекап утилиткой, tar директории бекапа и через пайп сразу на s3, удалить директорию бекапа.
  • https://t.me/clickhouse_ru
    @Vladimir_Borisov #233209 07:46 AM, 03 Sep 2021
    Привет, ребят
    Подскажите, пожалуйста.
    При запуске OPTIMIZE FINAL
    Получаю ошибку
    Cannot OPTIMIZE table: Timeout while waiting for already running merges before running OPTIMIZE with FINAL. Cannot select parts for optimization.

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

    Как ее избежать?
  • https://t.me/clickhouse_ru
    а можешь скриптец скинуть?
  • Сейчас в личные сброшу, почищу креденшиалы 😊
  • https://t.me/clickhouse_ru
    @kreygasmus #233213 07:54 AM, 03 Sep 2021
    спасибо)
  • https://t.me/clickhouse_ru
    у вас движок Ordinary видимо там нужна какая то блокировка и у вас постоянно видимо идут мержи еще...

    не надо "избегать дублей"
    OPTIMIZE FINAL перечитывает несколько раз ВСЮ таблицу с данными
    максимум можно по расписанию пускать OPTIMIZE db.table PARTITION .... FINAL раз в день ...

    используйте SELECT ... FINAL
  • https://t.me/clickhouse_ru
    там не pull модель, а push используется

    то есть вам надо запускать clickhouse-backup на том же сервере что и clickhouse-server и он должен иметь доступ файловой системы /var/lib/clickhouse*
  • https://t.me/clickhouse_ru
    @mrAndersen7 #233216 08:11 AM, 03 Sep 2021
    Привет! Вопрос достаточно странный. Но тем не менее не могу понять куда смотреть.

    Есть таблица с TTL месяц, данных льется туда не мало, где-то 5-8 млрд строк за месяц (строки сами по себе объемные), и со временем я заметил, что внутри самой таблички
    select * from table limit 1 order by date desc
    нет данных старше месяца, как и должно, но размер таблицы всё время увеличиваетсся на диске, если сделать
    select sum(bytes) from system_parts where table = 'table'

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

    SELECT formatReadableSize(sum(total_bytes)) FROM system.tables WHERE name='XXX'

    или
    SELECT formatReadableSize(sum(bytes)) FROM system.parts WHERE table='XXX' AND active=1
  • https://t.me/clickhouse_ru
    Вот буквально только что сделал такие запросы, размер активных партов как раз 11.44ТБ, размер не активных в районе 20-50ГБ, постоянный разный, КХ видимо мерджит и удаляет старые парты, возможно вы правы, буду смотреть дальше
  • https://t.me/clickhouse_ru
    да, не активные парты примерно 7 минут хранятся перед удалением...
  • @Alex54938 #233220 09:17 AM, 03 Sep 2021
    Добрый день.
    Подскажите как можно проверить значение столбца AggregateFunction(sum, UInt32) или подобного на дефолтное значение те нулевое не применяя группировку и как следвие аггрегатные функции тк они требуют группировки
  • https://t.me/clickhouse_ru
    @nyoroon #233221 09:27 AM, 03 Sep 2021
    добрый день! подскажите, то что EXPLAIN AST проглатывает FORMAT это фича или баг?
    EXPLAIN
    SELECT 1
    FORMAT CSV

    "Expression ((Projection + Before ORDER BY))"
    " SettingQuotaAndLimits (Set limits and quota after reading from storage)"
    " ReadFromStorage (SystemOne)"

    EXPLAIN AST
    SELECT 1
    FORMAT CSV

    ┌─explain───────────────────────────┐
    │ SelectWithUnionQuery (children 2) │
    │ ExpressionList (children 1) │
    │ SelectQuery (children 1) │
    │ ExpressionList (children 1) │
    │ Literal UInt64_1 │
    │ Identifier CSV │
    └───────────────────────────────────┘
  • https://t.me/clickhouse_ru
    @aleksey1302 #233224 11:11 AM, 03 Sep 2021
    Всем привет. Есть поле массив строк
    ['AVK/003471/60c6c0ab0721a27f157bf1e547978de5.jpg','AVK/003471/7cd424aedc26c497fa45aae131095683.jpg']

    Можно ли запросом получить этот же массив, но к каждому элементу добавить префикс также строкой? Нужен concat для каждого элемента массива
  • https://t.me/clickhouse_ru
    @aleksey1302 #233225 11:22 AM, 03 Sep 2021
    Сам нашел ответ)
    arrayMap(x -> concat(‘prefix’, x), arrayField)
  • @Sapar1999 #233226 11:30 AM, 03 Sep 2021
    Добрый день. Пытаюсь выполнить alter table t1 delete where (col1, col2, col3) in (select col1,col2, col3 from tablet2). Получаю ошибку в system.mutations :there is no query or query context has expired
  • https://t.me/clickhouse_ru
    лучше table2 в dictionary загнать если можно и через dictGet удалять...
    потому что иначе слишком тяжелая мутация получится с кучей выборок лишних
  • https://t.me/clickhouse_ru
    скорее просто недоработка
  • https://t.me/clickhouse_ru
    `EXPLAIN AST` doesn't respect `FORMAT` in query body · Issue #28575 · ClickHouse/ClickHouse

    ClickHouse version: 21.3.15.4 EXPLAIN works as expected: EXPLAIN SELECT 1 FORMAT CSV "Expression ((Projection + Before ORDER BY))" " SettingQuotaAndLimits (Set limits and...

  • https://t.me/clickhouse_ru
    @sowver #233232 12:43 PM, 03 Sep 2021
    Приветствую!

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

    Code: 48, e.displayText() = DB::Exception: Conversion between numeric types and UUID is not supported: while converting source column item_id to destination column item_id (version 21.3.4.25 (official build))

    Исходная таблица:
    create table items_new
    (
    item_id UUID,
    name String,
    code String,
    article String
    )
    engine = StripeLog;

    Типы в словаре такие при создании:
    CREATE DICTIONARY europa.dict_items (
    item_id UUID,
    name String,
    code String,
    article String
    )
  • в словарях ключ должен быть UInt64 или tuple
  • @simpl1g #233234 12:46 PM, 03 Sep 2021
    Ключ и поля словаря | Документация ClickHouse

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

  • @s4851 #233235 12:46 PM, 03 Sep 2021
    А если возможет только "UUID"?
  • Прочитайте доку, там описано:

    Совет

    Составной ключ может состоять из одного элемента. Это даёт возможность использовать в качестве ключа, например, строку.
  • @s4851 ↶ Reply to #233233 #233237 12:48 PM, 03 Sep 2021
    Как я понимаю проблема в хранении и использовать "flat" нельзя и если ключ не формата UInt64, то надо использовать другое хранение, например hashed7
  • Из доки:

    В этом случае layout должен быть complex_key_hashed или complex_key_cache.
  • можно ещё считать хэш от UUID, например использовать xxHash64(UUID), будет быстро работать
  • @s4851 ↶ Reply to #233240 #233241 12:52 PM, 03 Sep 2021
    Т.е в функции dictGet('', xxHash64(UUID)) передавать функцию хэширования?
  • извините, так наверное не вариант, придётся хранить в источнике ещё этот хэш
  • @s4851 ↶ Reply to #233242 #233243 12:55 PM, 03 Sep 2021
    Плюс мне кажется дополнительная нагрузка для вычисления перед получением значения из словаря
  • не особо, оно очень быстро работает
  • @s4851 #233245 12:56 PM, 03 Sep 2021
    Сейчас попробуем сделать другое хранение для словаря
  • https://t.me/clickhouse_ru
    finalizeAggregation( )
  • спасибо большое!!!
  • https://t.me/clickhouse_ru
    там еще другая проблема может быть, 64 битный хеш может давать коллизии для UUID (128 бит)

    используйте complex_key_hashed
  • https://t.me/clickhouse_ru
    @enclaved #233249 01:26 PM, 03 Sep 2021
    Привет. Подскажите, движок таблицы ведь нельзя изменить, только новую создать с insert select?
  • https://t.me/clickhouse_ru
    да, и перелить из одной в другую
  • https://t.me/clickhouse_ru
    @enclaved #233251 01:27 PM, 03 Sep 2021
    Спасибо
  • https://t.me/clickhouse_ru
    вообще можно, но изменить partition by / order by нельзя
  • https://t.me/clickhouse_ru
    @enclaved #233253 01:29 PM, 03 Sep 2021
    Мне надо MT на ReplacingMT поменять
  • @s4851 #233254 01:30 PM, 03 Sep 2021
    Подскажите если не сложно, почему для словаря такой структуры
    CREATE DICTIONARY dict_items
    (
    item_id String,
    name String,
    code String,
    article String

    )
    PRIMARY KEY item_id
    LAYOUT(COMPLEX_KEY_HASHED())

    При попытке получить 2 атрибута возвращается ошибка
    dictGet('dict_items',('code','article'),tuple('8dd81299-9161-11eb-80da-000c293556a6'))

    Code: 43, e.displayText() = DB::Exception: Illegal type Tuple(String, String) of second argument of function dictGet, expected a const string.: While processing '1', dictGet('europa.dict_items', ('code', 'article'), tuple('8dd81299-9161-11eb-80da-000c293556a6')) (version 21.3.4.25 (official build))
  • эта возможность в 21.4 появилась
  • https://t.me/clickhouse_ru
    21.3 не умеет такого
    разницы в перфоманс между одним dictGet с двумя атрибутами и двумя dictGet нету. Просто SQL длинее.
  • @s4851 ↶ Reply to #233256 #233257 01:33 PM, 03 Sep 2021
    Как раз писал это вопрос )
  • @s4851 ↶ Reply to #233256 #233258 01:34 PM, 03 Sep 2021
    Те несколько "dictGet" никак не сказываются на производительности?
  • https://t.me/clickhouse_ru
    @den_crane #233259 01:34 PM, 03 Sep 2021
    каждый атрибут словаря хранится в отдельной хештаблице, что так что этак бегать по двум (n) хештаблицам.
  • https://t.me/clickhouse_ru
    @den_crane #233260 01:35 PM, 03 Sep 2021
    dictGet( ..., (tuple(атрибуты), ключ) это сахар
  • @s4851 #233261 01:37 PM, 03 Sep 2021
    А как можно вычислить сколько в памяти занимают эти таблицы?
  • @s4851 #233262 01:38 PM, 03 Sep 2021
    Хранится где-то информация о том сколько в оперативной памяти занимает словарь?
  • https://t.me/clickhouse_ru
    system.dictioanries
  • https://t.me/clickhouse_ru
    Отличная идея. Спасибо!
    Думаю да. можно без окон, но как?
    select arrayMap(x,y -> x/y, arrayDifference(value), arrayDifference(timestamp)) from data WHERE metric='xxxxx.ifHCInOctets' AND date BETWEEN toDate(1615531649) AND toDate(1616633967) AND timestamp BETWEEN toDateTime(1615531649) AND toDateTime(1616633967) order by timestamp;
    не работает потому что это как бы обычный селект порерх значений а не массивов. Received exception from server (version 21.6.5):
    Code: 43. DB::Exception: Received from localhost:9000. DB::Exception: The only argument for function arrayDifference must be array. Found Float64 instead.: While processing arrayMap((x, y) -> (x / y), arrayDifference(value), arrayDifference(timestamp)).
    Надо как-то сначала сложить в array подзапросом?
  • https://t.me/clickhouse_ru
    @270358043 #233265 01:48 PM, 03 Sep 2021
    наверное вот так
    select arrayMap(x,y -> x/y, arrayDifference(av), arrayDifference(at)) from (select groupArray(value) as av, groupArray(timestamp) as at from data WHERE metric='xxxxx.ifHCInOctets' AND date BETWEEN toDate(1615531649) AND toDate(1616633967) AND timestamp BETWEEN toDateTime(1615531649) AND toDateTime(1616633967) ) ;
    но не уверен
  • @7699150 #233266 01:50 PM, 03 Sep 2021
    Всем привет!
    Подскажите пожалуйста, можно ли как-то исключить табличку из MaterializedMySQL базы? Есть табличка с неподдерживаемым типом данных и из-за нее стопается репликация
  • https://t.me/clickhouse_ru
    УВЫ нельзя ...
    проще на стороне MySQL тип поменять
    а какой тип у вас не совместим?

    для MaterializedPostgreSQL можно конкретно сделать одну таблицу...
    но как это работает для 10ков таблиц паралельно не ясно ...
  • Ругается на тип JSON
  • https://t.me/clickhouse_ru
    можно попробовать https://github.com/long2ice/synch
    GitHub - long2ice/synch: Sync data from the other DB to ClickHouse(cluster)

    Sync data from the other DB to ClickHouse(cluster) - GitHub - long2ice/synch: Sync data from the other DB to ClickHouse(cluster)

  • 😮
  • @7699150 #233271 02:07 PM, 03 Sep 2021
    И почему я раньше этого не видел))
  • https://t.me/clickhouse_ru
    не факт что получится, но по крайней мере эта штука лучше кастомизируется
  • https://t.me/clickhouse_ru
    @unamedrus #233273 02:13 PM, 03 Sep 2021
    или взять Debezium + kafka (redpanda)
  • Я сейчас просто скриптами по крону копирую из MySQL в КХ. Из-за того что кластер 2х2 иногда процесс коряво проходит
  • https://t.me/clickhouse_ru
    @hostadminonline #233275 02:15 PM, 03 Sep 2021
    всем привет
    подскажите плз
    https://gyazo.com/a3eef0a5fba2d4b4cc8ed7df8552ddff
    я так понимаю это плохо ))) но что именно нужно делать чтобы это убрать ?
    Screenshot by Gyazo

    Easily capture screenshots, GIFs, and replays that are ready to share. Download the free app for windows and mac.

  • https://t.me/clickhouse_ru
    @hostadminonline #233276 02:15 PM, 03 Sep 2021
    это zookeper не справляется или еще что-то ?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233265 #233277 02:16 PM, 03 Sep 2021
    нормально. Но вы напрасно выкинули order by timestamp в подзапросе во втором примере. Он там конечно же нужен.
  • https://t.me/clickhouse_ru
    он там нужен по логике но Code: 215. DB::Exception: Received from localhost:9000. DB::Exception: Column timestamp is not under aggregate function and not in GROUP BY: While processing timestamp ASC
  • https://t.me/clickhouse_ru
    @270358043 #233279 02:18 PM, 03 Sep 2021
    SELECT arrayMap((x, y) -> (x / y), arrayDifference(av), arrayDifference(at)) AS s
    FROM
    (
    SELECT
    groupArray(value) AS av,
    groupArray(timestamp) AS at
    FROM data
    WHERE (metric = 'xxxxx.ifHCInOctets') AND ((date >= toDate(1615531649)) AND (date <= toD ate(1616633967))) AND ((timestamp >= toDateTime(1615531649)) AND (timestamp <= toDateTime(16 16633967)))
    ORDER BY timestamp ASC
    )

    Query id: 7fd6b73c-9414-438c-a625-297522fa4005


    0 rows in set. Elapsed: 0.007 sec.

    Received exception from server (version 21.6.5):
    Code: 215. DB::Exception: Received from localhost:9000. DB::Exception: Column timestamp is not under aggregate function and not in GROUP BY: While processing timestamp ASC.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233279 #233280 02:20 PM, 03 Sep 2021
    select arrayMap(x, y -> x / y, arrayDifference(groupArray(value)), arrayDifference(groupArray(timestamp)))
    from (select value,timestamp
    from data
    WHERE metric = 'xxxxx.ifHCInOctets' AND date BETWEEN toDate(1615531649) AND toDate(1616633967)
    AND timestamp BETWEEN toDateTime(1615531649) AND toDateTime(1616633967)
    order by timestamp
    );
  • https://t.me/clickhouse_ru
    SELECT * FROM system.replication_queue

    проверьте значения макросов на всех серверах, должны быть разные для replica
  • https://t.me/clickhouse_ru
    спасибо, работает! Сейчас как-то этот array распаковать что бы прогнать quantile. По правде я первый раз сегодня увидел array фунции
  • https://t.me/clickhouse_ru
    у меня там 20 строчек .... но там вроде как похоже на ошибку
    Not executing log entry queue-0022395444 for part 12_3133799_3133806_1 because it is covered by part 12_3133343_3133811_67 that is currently executing.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233282 #233284 02:26 PM, 03 Sep 2021
    так сходите в соответствующий раздел документации и почитайте. Конкретно сейчас вам нужна функция arrayJoin или часть функционала select под названием array Join .
  • https://t.me/clickhouse_ru
    ARRAY JOIN | ClickHouse Documentation

    ARRAY JOIN Clause It is a common operation for tables that contain an array column to produce a new table that has a col

  • https://t.me/clickhouse_ru
    @270358043 #233287 02:27 PM, 03 Sep 2021
    больно уж кратенько 😊 но хорошо что есть
  • https://t.me/clickhouse_ru
    @nebotov_dmitry #233288 02:29 PM, 03 Sep 2021
    Добрый день, интересует меня один вопрос кто использовал kittenhouse и clickhouse-bulk на продакшене? Какие впечатления от ипользования? Как использовали kittenhouse при отсутствии Dockerfile собирали сами или внедряли в свой образ рядом с приложением? Может быть столкнулись с нюансами работы или конфигурирования этих проектов?
  • @1382671541 #233290 02:34 PM, 03 Sep 2021
    привет! кто может подсказать, есть distributed table на две шарды, шардирование по рандому, пишем в distributed table.
    по итогу в один шард данные попадают, в другой нет. в distributed в итоге половина данных
  • https://t.me/clickhouse_ru
    (я изначальный автор kittenhouse) Продакшн-опыт у kittenhouse, надеюсь, Вам подскажут, хочу подчеркнуть одну вещь, что что kittenhouse что clickhouse-bulk должны находиться на том же сервере, что и приложение, иначе должного эффекта может и не быть, хотя все зависит, конечно.
  • https://t.me/clickhouse_ru
    коннект на intersever порт то есть между шардами? и remote_servers правильно прописан?
  • https://t.me/clickhouse_ru
    логи посмотрите наверняка там есть
  • @githubreleases_bot #233296 b o t 03:27 PM, 03 Sep 2021
    ClickHouse/ClickHouse description changed: v21.6.9.7-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.6.9.7-stable
    Release notes:
    ClickHouse stable release v21.6.9.7-stable
    Release v21.6.9.7-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.6.9.7-stable

  • https://t.me/clickhouse_ru
    Вопрос, а все что вошло в релиз на оф сайте публикуется позже или где-то можно увидеть уже описание всего что вошло в релиз?
  • https://t.me/clickhouse_ru
    нет, нет
    только вручную, нажимаете compare, выбираете версию https://github.com/ClickHouse/ClickHouse/compare/v21.6.8.62-stable...v21.6.9.7-stable
    Comparing v21.6.8.62-stable...v21.6.9.7-stable · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @ajIeks #233299 05:04 PM, 03 Sep 2021
    Всем привет, после ALTER TABLE, менялся TTL с переносом данных и перепаковкой, реплика перешла в readonly. Причем один шард ушел в ридонли, а второй нормально отработал и идет процесс. В логах вижу только ошибку вида:

    2021.09.03 16:59:54.556924 [ 77 ] {} <Error> statistics.raw_shard (ReplicatedMergeTreeRestartingThread): void DB::ReplicatedMergeTreeRestartingThread::run(): Code: 49, e.displayText() = DB::Exception: Part 20190126_7_12_2_16 intersects previous part 20190126_7_12_1_17. It is a bug., Stack trace (when copying this message, always include the lines below)
    есть подозрение на это. Можно как-то полечить это? Поможет ли удаление партиции сбойной?
    Версия 21.5.6
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #233290 #233301 08:11 PM, 03 Sep 2021
    в дополнение к сказанному: хорошо бы убедиться, что на "больной" шарде с таблицей все Ок, попробуйте вставить непосредственно в нее хотя бы одну строку.
  • 04 September 2021 (58 messages)
  • https://t.me/clickhouse_ru
    @brbrbr #233305 09:01 AM, 04 Sep 2021
    Всем привет. Не отпускает рабочая задачка.

    Есть около 10 таблиц вида (ID UUID, Param1Name Param1Type, ..., ParamNName ParamNType, Updated MATERIALIZED now()), которые обновляются с разной частотой (от раза в час до раза в неделю), от 300к до 3кк записей в каждой. Для отображения данных на фронте всё это джойнится по ID, нужные параметры выбираются как argMax(ParamMName, Updated).
    Разумеется, работает очень медленно.

    Хочу склеить их в одну плоскую таблицу, но не могу придумать как это корректно хранить\обновлять:
    1. ReplacingMT с ключом ID не подходит, т.к. обновления столбцов приходят отдельно и если придёт обновление только двух столбцов, то остальные затрутся пустыми значениями.
    2. AggregatingMT с ключом ID выглядит лучше, но не могу придумать корректную агрегационную функцию, т.к. 0 или -1 для числовых столбцов и пустая строка для строковых может прийти И в случае обновления этого столбца И в качестве дефолтного значения при обновлении других столбцов - не совсем ясно как определять когда надо учитывать значение, а когда нет.
    3. Есть вариант сделать пять столбцов-массивов и вьюху, которая будет выбирать последнее непустое значение через argMaxIf(). Вроде бы вариант рабочий, но размер таблицы может оказаться неприятным сюрпризом.
    4. Комбинация 2 и 3 вариантов, когда добавляется ещё одно поле, по которому можно определить какие столбцы обновлялись этой строкой. При выборе значения надо будет использовать конструкции типа argMaxIf(Param3Name, Updated, UpdateType = 3).

    Покритикуйте варианты или подскажите более правильное направление, пожалуйста.
  • https://t.me/clickhouse_ru
    2 вариант + argMax люди пользуются,

    Кх Null значения в этом случае игнорирует
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #233306 #233307 09:34 AM, 04 Sep 2021
    Т.е. использовать Nullable типы?
    У меня ведь будут инсёрты вида insert into WideTable values('', '', '', 0, 0, 0, 'insertedVal1', 'insertedVal2', 100500) при обновлении трёх последних столбцов, например.
  • https://t.me/clickhouse_ru
    А почему именно на том же сервере ? Если использовать как решение для накопления данных в батч, чтобы снять эту задачу с приложения
  • https://t.me/clickhouse_ru
    @Kankasuiso #233310 10:51 AM, 04 Sep 2021
    А есть какой-то очевидный способ сгруппировать события входа и выхода пользователя в clickhouse?
  • https://t.me/clickhouse_ru
    Зависит от способа использования. Если Вы, допустим, хотите логи приложения надежно доставлять и используете persistent режим у kittenhouse (в котором всё пишется на диск и впоследствии надежно доставляется), то если будут наблюдаться проблемы с сетью, то залогировать их куда-то кроме локальной машины не получится.

    Еще один юзкейс это in-memory логи с сервера, и в таком случае лишнее просто выбрасывается. Это опять же очень полезный режим, если хочется, допустим, собирать логи ошибок с каждого сервера, и если их слишком много, то просто выбрасывать лишнее, потому что больше, условно, 8 мегабайт логов ошибок в секунду с сервера вряд ли имеет смысл слать.

    То есть, грубо говоря, для сбора логов с серверов (это был один из основных юзкейсов kittenhouse) хорошо подходит только режим с локальной работой, иначе многие полезные свойства, такие как возможность логировать даже логи сетевых ошибок, или умение выбрасывать лишнее, теряются.
  • @githubreleases_bot #233312 b o t 12:17 PM, 04 Sep 2021
    ClickHouse/ClickHouse tagged: v21.3.16.5-lts
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.3.16.5-lts
    Release notes:
    v21.3.16.5-lts
    Release v21.3.16.5-lts · ClickHouse/ClickHouse

    ClickHouse lts release v21.3.16.5-lts

  • https://t.me/clickhouse_ru
    Для накопления в батчи в кликхаусе есть тип таблицы buffer.
  • https://t.me/clickhouse_ru
    Vladimir Goncharov in ClickHouse не тормозит

    по идее можно обойтись без джойна при мат вью по схеме mat view + AggregatingMergeTree + SimpleAggregateFunction + anyLast + Nullable. создаёте таблицу с ключём, в котором столбцы с общими полями. остальные поля SimpleAggregateFunction(anyLast, Nullable(String)) . и всё строки будут объединяться по общему ключу.

  • https://t.me/clickhouse_ru
    Есть-то он есть, но по моим бенчмаркам больше где-то 3000 вставок в секунду голая буферная таблица не выдерживает
  • https://t.me/clickhouse_ru
    Я думаю у нас пока меньше 3к будет, спасибо за рекомендации. Пока не упремся в buffer видимо не будем котенка трогать
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233305 #233318 01:24 PM, 04 Sep 2021
    тоже думаем в этом направлении - как избавися от join во время запроса, когда данные поступают разным темпом.
    Ваш вар.2 требует функцию anyLast+Nullable - тут все просто. Плохо что получится 10 строк с одним id и group by при выборке. Если вставки редкие, а выборки частые, то это не айс. Да и возня с заворачиванием типов 100 колонок в AggregatedFunction не радует. И Nullable тоже.

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

    create table upsert_test (
    id UInt64,
    a UInt64,
    b UInt64)
    engine = ReplacingMergeTree() order by id;

    insert into upsert_test (id,a) select number as id, number*2 as a from numbers(30000);

    insert into upsert_test (id,a,b)
    select number+10000 as id, at.a as a, number*3 as b from numbers(30000)
    left join (select a,id from upsert_test) as at using id
    settings joined_subquery_requires_alias=0;

    select * from upsert_test final
    where id between 29990 and 30010
    order by id
    limit 20;

    В нашем случае точно известно, что данные могут добавляться в течении нескольких часов. Все что старее можно не сканировать. Таким образом подзапрос джойна будет с отсечкой по времени, поэтому правая таблица не будет разрастаться сверх меры. И наверное даже кешироваться при высоком рейте инсертов, но тут не проверял.
  • https://t.me/clickhouse_ru
    >Плохо что получится 10 строк с одним id и group by при выборке
    тут вроде уже не раз писали, что лучше group by чем final. таким образом замена AggregatingMergeTree на ReplacingMergeTree не выглядит как буд-то оно сделает хоть что-то лучше. единственный плюс - отказ от nullable. минусы: join при вставке и то что если во вставляемой пачке идёт сразу несколько строк с одним ключём, то часть данных будет потеряна, потому что последняя вставляемая строка будет джойниться на строки, которые уже есть в базе, но не на строки которые вставляются в той же пачке.
    в общем оба варианта хреновые, но какой-то выбрать всё таки придётся :)
    лично у меня данных в такой таблице немного и мне бы хватило EmbeddedRocksDB с поддержкой UPSERT, если бы она была
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233320 #233321 03:57 PM, 04 Sep 2021
    - где писали что group by лучше final? Вобщем-то все они (вместе с limit 1 by) должны работать по одному принципу, однако в большинстве (но не во всех!) случаях у меня final все-таки побеждал. Плюс выигрыш от оптимизации по последней партиции.
    - join сам по себе нужен, про то и говорим. вопрос где его ставить. если инсерт раз в час, а селектов 100 запросов в секунду, то лучше конечно раз в час.
    - несколько строк с одним ключом вобще плохо соотносится с replacing. в моей задаче в пачке однородных данных повторений нет и таких пачек немного - 2-3. Но если придется джойнить 10 комплектов разнородных данных (как в задаче топикстартера), то есть шанс наехать на какие-то гонки.
    - в EmbeddedRocksDB точно так-же можно сделать этот insert/select/join. И там меньше рисков наехать на гонки. Но кластер .....
  • https://t.me/clickhouse_ru
    @Vitaly_Ivanov #233322 06:12 PM, 04 Sep 2021
    Друзья! Подскажите, в базе одна большая таблица, каждая партиция YYYYMM занимает место 6TiB и содержит 30 миллиардов строк, очень неудобно их обслуживать, хочу переделать партиционирование на YYYYMMDD. Срок хранения данных 5 лет.
    Могут ли возникнуть какие-либо проблемы с партициями YYYYMMDD при таких объемах данных?
  • https://t.me/clickhouse_ru
    1 месяц 6tb? Это 360тб за пять лет. Это не очень удобно на одном сервере. Новая реплика будет недели наливаться если сломается сервант. 1500 партиций тоже не сахар. И местами очень больно. В алтинити я бы посоветовал клиенту минимум 20 шардов.
  • у нас было много партиций, есть некоторые боли и надо быть очень осторожными, а то КХ стреляет всем чем можно по много-партиционным таблицам (время загрузки, ТТЛ, ДДЛ).

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

    а ещё можно лайкнуть это и в один прекрасный день это могут и сделать https://github.com/ClickHouse/ClickHouse/issues/16565
  • @s4851 #233327 07:46 PM, 04 Sep 2021
    Добрый вечер! Я понимаю что вопрос не по теме.
    Но тем не менее, никто не знает как работать с внешними словарями(и со словарями в принципе) через сервис Yandex DataLens?
  • https://t.me/clickhouse_ru
    а там можно SQL запрос для графика или датасета указать?
  • https://t.me/clickhouse_ru
    @nyoroon #233329 07:53 PM, 04 Sep 2021
    если нет, тогда только через JOIN
  • @s4851 #233330 07:53 PM, 04 Sep 2021
    Вроде как нельзя. Сам он формирует такой запрос, где dict_items это таблица словаря
  • @s4851 #233331 07:53 PM, 04 Sep 2021
    Те можно связать 2 таблицы мышкой и получается такой запрос
  • https://t.me/clickhouse_ru
    @nyoroon #233332 07:53 PM, 04 Sep 2021
    либо можно сделать в кх VIEW c dictGet
  • https://t.me/clickhouse_ru
    @nyoroon #233333 07:53 PM, 04 Sep 2021
    и указать его для датасета
  • @s4851 #233334 07:54 PM, 04 Sep 2021
    И здесь вопрос dictGet() и join c таблицей словаря это по нагрузке одно и тоже или разныые вещи?
  • https://t.me/clickhouse_ru
    join гораздо медленнее
  • @s4851 #233336 07:55 PM, 04 Sep 2021
    Но у нас справа не обычная таблица, а таблица словаря. Может в такой ситуации по другому работает?
  • https://t.me/clickhouse_ru
    @nyoroon #233337 07:55 PM, 04 Sep 2021
    (он загружает целиком весь словарь в память при запросе + select * из словаря медленно работает)
  • https://t.me/clickhouse_ru
    @nyoroon #233338 07:56 PM, 04 Sep 2021
    да, из-за этого медленнее
  • https://t.me/clickhouse_ru
    @nyoroon #233339 07:57 PM, 04 Sep 2021
    + не будет работать с ip_trie лейаутом
  • @s4851 ↶ Reply to #233339 #233340 07:58 PM, 04 Sep 2021
    У меня не веб аналитика, так что изза этого ничего не потеряю
  • https://t.me/clickhouse_ru
    Вообще кх умеет переделывать join с таблицей словаря в dictget, но не вашем случае, думаю в случае с limit не получится
  • @s4851 ↶ Reply to #233341 #233343 08:05 PM, 04 Sep 2021
    Те лучше создать view в котором зашить dictget7
  • https://t.me/clickhouse_ru
    Нет. Лучше простой join без подзапроса и без лимит.
    Нельзя сделать такое Вью. В dictget надо ключи передавать
  • https://t.me/clickhouse_ru
    Какая версия кх?
  • @s4851 ↶ Reply to #233344 #233346 08:06 PM, 04 Sep 2021
    Для меня тоже оказался сюрпризом запрос который сгенерировал DL
  • https://t.me/clickhouse_ru
    это сама тулза (DataLens) такой запрос генерит
  • @s4851 ↶ Reply to #233345 #233348 08:07 PM, 04 Sep 2021
    21.8.5.7
  • https://t.me/clickhouse_ru
    Ну вот и спросите в саппорте Яндекса какого хрена
  • https://t.me/clickhouse_ru
    можно же dictGet('europa.dict_items', tuple('name', 'code', 'article'), item_id)
  • https://t.me/clickhouse_ru
    @nyoroon #233351 08:09 PM, 04 Sep 2021
    или я что-то не понял?
  • @s4851 ↶ Reply to #233350 #233352 08:10 PM, 04 Sep 2021
    Вопрос не в том как обратиться к словарю. С этим все понятно.
    Вопрос был как можно обратиться к словарю использую сервис от яндекса datalinse
  • https://t.me/clickhouse_ru
    Аа, я понял что имелось в виду. В смысле сделать view в котором dictget прикрутить к основой таблице, тогда да, будет работать
  • https://t.me/clickhouse_ru
    лучше туда в саппорт и идите. скажут делать view
  • https://t.me/clickhouse_ru
    @nyoroon #233355 08:11 PM, 04 Sep 2021
    или фичреквест попросите SQL для датасета руками вводить
  • @s4851 ↶ Reply to #233354 #233356 08:14 PM, 04 Sep 2021
    Только что написал.
    Была надежда, что кто-то уже решал эту задачу
  • https://t.me/clickhouse_ru
    @den_crane #233357 08:17 PM, 04 Sep 2021
    Лучше бы конечно чтобы даталенз умел словари и сначала делал groupby по ключу а потом во внешнем запросе dictget и ещё раз groupby. Так намного эффективнее почти всегда
  • @s4851 ↶ Reply to #233357 #233358 08:26 PM, 04 Sep 2021
    Подождем ответа от поддержки. Есть вера, что DL должен быть самым ready с кх
  • https://t.me/clickhouse_ru
    Я спрашивал только про 1 партицию YYYYMM на 6Tb для простоты, в реальности там уже есть шардирование на 4 сервера. Если Вы советуете перешардировать 1 партицию на 20 шардов, то с учетом того, что уже есть 4 шарда, получается надо перешардировать на 80 серверов. Я правильно понял, увеличивать кол-во шардов для того, чтобы использовать партиции YYYYMMDD?
  • https://t.me/clickhouse_ru
    Лайк поставил!) Интересная идея с Merge-Engine! А устаревающие данные из таблиц с партиционированием YYYYMMDD переливать в таблицы с YYYYMM, верно? Если верно, пробовали ли так делать? Возникли ли какие-нибудь трудности?
  • https://t.me/clickhouse_ru
    В смысле 24tb всего в месяц? Серьезно?
  • https://t.me/clickhouse_ru
    Да, а что смущает, много?
  • https://t.me/clickhouse_ru
    Много. В реальности я с трудом представляю как такой объем засервать на 4х шардах. Или только писать и никогда не кверять. Тут нужен большой кластер если это кликстрим. Ну и обычно настолько сырые данные не нужны на такой период.
  • https://t.me/clickhouse_ru
    Советую вам сразу забыть про yymmdd. Или надо очень хорошо понимать что вы делаете.
  • https://t.me/clickhouse_ru
    Да, все так, селектят их редко, обычно только последний месяц или последний год и стирать старые данные запрещают
  • https://t.me/clickhouse_ru
    Похоже мне придется воспользоваться вашим советом и не думать в сторону YYYYMMDD, - у меня не так много опыта с ClickHouse еще пока
  • https://t.me/clickhouse_ru
    Можете в алтинити обратится. У нас есть бесплатный час консультаций. Мы за час все обсудим и возможно расскажем вам как сократить кол-во данных в разы без потери качества.
  • https://t.me/clickhouse_ru
    Спасибо!
  • 05 September 2021 (14 messages)
  • Можно, руками. Трудности с переливанием зависят от рук. В зависимости от объемов одного запроса, скорости дисков, процессоров, параллельности запросов объем шардов лучше выбирать. У нас есть условно системы с шардами по 4-5 ТБ, есть 20 шардов по 30тб. Но у нас нет заметного qps/запросов.
  • https://t.me/clickhouse_ru
    @konnectrl #233374 08:05 AM, 05 Sep 2021
    Подскажите, пожалуйста. Как можно в массиве найти последовательность из ивентов ?
  • https://t.me/clickhouse_ru
    @bralbral #233375 10:35 AM, 05 Sep 2021
    Добрый день. У альтинити скоро намечается очередной stable релиз ?
  • @l_dar #233376 04:03 PM, 05 Sep 2021
    Подскажите пожалуйста. В таблице system.asynchronous_metric_log написана имя колонки name, у меня в базе эта колонка называется metric. Почему?

    https://clickhouse.tech/docs/ru/operations/system-tables/asynchronous_metric_log/
    system.asynchronous_metric_log | Документация ClickHouse

    system.asynchronous_metric_log Содержит исторические значения метрик из таблицы system.asynchronous_metrics, которые сох

  • https://t.me/clickhouse_ru
    @EKbfh #233377 07:53 PM, 05 Sep 2021
    Привет! А никто не встречался с Cannot write to ostream at offset 2097152: While executing JSONRowOutputFormat ? В какую сторону идти смотреть хоть? Появилось после апдейта с 20.8 до 21.8.5.7. Есть шарды, реплики
  • https://t.me/clickhouse_ru
    @EKbfh #233378 07:55 PM, 05 Sep 2021
    Вообще, занялся чтением логов после повышенного потребления cpu после апдейта, в show processlist ничего странного нет
  • https://t.me/clickhouse_ru
    Повышение в idle? Там метрики собираются раз в сек. было раз в 60 но это параметром можно.
  • https://t.me/clickhouse_ru
    В гитхаб ишью
  • https://t.me/clickhouse_ru
    @EKbfh ↶ Reply to #233379 #233381 08:06 PM, 05 Sep 2021
    Раньше я метрики вообще скрейпил экспортером, перешёл на внутренний эндпойнт, возможно дело как раз в этом. Не подскажете настройку?
  • https://t.me/clickhouse_ru
    я не про то. Вы график посмотрите, если у вас мин. использования cpu вырос то это раз, а если нет то это четыре
  • https://t.me/clickhouse_ru
    @EKbfh #233383 08:09 PM, 05 Sep 2021
    А, нет. Вырос как avg, так и max, чаще стали полки по 100%.
  • https://t.me/clickhouse_ru
    тогда какие-то запросы видимо стали больше использовать cpu. Ищите запрос.
  • https://t.me/clickhouse_ru
    @EKbfh ↶ Reply to #233384 #233385 08:13 PM, 05 Sep 2021
    Спасибо.
    С ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof тоже на гитхаб?
  • https://t.me/clickhouse_ru
    да
  • 06 September 2021 (130 messages)
  • @subotic0 #233390 07:45 AM, 06 Sep 2021
    Привет, в кх выставил mysql_port, при попытке селекта в mysql(кх) ошибка
    Setting net_write_timeout is neither a builtin setting nor started with the prefix 'custom_' registered for user-defined settings
    в чем проблема, куда смотреть? v.21.7.7.47
  • А как именно обращаться? Я вот на сайте заполнил запрос, а мне назначили zoom-встречу с продажником из Австрии. На 45 мин. Я не в том месте запрос сделал?
  • https://t.me/clickhouse_ru
    @ActionNum #233393 08:56 AM, 06 Sep 2021
    Всем привет, подскажите пожалуйста не приходилось ли кому то тянуть через океан данные из кафки в холодное резервное хранилище CH. Кейс к примеру такой что есть ДЦ в Штатах и там находится основной кликхауз и кафка, для резерва хотим запустить второй ДЦ в Европе с резервированием БД и определенных таблиц в другом ДЦ у другого провайдера. Сможем ли мы перекачивать эти таблицы или все индивидуально, зависит от объема и надо тестировать?
  • https://t.me/clickhouse_ru
    @nikitenkoolga #233394 09:42 AM, 06 Sep 2021
    Добрый день! Можете посоветовать курсы по клику - разные уровню. И для администрирования и для оптимизации запросов
  • https://t.me/clickhouse_ru
    @critskiy можно ссылку на канал
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    спасибо и за оперативность)
  • https://t.me/clickhouse_ru
    @critskiy #233398 09:47 AM, 06 Sep 2021
    Еще вот:
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @nikitenkoolga #233400 09:49 AM, 06 Sep 2021
    Ммм! это, по-моему, чуть круче, чем курсы
  • @srdtolstyh #233403 10:44 AM, 06 Sep 2021
    Всем, привет. Хотим поднять тестовый стенд кликхауса, что бы протестировать загрузку из хадупа в кликхауса и из него в qliksense. 2 вопроса, 1: кто-то занимался такой перекачкой? Буду признателен за фитбек и 2: если в hive инкремент в 65млн(40 столбцов). Сколько примерно кликхаусу нужно памяти и процов для запроса select *, без join.
  • https://t.me/clickhouse_ru
    Для теста пары ядер и 4-8гб хватит
  • https://t.me/clickhouse_ru
    память нужна для больших GROUP BY, JOIN ORDER BY (без лимита)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Russkie_Vpereed #233413 11:07 AM, 06 Sep 2021
    народ, кто знает, как можно оптимизировать следующий код?

    select
    sum(case when (vv.time_check - tab_1.time_check)< 30 and
    vv.time_check >=tab_1.time_check then coeff_weight else 0 end)/100 as Count30Sec,
    vv.tr_check_id,
    vv.time_check,
    vv.date_check as date,
    vv.camera_id as camera_id

    from tab_1

    global inner join

    coeffff

    ON
    tab_1.regno=coeffff.regno

    global inner join

    (select distinct date_check, speed,time_check,
    camera_id,tr_check_id
    from all_checks
    where date_check = toDate('2021-05-26')
    and tr_check_id global in (select distinct tr_check_id from
    otobrannye_checks where
    checks_speed > 0 and avgSpeed>0)

    )vv

    ON
    tab_1.camera_id = vv.camera_id

    where tab_1.date_check = toDate('2021-05-26')
    and v.time_check < addSeconds(vv.time_check, 6)
    group by
    vv.tr_check_id,
    vv.time_check,
    date,
    camera_id
  • https://t.me/clickhouse_ru
    @Russkie_Vpereed #233414 11:10 AM, 06 Sep 2021
    Проходы под камерой сформированы в табл otobrannye_checks
  • https://t.me/clickhouse_ru
    @Russkie_Vpereed #233416 11:20 AM, 06 Sep 2021
    Проблема в тяжелых джоинах, как их можно оптимизировать?
  • https://t.me/clickhouse_ru
    @nikitenkoolga #233417 11:27 AM, 06 Sep 2021
    отказаться от тяжелых джойнов, добавить памяти, создать доп технические таблички для промежуточных джойнов, убрать вычисляемые выражения из условий --> перенести их в селект например, addSeconds(vv.time_check, 6), еще можно где-то отсортировать по camera_id и где в запросе выборка больше - поставить его выше
  • использовать словари вместо джойнов
    шардировать данные по одному ключу чтобы избавиться от GLOBAL
  • SELECT * FROM id_val ANY LEFT JOIN (SELECT * FROM id_val_join) j USING (id);
  • https://t.me/clickhouse_ru
    м? если это ко мне, то я очень культурна, меня эта тема тоже очень интересует, прям шкурно. Написала то, что пробовала
  • https://t.me/clickhouse_ru
    @gudinagutin #233422 11:31 AM, 06 Sep 2021
    Приветствую, подскажите, есть ли какие рекомендации по дискам? В частности, интересует вопрос, сколько места должно быть свободно для нормальной работы?
    Для простоты: есть диск 1Тб, сколько нужно места держать свободным (5%, 10%, или не имеет значения?).
    Спасибо
  • https://t.me/clickhouse_ru
    @EKbfh ↶ Reply to #233421 #233423 11:32 AM, 06 Sep 2021
    Это бот-завлекашка, не обращайте внимания.
  • https://t.me/clickhouse_ru
    @mrAndersen7 #233425 11:41 AM, 06 Sep 2021
    Его уже забанили кстати ;)
  • https://t.me/clickhouse_ru
    А как нибудь можно создать словарь на основе таблицы? У меня одна из таблиц как раз состоит из 2 столбцов (ключ-значение)
  • Источники внешних словарей | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    А что за параметр LIFETIME?
  • Периодичность обновления словаря
  • https://t.me/clickhouse_ru
    А если таблица, на основе которой создается словарь не обновляется? То какой LIFETIME устанавливать?
  • это периодичность подгрузки словарей из таблицы
  • https://t.me/clickhouse_ru
    И каким тогда его лучше установить?
  • можете выставить в 0 и тогда словарь не будет обновляться
  • Обновление словарей | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @399999446 #233439 12:49 PM, 06 Sep 2021
    всем привет
    как конвернуть значение колонки String в Array(String)?

    select '["cat1","cat2"]' as col
  • может как-то элегантнее можно, но так должно работать

    select CAST(replaceAll('["cat1","cat2"]', '"', ''''), 'Array(String)')
  • https://t.me/clickhouse_ru
    А получается для создания словаря нужен обязательно PRIMARY KEY?
  • https://t.me/clickhouse_ru
    вот как раз думал есть что-то стандартное)) в любом случае спасибо
  • ну если бы не двойные кавычки было бы всё стандартно)
  • да, вы по нему достаёте значения из словаря
  • https://t.me/clickhouse_ru
    dictGet('dict_auto_weight', 'coeff_weight', cast(regno, 'UInt64')) as Num

    У меня просто уникальное поле regno и оно типа String, а dictGet требует UInt64

    Как можно это обойти?
  • Использовать составной ключ, тут больше инфы https://clickhouse.tech/docs/ru/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-structure/
    Ключ и поля словаря | Документация ClickHouse

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

  • @srdtolstyh #233448 01:02 PM, 06 Sep 2021
    @camoron, @unamedrus спасибо!
  • https://t.me/clickhouse_ru
    SELECT JSONExtract('["123", "456"]', 'Array(String)')
  • https://t.me/clickhouse_ru
    Да, спасибо, это отличный выход, но после создания у меня не видит атрибута coeff_weight Int16 и выдает ошибку Exception: external dictionary 'dict_auto_weight' not found

    CREATE DICTIONARY dict_auto_weight (
    regno String,
    coeff_weight Int16
    )
    PRIMARY KEY regno
    SOURCE(CLICKHOUSE(
    host ''
    user ''
    password ''
    db ''
    table 's_auto_coef_weight'
    secure 1
    ))
    LAYOUT(complex_key_hashed())
    LIFETIME(MIN 3600 MAX 5400);
  • а как вызываете? ошибка же в том что словарь не может найти, скорее всего имя базы не указываете в dictGet
  • https://t.me/clickhouse_ru
    dictGet('dict_auto_weight', 'coeff_weight', tuple('string for regno'))
  • dictGet(‘databasename.dict_auto_weight’…
  • https://t.me/clickhouse_ru
    Все равно та же ошибка
  • а что тут? ошибки нет? database совпадает?
    select * from system.dictionaries where name = 'dict_auto_weight'
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Он даже атрибуты не увидел
  • а вы вызываете как? dictGet(‘default.dict_auto_weight’… ?
  • https://t.me/clickhouse_ru
    Так тоже ошибка
  • прокажите столбец last_exception
  • https://t.me/clickhouse_ru
    Пустой полностью
  • system reload dictionary default.dict_auto_weight;
  • https://t.me/clickhouse_ru
    Не совсем понял
  • перезагрузите словарь
  • https://t.me/clickhouse_ru
    Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: dictionary.source.clickhouse.port (version 20.1.16.120 (official build))
  • порт указали для подключения?
  • https://t.me/clickhouse_ru
    Нет
  • попробуйте указать
  • @s4851 ↶ Reply to #233470 #233471 02:02 PM, 06 Sep 2021
    Только указывать 9000 а не http 8123
  • @subotic0 #233478 02:29 PM, 06 Sep 2021
    Привет, подскажите, такая ситуация
    есть архивная таблица, где лежит состояние таблицы за последние пару дней(обновление ежедневное), и на таблице висит ttl archiveDate + interval 2 day
    уменьшится ли нагрузка на базу(или улучшится производительность) в случае добавления партицирования по дате архивации?
  • @mobydi #233479 02:30 PM, 06 Sep 2021
    привет

    В таблице лежат метрики типа строка в формате “param1.param2.param3” и тп
    Хочется сделать запрос чтобы нумеровать их по уровню
    1 | param1
    2 | param1.param2.
    3 | param1.param2.param3

    не могу придумать как сделать такой запрос. можете подскажете?
  • https://t.me/clickhouse_ru
    Считать кол-во точек в строке?
  • @mobydi ↶ Reply to #233480 #233481 02:32 PM, 06 Sep 2021
    Типа уровень вхождения в дерево. Если разделить по точкам
  • https://t.me/clickhouse_ru
    Скорее да. Но там надо ещё параметр ttlonlydropparts добавить
  • https://t.me/clickhouse_ru
    @wXhexo #233483 02:33 PM, 06 Sep 2021
    Подскажите по апдейту кх живущем в докере. С 20.3 на 21.3, новую версию контейнера стянуть и все должно стартовать?
    Или явно делать перелив данных через backup tool/freeze/etc?
  • Спасибо!
  • https://t.me/clickhouse_ru
    Этот вопрос не имеет отношения к кх. В докере можно запускать приложения замапив данные приложения с хоста, или из датаконтейнера или прямо в текщем контейнере. Поэтому не зная этого нельзя ответить.
  • https://t.me/clickhouse_ru
    @wXhexo #233486 02:59 PM, 06 Sep 2021
    Я про совместимость данных которые пишет сам кх, данные конечно замаплены на диск
  • https://t.me/clickhouse_ru
    Совместимы в 99.99% кроме случаев описанных в ченджлоге.
  • https://t.me/clickhouse_ru
    @wXhexo ↶ Reply to #233487 #233488 03:02 PM, 06 Sep 2021
    Спасибо
  • https://t.me/clickhouse_ru
    SELECT length(extractAll('param1.param2.param3', '\\.'))
    ┌─length(extractAll('param1.param2.param3', '\\.'))─┐
    │ 2 │
    └───────────────────────────────────────────────────┘
  • @mobydi ↶ Reply to #233489 #233490 03:19 PM, 06 Sep 2021
    Спасибо Наверное не правильно выразился. Как развернуть это типа из одной строчки param1.param2.param3 получить три в выдаче

    1 | param1
    2 | param1.param2.
    3 | param1.param2.param3
  • https://t.me/clickhouse_ru
    ниче не понял. Что на входе-то?
  • @mobydi ↶ Reply to #233491 #233492 03:23 PM, 06 Sep 2021
    вход:
    param1.param2.param3
    выход:
    1 | param1
    2 | param1.param2.
    3 | param1.param2.param3

    вход:
    param1.param2.param3.param4
    выход:
    1 | param1
    2 | param1.param2.
    3 | param1.param2.param3
    4 | param1.param2.param3.param4
  • @softbot_xxl #233493 03:28 PM, 06 Sep 2021
    Это похоже на statsd какой-то, где в бэкэнде где-то кх.
  • SELECT arrayJoin(arrayMap((x, i) -> arrayStringConcat(arraySlice(s, 1, i), '.'), s, arrayEnumerate(s))) FROM (SELECT splitByChar('.', 'param1.param2.param3') s)
  • https://t.me/clickhouse_ru
    @Russkie_Vpereed #233495 04:29 PM, 06 Sep 2021
    Ребят, кто-нибудь сталкивался, что после создания словаря и его использования в селекте подтягивается просто вектор нулей?
  • https://t.me/clickhouse_ru
    что такое вектор?
    что такое использование словаря?
  • https://t.me/clickhouse_ru
    select camera_id,tr_check_id, regno, dictGet('bigdata.dict_auto_weight', 'coeff_weight', tuple('tc.regno')) as coeff

    То есть появляется поле нулей в самом правом столбце, а должны быть веса
  • https://t.me/clickhouse_ru
    а если для проверки select * from bigdata.dict_auto_weight where regno='tc.regno' то все ОК ?
  • https://t.me/clickhouse_ru
    аааа, дошло

    select camera_id,tr_check_id, regno, dictGet('bigdata.dict_auto_weight', 'coeff_weight', tuple(tc.regno)) as coeff
  • https://t.me/clickhouse_ru
    @den_crane #233502 04:37 PM, 06 Sep 2021
    tc.regno это поле, 'tc.regno' -- строковая контстанта
  • https://t.me/clickhouse_ru
    Спасибо, сработало!
  • @mobydi ↶ Reply to #233494 #233504 05:29 PM, 06 Sep 2021
    ого спасибо
  • https://t.me/clickhouse_ru
    @ievgenpro #233505 05:37 PM, 06 Sep 2021
    Добрый день. подскажите плз, есть таблица в каждой строке json по 500к, общий размер таблицы 6Гб, при запросе на последнюю строку по ts получаю что запрос хочет 20 гиг памяти. Запрос select json from table order by ts desc limit 1. Где я свернул не туда
  • https://t.me/clickhouse_ru
    тамще-то это ожидаемо.

    order by у таблицы какой?
  • https://t.me/clickhouse_ru
    @e_rtishcheva #233508 06:19 PM, 06 Sep 2021
    Добрый день! Рассматриваю Кликхаус в качестве базы для аналитической системы и пытаюсь понять, подходит ли он для наших задач или нет. Хочу услышать ваше мнение. Допустим, у меня есть запросы от пользователей и ответы на эти запросы. Запросы и ответы приходят не одновременно, а с разницей в несколько секунд. Мне нужно считать метрики по склеенным по идентификаторам запросам-ответам (потому что часть нужных полей есть в запросах, а часть в ответах). В связи с этим вопрос: правильно ли я понимаю, что без джойнов здесь не обойтись и, т.к. и запросы, и ответы не являются словарями, джойн по ним в КХ будет работать не оптимально?
  • https://t.me/clickhouse_ru
    ORDER BY ts SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    Вам нужно до кликхауса собирать данные и бачами заливать в КХ
  • https://t.me/clickhouse_ru
    хм, а select version() ?
    и что если set max_threads=1, max_block_size=512
  • https://t.me/clickhouse_ru
    тут не нужен КХ, берите mysql.
    Если у вас в день меньше чем 100млн. ивентов то КХ это оверкилл.
  • https://t.me/clickhouse_ru
    версия старая как .... 18.12.17. если что можно и на новый сервер эту базу перенести, set max_threads=1, max_block_size=512 сейчас посмотрю как это задать в dbeaver
  • https://t.me/clickhouse_ru
    в новых версиях (старше 19.16) КХ не будет сортировать, а будет использовать сортированность таблицы (индекс)
  • https://t.me/clickhouse_ru
    @ievgenpro #233515 06:26 PM, 06 Sep 2021
    ага. понял. спасибо большое. перееду тогда на новый CH
  • https://t.me/clickhouse_ru
    у нас уже сейчас OLTP база, и она не вывозит, мы ищем вариант, на который лучше перейти
  • @renatko #233517 06:28 PM, 06 Sep 2021
    Добрый вечер!
    Стоим переред выбором, какие ноды взять? две AMD Ryzen 9 5950X или одну AMD EPYC 7502P?

    По деньгам выходит однинаково, по бенчмаркам 2xRyzen9 должено быть быстрее. Если брать Ryzen, то предполагается использовать distributed таблицы

    https://www.cpubenchmark.net/compare/AMD-Ryzen-9-5950X-vs-AMD-EPYC-7502P/3862vs3538
  • https://t.me/clickhouse_ru
    сколько ивентов в день?
  • https://t.me/clickhouse_ru
    зависит от запросов. Финальная группировка во многих случаях занимает столько же времени сколько и запрос на шардах.
    короче в некоторых дизайнах в два раза быстрее будут 2 сервера, а в некоторых один, я предпочитаю 1 шард
  • https://t.me/clickhouse_ru
    Пока десятки миллионов, но в будущем ожидаем больше. К тому же, метрики ведь не только по дням нужно считать, но и по месяцам, годам... OLTP БД тяжело обрабатывать такие запросы
  • https://t.me/clickhouse_ru
    ну в общем джойните в OLTP и заливайте в КХ уже поджойненое в одну широкую таблицу, естественно с задержкой, когда все данные уже приехали в OLTP
  • https://t.me/clickhouse_ru
    поняла, спасибо за ответ!
  • https://t.me/clickhouse_ru
    спасибо!
  • а если одна нода Ryzen 9 против одной ноды Epyc 7502P?
    у Райзена 32 тредов, в Эпика 64, но у райзена каждый тред два раза быстрее.

    В итоге в бенчмарках 32 треда Райзена набирают как 64 треда Эпика
  • @renatko #233525 07:01 PM, 06 Sep 2021
    что предпочесть: 32 быстрых треда или 64 в два раза медленнее?
  • https://t.me/clickhouse_ru
    32 быстрых, не все этапы пайплайна можно распараллелить
  • @renatko #233527 07:05 PM, 06 Sep 2021
    > 32 быстрых

    опять же из-за финальной агрегации/группировки?
  • https://t.me/clickhouse_ru
    Да например.
  • @renatko #233529 07:25 PM, 06 Sep 2021
    спасибо Вам за ответы
  • @vasya_p0pkin #233530 07:42 PM, 06 Sep 2021
    Есть кто использует datagrip? Обновился до последней версии и бесит один момент, раньше по умолчанию генерился запрос с limit 500. А сейчас просто select *. Который выжирает кучу памяти. Кто знает как вернуть ограничение?
  • @s4851 ↶ Reply to #233530 #233531 07:46 PM, 06 Sep 2021
    Обновился на днях до последнего, все норм при открытии таблиц, лимит проставляется
    SELECT t.*
    FROM europa.price_change t
    LIMIT 501

    Скорее всего какие-то дефолтные насстроки
  • А у меня как то рандомно, то делает лимит 500 то не делает. Бесит жуть. А у тебя драйвер какой версии? 1.5 или последний?
  • @214612813 #233536 08:21 PM, 06 Sep 2021
    Приветствую, можно ли изменять на живой таблице index_granularity, есть ли подводные камни? Вижу что marks_bytes уже кратно превысил mark_cache_size на 1/3 данных. Самые медленные выборки на миллионах строк, если подрастёт время на мелких запросах не страшно.
  • https://t.me/clickhouse_ru
    Нельзя. Только пересоздать табл.
    На самом деле marks bytes это про все колонки и все партиции если вы читаете только часть колонок то вам не нужно все кешировать
  • https://t.me/clickhouse_ru
    @Vsevolodlukovsky #233538 08:54 PM, 06 Sep 2021
    кто-нибудь сталкивался с тем, что count(xxx) некорректно работает для вьюх?
  • https://t.me/clickhouse_ru
    А что такое count xxx? Это кол-во СТРОК где xxx не null.
    Вы путаете с uniq?
  • Спасибо, тема с mark_cache_size считаю слабо освещена в доках. Вот только вылечил кейс, в котором поиск был по всему диапазону засечек таблицы и они не помещались в mark_cache_size, время ответа взлетало с 0.2сек до 5сек. Хотя свободной памяти было предостаточно.
  • https://t.me/clickhouse_ru
    Любой count выводит хрень, во вьюхе больше 200 строк, он выводит на count(*) 2
  • https://t.me/clickhouse_ru
    Не видел такого. Есть например https://github.com/ClickHouse/ClickHouse/issues/27578
  • https://t.me/clickhouse_ru
    @Vsevolodlukovsky #233543 08:59 PM, 06 Sep 2021
    о, похоже
  • https://t.me/clickhouse_ru
    Да. Все так. Причем марков может быть 72 байта на гранулу а может 16.
  • https://t.me/clickhouse_ru
    спасибо, это оно
  • Мессадж в лог спас бы не одного в такой ситуации.
  • https://t.me/clickhouse_ru
    Какой мессадж? Их будет 300млн. в сек.
  • Две крайности )
  • 07 September 2021 (89 messages)
  • https://t.me/clickhouse_ru
    @AlexTru_1 #233550 07:09 AM, 07 Sep 2021
    Добрый день! Подвис процесс удаления матвьюхи, удалить процесс не получается, подскажите что можно сделать? спасибо!
  • https://t.me/clickhouse_ru
    @yourock88 #233554 09:11 AM, 07 Sep 2021
    Кстати интересно посмотреть на сравнения по соотношению стоимость/производительность для разных вендоров — кажется, что AMD или даже ARM процессоры должны быть эффективнее, но, с другой стороны, у Intel есть AVX-512 и прочие, которых вроде как минимум на ARM нет
  • https://t.me/clickhouse_ru
    @innopolis #233556 09:51 AM, 07 Sep 2021
    а в mysqlengine можно добавить экстра колонку? (сейчас падает с ` Unknown column 'dt' in 'field list' ()`)

    запрос

    create table db.table
    (
    id UInt16,
    dt DateTime default CAST(today(), 'DateTime')
    )
    engine = MySQL();

    т е чтобы dt высчитывался при селекте
  • https://t.me/clickhouse_ru
    arm пока не быстрее, но может дешевле

    https://clickhouse.tech/benchmark/hardware/
    Performance comparison of ClickHouse on various hardware

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

  • https://t.me/clickhouse_ru
    сделал через extra view
  • https://t.me/clickhouse_ru
    кажется что пока под x86_64 в целом больше оптимизаций имплементировано
  • @BBRSOFF #233563 10:19 AM, 07 Sep 2021
    Всем привет! Как отключить thread log? Закомменчивание в config.xml не помогло
  • @BBRSOFF #233564 10:20 AM, 07 Sep 2021
    без перезагрузки сервера
  • https://t.me/clickhouse_ru
    @brbrbr #233565 10:30 AM, 07 Sep 2021
    Замеряю скорость выборки данных разными способами. Первый прогон занимает порядка 5сек, второй - порядка 100мс. Очевидно, используется кэш.
    Как заставить КХ игнорировать кэш при выполнении запроса?
  • https://t.me/clickhouse_ru
    @generalovav #233566 10:36 AM, 07 Sep 2021
    Добрый день. Можно как-то толкнуть мутацию? А то она не шевелится уже минут 10, а ждать не хочется ( нет времени)
  • https://t.me/clickhouse_ru
    @donaldwipper #233567 10:36 AM, 07 Sep 2021
    Друзья, добрый день!
    Хотим видеть в таблице только актуальные данные, т.е последние поступившие данные по времени прихода данных. Данныe
    схлопываются по колонке id. Подскажите, пожалуйста, правильный подход для реализации такой задачи.
    Версия кликхауса 21.3.15.4
    Сейчас у нас реализован подход, который возможно избыточен, потому что включает в себя аж 4 таблицы.
    Данные вставляются в таблицу db_test.test_null, а на выходе используется db_test.test

    --В эту таблицу приходят данныe
    create table if not exists db_test.test_null
    (
    id Int32,
    name String,
    dt DateTime default now()
    )
    engine = Null;

    create table if not exists db_test.test_amt
    (
    id Int32,
    name AggregateFunction(argMax,String, DateTime),
    max_dt AggregateFunction(max, DateTime)
    )
    engine = AggregatingMergeTree
    PARTITION BY tuple()
    ORDER BY id;

    --матвьюха где берется последее состояние полей и данные вставляются в db_test.test_amt
    CREATE MATERIALIZED VIEW db_test._sys_test_amt
    TO db_test.test_amt AS
    SELECT id,
    argMaxState(name, dt) AS name,
    maxState(dt) AS max_dt
    FROM db_test.test_null
    GROUP BY id;

    --в таблице db_test.test_amt колонки имеют формат AggregateFunction -> преобразуем к нужному виду с помощью finalizeAggregation
    --это финальная таблица
    CREATE VIEW db_test.test AS
    SELECT id,
    finalizeAggregation(name) AS name,
    finalizeAggregation(max_dt) AS dt
    FROM db_test.test_amt;

    insert into db_test.test_null (id, name) values (1, 'b'), (2, 'c'), (1, 'd')

    select *
    from db_test.test
  • https://t.me/clickhouse_ru
    SYSTEM DROP MARK CACHE
    можно ещё заюзать программу clickhouse-benchmark
  • @simpl1g #233569 10:38 AM, 07 Sep 2021
    а можно как-то посмотреть на сколько занят mark cache?
  • https://t.me/clickhouse_ru
    @papabooo #233570 10:39 AM, 07 Sep 2021
    #вакансия #удаленка
    Вакансия: DBA ClickHouse
    Компания: РА Selecty
    Город: Москва
    Формат работы: remote
    Занятость: full time
    Компенсация: 150000 - 200000 net., без учета премий

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

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

    🔸Если заинтересует, я здесь 24/7 @papabooo
    или на почту andrey.boyko@selecty.ru
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #233568 #233571 10:39 AM, 07 Sep 2021
    Спасибо
  • https://t.me/clickhouse_ru
    Ищите старшего, а зп как для стажера.
  • @AndBys #233574 10:58 AM, 07 Sep 2021
    всем привет!

    есть такой ddl:

    CREATE TABLE analytics.table
    (
    `attributed_touch_type` LowCardinality(String),
    `attributed_touch_time` DateTime,
    `install_time` DateTime,
    `event_time` DateTime,
    `event_date` Date DEFAULT toDate(event_time),
    `event_name` LowCardinality(String),
    `event_value` LowCardinality(String),
    `event_revenue` Float32,
    `event_revenue_currency` LowCardinality(String),
    `event_revenue_usd` LowCardinality(String),
    `af_cost_model` LowCardinality(String),
    `af_cost_value` Float32,
    `af_cost_currency` LowCardinality(String),
    `event_source` LowCardinality(String),
    `is_receipt_validated` LowCardinality(String),
    `af_prt` LowCardinality(String),
    `media_source` LowCardinality(String),
    `af_channel` LowCardinality(String),
    `af_keywords` String,
    `install_app_store` LowCardinality(String),
    `campaign` String,
    `af_c_id` String,
    `af_adset` String,
    `af_adset_id` String,
    `af_ad` String,
    `af_ad_id` String,
    `af_ad_type` String,
    `af_siteid` String,
    `af_sub_siteid` String,
    `af_sub1` LowCardinality(String),
    `af_sub2` LowCardinality(String),
    `af_sub3` LowCardinality(String),
    `af_sub4` LowCardinality(String),
    `af_sub5` LowCardinality(String),
    `contributor_1_touch_type` LowCardinality(String),
    `contributor_1_touch_time` DateTime,
    `contributor_1_af_prt` LowCardinality(String),
    `contributor_1_match_type` LowCardinality(String),
    `contributor_1_media_source` LowCardinality(String),
    `contributor_1_campaign` String,
    `contributor_2_touch_type` LowCardinality(String),
    `contributor_2_touch_time` DateTime,
    `contributor_2_af_prt` LowCardinality(String),
    `contributor_2_media_source` LowCardinality(String),
    `contributor_2_campaign` String,
    `contributor_2_match_type` LowCardinality(String),
    `contributor_3_touch_type` LowCardinality(String),
    `contributor_3_touch_time` DateTime,
    `contributor_3_af_prt` LowCardinality(String),
    `contributor_3_media_source` LowCardinality(String),
    `contributor_3_campaign` String,
    `contributor_3_match_type` LowCardinality(String),
    `region` LowCardinality(String),
    `country_code` LowCardinality(String),
    `state` LowCardinality(String),
    `city` LowCardinality(String),
    `postal_code` String,
    `dma` String,
    `ip` String,
    `wifi` Enum8('null' = -1, 'false' = 0, 'true' = 1),
    `operator` LowCardinality(String),
    `carrier` LowCardinality(String),
    `language` LowCardinality(String),
    `appsflyer_id` LowCardinality(String),
    `customer_user_id` String,
    `android_id` LowCardinality(String),
    `advertising_id` String,
    `imei` LowCardinality(String),
    `idfa` String,
    `idfv` String,
    `amazon_aid` String,
    `device_type` String,
    `device_category` LowCardinality(String),
    `platform` LowCardinality(String),
    `os_version` LowCardinality(String),
    `app_version` LowCardinality(String),
    `sdk_version` LowCardinality(String),
  • @AndBys #233575 10:58 AM, 07 Sep 2021
    `app_id` String,
    `app_name` LowCardinality(String),
    `bundle_id` String,
    `is_retargeting` LowCardinality(String),
    `retargeting_conversion_type` LowCardinality(String),
    `is_primary_attribution` Enum8('null' = -1, 'false' = 0, 'true' = 1),
    `af_attribution_lookback` String,
    `af_reengagement_window` String,
    `match_type` LowCardinality(String),
    `user_agent` String,
    `http_referrer` String,
    `original_url` String,
    `gp_referrer` String,
    `gp_click_time` DateTime,
    `gp_install_begin` DateTime,
    `gp_broadcast_referrer` LowCardinality(String),
    `custom_data` LowCardinality(String),
    `network_account_id` String,
    `keyword_match_type` LowCardinality(String),
    `blocked_reason` LowCardinality(String),
    `blocked_reason_value` LowCardinality(String),
    `blocked_reason_rule` String,
    `blocked_sub_reason` String,
    `af_web_id` String,
    `web_event_type` String,
    `device_download_time` DateTime,
    `deeplink_url` String,
    `oaid` String,
    `ad_unit` String,
    `segment` String,
    `placement` String,
    `mediation_network` String,
    `impressions` String,
    `monetization_network` String
    )
    ENGINE = MergeTree
    PARTITION BY toYYYYMMDD(event_date)
    ORDER BY (event_time, event_name)
    SETTINGS index_granularity = 8192;

    в него пишем запросы по типу:

    select appsflyer_id,
    groupArray(event_date) as event_date,
    groupArrayIf(event_time, event_name = 'event1') event_1,
    groupArrayIf(event_time, event_name in ('event2', 'event3')) as event_2,
    groupArrayIf(event_time, event_name in ('event4', 'event5')) as event_3,
    groupArrayIf(event_time, event_name in ('event6',
    'event7')) as event_4,
    groupArrayIf(event_time, event_name in
    ('event8', 'event9', 'event10', 'event11',
    'event12')) as event_5
    from table
    group by appsflyer_id;

    начали не пролезать по памяти, поэтому хотим оптимизироваться. подскажите, что можно улучшить в ddl и настройках КХ, чтобы это лучше работало? настройки КХ дефолтные

    событий в event_name штук 70, appsflyer_id высококардинальное поле. дальше есть еще часть подзапроса, где разжимаем массивы или используем arrayFilter или прочие штуки для работы над массивами
  • https://t.me/clickhouse_ru
    Еще есть премиальная часть, здесь только про оклад)
  • https://t.me/clickhouse_ru
    @papabooo #233577 11:01 AM, 07 Sep 2021
    Но это по результатам интервью обсуждается индивидуально, поэтому не могу конкретных цифр здесь написать
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233567 #233578 11:01 AM, 07 Sep 2021
    у вас очень высокий select rate и требование ответа за миллисекунды? Именно поэтому вы хотите сделать всю дедубликацию бекграунд процессом? Если так, то путь с AggregatingMT неплохой. Если же вводные иные, то можно и ReplacingMergeThree select/final (или limit 1 by, или argMax).
  • Простой способ - разнести всё в кластер и пошардировать,допустим, по media_source
  • @AndBys ↶ Reply to #233579 #233580 11:03 AM, 07 Sep 2021
    ок, спасибо за идею. есть еще сложные способы?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233575 #233581 11:06 AM, 07 Sep 2021
    для чего у вас ORDER BY (event_time, event_name) ? Вы точно этого хотели или "само получилось"? Выглядит подозрительно. Может все-таки поставить ваш apps_id на первое место, а event_time на последнее. Принцип простой - меньшая кардинальность - вперед.
  • @AndBys ↶ Reply to #233581 #233582 11:09 AM, 07 Sep 2021
    хотели считать воронки по event_time, чтобы на id можно было сразу при помощи groupArray получить отсортированное время, а не сортировать на ходу. app_id никогда не используем в секции where.

    про принцип спасибо, не усмотрел
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233580 #233583 11:33 AM, 07 Sep 2021
    есть простые. Но будет медленнее:
    set max_bytes_before_external_group_by='40G'
    set max_memory_usage='50G'
    max_threads=1
  • @AndBys ↶ Reply to #233583 #233584 12:27 PM, 07 Sep 2021
    хм, спасибо!
  • https://t.me/clickhouse_ru
    Добавить мутацию в запрос
  • https://t.me/clickhouse_ru
    @time_2_work #233586 12:54 PM, 07 Sep 2021
    Мой костыль
  • https://t.me/clickhouse_ru
    @Am1rkin #233588 01:35 PM, 07 Sep 2021
    Всем привет
    Подскажите плз, как сделать синхронизацию с SQL-базой, что бы данные были одинковые и в SQL и в КХ?
    При условии что в SQL данные могут правиться руками
  • https://t.me/clickhouse_ru
    под SQL
    имеется ввиду Microsoft SQL?
    или MySQL / PostgreSQL ?
  • https://t.me/clickhouse_ru
    Microsoft SQL
  • https://t.me/clickhouse_ru
    трудно очень будет
    надо будет городить какие то костыли поверх вот этого
    https://github.com/debezium/debezium/tree/master/debezium-connector-sqlserver
    и вот этого
    https://github.com/itnxs/debezium

    шансов что заработает, мало, но не нулевые
    debezium/debezium-connector-sqlserver at master · debezium/debezium

    Change data capture for a variety of databases. Please log issues at https://issues.redhat.com/browse/DBZ. - debezium/debezium-connector-sqlserver at master · debezium/debezium

  • @BBRSOFF #233592 01:57 PM, 07 Sep 2021
    Ребят, как отключить query_thread_log без рестарта КХ? Очень уж активно он пишет
  • https://t.me/clickhouse_ru
    @nikitenkoolga #233593 02:00 PM, 07 Sep 2021
    Добрый вечер, можете рассказать как многопользовательский с разными лимитами для разных пользователей?
    у нас сейчас 8 нод через прокси доступ и по 9000(через chproxy) и по 8123 (HAproxy)
  • @BBRSOFF #233595 02:04 PM, 07 Sep 2021
    Или хотя бы может кто рассказать, как query_thread_log влияет на производительность? КХ же не любит много мелких вставок.
  • https://t.me/clickhouse_ru
    Поставьте ему время жизни партиций, чтобы сами удалялись через нужное Вам время или отключите.
    Без рестарта вроде как нельзя
  • Я так понял, что TTL тоже настраивается при создании этой таблицы и без рестарта не применится. Пока юзаю скрипт, который транкейтит табличку, но меня больше волнует нагрузка. За сутки набегает 4 гига логов
  • https://t.me/clickhouse_ru
    Да, это в конфиге прописывается engine, чтобы отключить нужно закоментировать объявление query_thread_log
  • @BBRSOFF #233599 02:10 PM, 07 Sep 2021
    Опять же, это требует рестарта)
  • https://t.me/clickhouse_ru
    Естественно)
  • @packofopinions #233601 02:20 PM, 07 Sep 2021
    Joined.
  • https://t.me/clickhouse_ru
    там нет много мелких вставок, там одна вставка раз в 7.5 секунд
    остальное в памяти...
    тоже самое для system.query_log
    это все настраивается через flush_interval_milliseconds

    переопределите TTL и ENGINE через XML
    https://clickhouse.tech/docs/en/operations/system-tables/#system-tables-introduction

    кажется это без перезагрузки может работать, можно еще в runtime просто через ALTER TABLE переопределить

    можно отключить через remove
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-system-tables-eat-my-disk/
    System Tables | ClickHouse Documentation

    System Tables Introduction System tables provide information about: Server states, processes, and environment. Server’s

  • @softbot_xxl #233603 02:25 PM, 07 Sep 2021
    Перезагрузка нужна, насколько я помню.
  • Не спасло (
  • https://t.me/clickhouse_ru
    Там можно менять ещё flush_interval_milliseconds для каждой таблички логов
  • Да, наверно с этим пока поэкспериментирую
  • https://t.me/clickhouse_ru
    Можно в default профиль написать log_query_threads=0, и не надо никаких рестартов
  • <yandex>
    <profiles>
    <default>
    <log_query_threads>0</log_query_threads>
    </default>
    <read_only>
    <log_query_threads>0</log_query_threads>
    </read_only>
    </profiles>
    </yandex>
    ?
  • @BBRSOFF #233609 03:00 PM, 07 Sep 2021
    или просто 'log_query_threads=0'?
  • https://t.me/clickhouse_ru
    default достаточно, он наследуется
  • не сработало, конфиг принялся, но логи идут
  • @BBRSOFF #233612 03:01 PM, 07 Sep 2021
    Saved preprocessed configuration to '/var/lib/clickhouse/preprocessed_configs/users.xml'
  • https://t.me/clickhouse_ru
    смотрите в query_log, может настройки переопределяются
  • Какого плана ожидать запросов на изменение настроек?
    Пока ничего
  • https://t.me/clickhouse_ru
    у каждого запроса есть настройки
    в query_log есть поля, там все написано
  • https://t.me/clickhouse_ru
    @brbrbr #233617 04:04 PM, 07 Sep 2021
    Есть КХ-таблица с движком Kafka и форматом AvroConfluent. Добавили в кафка-топик 2 новых поля, пересоздаю кафка-таблицу в КХ, для проверки делаю select * from KafkaTable limit 10; - ругается что в авро-схеме не существует нового поля. При этом по ссылке из avro_schema_registry_url в последней версии топика новые поля вижу.
    Это какой-то кэш? Как его сбросить?
  • https://t.me/clickhouse_ru
    Avro Schema Evolution Support · Issue #11986 · ClickHouse/ClickHouse

    I use AvroConfulent data format with schema registry to consume Kafka events to clickhouse. сurrently, Avro schemas are cached once resolved after evolving Avro schema(add fields) clickhouse doesn&...

  • https://t.me/clickhouse_ru
    @unamedrus #233619 04:07 PM, 07 Sep 2021
    точно можно пересоздать Kafka таблицу
  • Сделал запрос в query_log на поиск запросов в базе system, но ничего нужного нет
  • https://t.me/clickhouse_ru
    сделайте
    DESCRIBE system.query_log

    посмотрите там что-то типа Settings.Names, Settings.Values
    или просто Settings в новых версиях
  • @BBRSOFF #233622 04:25 PM, 07 Sep 2021
  • https://t.me/clickhouse_ru
    ну теперь
    SELECT event_time, query, Settings['query_thread_log'] FROM system.query WHERE event_date=toDate(now()) ORDER BY event_time DESC LIMIT 100
  • @BBRSOFF #233624 04:29 PM, 07 Sep 2021
    в настройках запросов к базе system есть query_thread_log=0, а к базе default - нет
  • https://t.me/clickhouse_ru
    это настройки в default профиле логироать или нет
    ну и в preprocessed_configs/user.xml смотрели?

    с каким профилем у вас пользователи коннектятся?
  • @BBRSOFF #233626 04:32 PM, 07 Sep 2021
  • @BBRSOFF #233627 04:35 PM, 07 Sep 2021
    в preprocessed все есть
  • @BBRSOFF #233628 04:35 PM, 07 Sep 2021
    пользователи коннектятся default и read_only
  • https://t.me/clickhouse_ru
    SELECT user, Settings['query_thread_log'] AS log, count() FROM system.query WHERE event_date=toDate(now()) GROUP BY user, log
  • @BBRSOFF #233630 04:40 PM, 07 Sep 2021
    (пользователь админ 1) -18
    (default) - 20
    (replica_user) 12000
    (пользователь базы1)- 1000
  • логи чистил час назад
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #233618 #233632 04:43 PM, 07 Sep 2021
    Спасибо.
  • https://t.me/clickhouse_ru
    @brbrbr #233633 04:43 PM, 07 Sep 2021
    Помогло добавление input_format_avro_allow_missing_fields=1 в настройки кафка-таблицы.
  • ошибку понял, спасибо)
  • @simpl1g #233638 05:06 PM, 07 Sep 2021
    Подскажите, можно как-то понять из-за чего такие ошибки падают периодически? по паре сотен раз за день обычно

    2021.09.07 15:09:03.239799 [ 17219 ] {} <Error> ServerErrorHandler: Code: 210, e.displayText() = DB::NetException: Connection reset by peer, while reading from socket (10.64.133.228:28488), Stack trace (when copying this message, always include the lines below):

    0. DB::ReadBufferFromPocoSocket::nextImpl() @ 0xe90f053 in /usr/bin/clickhouse
    1. DB::TCPHandler::runImpl() @ 0xf695c34 in /usr/bin/clickhouse
    2. DB::TCPHandler::run() @ 0xf6a88c9 in /usr/bin/clickhouse
    3. Poco::Net::TCPServerConnection::start() @ 0x11d5dfdf in /usr/bin/clickhouse
    4. Poco::Net::TCPServerDispatcher::run() @ 0x11d5f9f1 in /usr/bin/clickhouse
    5. Poco::PooledThread::run() @ 0x11e96119 in /usr/bin/clickhouse
    6. Poco::ThreadImpl::runnableEntry(void*) @ 0x11e91f7a in /usr/bin/clickhouse
    7. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    8. __clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
    (version 21.3.15.4 (official build))
  • https://t.me/clickhouse_ru
    @AleksandrVassiliev #233640 05:26 PM, 07 Sep 2021
    Добрый вечер! Подскажите пожалуйста как при работе с engine HDFS указать пользователя под которым будет читаться паркетный файл? Кластер без kerberos
  • https://t.me/clickhouse_ru
    ну если у вас пользователи не под default профилями ходят, тогда надо и в остальных профилях поменять
  • https://t.me/clickhouse_ru
    кто-то коннектится на tcp_port или на tls_port
    и не отправляет запрос и закрывает соединение 10.64.133.228 это случайно не адрес вашего мониторинга который пытается проверить живость clickhouse?
  • Это другой шард
  • @BBRSOFF #233644 05:58 PM, 07 Sep 2021
    Я просто напросто на одной из реплик конфиг не поменял)
    Пользователи используют профили default и read_only
  • https://t.me/clickhouse_ru
    если настройка не определена в профиле, она наследуется из профиля default
  • https://t.me/clickhouse_ru
    @ivolake #233646 06:08 PM, 07 Sep 2021
    здравствуйте
  • https://t.me/clickhouse_ru
    @ivolake #233647 06:08 PM, 07 Sep 2021
    подскажите, если какой-то способ удалять строки из таблиц?
  • https://t.me/clickhouse_ru
    alter drop from и тд, в доке написано, но лучше этого избегать, тяжелая операция
  • https://t.me/clickhouse_ru
    @ivolake #233650 06:17 PM, 07 Sep 2021
    потому что колончатая бд, да?
  • https://t.me/clickhouse_ru
    ну вроде того
  • https://t.me/clickhouse_ru
    ALTER TABLE xxxx DELETE WHERE

    читайте мутации
  • https://t.me/clickhouse_ru
    @ivolake #233653 06:20 PM, 07 Sep 2021
    спасибо
  • 08 September 2021 (91 messages)
  • https://t.me/clickhouse_ru
    оно размыто по официальной документации довольно сильно

    если у вас есть kubernetes
    то можно просто использовать https://github.com/Altinity/clickhouse-operator/

    если у вас statefull сервера
    то можно ansible прикрутить

    https://galaxy.ansible.com/search?deprecated=false&keywords=clickhouse&order_by=-relevance&page=1
    GitHub - Altinity/clickhouse-operator: The ClickHouse Operator creates, configures and manages ClickHouse clusters running on Kubernetes

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

  • @Alexcmd #233659 06:44 AM, 08 Sep 2021
    Дбрый день,
    подскажите, необходимо ли дополнительно настраивать clickhouse для работы с фукциями над строками вроде replaceRegexpOne ?
  • https://t.me/clickhouse_ru
    в целом по шагам
    вот так ставится сам clickhouse
    довольно просто
    https://clickhouse.tech/docs/en/getting-started/install/

    вот так ставится zookeeper
    https://phoenixnap.com/kb/install-apache-zookeeper
    лучше их ставить на разные сервера, или хотя бы чтобы /data/zookeeper и /var/lib/clickhouse были на разных физических дисках

    вот так конфигуриуется уже поставленный zookeeper внутрь clickhouse
    https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings_zookeeper
    ничего сложного просто файл .xml в /etc/clickhouse-server/config.d/ создаете с перечнем хостов кластера zk

    вот так кофигурируется SSL для доступа к clickhouse
    https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server_configuration_parameters-openssl
    тоже лучше отдельный файл в /etc/clickhouse-server/config.d заводить

    у вас какая задача стоит? глубоко самому разобраться? или просто быстрее настроить?
    Installation | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    нет ничего настраивать для этих функций не надо. надо чтобы функция поддерживалась вашей версией clickhouse-server
    ну либо была доступна через какой нибудь флаг в system.settings (обычно экспериментальные функции включаются через allow* флаги, перечень которых есть SELECT * FROM system.settings WHERE name LIKE '%allow%' OR name LIKE '%exper%'

    список функций поддерживаемых можно через SELECT * FROM system.functions узнать
  • спасибо!
  • https://t.me/clickhouse_ru
    @innopolis #233664 07:17 AM, 08 Sep 2021
    если query падает out of memory - buffer engine может помочь?
  • Buffer помогает при частых инсертах, out memory лечится уменьшением читаемых данных в запросе
  • https://t.me/clickhouse_ru
    https://docs.altinity.com/operationsguide/clickhouse-zookeeper/

    https://docs.altinity.com/operationsguide/security/clickhouse-hardening-guide/
    Care and Feeding of Zookeeper with ClickHouse

    Installing, configuring, and recovering Zookeeper

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

    проверьте на всякий случай
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-who-ate-my-memory/
  • https://t.me/clickhouse_ru
    @Aleksey_Veselov #233674 08:24 AM, 08 Sep 2021
    Всем привет!) подскажите плз, возможно ли в распределенной таблице использовать конструкцию LIMIT n OFFSET k BY column? пока у меня это не работает, вот думаю есть какой-то способ или нет, мб как с джойнами надо для распр. таблицы GLOBAL куда то всунуть - но пока выдает ошибку
  • https://t.me/clickhouse_ru
    Какой объем таблицы из mysql?
    Не смотрели в сторону словаря?
  • https://t.me/clickhouse_ru
    таблицы с движком mysql не хранят данные а каждый раз идет запрос в mysql

    Словари же будут хранится в памяти
  • MaterializedMySQL пока не советуете?
  • https://t.me/clickhouse_ru
    нет
  • багов много пока?
  • https://t.me/clickhouse_ru
    @unamedrus #233682 08:43 AM, 08 Sep 2021
    Делали китайцы для своих нужд, стоит отступить в сторону - что то не работает и не особо правят это.
    А команда Яндекса эту фичу не поддерживает в отличии от MaterializePostrgreSQL (который пилит Ксения и довольно активно правит всякие баги)
  • https://t.me/clickhouse_ru
    @innopolis #233683 08:44 AM, 08 Sep 2021
    кто-нибудь пробовал partial_merge в join для избежания out of memory?
  • https://t.me/clickhouse_ru
    5-10 гб нормально,
    В целом словарь нормально от 1кк до 10кк записей в нем
  • https://t.me/clickhouse_ru
    @innopolis #233687 08:57 AM, 08 Sep 2021
    кто-нибудь в датагрипе боролся с read time out?
  • https://t.me/clickhouse_ru
    socket_timeout увеличьте в advanced_settings в подключении
  • https://t.me/clickhouse_ru
    как раз пробую, 🤝
  • там 30 сек по умолчанию стоит
  • @slnnk #233691 09:41 AM, 08 Sep 2021
    Всем привет, на одном из серверов перестали отрабатывать ttl на всех таблицах, как на больших, так и на маленьких. Пробовал SYSTEM START TTL MERGES - не помогло. Установлены следующие настройки:
    ttl_only_drop_parts | 1
    merge_with_ttl_timeout | 7200
    Версия CH 21.7.7.47.
    Подскажите, куда копать, что посмотреть можно?
  • https://t.me/clickhouse_ru
    @ivymike_b #233696 10:50 AM, 08 Sep 2021
    привет всем. можно как-то запретить пользователю/роли создание таблиц MergeTree ?
  • @agcouper #233698 11:54 AM, 08 Sep 2021
    Привет. Не подскажате, а что делать с такой вот ошибкой:
    Not executing log entry queue-0000168330 of type DROP_RANGE for part 11_5379_5381_999999999_5382 because another DROP_RANGE or REPLACE_RANGE entry are currently executing.
    при этом все парты для этой таблицы отреплицировались, только эта ошибка в system.replication_queue висит
  • @pavel_maksimow #233701 01:07 PM, 08 Sep 2021
    Здравствуйте. Подскажите пожалуйста. Создал матвью:
    CREATE MATERIALIZED VIEW IF NOT EXISTS xl.logsapi_customer_visits (...)
    ENGINE = ReplacingMergeTree
    ORDER BY (CounterID, intHash32(ClientID), VisitID)
    AS SELECT *
    FROM logsapi_visits
    WHERE
    ClientID IN (
    SELECT DISTINCT ClientID FROM logsapi_visits
    WHERE notEmpty(`Purchase.ID`)
    )
    AND ClientID IN (
    SELECT DISTINCT ClientID FROM logsapi_clients
    WHERE Purchases > 0
    )

    При вставке данных в основную таблицу, в матвью данные не все попадают, не срабатывает условие фильтрации на основе данных другой таблицы:
    AND ClientID IN (
    SELECT DISTINCT ClientID FROM logsapi_clients
    WHERE Purchases > 0
    )
    Я правильно понимаю, что есть такое ограничения на запрос в матвью?
  • так на уже созданных они не будут отрабатывать... попробуйте на таблице сделать materialize ttl (но может быть больно в плане перекладывания всей таблицы если большая).
  • @slnnk ↶ Reply to #233702 #233703 01:16 PM, 08 Sep 2021
    Таблицы созданы давно, как и ttl на них. TTL отлично отрабатывал, но в один момент перестал на всех таблицах.
  • тогда ищите в логах... может у вас потоков не хватает в пуле
  • @dj_mixer #233705 01:19 PM, 08 Sep 2021
    там был специфичный event в логе
  • @slnnk ↶ Reply to #233705 #233706 01:23 PM, 08 Sep 2021
    Не помните какой именно? BackgroundPoolSize в пиках до 10, в среднем 5-6 при значении по-умолчанию 16.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233701 #233707 01:26 PM, 08 Sep 2021
    там скорее проблема с visits. MV не работает с таблицей, MV работает с блоком вставки. когда вы обращаетесь к visits, то это не вся таблица, а только текущий блок.
  • system.part_log включен? там можете узнать когда в последний раз отработал
    и уже в те дни логи ковырять
  • я прочитал об этом, поэтому добавил фильтрацию на основе данных другой таблицы. Но чет эта фильтрация не применяется
  • @410919535 #233710 01:29 PM, 08 Sep 2021
    Всем привет!
    Столкнулся со следующей проблемой:
    Есть кластер из 6 шардов без реплик, решили добавить ещё 6 реплик, конфигурация серверов идентичная.
    После добавления реплик в кластер и синхронизации данных реплицируемых таблиц на репликах постоянно наблюдаем повышенную утилизацию по cpu.system.
    Запросы на репликах отрабатывают примерно в 10 раз дольше, чем на основных нодах и идёт потребление cpu.system а не cpu.user как на основных нодах. Ошибок в логах нет.
    Подскажите в какую сторону копать?
    Версия 21.7.4.18
  • @slnnk ↶ Reply to #233708 #233711 01:31 PM, 08 Sep 2021
    К сожалению, не включен. Но спасибо за информацию! Пойду логи читать)
  • ищите где оно встало... + materialize ttl на мелкой таблице смотрите
    <Trace> MergeTreePartsMover: Selected 4 parts to move according to storage policy rules and 0 parts accordi
    ng to TTL rules, 19.57 KiB total

    <Debug> DB.TABLENAME (TTLBlockInputStream): Removed 0 rows with expired TTL from part 20210901-14_636_636_1
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233701 #233713 01:35 PM, 08 Sep 2021
    так себе запросы. я не знаю сколько там где строк, но такие запросы не видятся чем-то разумным - слишком большая нагрузка. Скажите лучше чего вы хотите добиться таким образом.
  • хотел, чтобы в матвью вставлялись визиты тех, кто совершал покупки
  • https://t.me/clickhouse_ru
    @gridleak #233716 01:45 PM, 08 Sep 2021
    Добрый день, а есть способ игнорить недоступные шарды в distributed таблице и возвращать только доступную часть данных (данные льются внутри дц в свой КХ), или только на уровне приложения таймаутиться и мержить ответы?
  • https://t.me/clickhouse_ru
    skip_unavailable_shards
  • https://t.me/clickhouse_ru
    Огромное спасибо, что-то не загуглилось)
  • https://t.me/clickhouse_ru
    @VBelyshev #233719 01:48 PM, 08 Sep 2021
    Всем привет. Подскажите плиз, можно ли нестандартную строку перевести в тип даты с указанием кастомной маски?
    '210908102322" -> 'YYMMDDHHmmss'
    formatDateTime() в обратную сторону
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233701 #233720 01:48 PM, 08 Sep 2021
    понятно. клиентов наверное у вас разумное количество и появляются они не 100 раз в секунду. Я бы сделал словарь по клиентам, и через него проверял что визит ненужный. Словарь сидит в памяти и апдейтится по каким-то правилам - можно подобрать подходящий для вашего случая.
  • спасибо, попробую
  • https://t.me/clickhouse_ru
    @AleksandrVassiliev #233722 02:18 PM, 08 Sep 2021
    Добрый день! HDFS engine, один паркетный файл. Без керберус. Корректно работал на версии 19.9.5.36 при обновлении на 21.8.5.7 таблица создается, но селект из неё ничего не возвращает, и нет ошибок. С чем это может быть связано и куда смотреть? Спасибо
  • https://t.me/clickhouse_ru
    @AleksandrVassiliev #233723 02:43 PM, 08 Sep 2021
    Создаю так:
  • https://t.me/clickhouse_ru
    @AleksandrVassiliev #233724 02:43 PM, 08 Sep 2021
    CREATE TABLE
    hdfs_engine_table(id_bs String, cell_id UInt32)
    ENGINE=HDFS('hdfs://host:8020/path/file1', 'Parquet')
  • https://t.me/clickhouse_ru
    @AleksandrVassiliev #233725 02:43 PM, 08 Sep 2021
    дополнительно ничего не конфигурирую
  • @BBRSOFF #233726 03:35 PM, 08 Sep 2021
    Ребят, возможно ли безопасно сделать alter table? Две таблицы
    Replicatedreplacemergetree и она же distributed
    Нужно добавить столбец и добавить его в ключ
    Или только пересоздание таблицы?
  • https://t.me/clickhouse_ru
    "и она же distributed"

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

    если просто добавить столбец без смены PRIMARY KEY
    сначала ALTER TABLE для ReplicatedReplacedMergeTree с ON CLUSTER .. чтобы на всех шардах прошло
    потом тоже самое делаете для distributed таблцы

    если primary key менять надо
    то только CREATE new_table
    и потом INSERT INTO new_table SELECT FROM old_table на одной реплике в каждом шарде (остальное релпицируется)
    потом CREATE TABLE ENGINE=Distributed уже поверх new_table ON CLUSTER
    и выбираете уже из новой таблицы а старую удаляете
  • https://t.me/clickhouse_ru
    а зачем вам добавлять столбец в PRIMARY KEY ...
    какая у него cardinality (сколько уникальных значений)? может проще просто добавить столбец?
  • Нет, нужно внести этот столбец в ключ, по которому дедуплицируются строки
    Насчёт "она же" не верно высказался
  • Order by ключ
  • надо добавить колонку и обновить ордер одним запросом

    ALTER TABLE table ADD COLUMN column Int32, MODIFY ORDER BY (old_column, column)
  • Спасибо большое, кажется то что нужно
  • https://t.me/clickhouse_ru
    а примари кей при этом поменяется или он разъедется с ордер бай?
  • PK останется старым
    начало ORDER BY должно совпадать с PK, но дальше не обязательно
  • https://t.me/clickhouse_ru
    тогда это не совсем поможет @BBRSOFF, потому что "нужно внести этот столбец в ключ, по которому дедуплицируются строки"
  • речь про replacing?
  • https://t.me/clickhouse_ru
    да. в вопросе было как добавить столбец в ключ Replicatedreplacemergetree
  • @BBRSOFF #233739 04:18 PM, 08 Sep 2021
    В документации сказано Движок отличается от MergeTree тем, что выполняет удаление дублирующихся записей с одинаковым значением ключа сортировки (секция ORDER BY, не PRIMARY KEY
  • The engine differs from MergeTree in that it removes duplicate entries with the same sorting key value (ORDER BY table section, not PRIMARY KEY).
  • @BBRSOFF #233741 04:19 PM, 08 Sep 2021
    То есть, изменение нужно вносить только в order by, как я понимаю
  • https://t.me/clickhouse_ru
    да, извините я спутал PRIMARY KEY и SORTING KEY

    sorting key менять можно
  • Теперь я запутался, почему мне не подходит этот вариант
  • да, всё верно

    ORDER BY отличный от PRIMARY KEY работает для Replacing/Summing/Aggregating таблиц, в них агрегации происходят по order by
  • https://t.me/clickhouse_ru
    судя по доке - да, по логике - нет :) теперь я запутался. хотя нет. всё круто. сори, что всех заставил усомниться в правильности ответа :)
  • https://t.me/clickhouse_ru
    единственный минус, это то что последняя колонка судя по всему не будет в индексе и соответственно для дедубликации будет больше чтений с диска. но это не точно :)
  • кажется сомнительно, КХ ведь запускает мерж не потому что надо какую строку дедуплицировать) а потому что может смержить несколько партов, соответственно в любом случае будет всё читать
  • https://t.me/clickhouse_ru
    спасибо! как всегда отличный ответ!
  • https://t.me/clickhouse_ru
    @lesikv #233749 04:33 PM, 08 Sep 2021
    Привет! Подскажите пожалуйста, кафка движок может содержать дубли?
  • он может писать дубли, особенно в старых версиях было много багов
  • https://t.me/clickhouse_ru
    @pxlvgg #233751 04:39 PM, 08 Sep 2021
    такой вопрос, есть бд, где 470 млн записей уже
  • https://t.me/clickhouse_ru
    @pxlvgg #233752 04:39 PM, 08 Sep 2021
    одно действие = одна запись с unix-time датой
  • https://t.me/clickhouse_ru
    @pxlvgg #233753 04:40 PM, 08 Sep 2021
    можно её сжать, чтобы например данные за целый день сохранялись, а посекундные записи удалялись? (и нужно, чтобы действия группировались, от одного человека, в определённом месте (таблица одна))
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #233750 #233754 04:47 PM, 08 Sep 2021
    я пишу несколькими потоками в кафка таблицу через insert и семплирование и потом в хдфс. У меня получается записей больше в итоге чем просто count() поверх запроса для инсерт. Я не могу понять на каком этапе дубли появляются
  • https://t.me/clickhouse_ru
    @lesikv #233755 04:47 PM, 08 Sep 2021
    то есть кафка движок не особо надежный?
  • Прошу уточнить, сработает ли modify order by, если используется устаревший синтаксис при создании таблиц, но КХ обновлен?
    И как поменять ключ шардирования для distributed таблицы, созданной так же в устаревшем синтаксисе? Modify...
  • если честно никогда не пробовал писать таким способом
  • modify order by должен отработать, а как поменять ключ шардирования без пересоздания distributed таблицы я не знаю)
  • Окей, завтра попробую, не хотелось бы что-то на ночь завалить)
    Спасибо большое
  • https://t.me/clickhouse_ru
    @pxlvgg ↶ Reply to #233753 #233763 05:56 PM, 08 Sep 2021
    вариантов нет?
  • https://t.me/clickhouse_ru
    @pxlvgg #233764 05:56 PM, 08 Sep 2021
    просто нет смысла хранить такую информацию (годами), если эта таблица уже 10 гб весит
  • мне кажется вам стоит почитать про движок SummingMergeTree, можно аггрегировать данные по нужным вам метрикам. Если я правильно понял вас
  • 10 гб это совсем мало для КХ
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #233753 #233767 06:43 PM, 08 Sep 2021
    Можно сделать рядом таблицу с движком AggregatingMergeTree, которая будет бессрочно хранить нужные вам агрегации (количество действий по пользователю за день, какие-нибудь суммы, строгие значения и т.п.), настроить её заполнение через MaterializedView, а для таблицы с сырыми данными настроить TTL, чтобы записи старше трёх месяцев, например, удалялись.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233764 #233768 06:51 PM, 08 Sep 2021
    может автор описался и хотел сказать про Tb? 10Гб - это небольшая киношка.
  • https://t.me/clickhouse_ru
    @aleksey1302 #233771 09:10 PM, 08 Sep 2021
    Привет! Сможет ли AggregatingMergeTree делать слияние массивов?
  • Сможет, что-то типа такого можно юзать как тип колонки SimpleAggregateFunction(groupArrayArray, Array(UInt8))
  • https://t.me/clickhouse_ru
    thx
  • 09 September 2021 (164 messages)
  • https://t.me/clickhouse_ru
    > сработает ли modify order by, если используется устаревший синтаксис при создании таблиц
    нет
    > distributed таблицы, созданной так же в устаревшем синтаксисе
    у distributed таблиц нет устаревшего синтаксиса
  • https://t.me/clickhouse_ru
    а можете объяснить что такое INSERT + семплирование?

    INSERT INTO kafka_table SELECT ... FROM .. SAMPLE BY ?
  • @subotic0 #233781 06:23 AM, 09 Sep 2021
    Подскажите разницу между дописыванием
    settings max_memory_usage = ...
    в конец запроса, и
    set max_memory_usage = ...
    перед запросом?
    в первом случае запрос по памяти так и продолжает валиться, во втором случае все ок отрабатывает
  • https://t.me/clickhouse_ru
    @rey_carter #233783 06:40 AM, 09 Sep 2021
    Всем привет!
    Коллеги, хочу попробовать изучить инструмент, понять для каких он целей и каков функционал.
    Подскажите с чего начать можно? может ссылки какие-то или книги?
  • @dj_mixer #233784 06:44 AM, 09 Sep 2021
    доброго времени суток, можете попробовать этот запрос и подсказать если в ваших версиях есть баг?
    и есть ли какой-то сеттинг который позволяет исключить?
    SELECT
    sum(q0.a2) AS a1, -- если поменять порядок то работает
    sum(q0.a1) AS a9
    FROM
    (
    SELECT
    1 AS a1,
    2 AS a2
    ) AS q0

    Query id: 1704a295-39c6-494b-a4cc-a241bfeb635d

    Received exception from server (version 21.3.12):
    Code: 47. DB::Exception: Received from clickhouse-01:9000. DB::Exception: Unknown identifier 'a1' in aggregate function 'sum(a1) AS a9'.
  • должен быть абсолютно одинаковый эффект если в консоли. скорее всего что то ещё грузит память параллельно и вы неудачно попали
  • @iburobin #233788 07:22 AM, 09 Sep 2021
    Коллеги, приветствую!
    Появился такой вопрос - каким способом правильнее всего с точки зрения быстроты сделать следующую операцию:
    1. Выполнить здоровенный запрос в PostgreSQL
    2. Создать таблицу в CH и загрузить в нее результаты запроса.

    В голове сразу пару решений - 1) в CH внешнюю таблицу подключить и с нее скопировать 2) сделать здоровенный структурированный файл с разделителями и потом его в CH загрузить.
    Мне кажется более красивым первый вариант, но вот смотрю примеры в Интернет и реально много людей работают через CSV файлики. Подскажите как правильнее сделать? Может есть еще варианты?
  • https://t.me/clickhouse_ru
    исследовать самому и проверить
  • https://t.me/clickhouse_ru
    @critskiy #233790 07:24 AM, 09 Sep 2021
    Потому, что данные ваши :)
  • https://t.me/clickhouse_ru
    Был такой же вопрос , но правдо не такая уж большая таблица . Сделал через python . Как идея была разделить по годам в python и так загрузить batch-ами
  • Коллеги, прошу помощи, уже не знаю куда смотреть.
  • https://t.me/clickhouse_ru
    Создать таблицу в клике и сделать селект напрямую через постгрес?
  • @iburobin #233794 07:46 AM, 09 Sep 2021
    да, в первом варианте
  • @iburobin #233795 07:46 AM, 09 Sep 2021
    Ну просто 2021 год а мы все файлики CSV делаем....
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233783 #233796 07:47 AM, 09 Sep 2021
    зависит от ваших преференций. Кто-то любит видосики смотреть (https://www.youtube.com/channel/UChtmrD-dsdpspr42P_PyRAw), другим документации хватает. Опять же есть https://kb.altinity.com/
  • https://t.me/clickhouse_ru
    @nyatmeat #233797 07:47 AM, 09 Sep 2021
    По крайней мере делаем что то вроде insert select from mysql('ip','db','user','pass') as tablename
  • https://t.me/clickhouse_ru
    ок, спасибо, ознакомлюсь
  • https://t.me/clickhouse_ru
    @Vitaly_Ivanov #233800 08:17 AM, 09 Sep 2021
    Друзья, подскажите:
    Есть старенький clickhouse версии 19.16, хочу обновить его до последней версии.
    Подскажите, могу ли я просто остановить старый бинарник на всех серверах кластера и запустить самый новый 21.9 ? Быкапа данных нет и сделать достаточно трудно по бюджету. Совместимость по запросам проверил.
  • @githubreleases_bot #233801 b o t 08:17 AM, 09 Sep 2021
    ClickHouse/ClickHouse description changed: v21.9.2.17-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.9.2.17-stable
    Release notes:
    ClickHouse stable release v21.9.2.17-stable
    Release v21.9.2.17-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.9.2.17-stable

  • https://t.me/clickhouse_ru
    Можно, только обратно откатиться не получится
  • https://t.me/clickhouse_ru
    А откатиться с потерей свежих данных можно?
  • https://t.me/clickhouse_ru
    @nyoroon #233804 08:23 AM, 09 Sep 2021
    Я так не пробовал, может быть придётся руками поковырять
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    @bvt123 #233806 08:34 AM, 09 Sep 2021
    кто-нибудь уже clickhouse-keeper в проде использует? Хотя бы в канареечном? Или пока всем страшно?
  • https://t.me/clickhouse_ru
    Он же вроде ещё pre-production
  • https://t.me/clickhouse_ru
    @724279396 #233808 08:47 AM, 09 Sep 2021
    Ребят, сорян за оффтоп, кто знает как в постгресе работать с таким типом?
  • https://t.me/clickhouse_ru
    @time_2_work #233809 09:14 AM, 09 Sep 2021
    а что это за тип ?
  • https://t.me/clickhouse_ru
    @Krashuevina #233810 09:15 AM, 09 Sep 2021
    Array(Nullable(Smth)), похоже
  • https://t.me/clickhouse_ru
    Pentaho Data Integrator - через графический интерфейс два квадратика соединить стрелочкой
  • В последней версии (v21.9.2.17) тоже валится.
  • Unknown identifier in aggregate function error when using same alias in different levels of query · Issue #28777 · ClickHouse/ClickHouse

    When same alias names are used in different levels of query in some cases "unknown identifier" errors are received. Does it reproduce on recent release? Yes, reproduces on all bui...

  • https://t.me/clickhouse_ru
    @akofi1e #233815 09:48 AM, 09 Sep 2021
    Всем привет, я хочу сделать join двух таблиц и в секции ON написать что-то типо table1.price = 10 (например). Мне кликхаус отвечает: No columns in one of equality side. А если ставлю знак >,< - то пишет, что они не поддерживаются. Хотя в документации я видел примеры с такими условиями в on
  • если inner то в where перенесите
  • https://t.me/clickhouse_ru
    я просто не понимаю, документация врёт?
  • мб в последних версиях так и можно
  • @l_dar #233819 10:10 AM, 09 Sep 2021
    Подскажите пожалуйста, как поменять движок у таблицы, которая уже имеет данные, много данных. Интересует переход на реплецируемый движок
  • @l_dar ↶ Reply to #233820 #233821 10:14 AM, 09 Sep 2021
    🙏
  • >сработает ли modify order by, если используется устаревший синтаксис при создании таблиц
    нет

    как-то данные по другому хранятся? интересно почему не сработает
  • https://t.me/clickhouse_ru
    @700793887 #233823 10:17 AM, 09 Sep 2021
    Подскажите как можно при Attach файлы от Detach файлы с одной таблицы в другую без фром, файлы физически помещаются в папку Detashed структура таблиц одинаковая, делаю Attach ругается - Cannot open file /var/lib/clickhouse-hdd/store/188/188f1b05-ad08-4297-988f-1b05ad081297/detached/attaching_202104_7_8_1/columns.txt, errno: 13, strerror: Permission denied
  • права?
  • https://t.me/clickhouse_ru
    Даны
  • Permission denied
  • https://t.me/clickhouse_ru
    @700793887 #233827 10:34 AM, 09 Sep 2021
    А вот так открыл на все файлы доступы теперь вот Cannot set modification time for file: /var/lib/clickhouse-hdd/store/188/188f1b05-ad08-4297-988f-1b05ad081297/detached/attaching_202104_7_8_1/, errno: 1, strerror: Operation not permitted
  • https://t.me/clickhouse_ru
    @700793887 #233828 10:34 AM, 09 Sep 2021
    При чем там нету каталога attaching_202104_7_8_1/
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #233829 10:48 AM, 09 Sep 2021
    здравствуйте, можно ли как-то сделать словарь по таблице в КХ, чтобы он обновлялся не по таймауту, а сразу, как только таблица поменялась?
  • https://t.me/clickhouse_ru
    @brbrbr #233832 10:58 AM, 09 Sep 2021
    Есть запрос, который согласно system.query_log, использует 12гб оперативки. Оборачиваю запрос во вьюху, делаю селект из вьюхи - падает по памяти (ограничение в 35гб на запрос), по system.query_log использует уже 45гб.
    Есть объяснение такому поведению КХ и рычаги управления этим?
    КХ 20.8
  • invalidate_query
  • https://t.me/clickhouse_ru
    так invalidate_query по таймауту запускается все равно.
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #233835 11:00 AM, 09 Sep 2021
    и можно попасть в окно между апдейтами, когда запрос не увидит данных в словаре, хотя они есть в исходной таблице
  • https://t.me/clickhouse_ru
    не видел такой механизм. Только invalidate query в интервале
  • https://t.me/clickhouse_ru
    @feduch #233837 11:06 AM, 09 Sep 2021
    Всем привет!

    У меня есть две таблички 1ая хранит значения потребления устройства каждую минуту. 2я события которые произошли в какой то момент времени с устройством.

    На графике мне нужно показать данные из обеих табличек, увидеть какие были события во время работы устройства.
    Например, есть данные потребления за 00:01:00 и 00:02:00, и событие которое произошло на этом устройстве в 00:01:30.
    Правильно понимаю, что ASOF JOIN поможет наложить события на данные потребления и все три временных точки будут в результате запроса?
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #233838 11:06 AM, 09 Sep 2021
    и еще вопрос, явный вызов
    SYSTEM RELOAD DICTIONARY не смотрит на invalidate_query? Потому что занимает времени столько же, сколько и без invalidate_query (само ```invalidate_query ```очень легкое и занимает ничтожное время)
  • https://t.me/clickhouse_ru
    @pxlvgg ↶ Reply to #233765 #233839 11:07 AM, 09 Sep 2021
    хм, просто не понятно, можно ли будет реализовать сжатие данных через неделю, чтобы те данные, которые были сохранены превращались в одну запись с определённым днём (точное время не нужно, нужна лишь дата)
  • https://t.me/clickhouse_ru
    @nyatmeat #233840 11:09 AM, 09 Sep 2021
    Ну если словарь маленький, то просто апдейт раз в 1-2 секунды будет оптимален, но если записей много, то легче сделать view от таблицы на которую смотрит словарь, и вывести просто max(updated_at)
  • https://t.me/clickhouse_ru
    @pxlvgg #233841 11:09 AM, 09 Sep 2021
    записей 470 млн, каждую секунду 150 новых записей
  • https://t.me/clickhouse_ru
    @nyatmeat #233842 11:13 AM, 09 Sep 2021
    Можно сделать какие-то извращения с апдейтом словаря
    1. Сделать скрипт который вызывает запрос на перезагрузку словаря
    2. Сделать процедуру напрямую в бд которая будет каким-то образом вызвать этот скрипт
    3. Сделать триггер на таблицу, и тригер будет вызывать процедуру
  • https://t.me/clickhouse_ru
    @nyatmeat #233843 11:13 AM, 09 Sep 2021
    Но это что-то из разряда оверхеда
  • https://t.me/clickhouse_ru
    триггеров в кликхаусе вроде как нет
  • https://t.me/clickhouse_ru
    @nyatmeat #233845 11:14 AM, 09 Sep 2021
    А, я думал словарь у вас тянет данные например с постргреса
  • https://t.me/clickhouse_ru
    @pxlvgg #233846 11:14 AM, 09 Sep 2021
    и да, такой вопрос уже задавался, но он так и не решён
    есть key1 (первичный), есть key2 — как сделать быстрый вывод статистики не по первичному ключу, а по key2
  • https://t.me/clickhouse_ru
    @pxlvgg #233847 11:15 AM, 09 Sep 2021
    потому что если по key1 искать, всё моментом, не больше 100 мс
    а если по key2, то вплоть до 15 сек может думать (ищет среди других записей), какая-то общая сортировка может есть?
  • https://t.me/clickhouse_ru
    статистика - понятие широкое. Какой конкретно запрос по key2?
  • https://t.me/clickhouse_ru
    @pxlvgg #233849 11:15 AM, 09 Sep 2021
    key2 в этом случае, ID пользователя
  • https://t.me/clickhouse_ru
    @pxlvgg #233850 11:15 AM, 09 Sep 2021
    а key1 это chat_id
  • https://t.me/clickhouse_ru
    так а запрос какой ? key2 IN (ID1, id2, id3, ... ) ?
  • https://t.me/clickhouse_ru
    @pxlvgg #233852 11:16 AM, 09 Sep 2021
    нет, WHERE user_id = ? и всё
  • projections в последних версиях появились как раз для этого случая
    https://clickhouse.tech/docs/ru//engines/table-engines/mergetree-family/mergetree/#projections
    MergeTree | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @pxlvgg #233854 11:16 AM, 09 Sep 2021
    вывод инфы о стате пользователя, может быть ещё date > (unix-time)
  • https://t.me/clickhouse_ru
    @pxlvgg ↶ Reply to #233853 #233855 11:17 AM, 09 Sep 2021
    ок, почитаю, спасибо
  • https://t.me/clickhouse_ru
    ну тут вариантов немного наверное - придется держать вьюху сортированную по user_id , как первичному ключу. (Собственно что и делают projections автоматически только, как я понял)
  • но возможно достаточно чтобы PRIMARY KEY был chat_id, user_id, так не пробовали?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233852 #233858 11:19 AM, 09 Sep 2021
    лучше сделать в определении таблицы order by user_id, chat_id - user ведь всегда под руками и его кардиналити должна быть ниже. По возможности не сканировать всю таблицу, ограничивая запросы по времени.
  • https://t.me/clickhouse_ru
    @pxlvgg ↶ Reply to #233857 #233859 11:20 AM, 09 Sep 2021
    пробовали, не очень помогло вроде бы (давно было, может попробую потом ещё раз)
  • https://t.me/clickhouse_ru
    @pxlvgg ↶ Reply to #233858 #233860 11:21 AM, 09 Sep 2021
    то есть первичный chat_id, а order by user_id и потом уже chat_id?
  • https://t.me/clickhouse_ru
    Это не поможет, потому что в итоге просканит все блоки все равно, потому что оно не знает какие user_id лежат внутри каждого блока
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233860 #233862 11:21 AM, 09 Sep 2021
    нет, так не получится. просто сделайте order by user_id, chat_id
  • https://t.me/clickhouse_ru
    @pxlvgg ↶ Reply to #233862 #233863 11:22 AM, 09 Sep 2021
    но 90% запросов идут на статистику чатов в целом, это не сломает скорость вывода статы всего чата?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233863 #233864 11:24 AM, 09 Sep 2021
    сломает. но маловероятно что у вас нет id юзера в запросе. Или узнайте его как-нибудь.
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #233846 #233865 11:27 AM, 09 Sep 2021
    Сделайте основную таблицу по key1, а к ней вторую - со статистикой по key2. И вторую заполняйте через MV по мере добавления записей в первую. И то и то будет быстро работать.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233865 #233866 11:28 AM, 09 Sep 2021
    этот трюк и оптимизировали, когда делали projection. Почитайте про них
  • это обычно две разных таблицы, в одной сырые данные которые хранятся ограниченное время и во второй агрегированные данные которые хранятся долго, materialized view пишет из первой во вторую
  • https://t.me/clickhouse_ru
    @pxlvgg #233868 11:33 AM, 09 Sep 2021
    то есть данные из двух таблиц нужно будет запрашивать одновременно?
  • https://t.me/clickhouse_ru
    @pxlvgg #233869 11:33 AM, 09 Sep 2021
    а сделать это в рамках одной таблицы нельзя? (там есть параметр count, сделать чтобы значения прибавлялись просто через неделю)
  • https://t.me/clickhouse_ru
    @pxlvgg #233870 11:34 AM, 09 Sep 2021
    а дата изменялась на 00:00 того дня
  • вам надо одновременно и count и сырые данные видеть? Обычно нужны агрегированные данные для статистики. А по сырым уже какие-то точечные запросы
  • https://t.me/clickhouse_ru
    @pxlvgg ↶ Reply to #233871 #233872 11:38 AM, 09 Sep 2021
    да, не проблема просто суммировать count (по умолчанию 1), а сжатые данные > 1 будут, = SUM(count) — кол-во сообщений
  • ну так если вы можете агрегировать на лету, вам не надо делать запросы по сырым данным
  • https://t.me/clickhouse_ru
    @fedya_kisa #233874 11:41 AM, 09 Sep 2021
    Всем привет! У меня есть потребность привести время в формате TimeStamp к часовому поясу UTC-2. Хотел использовать функцию toDateTime, однако не нашел полного списка часовых поясов, которые поддерживаются КХ. Может кто знает как можно решить проблему?
  • список тайм зон можно так глянуть select * from system.time_zones
  • https://t.me/clickhouse_ru
    Отличный совет, большое спасибо!
  • https://t.me/clickhouse_ru
    @generalovav #233878 12:17 PM, 09 Sep 2021
    Добрый день. Можете подсказать, как сделать ГЕОрепликацию при системе кластеризации ? т.е. у меня есть Distributed таблицы на балансире и Replicated таблицы на каждом из шардов.
  • https://t.me/clickhouse_ru
    @olegwww #233879 12:32 PM, 09 Sep 2021
    Всем привет! Пытаюсь понять как работают партиции в КХ. В доке сказано, что при выполнении FREEZE PARTITION создается hardlink в определенной папке, и это есть аналог бекапа. Если мы после этого заапдейтим или удалим часть данных, по логике оно затронет и бекап? Или я что-то упустил?
  • @BBRSOFF #233881 01:01 PM, 09 Sep 2021
    Как лучше переливать данные из таблицы в таблицу? insert into table1(a,b,c) select a,b,c from table 2 работает ооооочень медленно. Структура таблиц не сильно, но отличается.
  • https://t.me/clickhouse_ru
    @mrpavelk #233882 01:17 PM, 09 Sep 2021
    Всем привет. Если партиция по дате настроена, нужно ли чтоб колонка с датой была монотонно возрастающей? Если да, то можно ли сделать ре-индекс партиции после ее заполнения?
  • https://t.me/clickhouse_ru
    @innopolis #233883 01:21 PM, 09 Sep 2021
    как оптимизировать тяжелые joinы в кх?
  • https://t.me/clickhouse_ru
    Сделать легкими?)
  • https://t.me/clickhouse_ru
    В кх на программном уровне правая таблица в RAM при джоине держится. Поэтому, может и есть какое-то специфичное для кх решение)
  • https://t.me/clickhouse_ru
    лучший способ - отказаться от них
    1. распилить на словари
    2. вставлять в кх уже поджойненные данные
  • https://t.me/clickhouse_ru
    есть какие-то минусы, если всегда использовать partial_merge?
  • https://t.me/clickhouse_ru
    Есть еще Join движок, или не рекомендуется?
  • https://t.me/clickhouse_ru
    А всё, нашёл, optimize есть и оно само автоматически запускается к тому же
  • https://t.me/clickhouse_ru
    кстати, не понял - когда его применять вообще, т к он также в RAM все держит
  • https://t.me/clickhouse_ru
    он не про это
  • https://t.me/clickhouse_ru
    А зачем он?
  • https://t.me/clickhouse_ru
    @nyoroon #233893 01:27 PM, 09 Sep 2021
    ну в плане механизм джойна не меняется
  • https://t.me/clickhouse_ru
    @dmitriynvkv #233894 01:27 PM, 09 Sep 2021
    а ок
  • https://t.me/clickhouse_ru
    @dmitriynvkv #233895 01:27 PM, 09 Sep 2021
    это пнтн
  • https://t.me/clickhouse_ru
    @pxlvgg ↶ Reply to #233872 #233896 01:31 PM, 09 Sep 2021
    а вариант сделать так: сначала записывать сырые данные, потом в полночь искать эти данные, удалять за один день через ALTER, после чего вставлять новую запись с данными за день, какие проблемы могут быть?
  • Объем - проблема)
  • он быстрее работает чем делать джойн с нуля, так как не надо перечитвать правую таблицу. Если данные меняются редко, можно очень сильно сэкономить.
  • https://t.me/clickhouse_ru
    @pxlvgg ↶ Reply to #233898 #233900 01:41 PM, 09 Sep 2021
    объем чего?
  • Записей. Как всего, так и удаляемых. Альтерить то надо по строке..
  • https://t.me/clickhouse_ru
    @pxlvgg #233902 01:43 PM, 09 Sep 2021
    а да..
  • https://t.me/clickhouse_ru
    Репликацию используете? Лучше на 21.8 обновляйтесь, она LTS
  • Проще collapsingmergetree и забыл.
  • https://t.me/clickhouse_ru
    Да, используем
    Спасибо! Про LTS хороший совет!
  • https://t.me/clickhouse_ru
    @pxlvgg ↶ Reply to #233904 #233906 01:46 PM, 09 Sep 2021
    оно сразу сжимает информацию? просто у каждого сообщения есть свой id, и нужно иногда удалять сообщения за срок (например 1 час)
  • https://t.me/clickhouse_ru
    @pxlvgg #233907 01:46 PM, 09 Sep 2021
    но удалять можно только 24 часа, график для ответа генерируется за неделю, то есть дальше недели данные в секундах и по ID не нужны
  • В фоне. Главное доступность актуальной версии по флагу sign
  • https://t.me/clickhouse_ru
    Теоретически даунгрейд возможен, но это сильно зависит от того, какими фичами вы пользуетесь.
    Воздержитесь от альтеров первое время.
    TTL используете?
    Соберите список настроек из system.settings. Когда все начнет тормозить, будете знать, что можно покрутить.
  • https://t.me/clickhouse_ru
    Не совсем данные, но по-другому.
  • https://t.me/clickhouse_ru
    от TTL отказались, удаляем запросом ALTER partition раз в несколько месяцев
    Спасибо!

    А как лучше, сразу все инстансы остановить обновить и запустить, или по очереди сервера обновлять?
  • insert into … settings max_insert_threads = … - если ресурсы ЦПУ позволяют, optimize_on_insert = 0 - потом будет больше мержей и снова нужны будут ресурсы, но вставит намного быстрее
  • Константин, моё почтение
  • https://t.me/clickhouse_ru
    сразу все, слишком большая разница между версиями
  • https://t.me/clickhouse_ru
    SYSTEM RELOAD DICTIONARY специально сделан для внеочередного полного обновления словаря.
    Для частичного обновления надо update_field указать
  • https://t.me/clickhouse_ru
    Спасибо! Хорошие советы!)
  • https://t.me/clickhouse_ru
    звучит как реизобретение GraphiteMergeTree
    https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/graphitemergetree/
    GraphiteMergeTree | Документация ClickHouse

    GraphiteMergeTree Движок предназначен для прореживания и агрегирования/усреднения (rollup) данных Graphite. Он может быт

  • https://t.me/clickhouse_ru
    @VBelyshev #233919 03:39 PM, 09 Sep 2021
    Коллеги, а keeper_server через IPv6 работает?
    2021.09.09 18:38:04.563034 [ 7394 ] {} <Error> Application: DB::Exception: Cannot allocate RAFT instance
    2021.09.09 18:38:18.649318 [ 7413 ] {} <Error> RaftInstance: got exception: open: Address family not supported by protocol
  • @pavel_maksimow #233920 03:45 PM, 09 Sep 2021
    Подскажите, что указывается в секции [TO[db.]name]?

    Из справки:
    Материализованные представления
    CREATE MATERIALIZED VIEW [IF NOT EXISTS] [db.]table_name [ON CLUSTER] [TO[db.]name] [ENGINE = engine] [POPULATE] AS SELECT ...
  • Имя таблицы в которую вы хотите писать данные, если не указать TO, кликхаус сам создаст неявную таблицу, обычно рекомендуется указывать, потом меньше проблем с поддержкой
  • спасибо
  • https://t.me/clickhouse_ru
    эта конструкция позволяет пересоздавать матвью без потери данных
  • рекомендую посмотреть, всё что надо знать про матвью

    https://www.youtube.com/watch?v=1LVJ_WcLgF8&t=7596s

    https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf
  • благодарю, посмотрю
  • https://t.me/clickhouse_ru
    @Andproxy #233926 04:11 PM, 09 Sep 2021
    Всем салют👋, вопрос по мониторингу клика метриками прометеуса... При установке клика сразу под капотом есть возможность включить экспортер метрик, может быть кто-то вкурсе, можно ли к метрикам внутреннего экспортера прикрутить допустим свой query.yml со своими "экзотическими метриками"?🤔
  • https://t.me/clickhouse_ru
    @agnek #233928 04:47 PM, 09 Sep 2021
    Добрый день.
    Помогите, пожалуйста, с проблемой. Пытаюсь из клика получить доступ к данным в postgresql. Столкнулся с двумя проблемами:
    1. При попытке сделать БД типа PostgreSQL пробую сделать запрос SHOW TABLES и получаю ошибку PostgreSQL table "*****" does not exist: While executing Tables. (вместо звездочек имя таблицы). Причем такой таблицы нету реально, есть партиционированная таблица в pg с похожим именем.
    2. При попытке сделать select из таблицы в pg запрос не завершается, хотя все строчки вернулись. Ну, пробую сделать SELECT * FROM postgresql() LIMIT 1. Мне возвращается одна строчка, но запрос не завершается. Лечится только перезапуском клика (в другой консоли вижу вечный запрос в SHOW PROCESSLIST)
  • https://t.me/clickhouse_ru
    какая версия clickhouse?
    если меньше 21.8 то лучше обновиться
  • https://t.me/clickhouse_ru
    @agnek ↶ Reply to #233930 #233931 04:55 PM, 09 Sep 2021
    21.8.4
  • https://t.me/clickhouse_ru
    а со стороны Postgres таблица из которой выборку делаете она какая то необычная? партиционированная?
  • https://t.me/clickhouse_ru
    @agnek ↶ Reply to #233932 #233933 04:56 PM, 09 Sep 2021
    Да, партиционированная
  • https://t.me/clickhouse_ru
    возможно в этом проблема, сможете на docker-compose сделать минимально воспроизводимый пример?
  • https://t.me/clickhouse_ru
    @agnek ↶ Reply to #233934 #233935 04:57 PM, 09 Sep 2021
    Попробую в ближайшее время.
  • https://t.me/clickhouse_ru
    пока нет
    https://github.com/ClickHouse/ClickHouse/issues/20200
    Prometheus endpoint improvements · Issue #20200 · ClickHouse/ClickHouse

    #10571 Prometheus metrics contain illegal character sequence, ensure correct type is reported (some metrics are floats, see ClickHouse/clickhouse_exporter#44 ) #10043 Export sql query results to pr...

  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @zholmyrza_t #233939 05:36 PM, 09 Sep 2021
    Всем привет! Есть у кого нибудь гайд по добавлению новых нод к существующему кластеру?
    Как я вижу порядок действий.:
    1. Установить и настроить инстансы БД на новых серверах также как на остальных нодах.(нужна ли перезагрузка для перечитки конфиг кластера?)
    2. Добавить в нодах конфиг кластера новые шарды + реплики.
    3. Выполнить ребаланс весов в зависимости от кол-во добавленных нод.
    4. Создать такие же таблицы. ReplicatedMergeTree и Distributed
  • https://t.me/clickhouse_ru
    вот прямо седня статья https://habr.com/ru/company/tuturu/blog/576992/
    Репликация ClickHouse без костылей: ожидание и реальность

    Про ClickHouse есть много разной информации, но мало про то, как готовить инфраструктуру с ним. Мы потратили примерно полгода вялого набивания шишек, чтобы это заработало именно так, как нас...

  • https://t.me/clickhouse_ru
    @pxlvgg ↶ Reply to #233918 #233942 05:55 PM, 09 Sep 2021
    в нём можно будет получать информацию по дням, от определённого человека?
  • https://t.me/clickhouse_ru
    @pxlvgg #233943 05:55 PM, 09 Sep 2021
    первый раз слышу о Graphite вообще (мне он не нужен, если это софт какой-то, лишь нужно сжатие, чтобы получать стату своими средствами)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233896 #233946 06:51 PM, 09 Sep 2021
    зачем так хитро с графитом? Им вобще кто-то пользуется, кроме тех кто сделал? В КХ есть специально придуманная для вашей задачи AggregatingMergeThree. Почитайте про нее.

    Если вкратце, то вы как обычно делаете вставку в основную таблицу по 10-100к строк, затем через MV частично аггрегируете этот блок :

    create materialized view metrics ENGINE = AggregatingMergeTree order by (id,ts) as
    SELECT id , toStartOfDay(ts) ts, avgState(temp_val) temp_val, countState() qty
    FROM metrics
    GROUP BY id, ts;

    в результате в таблице в которую пишет MV будут лежать не конечные аггрегированные значения, а промежуточные, с типом AggregateFunction. Их можно легко слить друг с другом. Скажем для avg это два числа sum и count (потом можно поделить для получения среднего). Для слияния двух пар состояний мы складываем суммы и каунты. Для других аггрегационных функций состояния сложнее и могут занимать много места (скажем для groupArray - это все элементы массива). Для sum наоборот - все слишком просто и состояние равно результату функции, поэтому придуманы SimpleAggregateFunction, которые легче, но позволяют согласовать синтаксис типов данных в функциях выполняющих доаггрегацию (-Merge).

    В обычном процессе мерджинга партов все такие состояния сливаются, и вы получаете почти то, что хотели - аггрегированные за сутки данные. Причем результаты доступны в любой момент, и без скриптов что-то там стирающих в ночи.
  • https://t.me/clickhouse_ru
    @pxlvgg ↶ Reply to #233946 #233947 07:04 PM, 09 Sep 2021
    ого, спасибо, запомню
  • @s4851 ↶ Reply to #233946 #233948 07:04 PM, 09 Sep 2021
    А если идет удаление данных из исходной таблицы на MV это же не отражается?
    В таком случае надо чистить MV отдельно?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #233948 #233949 07:09 PM, 09 Sep 2021
    почистить будет непросто. лучше не удалять. "что написано пером - не вырубишь...." Для суммы есть старый бухгалтерский трюк под названием сторнирование - сделать отрицательную проводку. Просто вставляйте строку с минусовым значением, сумма и уменьшится.
  • @s4851 ↶ Reply to #233949 #233950 07:11 PM, 09 Sep 2021
    Это понятно, что так идеологически правильно.
    Но на Alter Delete из исходной таблицы MV никак не реагирует?
  • https://t.me/clickhouse_ru
    @bvt123 #233951 07:13 PM, 09 Sep 2021
    никак не реагирует. MV это просто insert trigger, так к ней и надо относится, никаких связей с таблицами нет, кроме указанного инсерта.
  • https://t.me/clickhouse_ru
    @bvt123 #233952 07:14 PM, 09 Sep 2021
    вобще с alter delete поаккуратнее, он на то и alter, а не просто delete как в mysql. Там весь парт перезаписывается.
  • https://t.me/clickhouse_ru
  • @milovidov_an #233954 07:52 PM, 09 Sep 2021
    Готов changelog для 21.9:
    https://github.com/ClickHouse/ClickHouse/blob/master/CHANGELOG.md
    ClickHouse/CHANGELOG.md at master · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    файлы/парты immutable. Мутации и вообще любые операции создают новые парты, и удаляю старые, таким образом в shadow остаются старые не мутированные парты.
  • https://t.me/clickhouse_ru
    очень просто, создаете реплики в другом датацентре, и настраиваете load_balancing что бы запросы выполнялись на репликах внутри датацентра.

    >Distributed таблицы на балансире
    а зачем такое извращение?
  • https://t.me/clickhouse_ru
    @pxlvgg ↶ Reply to #233953 #233959 08:57 PM, 09 Sep 2021
    а с ReplacingMergeTree будет работать?
  • https://t.me/clickhouse_ru
    вообще да, но у вас нет
  • https://t.me/clickhouse_ru
    @pxlvgg #233961 08:58 PM, 09 Sep 2021
  • 10 September 2021 (106 messages)
  • https://t.me/clickhouse_ru
    @zholmyrza_t #233973 03:50 AM, 10 Sep 2021
    Можно ли добавить в конфиг файл новые шарды, не перезагружая имеющиеся ноды?
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    3й непонятно что вы хотите после "ребаланса весов" перераспределения данных не будет
    см. тут https://github.com/ClickHouse/ClickHouse/issues/13574

    4й пункт для новых нод лучше сделать до того как вы туда данные лить начнете =)

    remote_servers нужен только для distributed и ReplicatedMergeTree про него ничего не знает
    Self-balancing architecture: Moving parts between shards · Issue #13574 · ClickHouse/ClickHouse

    Issue: So far ClickHouse as a data store shifts the responsibility of the balancing to an operator to provide inbound data flow in a balanced manner - that is to say, once data is written to any of...

  • @dj_mixer #233976 05:44 AM, 10 Sep 2021
    как запилить сеттинг в clickhouse-format? :) (—param не работает)
    а то в реальной жизни не хватает дефолтных сеттингов?
    Code: 306, e.displayText() = DB::Exception: Maximum parse depth (1000) exceeded. Consider rising max_parser_depth parameter., Stack trace (when copying this message, always include the lines below):
  • https://t.me/clickhouse_ru
    Интересно, спасибо!
  • https://t.me/clickhouse_ru
    @RT_1_98 #233980 08:10 AM, 10 Sep 2021
    на КХ посыпались ошибки с сегфолтом на определённых запросах на ровном месте - подскажите куда копать?
    Изменений в базе и версии КХ не было, началось сегодня - КХ живёт в виртуалке, на самой ОС никаких ошибок не видно.

    в логах такое:
    2021.09.10 11:10:22.684744 [ 6685 ] {} <Fatal> BaseDaemon: ########################################
    2021.09.10 11:10:22.684909 [ 6685 ] {} <Fatal> BaseDaemon: (version 21.8.5.1, build id: 1BF2B09234CE9706
    918B9E76519A9E319B3BA0C9) (from thread 6441) (query_id: 1978f5ff-0bcd-434f-ad29-436bc5348736) Received s
    ignal Segmentation fault (11)
    2021.09.10 11:10:22.685034 [ 6685 ] {} <Fatal> BaseDaemon: Address: NULL pointer. Access: read. Unknown
    si_code.
    2021.09.10 11:10:22.685193 [ 6685 ] {} <Fatal> BaseDaemon: Stack trace: 0x39d10dc 0x563bc89 0x563d72a 0x
    5637507 0x56379c5 0x5afcd2d 0x5afd61c 0x5a158e9 0x5997e60 0x59e9595 0x5541ba3 0x562dccc 0x562f97d 0x5968
    baf 0x5969b4c 0x71cb6e7 0x7229d7d 0x734fc42 0x73024b4 0x7f698397beae 0x7f69823be89f
    2021.09.10 11:10:22.685339 [ 6685 ] {} <Fatal> BaseDaemon: 3. ? @ 0x39d10dc in /usr/bin/clickhouse
    2021.09.10 11:10:22.685413 [ 6685 ] {} <Fatal> BaseDaemon: 4. ? @ 0x563bc89 in /usr/bin/clickhouse
    2021.09.10 11:10:22.685525 [ 6685 ] {} <Fatal> BaseDaemon: 5. ? @ 0x563d72a in /usr/bin/clickhouse
    2021.09.10 11:10:22.685684 [ 6685 ] {} <Fatal> BaseDaemon: 6. DB::CHJIT::compileModule(std::function<voi
    d (llvm::Module&)>) @ 0x5637507 in /usr/bin/clickhouse
    2021.09.10 11:10:22.685814 [ 6685 ] {} <Fatal> BaseDaemon: 7. DB::compileAggregateFunctons(DB::CHJIT&, s
    td::vector<DB::AggregateFunctionWithOffset, std::allocator<DB::AggregateFunctionWithOffset> > const&, st
    d::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) @ 0x56379c5 in /usr/bin/c
    lickhouse
    2021.09.10 11:10:22.685940 [ 6685 ] {} <Fatal> BaseDaemon: 8. DB::Aggregator::compileAggregateFunctions(
    ) @ 0x5afcd2d in /usr/bin/clickhouse
    2021.09.10 11:10:22.686014 [ 6685 ] {} <Fatal> BaseDaemon: 9. DB::Aggregator::Aggregator(DB::Aggregator:
    :Params const&) @ 0x5afd61c in /usr/bin/clickhouse
    2021.09.10 11:10:22.686127 [ 6685 ] {} <Fatal> BaseDaemon: 10. DB::AggregatingStep::transformPipeline(DB::QueryPipeline&, DB::BuildQueryPipelineSettings const&) @ 0x5a158e9 in /usr/bin/clickhouse
    2021.09.10 11:10:22.686268 [ 6685 ] {} <Fatal> BaseDaemon: 11. DB::ITransformingStep::updatePipeline(std::vector<std::unique_ptr<DB::QueryPipeline, std::default_delete<DB::QueryPipeline> >, std::allocator<std::unique_ptr<DB::QueryPipeline, std::default_delete<DB::QueryPipeline> > > >, DB::BuildQueryPipelineSettings const&) @ 0x5997e60 in /usr/bin/clickhouse
    2021.09.10 11:10:22.686396 [ 6685 ] {} <Fatal> BaseDaemon: 12. DB::QueryPlan::buildQueryPipeline(DB::QueryPlanOptimizationSettings const&, DB::BuildQueryPipelineSettings const&) @ 0x59e9595 in /usr/bin/clickhouse
    2021.09.10 11:10:22.686512 [ 6685 ] {} <Fatal> BaseDaemon: 13. DB::InterpreterSelectWithUnionQuery::execute() @ 0x5541ba3 in /usr/bin/clickhouse
    2021.09.10 11:10:22.686562 [ 6685 ] {} <Fatal> BaseDaemon: 14. ? @ 0x562dccc in /usr/bin/clickhouse
    2021.09.10 11:10:22.686668 [ 6685 ] {} <Fatal> BaseDaemon: 15. DB::executeQuery(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<DB::Context>, bool, DB::QueryProcessingStage::Enum, bool) @ 0x562f97d in /usr/bin/clickhouse
    2021.09.10 11:10:22.686815 [ 6685 ] {} <Fatal> BaseDaemon: 16. DB::TCPHandler::runImpl() @ 0x5968baf in /usr/bin/clickhouse
    2021.09.10 11:10:22.686931 [ 6685 ] {} <Fatal> BaseDaemon: 17. DB::TCPHandler::run() @ 0x5969b4c in /usr/bin/clickhouse
    2021.09.10 11:10:22.687048 [ 6685 ] {} <Fatal> BaseDaemon: 18. Poco::Net::TCPServerConnection::start() @ 0x71cb6e7 in /usr/bin/clickhouse
    2021.09.10 11:10:22.687122 [ 6685 ] {} <Fatal> BaseDaemon: 19. Poco::Net::TCPServerDispatcher::run() @ 0x7229d7d in /usr/bin/clickhouse
    2021.09.10 11:10:22.687237 [ 6685 ] {} <Fatal> BaseDaemon: 20. Poco::PooledThread::run() @ 0x734fc42 in /usr/bin/clickhouse
  • https://t.me/clickhouse_ru
    @RT_1_98 #233981 08:10 AM, 10 Sep 2021

    2021.09.10 11:10:22.687365 [ 6685 ] {} <Fatal> BaseDaemon: 21. Poco::ThreadImpl::runnableEntry(void*) @ 0x73024b4 in /usr/bin/clickhouse
    2021.09.10 11:10:22.687485 [ 6685 ] {} <Fatal> BaseDaemon: 22. start_thread @ 0x8eae in /lib64/libpthread-2.32.so
    2021.09.10 11:10:22.687607 [ 6685 ] {} <Fatal> BaseDaemon: 23. __clone @ 0xff89f in /lib64/libc-2.32.so
  • https://t.me/clickhouse_ru
    @RT_1_98 #233982 08:15 AM, 10 Sep 2021
    причём падает на одном конкретном запросе (далеко не самом тяжёлом) и после рестарта КХ первый раз он выполняется, а следующий за ним гарантированно ведёт к сегфолту
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/28524
    https://github.com/ClickHouse/ClickHouse/issues/28048
    Received signal Segmentation fault (11) when reading LowCardinality(String) · Issue #28524 · ClickHouse/ClickHouse

    I have the following in the logs 2021.09.02 13:04:47.539273 [ 119318 ] {} <Fatal> BaseDaemon: (version 21.7.8.58 (official build), build id: 95F91F78B10AC6F0E542A4C4F8D7B8162144DE39) ...

  • https://t.me/clickhouse_ru
    а можете попробовать сделать какой то минимально воспроизводимый пример?
    с данными с какими нибудь
  • https://t.me/clickhouse_ru
    вот тут даже не знаю - там в БД около 100 ГБ данных и запросы с использованием нескольких таблиц
  • https://t.me/clickhouse_ru
    @oksana_ds #233987 08:25 AM, 10 Sep 2021
    Привет, хочу оптимизировать матвью
    Есть возможность array перевести в tuple? Хочу фильтровать подзапросы с помощью col_name in ()
  • https://t.me/clickhouse_ru
    А что мешает точно так же с массивом делать? Не думаю что будет разница из-за типа
  • https://t.me/clickhouse_ru
    @oksana_ds #233989 08:31 AM, 10 Sep 2021
    Решили с помощью has, а не in, просто in со списками не работают
  • https://t.me/clickhouse_ru
    @nyoroon #233990 08:32 AM, 10 Sep 2021
    Работает
  • https://t.me/clickhouse_ru
    @nyoroon #233991 08:32 AM, 10 Sep 2021
    IN "компилится" в has()
  • @dj_mixer #233992 08:36 AM, 10 Sep 2021
    спрашивал раньше, может сейчас будут идеи...
    вопрос всем.
    есть идеи как сделать запросом комбинации всех значений из одной колонки?

    C
    1
    2
    3

    result:
    Comb
    1
    2
    3
    1,2
    1,3
    2,3
    1,2,3
  • https://t.me/clickhouse_ru
    Да кстати, спасибо
  • @dvatlin #233996 09:19 AM, 10 Sep 2021
    Всем привет! Вопрос по ClickHouse JDBC driver.
    Как правильно в таком запросе использовать метод data?
    stmt
    .write()
    .sql(s"INSERT INTO $dbName.$tableName VALUES ('Ivan', 'Ivanov', 35, 'Developer', 4)")
    .data(???)
    .send();
  • Покажите запрос
  • джойните или делаете dictGet?
  • ну сделайте dictGet
  • да, словари не предназчены для джойна
  • @vvvjhaq #234007 10:32 AM, 10 Sep 2021
    Ребят, подскажите
    Есть редкие запросы insert into select id,b,c from tab final where id in (200К id)
    Запрос в одну партицию.
    Они выполняются медленно ~15-20сек
    Хочу их кратно ускорить. CPU-36 физ ядер, он курит. свободной памяти 200GB.
    Сам запрос select долго выполняется.
    Видимо, нужны настройки, которые поднимут скорость выполнения.
    max_threads=36
    max_final_threads=16
    max_block_size=65K
    max_insert_block_size=1KK
  • https://t.me/clickhouse_ru
    какой тип и формат у id ?
  • UInt64
  • https://t.me/clickhouse_ru
    он в primary key ?
    если нет может быть какой то bloom filter index поможет скипнуть парты, но только если id не распределены равномерно...
    если равномерно то нет не поможет

    попробуйте https://github.com/Slach/clickhouse-flamegraph/
    может быть сможете понять куда именно упирается по CPU
    в FINAL или в WHERE
    GitHub - Slach/clickhouse-flamegraph: CLI utility for build flamegraph based on system.trace_log

    CLI utility for build flamegraph based on system.trace_log - GitHub - Slach/clickhouse-flamegraph: CLI utility for build flamegraph based on system.trace_log

  • в primary
    равномерно
    cpu нагрузки вообще не показывает, la~1,5
  • https://t.me/clickhouse_ru
    то есть max_final_threads не помогает ускорить?

    надо профилировать включать trace_log
  • помогает, но совсем чуть-чуть
  • https://t.me/clickhouse_ru
    @700793887 #234015 11:56 AM, 10 Sep 2021
    Можете направить на путь истинный, таблица делаю с нее Detach партиции переношу в другую таблицу(такую же по структуре на том же сервере), а она не видит партиции, стал смотреть они именуются по разному, как можно это победить
  • https://t.me/clickhouse_ru
    @700793887 #234016 11:56 AM, 10 Sep 2021
    ?\
  • https://t.me/clickhouse_ru
    попробуйте system.trace_log настроить и посмотреть итоги
    герцовку можно 50 раз в секунду

    и отдельно по тредам еще может быть посмотреть
  • trace_log есть, куда смотреть там?
  • https://t.me/clickhouse_ru
    ну его настроить надо сначала, там по умолчанию слишком мало данных

    вы можете настройки индивидуально применить через SETTINGS или через query stirng для HTTP
    чтобы конкретную query спрофилировать

    ну и потом визуализировать
    вы знаете что такое flamegraph?
    утилиту смотрели отсюда
    https://t.me/clickhouse_ru/234011 ?
    Slach [altinity] in ClickHouse не тормозит

    он в primary key ? если нет может быть какой то bloom filter index поможет скипнуть парты, но только если id не распределены равномерно... если равномерно то нет не поможет попробуйте https://github.com/Slach/clickhouse-flamegraph/ может быть сможете понять куда именно упирается по CPU в FINAL или в WHERE

  • да,читаю, спс
    там описаны какие настройки нужны для trace_log?
  • https://t.me/clickhouse_ru
    прямо в readme по ссылке, настройки не обязательно указывать для всего сервера через XML
    можно просто для конкретной query
  • https://t.me/clickhouse_ru
    @BloodJazMan #234022 12:12 PM, 10 Sep 2021
    потому через query_log смотрите query_id
    и задавайте параметры в утилите...
  • https://t.me/clickhouse_ru
    @konnectrl #234023 12:23 PM, 10 Sep 2021
    Приветствую, можете подсказать как можно решить задачу "Узнать что делают пользователи до ИВЕНТА"
  • https://t.me/clickhouse_ru
    WINDOW FUNCTIONS

    https://altinity.com/webinarspage/fun-with-clickhouse-window-functions
    Fun with ClickHouse Window Functions

    Window functions have arrived in ClickHouse! Our webinar will start with an introduction to standard window function syntax and show how it is implemented in ClickHouse. We’ll next show you problems that you can now solve easily using window functions. Finally, we’ll compare window functions to arrays, another powerful ClickHouse feature.

  • https://t.me/clickhouse_ru
    Спасибо посмотрю
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Спасибо
  • @pavel_maksimow #234028 12:36 PM, 10 Sep 2021
    Подскажите пожалуйста, а возможно создать внешний словарь из таблицы КХ в этой же базе?
    Попробовал так:
    CREATE DICTIONARY default.client_ids_with_purchases
    (
    ClientID UInt64,
    VisitID UInt64
    )
    PRIMARY KEY ClientID
    SOURCE(CLICKHOUSE(HOST 'localhost' USER '*' PASSWORD '*' DB 'default' TABLE 'purchase_visits'))
    LAYOUT(DIRECT())

    Получаю ошибку при инсерте в основную таблицу

    Code: 516, e.displayText() = DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name: while executing 'FUNCTION dictHas('client_ids_with_purchases' :: 4, ClientID : 0) -> dictHas('client_ids_with_purchases', ClientID) UInt8 : 3': while pushing to view default.customer_visits (86f569ce-6dc0-496e-86f5-69ce6dc0796e) (version 21.8.4.51 (official build)
  • https://t.me/clickhouse_ru
    @akofi1e #234029 12:41 PM, 10 Sep 2021
    Привет, у меня есть таблица в Postgresql, которая отображается в clickhouse с помощью DICTIONARY + SOURCE. В таблице есть поле timestamptz - оно транслируется в поле DateTimeField64.
    При выборке из словаря clickhouse вот такой
    SELECT toString(KFH_registration_data)
    FROM __cl_smpb_new_nsi_farmerpassport_organizations
    Мне выдаёт ошибку "Illegal column UInt64 of first argument of function toString"
    Не пойму почему и что делать?
    + когда я пытаюсь с помощью всяких Python библиотек (asynch...) получить данные из этой таблицы (без приведения к toString) мне тоже выдаёт ошибку:
    " Bad cast from type DB::ColumnVector<unsigned long> to DB::ColumnDecimal<DB::DateTime64>"
  • https://t.me/clickhouse_ru
    @mib32 #234031 12:53 PM, 10 Sep 2021
    Можно ли миграцией изменить ver в ReplacingMergeTree ?
  • https://t.me/clickhouse_ru
    да можно, у вас нет случайно ограничения на host_regexp и т.п. вещей для коннекта пользователя?

    clickhouse-client -u user --password=password -q "SELECT count() FROM default.purchase_visits"
    запущенный на сервере clickhouse работает?
  • пароль состоит только из числе, может поэтому?
  • https://t.me/clickhouse_ru
    нет не поэтому, вы clickhouse-client проверяли?

    а откуда в сообщении об ошибке взялся customer_visits если словарь от purchase_visits идет?
  • https://t.me/clickhouse_ru
    если toString убрать, то что выдает?
  • разобрался. Там была матвью, в которой словарь использовался, исправил ошибку в имени, и все заработало. Спасибо!
  • @bard356 #234037 01:07 PM, 10 Sep 2021
    Коллеги,привет!
    Ищу пример использования аналога оконок, задача: присвоить порядковый номер по строке URL для каждого user по времени (анализирую шаги пользователя на сайте), возможно решение похоже на row_number из oracle?
    Заранее спасибо
  • https://t.me/clickhouse_ru
    движок вроде через ALTER TABLE вообще менять нельзя
    только sorting key через ALTER TABLE ... MODIFY ORDER BY
  • https://t.me/clickhouse_ru
    Window Functions | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @Maxim247 #234041 01:23 PM, 10 Sep 2021
    Всем привет! Пытаюсь воссоздать heatmap на основе статистики рабочего времени чтобы понять сколько человек работал в определенный шаг за день (2 часа) приведу пример как хотелось бы получить(выше на картинке). Сейчас пробовал сделать группировку таким образом но в group_by нельзя вычисляемое похоже(

    select toDayOfWeek(start) from clickhousetaskworktime
    where
    start > '2020-01-01 00:00:00' and
    end < '2020-12-31 23:59:59' and
    user = 14 group by toStartOfHour(start) ;

    формат данных:
    user;start(datetime);end (datetime);seconds (int)

    Собственное сам вопрос, как можно сделать двойную группировку или как это лучше уложить?)
  • Ок, спс)
  • возможно вам это поможет

    https://kb.altinity.com/altinity-kb-queries-and-syntax/pivot-unpivot/
  • https://t.me/clickhouse_ru
    Выдаёт обычную колоночку DateTime64 с обычными записями. Я нашёл вот такую тему в changelog https://github.com/ClickHouse/ClickHouse/pull/26234
    Это кажется про мою проблему как раз
    convert timestamp and timestamptz data types to DateTime64 in postgres engine by jasine · Pull Request #26234 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    большое спасибо за подсказку
  • https://t.me/clickhouse_ru
    @700793887 #234046 01:44 PM, 10 Sep 2021
    Кто нибудь подскажет, как это побороть? Tables have different format_version
  • @user93 #234048 02:26 PM, 10 Sep 2021
    Используем 21.3 altinity, сейчас готовимся к миграции на 21.8 и на altinity prestable тестируем запросы.

    Задача выбрать из базы строки, упорядоченные по primary key. ORDER BY работает очень долго , поэтому использовали GROUP BY + optimize_aggregation_in_order и это давало нужный результат. А сейчас сортировка перестала работать. Как можно добиться нужного поведения на новых версиях клика?
  • @user93 #234049 02:26 PM, 10 Sep 2021
    CREATE TABLE item_summary
    (
    `item` String,
    `event_source_hi` Int8 DEFAULT -1,
    `event_source_lo` Int8 DEFAULT -1,
    `event_state` Int8 DEFAULT -1,
    `event_last_seen` UInt32 DEFAULT 0
    )
    ENGINE = ReplacingMergeTree(event_last_seen)
    PRIMARY KEY item
    ORDER BY (item, event_source_hi, event_source_lo, event_state)
    SETTINGS index_granularity = 8192

    SELECT
    item,
    max(event_last_seen) as lseen
    FROM item_summary
    GROUP BY item
    HAVING lseen > 26928753
    LIMIT 10000
    SETTINGS optimize_aggregation_in_order = 1
  • @1803285152 #234051 03:22 PM, 10 Sep 2021
    SELECT toStartOfInterval(date_create, INTERVAL 1 HOUR) as t,
    id_event,
    count()
    FROM orders
    GROUP BY t, id_event
    ORDER BY t
    Подскажите как сделать, чтоб когда нету ивента, то была строка с 0 в поле count?
  • что значит "нету ивента"
  • @simpl1g #234053 03:29 PM, 10 Sep 2021
    Подскажите такой вопрос. Пытаюсь понять в каких случаях стоит самому выносить что-то в PREWHERE, иногда прирост довольно хороший получается, но в данном запросе на 30% медленнее выполняется, хотя данных меньше надо прочитать. Может кто знает почему так происходит или что можно почитать по этой тематике?

    https://gist.github.com/simpl1g/c82ed2b41eefc0f1c57bc1112b78035f
    where/prewhere

    where/prewhere. GitHub Gist: instantly share code, notes, and snippets.

  • как сделали, чтобы в консоле показывал сколько партов прочитано было?
  • set send_logs_level = ‘trace’
  • а, точно
  • вообще в логах он пишет что перенес where в prewhere
    но во втором случае у вас и prewhere и where
  • его нету в записях на 10.09.2021 00:00
  • Если всё оставить в where, то КХ полностью переносит в prewhere, как в первом примере
  • ну а как вы выберете тогда это значение для определенного промежутка времени если его там не было?
  • его не было в 00:00, но оно есть в 01:00. И когда t = 00:00 в колонку count надо писать 0. Сейчас время 00:00 дропается
  • ну не знаю, можно тогда скрестить все часы и все ивенты, ну и считать тогда, если значения пустые, то 0 считайте.
    мб есть способы лаконичнее
  • ищу лаконичнее
  • https://t.me/clickhouse_ru
    ORDER BY | Документация ClickHouse

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

  • with fill разве может заполнить конкретными значениями event_id которых не хватает?
  • https://t.me/clickhouse_ru
    ну это вряд ли :)
  • Не работает с GROUP BY и toStartOfInterval
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #234051 #234071 04:32 PM, 10 Sep 2021
    работает:
    with data as ( SELECT toFloat32(number % 10) AS n, now() + interval n day as source
    FROM numbers(10) WHERE number % 3 = 1 )
    select n, toStartOfDay(source) as t, count() c from data
    group by n,t
    ORDER BY n WITH FILL;
  • так работает, спасибо
  • https://t.me/clickhouse_ru
    CHJIT можно выключить

    --compile_expressions arg Compile some scalar functions and operators to native code.

    --compile_aggregate_expressions arg Compile aggregate functions to native code.
  • https://t.me/clickhouse_ru
    что за 21.8.5.1 ? Altinity build ?
  • https://t.me/clickhouse_ru
    Если именуются по-разному, значит разная структура.
    Insert-select только
  • 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
    @RT_1_98 #234083 05:18 PM, 10 Sep 2021
    Спасибо ))
  • @miksir #234084 05:31 PM, 10 Sep 2021
    А можно подружиться с кафкой по SASL/SCRAM?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    @700793887 #234087 05:34 PM, 10 Sep 2021
    А возможно ли создать таблицу целиком на вторичном диске а не на дефаултном?
  • https://t.me/clickhouse_ru
    Можно, создайте storage policy только с этим диском
  • https://t.me/clickhouse_ru
    понял, спасибо, попробую
  • https://t.me/clickhouse_ru
    @501846356 #234090 05:36 PM, 10 Sep 2021
    Подскажите пожалуйста, куда копать. Учусь переносить данные из Постгри в Клик.
    Настроил репликацию в Клик:
    CREATE TABLE default.from_postgres_table (id Int64,
    a String,
    b String,
    c String)
    ENGINE = PostgreSQL('192.168.1.243:5432', 'postgres', 'dict_test', 'postgres', 'postgres');

    Работает.
    Дальше хочу раскидать данные в Distributed таблицу (хотя и в локальную только на этом шарде тоже самое)
    CREATE MATERIALIZED VIEW default.op_tc TO default.click_dict_test_dist AS SELECT id, a, b, c from default.from_postgres_table
    и ничего не выходит. При инсерте в Постгрю данные появляются в from_postgres_table и не появляются в default.op_tc
    При этом если добавить записи в from_postgres_table напрямую - они отлично перенесутся в default.op_tc...
    Чтото не срабатывает (если это триггер на инсерт), но что? (((
  • Вы никакую репликацию не настраивали к сожалению, from_postgres_table  не хранит в себе данные, а просто проксирует запросы в ПГ. MaterializedPostgreSQL нужен для репликации

    https://clickhouse.tech/docs/ru/engines/table-engines/integrations/materialized-postgresql/
    MaterializedPostgreSQL | Документация ClickHouse

    MaterializedPostgreSQL Создает таблицу ClickHouse с исходным дампом данных таблицы PostgreSQL и запускает процесс реплик

  • https://t.me/clickhouse_ru
    @501846356 #234092 06:01 PM, 10 Sep 2021
    "from_postgres_table не хранит в себе данные" я это предполагал и потому и хотел повесить на нее мат вью, чтобы при появлении новых записей в PG - они перекидывались в нормальную Кликовую таблицу и с ними можно было эффективно работать.
    О MaterializedPostgreSQL читал, даже попробовал. но это же пока совсем экспериментальная фича...
  • https://t.me/clickhouse_ru
    @501846356 #234093 06:03 PM, 10 Sep 2021
    Вроде бы же такая техника подгрузки данных - достаточно обыденна чтоли (читал про Кафку примерно тоже самое - таблица с соответствующим движком и мат вью на нее), а оно вон как (((
  • @aartamoshin #234094 06:45 PM, 10 Sep 2021
    Добрый вечер. Подскажите, пожалуйста: запрос типа
    SELECT cnt
    FROM (
    SELECT COUNT(*) AS cnt FROM empty_table
    )
    WHERE cnt = 0;
    выдает пустое множество, хотя если в подзапросе написать SELECT 0 AS cnt - то все ок. В чем дело?
    Версия 21.8.5.7
  • https://t.me/clickhouse_ru
    SELECT COUNT(*) AS cnt FROM empty_table
    что выдает?
  • https://t.me/clickhouse_ru
    бага ахаха
    используйте limit 1000000000000
    select cnt from (select count() cnt where 0 limit 1000000000000) where cnt = 0;
  • @aartamoshin #234100 08:23 PM, 10 Sep 2021
    Я извернулся через запрос типа
    SELECT cnt
    FROM (
    SELECT total_rows AS cnt
    FROM system.tables
    WHERE database = 'some_db' AND name = 'empty_table'
    )
    WHERE cnt = 0
    ,
    но при использовании COUNT ни WHERE, HAVING не дают корректный результат при пустой таблице
  • Спасибо. А почему такое происходит, где почитать?
  • https://t.me/clickhouse_ru
    Wrong query result because of push-down optimization · Issue #28880 · ClickHouse/ClickHouse

    21.8.4.51 select cnt from (select count() cnt where 0 order by cnt) where cnt = 0; Ok. 0 rows in set. Elapsed: 0.002 sec. select cnt from (select count() cnt where 0 limit 1000) where cnt = 0; ┌─cn...

  • 11 September 2021 (91 messages)
  • https://t.me/clickhouse_ru
    Еще раз решил разобраться с MaterializedPostgreSQL, добрался до этапа с ошибкой function pg_replication_slot_advance(unknown, unknown) does not exist, нашел ответ, что нужен минимум 11й Postgres, решил что хватит (применить в реальности не смогу, никто мне промышленные сервера до послелних версий не обновит). Но в наследство осталась пачка неработающих "таблиц" с движком MaterializedPostgreSQL, которые не удаляются командами типа "DROP TABLE default.postgre_replica" - ошибка DB::Exception: Table default.16e0c3e0-1e84-4425-96e0-c3e01e84f425_nested doesn't exist. (UNKNOWN_TABLE).

    То есть я так предполагаю при создании MaterializedPostgreSQL должна была создаться и физически таблица для него с таким GUIDопохожем именем, но изза разного рода ошибок до ее создания дело не доходило и теперь остались полуматвью, которые... можно както корректно удалить? Попробовать вычистить их из system.tables?
  • https://t.me/clickhouse_ru
    А какой у вас дистрибутив ?
  • https://t.me/clickhouse_ru
    ALT Linux
  • https://t.me/clickhouse_ru
    Он же в rpm может
  • https://t.me/clickhouse_ru
    @RT_1_98 #234112 09:25 AM, 11 Sep 2021
    У нас все пакеты собираются в наш независимый репозиторий из исходников.
    Формат пакетов - да, rpm.
  • https://t.me/clickhouse_ru
    @i_merzlyakov #234113 09:30 AM, 11 Sep 2021
    Всем привет! Подскажите, пожалуйста, как можно отловить причину ситуации, когда в основную таблицу данные залетели, а в MaterializedView, основанном на этой таблице, данных нет. Во View никаких сложных операций нет. Только дублирование трёх полей из основной таблицы с другим PrimaryKey.

    При чем ситуация, когда данные не дошли до View, буквально единичные. Большая часть инсертов отрабатывает как положено.
  • https://t.me/clickhouse_ru
    Расскажите пожалуйста, а отчего у вас такая политика сложилась ? Есть требования специальные по безопасности или ещё чего ?
  • https://t.me/clickhouse_ru
    Я думаю вы найдёте всю информацию на сайте дистрибутива altinux.org - тут я думаю это офтопик
  • https://t.me/clickhouse_ru
    @enclaved #234116 10:37 AM, 11 Sep 2021
    привет. подскажите по дизайну базы. есть таблица сырых событий - переходов, с разными атрибутами. и есть два типа выборки из нее: строки целиком (навигация по логу) и агрегирование по разным group by (аналитика). второе работает как надо, а первое заметно медленнее, т.к. выбираются все колонки, и есть задача это ускорить. как обычно делают? дублируют данные лога в отдельную таблицу с движком семейства Log?
  • https://t.me/clickhouse_ru
    @enclaved #234117 10:38 AM, 11 Sep 2021
    по сути в первом случае вообще нужна строчная база
  • https://t.me/clickhouse_ru
    Первое можно сделать через подзапрос с in по ключам из индекса
  • https://t.me/clickhouse_ru
    @enclaved #234119 10:40 AM, 11 Sep 2021
    не вполне понял. запросы к логу выглядят примерно так: select * from event where account_id = '...' and timestamp between ...
  • https://t.me/clickhouse_ru
    @unamedrus #234120 10:41 AM, 11 Sep 2021
    Ну а order by какой
  • https://t.me/clickhouse_ru
    @enclaved #234121 10:42 AM, 11 Sep 2021
    order by timestamp asc
  • https://t.me/clickhouse_ru
    @enclaved #234122 10:42 AM, 11 Sep 2021
    всегда один
  • https://t.me/clickhouse_ru
    Я про order by таблицы
  • https://t.me/clickhouse_ru
    @enclaved #234124 10:47 AM, 11 Sep 2021
    (account_id, campaign_id, click_id)
  • https://t.me/clickhouse_ru
    Сколько строк в среднем извлекаете
  • https://t.me/clickhouse_ru
    @enclaved #234126 10:49 AM, 11 Sep 2021
    10-20k
  • https://t.me/clickhouse_ru
    @lnuynxa #234127 10:50 AM, 11 Sep 2021
    Мало, тормозить сильно не должно
  • https://t.me/clickhouse_ru
    @enclaved #234128 11:01 AM, 11 Sep 2021
    тормозит не сильно, но все равно раз в 5 дольше выбирает, чем аналитические запросы. и это заметно, т.к. оба типа запросов вызываются одновременно на одной странице приложения для заполнения двух разных таблиц - одна таблица заполняется, другая еще 3-5 секунд грузит
  • https://t.me/clickhouse_ru
    А если выполнить этот же запрос с FORMAT Null по времени сколько будет?

    Может вы просто в сеть упираетесь?
  • https://t.me/clickhouse_ru
    @enclaved #234132 12:59 PM, 11 Sep 2021
    без разницы. у меня один шард, сервис выборки относительно кх локальный, ходит по localhost
  • https://t.me/clickhouse_ru
    @enclaved #234133 12:59 PM, 11 Sep 2021
    вероятно, просто пора или шардить как положено, или железо поменять
  • https://t.me/clickhouse_ru
    @enclaved #234134 01:00 PM, 11 Sep 2021
    собственно, первое подразумевает и второе
  • @vvvjhaq #234135 01:17 PM, 11 Sep 2021
    Добрый день. Такой вопрос:
    Выполняем 5-10 параллельных вставок insert into selected on tab final.
    Вставки одинакового размера.
    Вставки в одну партицию.
    Параллельно с ними в эту же таблицу и в эту партицию идут вставки Insert values
    Могут ли они друг друга аффектить?
    Происходит то, что иногда вставки деградируют по скорости в 10 раз. Хочу выяснить почему так может происходить.
  • https://t.me/clickhouse_ru
    @nyoroon #234136 01:19 PM, 11 Sep 2021
    Звучит как будто диск загружен
  • https://t.me/clickhouse_ru
    @nyoroon #234137 01:21 PM, 11 Sep 2021
    Кластер?
  • https://t.me/clickhouse_ru
    @nyoroon #234138 01:21 PM, 11 Sep 2021
    Если много маленьких вставок, то кх может убиваться об большое количество партов
  • 3 реплики, 1 шард.
  • Да, много мелких 5-10к строк.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #234135 #234141 01:22 PM, 11 Sep 2021
    каждая вставка порождает парт. Это отдельный подкаталог с полной структурой файлов таблицы. Друг на друга они никак не влияют, но используют общие iops диска и циклы CPU. После этого бекграунд процесс мерджит эти парты в более крупные. Мерждит - это читает, декомпрессирует, совмещает по порядку order by, компрессирует, пишет. И так постоянно.
    Не стоит делать много вставок. Особенно в 5-10 потоков. Нужно делать мало больших вставок, используя для этого какие-то внешние инструменты (kafka, kittenhouse , etc). Хороший размер вставки 100к
  • https://t.me/clickhouse_ru
    Это очень плохо, рекомендуется вставлять большими кусками не чаще раза в секунду
  • https://t.me/clickhouse_ru
    @bvt123 #234143 01:23 PM, 11 Sep 2021
    если быть более точным, то не чаще раза в 7 секунд. Но 10 будет лучше
  • Конечно, это понимаю, но у нас вынужденное такое использование.
    У нас вставки летят онлайн и постоянные.
    Кх зачастую полостью справляется, то есть в секунду 10 потоков по 5-10к строк и они выполняются за 0,2-0,5сек. Это вполне устраивает.
    Но иногда(пару раз в день) появляется деградация, скорость выполнения в 10 раз увеличивается.
  • @vvvjhaq #234145 01:27 PM, 11 Sep 2021
    Это все на collapsingMT.
    Сначала вставляем много insert into select final. И сразу же на эти же значения Insert новых.
  • https://t.me/clickhouse_ru
    Нам ранее в этом чате рекомендовали вставлять в memory таблицу которая раз в n секунд идёт в настоящую табличку
  • 100к не можем вставлять, так как нужно вставлять быстро обновления делаем по 5-10к, потому что результаты нужны прям вот онлайн.
  • https://t.me/clickhouse_ru
    @time_2_work #234148 01:31 PM, 11 Sep 2021
    Для накопления в батчи в кликхаусе есть тип таблицы buffer.
  • https://t.me/clickhouse_ru
    Это или буффер таблицы если данные не страшно потерять
  • https://t.me/clickhouse_ru
    Используете SSD? Включены compact парты? Какая версия кх?
  • Да это понятно, но нам нужно смотреть на данные онлайн(
  • https://t.me/clickhouse_ru
    Я правильно понимаю что данные потеряются только если все сильно пойдет не так ?
  • https://t.me/clickhouse_ru
    Раз в секунду данные уходят в таблицу и появляются уже в таблице
  • https://t.me/clickhouse_ru
    Если кх внезапно упадёт
  • Да, данные на ссд. 21.2.9.41.
  • Оно же в памяти(
  • https://t.me/clickhouse_ru
    Buffer работает прозрачно
  • https://t.me/clickhouse_ru
    @nyoroon #234158 01:35 PM, 11 Sep 2021
    Ну сделайте прокси которая будет накапливать данные и раз в секунду вставлять
  • @vvvjhaq #234160 01:36 PM, 11 Sep 2021
    Есть такая статистика. Маленькими буквами insert into select final.
    Большими Insert values.
  • https://t.me/clickhouse_ru
    @nyoroon #234161 01:37 PM, 11 Sep 2021
    Мат вью не думали сделать?
  • https://t.me/clickhouse_ru
    @nyoroon #234162 01:37 PM, 11 Sep 2021
    Почему именно insert select?
  • CollapsingMT. Сначала вставляем обнуление данных, потом вставляем новую строку
  • и у нас последовательно, пока не выполнится insert select на эти данные, обычный insert не будет выполняться.
  • https://t.me/clickhouse_ru
    @nyoroon #234165 01:41 PM, 11 Sep 2021
    Какая-то сложная схема
  • https://t.me/clickhouse_ru
    @bvt123 #234166 01:41 PM, 11 Sep 2021
    OK, пусть коллапсинг, пусть обнуление, и раз в секунду. Но зачем в 10 потоков? Почему не хотите применить какой-то буффер?
  • почему, в collapsingMT нужна последовательная вставка
  • пока накопится 10К строк, пройдет время, а данные нужно использовать сразу после вставки.
    данные нужно получать скорее
  • https://t.me/clickhouse_ru
    @OrNixx #234169 01:45 PM, 11 Sep 2021
    всем привет. подскажите пожалуйста, в зукипере сами данные, прилетающие на запись, не хранятся? не проходила запись в КХ во время проблем с зукипером, эти данные утеряны безвозвратно, или или их можно как-то из него вытащить?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #234168 #234170 01:45 PM, 11 Sep 2021
    очень необычно что вы применяете КХ для такой задачи. Но если таки да, то не стесняйтесь - добавляете хороших, дорогих SSD, занимайте их на 50%, делайте шарды.
  • @vvvjhaq #234171 01:45 PM, 11 Sep 2021
    такой подход не критичен, можем поменять.
    просто хотелось бы понять, что может мешать стабильным быстрым вставкам, а потом резким тормозам на ней
  • https://t.me/clickhouse_ru
    Не хранятся, в зк только метаданные
  • https://t.me/clickhouse_ru
    @nyoroon #234173 02:04 PM, 11 Sep 2021
    Кх при проблемах с зукипером переходит в ридонли
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #234171 #234174 02:29 PM, 11 Sep 2021
    Мешает архитектурное решение.
    Вероятно вам стоит как-то иначе работать с данными текущего дня (или часа), которые летят большим и меняющимся потоком. Скорее всего КХ не является подхоящим инструментом для этой цели. Нужен какой-то буфер. Для такого буфера вам вероятно стоит применить какой-то иной инструмент (mysql, postgress, redis), который решит проблему оперативного и целостного доступа к изменяющимся данным.
  • https://t.me/clickhouse_ru
    @yourock88 #234175 02:33 PM, 11 Sep 2021
    С чтением из буферных таблиц тоже нужно осторожно, потому что чтение блокирует вставку, и если читаете оттуда очень часто, то данные могут вообще не вставляться
  • https://t.me/clickhouse_ru
    @yourock88 #234176 02:33 PM, 11 Sep 2021
    Не знаю, как Log таблицы блокируются, но это может в теории служить альтернативой буферу, если нужно вставлять часто
  • )))
    КХ используем для разного функционала, и решили добавить этот, все было ок, пока не стало приходит сотни тысяч обновлений
    немного предыстории:
    у нас были большие обновления по 100К+строк в collapsingMT вставляли через insert into select final where id in (100k+ id).
    и сразу за ними вставка новых данных через обычный insert values 100k
    Там медленно выполнялся сам селект из-за большого количества id в IN.
    Решили дробить на меньшее количество id в IN и увеличивать количество потоков вставок.
    Такое изменение помогло с ускорением регулярно, но иногда появляется деградация.
  • https://t.me/clickhouse_ru
    А как часто приходят ?
  • https://t.me/clickhouse_ru
    Если есть еще поля, по которым можно select отфильтровать (дата, например), то я бы предложил попробовать использовать их, а выборку по id засунуть в prewhere, может быть КХ пытается в противном случае все по первичному ключу читать
  • https://t.me/clickhouse_ru
    @yourock88 #234180 02:40 PM, 11 Sep 2021
    Но это конечно гадание на кофейной гуще. С другой стороны, мне же за этот совет не платят, так что отвественности тоже не несу :)
  • это все есть и дата и prewhere
  • это практически не лимитировано, но как правило обновления приходит 1 раз в 2-3сек и сразу на ними вставка новых
  • @vvvjhaq #234183 02:46 PM, 11 Sep 2021
    а сейчас нужен рестарт сервера если хочу изменить параметры <merge_tree></merge_tree>?
  • https://t.me/clickhouse_ru
    Replicated таблица? Какая версия КХ?
    То что вам тут наговорили скорее всего не связано с этим
  • https://t.me/clickhouse_ru
    если инсерт возвращает ошибку, то конечно не вставилось
  • да, replicated. 1 шард - 3 реплики, все версии 21.2.9.41
    пишем только в одну
  • https://t.me/clickhouse_ru
    включите part_log или посмотрите в логе есть ли параллельно мержи
    посмотрите летенси в ZK , и сообщения в логе ZK про слишком долгие запись
    на версиях типа 20.8 тоже самое?

    в общем есть какая-то проблема которую пока не воспроизвели, не могу найти в гитхабе, потом напишу
  • до этого была версия 20.1.3.7, там с такими нагрузками не работали
  • ZK вдруг не на тех же серверах что и кх?
  • нет конечно)
  • параллельные мерджи при запросе вставки? или чего?
  • https://t.me/clickhouse_ru
    Мержи в тоже самое время что и инсерт https://github.com/ClickHouse/ClickHouse/issues/26755
    Background Replicated Merges seems to be stuck from time to time, greatly affecting insert latency · Issue #26755 · ClickHouse/ClickHouse

    We have latency-critical application (real-time statistics system with watchdogs), which is sensitive to insert latency. We'd like latency to be less than 5 seconds, or better. In productio...

  • нашел нужные query_id, нашел время в part_log и отфильтровал part_log по этому промежутку времени + по пару секунд с разных сторон, остортировал по event_time
    MergeParts показывает после запросов на вставку. То есть во время вставки никаких мерджей не было, как я понял.
  • инсерты начались в 13:56:35
  • это абсолютно похожая ситуация, подобные варнинги постоянно в логах реплик
    Found parts with the same min block and with the same max block as the missing part 1627030800_61998_62022_2. Hoping that it will eventually appear as a result of a merge.
  • https://t.me/clickhouse_ru
    Буффер так и работает. Только читать нужно не из таблицы, а из буфера, тогда вам будут доступны данные и из таблицы и те что пока ещё в буфере.
  • https://t.me/clickhouse_ru
    а почему именно collapsing используете, а не replacing? так тупо в два раза больше на диск пишется, вместо одной новой строки. или у вас кроме апдейтов ещё и делиты есть?
  • https://t.me/clickhouse_ru
    вы наверно джойн используете при чём ту же таблицу, что указана во фром и при этом ожидаете, что несмотря на одинаковое название таблицы во фром будет только вставка, а в джойне вся таблица? так не работает. если хотите заджойнить эту же таблицу её нужно будет во вьюху обернуть, чтобы имя поменялось.
  • Collapsing позволяет удалить записи и изменять Данные в ключе сортировки
  • https://t.me/clickhouse_ru
    это я знаю, более того это я и написал в своём комменте. вопрос был про то вы юзаете удаление или нет? или просто оставляете себе такую возможность на будущее?
  • 12 September 2021 (4 messages)
  • https://t.me/clickhouse_ru
    У меня сейчас 3 таблицы. Одна - основная, куда идёт вставка. И ещё 2 таблицы, обёрнутые во вью и тянущих данные из основной таблицы. Так вот, нашел несколько единичных моментов, когда данные в основной таблице есть, а в в производных таблицах - отсутствуют. Либо присутствуют только в одной производной таблице.

    Вот и хочу понять как такое могло произойти. Может есть какие-то логи или что-то в системных таблицах, где видно когда и что вставлялось в основную таблицу и что в производные?
  • Да используем
  • https://t.me/clickhouse_ru
    Чаще всего просто ошибка вставки во таблицу вью. Либо из-за зукипера либо из-за too many parts. Причем повторять инсерт не имеет смысла рассчитывая на дедупликацию инсертов, потому что дедупликация по умолчанию наследуется от основной таблицы. Поэтому при повторной вставке во вью не вставится.
    Ещё одна возможная проблема это просто ошибка в селекте или order by таблицы стораджа.
  • https://t.me/clickhouse_ru
    Вставки неатомарны поэтому успешная вставка в таблицу и не успешная в случае проблем во вью это ожидаемое поведение. Можно в логах искать ошибки с именем таблицы стораджа вью.
  • 13 September 2021 (155 messages)
  • https://t.me/clickhouse_ru
    Не понятно, разве ошибку отличную от 200 не вернёт, в случае вставки в таблицу , на которую настроены N мат вью ? И разве это не гарант того, что все данные успешно занеслись?
  • https://t.me/clickhouse_ru
    Ошибку вернет.
    У многих пользователей фреймворки настроены повторять до успеха. Первая попытка падает с ошибкой вставки, вторая не падает, и все, приехали, данные в таблице и mv разошлись. Я все это объяснял в том самом видео.
  • https://t.me/clickhouse_ru
    @den_crane Спасибо! Картина стала более ясной.

    > фреймворки настроены повторять до успеха

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

    > Причем повторять инсерт не имеет смысла рассчитывая на дедупликацию инсертов

    А если выключить insert_deduplicate? Чем это может грозить? Или лучше зафейленую пачку данных в буфере смерджить со следующей, чтобы не сработала дедубликация?

    > Я все это объяснял в том самом видео.

    А можно ссылку на видео? Думаю, будет полезно посмотреть.
  • https://t.me/clickhouse_ru
    @387452444 #234217 06:42 AM, 13 Sep 2021
    projections вроде бы избавлены от проблемы выше, т.к. гарантируют консистентность на уровне партов, но штука пока экспериментальная - сразу в продакшен наверное не стоит
  • https://t.me/clickhouse_ru
    @EKbfh ↶ Reply to #233384 #234218 06:42 AM, 13 Sep 2021
    Все верно сказали, спасибо.
  • https://t.me/clickhouse_ru
    @Hero_of_Comix #234221 08:21 AM, 13 Sep 2021
    Всем привет, подскажите, пожалуйста, можно ли у clickhouse-copier как-то обойти ограничение сложности запроса не изменяя параметр max_result_rows на кластерах?
    При копировании получаю ошибку
    DB:Exception: Limit for result exceeded, max rows: 3.00 million
  • @subotic0 #234222 08:31 AM, 13 Sep 2021
    Привет, подскажите плс, на одной машине крутится 3 докер образа кх, после апа с 21.3 до 21.8 время от времени начали падать все 3 базы(контейнеры продолжают работать, селекты выполняются бесконечно), после ребута конкретно одного образа, все 3 начинают работать, в чем может быть проблема?
  • https://t.me/clickhouse_ru
    @Mr_Gangster #234224 09:41 AM, 13 Sep 2021
    привет, подскажите, как по правильному обеспечить отказоустойчивое решение, какие бестпрактисы, репликация, чтение с кафки например двух экземпляров?
  • https://t.me/clickhouse_ru
    @nshumshurova #234225 10:48 AM, 13 Sep 2021
    не отрабатывает запрос , ALTER TABLE graphite.data DELETE WHERE Date='2021-09-01'; однако select * from graphite.data WHERE Date='2021-09-01' limit 10; выдает данные
  • https://t.me/clickhouse_ru
    @nshumshurova #234226 10:48 AM, 13 Sep 2021
    ошибку не выдает
  • https://t.me/clickhouse_ru
    @700793887 #234227 10:49 AM, 13 Sep 2021
    Можно ли как то поменять у таблицы путь хранения?
  • @635404397 #234228 10:49 AM, 13 Sep 2021
    @nshumshurova , посмотрите в таблицу мутаций, отработала ли уже мутация
  • https://t.me/clickhouse_ru
    в system.mutations она выполнена?
  • @635404397 #234230 10:49 AM, 13 Sep 2021
    Подскажите, пожалуйста, как выбрать оптимальное количество партиций.

    Неоднократно встречал постулат о том, что количество партиций не должно быть большим, желательно до сотен. В чем проблема если партиций все же много? Скажем, если разбить таблицу с историческими данными по дням? Мы всегда пишем данные за сегодня, т.е. запись идет только в одну партицию. Читаем как правило за послед несколько дней, т.к. 99% запросов читают всего из нескольких партиций. Скоростью остальных 1% запросом можем пренебречь. Это все равно является антипаттерном? Если да, то почему?
  • https://t.me/clickhouse_ru
    если запросы по большому кол-ву дней то больше будет операций с ФС, что негативно сказывается на производительности запросов.
    Так же с большим кол-вом партиций увеличивается время старта сервера.
    При правильном индексе партиции по месяцу не просто так рекомендуют, мы в свое время выбрали партиции по дням и теперь сервер поднимается минут 40-60, что очень неудобно(
    Из плюсов партиций по дням в нашем случае - удобные операции с данными: у нас данные заливаются дневными интервалами, и в случае чего можно быстро партицию заменить атомарно.
    alter modify/delete так же быстрее на меньшей партиции(если указывать именно партицию) - но такое не часто бывает.
  • https://t.me/clickhouse_ru
    нет, как долго ждать выполнения?
  • https://t.me/clickhouse_ru
    ошибок то нет никаких? можно попробовать её кильнуть, и потом выполнить запрос снова( можно добавить еще mutations_sync чтоб он вернул результат когда выполнит на всех репликах)
    https://clickhouse.tech/docs/ru/operations/settings/settings/#mutations_sync
    Настройки | Документация ClickHouse

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

  • @635404397 #234234 11:22 AM, 13 Sep 2021
    @crazyproger , спасибо. какие-то еще недостатки кроме долго старта может вспомните?
  • @635404397 #234235 11:25 AM, 13 Sep 2021
    еще вопрос про реализацию мутаций. насколько я понял update/delete не меняет файлы данных (они всегда иммутабельны), а создает новые. если в партиции несколько партов (файлов), и мутация затрагивает данные только из одного парта - ch "пересоздаст" только один парт, или все-таки все парты и партиции? это уже наверное особенности внутренней реализации, но может кто читал код или проверял
  • https://t.me/clickhouse_ru
    @Mike_Er #234236 11:32 AM, 13 Sep 2021
    Коллеги, добрый день, подскажите в какую сторону смотреть (не запускается сервер) были проблемы с зукипером (1 из 5 нод выпадала)
    2021.09.13 14:26:18.874421 [ 3075 ] {} <Error> Application: Caught exception while loading metadata: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = JSONException: JSON: begin >= end., Stack trace (when copying this message, always include the lines below):

    0. JSON::checkInit() const @ 0x13323bce in /usr/bin/clickhouse
    1. DB::FileChecker::load() @ 0x1022cee7 in /usr/bin/clickhouse
    2. DB::FileChecker::FileChecker(std::1::shared_ptr<DB::IDisk>, std::__1::basic_string<char, std::__1::char_traits<char>, std::1::allocator<char> > const&) @ 0x1022c993 in /usr/bin/clickhouse
    3. DB::StorageLog::StorageLog(std::1::shared_ptr<DB::IDisk>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::StorageID const&, DB::ColumnsDescription const&, DB::ConstraintsDescription const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::1::allocator<char> > const&, bool, unsigned long) @ 0x1022065c in /usr/bin/clickhouse
    4. ? @ 0x1022bf17 in /usr/bin/clickhouse
    5. DB::StorageFactory::get(DB::ASTCreateQuery const&, std::1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr<DB::Context>, std::1::shared_ptr<DB::Context>, DB::ColumnsDescription const&, DB::ConstraintsDescription const&, bool) const @ 0x10035301 in /usr/bin/clickhouse
    6. DB::createTableFromAST(DB::ASTCreateQuery, 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::Context>, bool) @ 0xf64713c in /usr/bin/clickhouse
    7. ? @ 0xf6457d3 in /usr/bin/clickhouse
    8. ? @ 0xf64685f in /usr/bin/clickhouse
    9. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::1::list_iterator<ThreadFromGlobalPool, void*>) @ 0x8d75738 in /usr/bin/clickhouse
    10. ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda0'()>(void&&, void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::1::optional<unsigned long>)::'lambda0'()&&...)::'lambda'()::operator()() @ 0x8d772df in /usr/bin/clickhouse
    11. ThreadPoolImpl<std::1::thread>::worker(std::__1::__list_iterator<std::1::thread, void*>) @ 0x8d72a1f in /usr/bin/clickhouse
    12. ? @ 0x8d76303 in /usr/bin/clickhouse
    13. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
    14. __clone @ 0xfe9fd in /usr/lib64/libc-2.17.so
    (version 21.7.3.14 (official build))
    21.7.3.14 with revision 54452
  • https://t.me/clickhouse_ru
    @1695040889 #234237 11:34 AM, 13 Sep 2021
    Господа, а почему может падать запрос в клиенте через jdbc, выполняющийся более 30 секунд? КХ его продолжает выполнять, с ошибкой read timeout отваливается клиент. На серверах/клиентах, вроде, ничего на 30 указывающего в настройках нету.
  • https://t.me/clickhouse_ru
    сокет тайммаут
  • https://t.me/clickhouse_ru
    Настройки драйвера JDBC по дефолту 30 сек, при этом сам запрос не умирает на КХ. Измените.
  • https://t.me/clickhouse_ru
    @1695040889 #234240 11:46 AM, 13 Sep 2021
    в бобре поменял, переподключился - не помогает
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @S_Dimitry #234242 11:48 AM, 13 Sep 2021
    это в бобре
  • https://t.me/clickhouse_ru
    @1695040889 #234243 11:48 AM, 13 Sep 2021
    да, именно так
  • https://t.me/clickhouse_ru
    @S_Dimitry #234244 11:49 AM, 13 Sep 2021
    перезапустите бобра, у меня еще в 0 выстален keepAliveTimeout
  • https://t.me/clickhouse_ru
    @1695040889 #234245 11:51 AM, 13 Sep 2021
    упс, без перезапуска, заработало
  • https://t.me/clickhouse_ru
    @1695040889 #234246 11:52 AM, 13 Sep 2021
    invalidate/reconnect, похоже, имеет какие-то ограничения
  • https://t.me/clickhouse_ru
    @1695040889 #234247 11:54 AM, 13 Sep 2021
    а вот кипэлайв вроде бы и ни при чем, есть какое-то влияние?
  • https://t.me/clickhouse_ru
    @700793887 #234249 12:03 PM, 13 Sep 2021
    Подскажите можно ли как то таблицу перенести с одного диска на другой, в дисках и правилах все прописано, но мне нужно именно перенести а не создавать?
  • https://t.me/clickhouse_ru
    во многих местах КХ не рассчитан на большое кол-во партиций и не тестировался.

    Например оптимизация partition pruning которая обычно работает наносекунды (внутри она просто перебирает все парты таблицы), если партов (НЕ ПАРТИЦИЙ!!!!!!!!!) 100 тыс, начинает работать пол-секунды, дольше чем выполнение запроса.

    Например ломаются мутации если партов >7-10 тыс., потому что все мутации (читай почти все alter table) создают в ZK запись, и не могут создать потому что запись и 7 тыс. имен партов, больше 1МБ (ограничение по дефолту в ZK).

    В некоторых ситуациях репликация скачивает с ZK список всех партов, у некоторых пользователей с большим кол-вом партов, трафик между КХ и ЗК под гигабит, и они внезапно удивляются тормозам на инсерт и счетам из AWS за трафик.

    Список этот бесконечный, поищите тут в чате, я раз десять уже описывал.
  • https://t.me/clickhouse_ru
    @dmitriynvkv #234251 12:16 PM, 13 Sep 2021
    Сохраню вашу мудрость 🧎
  • @635404397 #234252 12:17 PM, 13 Sep 2021
    @den_crane , понял, желание партиционировать по дню отпало :)
    а если не затруднит, можете глянуть мой вопрос выше, о внутренней реализации мутаций. мутируют ли отдельные парты или все парты в партиции. заранее благодарю.
  • https://t.me/clickhouse_ru
    мутируют все парты, но они мутируют созданием хардлинков, т.е. как бы меняются метаданные, читаются и переписываются данные только затронутых партиций или колонок.

    и есть alter table update/delete in partition .... для replicated (просто оптимизация чтобы не пересоздавать записи в ZK)
  • @635404397 #234254 12:23 PM, 13 Sep 2021
    спасибо. еще понаглею - можете ткнуть в документацию или просто рассказать сколько партов ch стремится иметь в партиции? например у меня партиция 100GB, до какого размера файлов ch будет делать мержи, а потом остановится? есть ли конф параметр и какие-то правило как правильно его выставить
  • https://t.me/clickhouse_ru
    на самом деле все зависит от длительности хранения. Многие пользователи партиционируют по дню, или неделе, или даже часу. Я например в одной задаче храню данные около 3 дней и они партиционированы по часу -- правда тут есть другая проблема, при drop partition из ZK удаляются не все данные, поэтому мне приходится переидически удалять из ZK вручную блоки старых дропнутых партиций, иначе ЗК распухает и drop partition для этой таблицы работает очень долго.
  • https://t.me/clickhouse_ru
    Настройки MergeTree таблиц | Документация ClickHouse

    Настройки MergeTree таблиц Значения настроек всех MergeTree таблиц собраны в таблице system.merge_tree_settings. Их можн

  • @635404397 #234257 12:27 PM, 13 Sep 2021
    спасибо большое!
  • https://t.me/clickhouse_ru
    @nikitenkoolga #234258 12:28 PM, 13 Sep 2021
    2021.09.12 20:06:43.992633 [ 862 ] {} <Error> system.metric_log (2a45c34a-0081-4f14-aa45-c34a00810f14): Detaching broken part /var/lib/clickhouse/store/2a4/2a45c34a-0081-4f14-aa45-c34a00810f14/202109_54218_54948_146. If it happened after update, it is likely because of backward incompability. You need to resolve this manually
  • https://t.me/clickhouse_ru
    @nikitenkoolga #234259 12:28 PM, 13 Sep 2021
    restart не помог
  • https://t.me/clickhouse_ru
    https://youtu.be/1LVJ_WcLgF8?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7597
    https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf
  • https://t.me/clickhouse_ru
    @nikitenkoolga #234261 12:29 PM, 13 Sep 2021
    и он как-то восстановился на 3 дня назад
  • https://t.me/clickhouse_ru
    удалите всю system.metric_log, зачем она вам
  • https://t.me/clickhouse_ru
    version 21.8.4.51
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Find and delete empty .json files in the data directories of Log tables.

    https://github.com/ClickHouse/ClickHouse/issues/28578
    Clickhouse-server cannot start due to json exception · Issue #28578 · ClickHouse/ClickHouse

    I upgrade from 21.3 (LTS) to the latest version $ sudo apt-get update $ sudo apt-get install clickhouse-client clickhouse-server $ sudo service clickhouse-server restart I got this error: --- error...

  • @NikIvanov #234266 12:37 PM, 13 Sep 2021
    Добрый день!

    У меня есть набор событий от разных сервисов, которые пачками по 10-100к+ могут прилетать в ClickHouse

    1) Правильной ли будет практика хранить их в одной таблице в виде подобных колонок с учетом того, что ключей событий будет ограниченное количество:

    timeStamp
    eventID
    eventType
    array<keys>
    array<values>

    2) Удобно ли потом из такой структуры делать аггрегацию (различные срезы по часам, дням, и тп) в postgres?
    3) Какие могут быть подводные камни?
  • https://t.me/clickhouse_ru
    если в записи будет 10 ключей, то array<keys> и array<values> будут в 10 раз больше по размеру чем могли бы если бы хранилось в отдельных колонках, поэтому селекты просто будут работать в 10 раз дольше чем могли бы
  • @635404397 #234268 12:42 PM, 13 Sep 2021
    покритикуйте дизайн мутации данных. имеется таблица 20TB с показаниями датчиков. для упрощения схема такая: (device_id, metric_id, timestamp, value). Иногда от датчиков приходят "коррекции" за определенный период и данные за указанный период нужно перезаписать, т.е. удалить все сущ данные датчика за период и добавить новые:

    alter table on cluster delete where device = ? and timestamp between ? and ?

    insert into ...

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

    при получении коррекции
    1. alter main_table on cluster delete where device = ? and timestamp between ? and ?

    1. insert into main_table ... # вставка новых данных в таблицу. судя по документации "Мутации также упорядочены со вставками - гарантируется, что данные, вставленные в таблицу до начала выполнения запроса мутации, будут изменены, а данные, вставленные после окончания запроса мутации, изменены не будут."
    insert into temp_table_{device_id} # вставка новых данных во временную таблицу
    2. create or replace view on cluster data_view as select * from main_table where not (device = ? and timestamp between ? and ?) union all temp_table_{device_id}

    т.е. будет такой динамический view, который отсекает из основной таблицы то, что должно было бы быть удалено + union all на "временные" таблицы.

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

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

    вообще мутации можно выполнять синхронно alter table on cluster delete where device = ? and timestamp between ? and ? settings mutation_sync=2
  • https://t.me/clickhouse_ru
    @nikitenkoolga #234273 12:48 PM, 13 Sep 2021
    @den_crane а есть какая-то стабильная версия у клика?
  • @635404397 #234274 12:50 PM, 13 Sep 2021
    ранее вы говорили, что мутации могут неделями висеть. это костыльным способ получить актуальные данные не надеясь на то, что мутация сработает за какое-то прогнозируемое время. даже на небольшой таблице в пару сотен gb мутации висят иногда по полчаса и непонятно как их ускорить. optimize final partition не помогает.
  • https://t.me/clickhouse_ru
    Я использую у себя в проде 20.8.
    21.8 я начал тестировать и закончу тестирование в апреле и возможно поставлю в прод ее.
  • https://t.me/clickhouse_ru
    кильнула все невыполненные и снова запустила, к сожалению пока нет результата, репликации нет так что mutations_sync вроде влиять не должен
  • https://t.me/clickhouse_ru
    в этом смысле да. То что мутация вообще завершится, гарантий нет.
  • https://t.me/clickhouse_ru
    так а мутации завершаются?
  • https://t.me/clickhouse_ru
    из запущенных сегоодня не завершаются
  • https://t.me/clickhouse_ru
    ну и в что в колонка last_exception в system.mutations
    что в system.merges ? system.replication_queue?
  • https://t.me/clickhouse_ru
    просто у нас клик новый, там меньше 2 недель логов
  • https://t.me/clickhouse_ru
    @nikitenkoolga #234282 12:56 PM, 13 Sep 2021
    и одна нода
  • https://t.me/clickhouse_ru
    @nikitenkoolga #234283 12:57 PM, 13 Sep 2021
    и данных не много и он там падает безвозвратно
  • @simpl1g #234284 12:58 PM, 13 Sep 2021
    Подскажите такой вопрос. Пытаюсь понять в каких случаях стоит самому выносить что-то в PREWHERE, иногда прирост довольно хороший получается, но в данном запросе на 30% медленнее выполняется, хотя данных меньше читается. Может кто знает почему так происходит или что можно почитать по этой тематике?

    https://gist.github.com/simpl1g/c82ed2b41eefc0f1c57bc1112b78035f
  • https://t.me/clickhouse_ru
    ┌─latest_failed_part─┬────latest_fail_time─┬─latest_fail_reason─┐
    │ │ 1970-01-01 00:00:00 │ |
  • https://t.me/clickhouse_ru
    @nshumshurova #234286 01:02 PM, 13 Sep 2021
    system.replication_queue пусто, system.merges мерджится сегодняшний день
  • @vvvjhaq #234287 01:05 PM, 13 Sep 2021
    Не подскажите значение этого ZooKeeperWaitMicroseconds эвента из system.events?
  • https://t.me/clickhouse_ru
    @zholmyrza_t #234288 01:21 PM, 13 Sep 2021
    всем привет! как можно засекьюрить пользователя для репликации указываемый в настройках реплик? Чтобы это было нечитабельное <password>yourpass</password>. Работают ли хешы как в users.xml?
  • https://t.me/clickhouse_ru
    а всю строку из select * from system.mutations where not is_done format vertical

    select * from merges format vertical
  • https://t.me/clickhouse_ru
    это не репликация. Это distributed запросы.

    >Чтобы это было нечитабельное <password>yourpass</password>.
    нет.

    >Работают ли хешы как в users.xml?
    нет.

    Можно сделать пользователя без пароля и запретить ему подключаться не с серверов КХ.
  • https://t.me/clickhouse_ru
    подробнее про падает
  • https://t.me/clickhouse_ru
    @temurlord #234293 02:33 PM, 13 Sep 2021
    Добрый день, такой вот вопрос возник:
    В доках к таблице system.parts есть колнки min_date, min_time, max_date, max_time. В их описании упоминается, что эти значения берутся из value of the date key in the data part

    Я не совсем понимаю, что значит date key in data part это значение какой-то специальной колонки в таблице или что-то такое?

    Юзкейс такой: Хочу сделать ручную ротацию через удаление партиций, для этого мне нужно чётко понимать какие значения колонки timestamp есть в каждой партиции, и ротировать довольно гранулярно (по часам), не подскажете куда смотреть?
  • https://t.me/clickhouse_ru
    развернули сервер клика в тестовом режиме, новая версия, один юзер, 128 Gb памяти. Залили туда данных, не очень много. Вчера он упал и восстановил свое состояние на 3 дня назад.И еще пару раз днем показывал ожидаемое состояние с нужным набором таблиц и данных. Логи выше, в потом он просто пишет, что у него все хорошо и ругается только на ошибки пропавших таблиц. Там еще в схеме немного менялось, поэтому я точно знаю на сколько дней назад он восстал. Виртуалка + кубер - и рестарт при падении. Какая еще информация вам мб полезна?
  • https://t.me/clickhouse_ru
    Это значение колонки которую вы задали в PARTITION BY some_func(x)
  • https://t.me/clickhouse_ru
    @temurlord #234296 02:39 PM, 13 Sep 2021
    Понял, спасибо
  • https://t.me/clickhouse_ru
    > Вчера он упал и восстановил свое состояние на 3 дня назад.
    >И еще пару раз днем показывал ожидаемое состояние с нужным набором таблиц и данных.

    у вас Replicated таблицы с зукипером ?

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

    >Виртуалка + кубер - и рестарт при падении
    можете переформулировать, я не могу понять этой фразы.
  • https://t.me/clickhouse_ru
    нет, у нас просто mergetree без кластера и зукипера
    там одна нода.
    Виртуалка + кубер точно не знаю как это организовано, но есть стандартный рестарт после падения

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

    есть такие проблемы https://github.com/ClickHouse/ClickHouse/issues?q=is%3Aissue+label%3Acrash+label%3Av21.8-affected+
    Issues · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @vladislav_sakun #234301 03:11 PM, 13 Sep 2021
    Добрый вечер!
    Делаю запрос с ClickHouse 20.8 в ClickHouse 19.16
    SELECT * FROM remote('host:port', db.table)
    Получаю ошибку DB::Exception: Unknown setting default_database_engine
    С этим можно что-то сделать?
  • https://t.me/clickhouse_ru
    SELECT * FROM system.settings WHERE changed;
  • https://t.me/clickhouse_ru
    SELECT *FROM system.settingsWHERE changed┌─name───────────────────────── - Pastebin.com

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

  • https://t.me/clickhouse_ru
    Ну у вас эта настройка указана в дефолтном конфиге, вот кх и передает ее в remote запросе
  • https://t.me/clickhouse_ru
    Это я уже её установил, пробовал без неё результат тот же
  • https://t.me/clickhouse_ru
    А вы что хотите таким образом сделать?
    Данные перелить?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Можно сделать наоборот:
    на 19.16
    : INSERT INTO TABLE FUNCTION remote('host_20.8', ...) SELECT * FROM local

    Можно ли как то заигнорить эту настройку это вопрос на самом деле.
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @zagirnur #234312 03:47 PM, 13 Sep 2021
    Работает ли optimize_on_insert=1 для MATERIALIZED VIEW?

    У меня есть основная таблица(`MergeTree`) и аггрегированная(`AggregatingMergeTree`) и в некоторых случаях не всегда объединяются строки и получаются 2 строки с одинаковым ключом, которые cо временем объединяются

    UPD: данные в аггрегат перегоняются через MATERIALIZED VIEW
  • https://t.me/clickhouse_ru
    выглядит как будто у вас что-то с кубером перемудрили. может там два контейнера подняли и вы периодически конектитесь на правильный с нужным стейтом, а периодически на старую копию. или типа того.
  • https://t.me/clickhouse_ru
    Проверю, спасибо
  • https://t.me/clickhouse_ru
    @1516245565 #234315 04:49 PM, 13 Sep 2021
    Привет, какой linter посоветуете для clickhouse? Я вижу, что много отличий от ANSI и поэтому дефолтные sqlfluff не работает. Есть ли какие то рекомендации на этот счёт?
  • https://t.me/clickhouse_ru
    это не из-за optimize_on_insert, вообще optimize_on_insert рекомендуется выключить, это вредная штука.

    строки не объединяются потому мержи eventual.
    все запросы к SummingMT / AggregatingMT должны выполняться с group by , чтобы домерживать в select
  • https://t.me/clickhouse_ru
    clickhouse-format <<< 'select 1'
    SELECT 1

    clickhouse-format <<< 'select 1 from from from from'
    Code: 62. DB::Exception: Syntax error (query): failed at position 20 ('from'): from from
  • https://t.me/clickhouse_ru
    @den_crane #234318 05:06 PM, 13 Sep 2021
    clickhouse-format <<< 'select 1 from from as from'
    SELECT 1
    FROM from AS from
  • @fdeh75 #234320 06:35 PM, 13 Sep 2021
    Всем привет!
    Есть какой-нибудь "официальный" хак для оптимального преобразования UInt256 в hex?

    вот так select hex(toUInt64(11)) работает
    вот так select hex(toUInt256(11)) не работает

    Решил адреса эфира хранить числами, чтобы меньше места занимало, но столкнулся с этой проблемой.
  • https://t.me/clickhouse_ru
    храните как FixedString(32)
  • https://t.me/clickhouse_ru
    А hex(reinterpretAsString(toUInt256(11))) не будет работать?
  • https://t.me/clickhouse_ru
    будет, только задом наперед все байты и слова,
  • https://t.me/clickhouse_ru
    @den_crane #234324 06:44 PM, 13 Sep 2021
    типа как тут
    SELECT hex(reinterpretAsString(toUInt64(1111111)))
    ┌─hex(reinterpretAsString(toUInt64(1111111)))─┐
    │ 47F410 │
    └─────────────────────────────────────────────┘

    SELECT hex(toUInt64(1111111))
    ┌─hex(toUInt64(1111111))─┐
    │ 10F447 │
    └────────────────────────┘
  • https://t.me/clickhouse_ru
    hex(reverse(reinterpretAsString(toUInt256(1111)))) )))
  • https://t.me/clickhouse_ru
    @106936600 #234326 06:45 PM, 13 Sep 2021
    А вообще да, правильно звучит хранить байтики в FixedString
  • @fdeh75 ↶ Reply to #234322 #234327 06:45 PM, 13 Sep 2021
    select hex(reinterpretAsString(toUInt256(115792089237316195423570985008687907853269984665640564039457584007913129639935)));
  • @fdeh75 #234329 06:46 PM, 13 Sep 2021
    почти заработало)
  • @fdeh75 #234330 06:46 PM, 13 Sep 2021
    только не весь диапазон берет
  • https://t.me/clickhouse_ru
    select hex(reinterpretAsString(115792089237316195423570985008687907853269984665640564039457584007913129639935::UInt256));
    ┌─x────────────────────────────────────────────────────────────────┐
    │ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF │
    └──────────────────────────────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    @den_crane #234332 06:47 PM, 13 Sep 2021
    115792089237316195423570985008687907853269984665640564039457584007913129639935 -- это UInt64 для SQL КХ
  • https://t.me/clickhouse_ru
    @den_crane #234333 06:48 PM, 13 Sep 2021
    но это все неправильно, храните как FixedString(32)
  • @fdeh75 ↶ Reply to #234331 #234334 06:48 PM, 13 Sep 2021
    Вы мой герой)
    Подумаю еще поповоду FixedString
  • https://t.me/clickhouse_ru
    про задом наперед вас не волнует видимо проблема?
  • https://t.me/clickhouse_ru
    @den_crane #234336 06:50 PM, 13 Sep 2021
    маленький индеец большой индеец?
  • @fdeh75 #234337 06:50 PM, 13 Sep 2021
    Помню была функция в бд на этот счет
  • https://t.me/clickhouse_ru
    @den_crane #234338 06:51 PM, 13 Sep 2021
    reverse? сомневаюсь
  • @fdeh75 #234339 06:51 PM, 13 Sep 2021
    Да, вродебы.
  • @fdeh75 #234340 06:52 PM, 13 Sep 2021
    но если есть вариант хранить бинарно - то буду бинарно. Глаз замылился, видимо.
  • @fdeh75 #234341 06:59 PM, 13 Sep 2021
    У меня еще вопрос про большие числа. В случае с математическими операциями есть ли у меня возможность получить исключение в случае переполнения типа (всех 256 бит)? Сейчас наблюдаю просто переполнение.
  • @fdeh75 #234342 07:00 PM, 13 Sep 2021
    в прикладном коде у меня нет ограничений на "длину" числа. Но хотелось бы в суммы в базе считать.
  • https://t.me/clickhouse_ru
    нету способа
  • @fdeh75 ↶ Reply to #234343 #234344 07:00 PM, 13 Sep 2021
    спасибо!
  • https://t.me/clickhouse_ru
    @198385297 #234346 07:57 PM, 13 Sep 2021
    Добрый вечер!
    есть ли опыт настройки внешней авторизации? LDAP хранить роли пользователя и обновляются они часто.

    В прилагаемом описании указано что после аутентификации можно маппить роли с субд на роли в AD и правильно ли я понял что локально дублировать или синхронизировать роли пользователей не надо? только правило соответсвия ролей локальных и в AD задается

    https://clickhouse.tech/docs/ru/operations/external-authenticators/ldap/
    LDAP | Документация ClickHouse

    LDAP Для аутентификации пользователей ClickHouse можно использовать сервер LDAP. Существуют два подхода: Использовать LD

  • https://t.me/clickhouse_ru
    Локальные роли должны существовать. Список ролей/групп из LDAP/AD уже надо маппить в локальные (существующие в ClickHouse) роли.
  • https://t.me/clickhouse_ru
    @198385297 #234348 08:15 PM, 13 Sep 2021
    Да да
    Но самого юзеров локально не надо создавать, и группу им локально синхронизировать ?
  • https://t.me/clickhouse_ru
    @198385297 #234349 08:16 PM, 13 Sep 2021
    И где храниться набор групп пользователя во время запроса?
  • https://t.me/clickhouse_ru
    Существуют два подхода:
    - Использовать LDAP как внешний аутентификатор для существующих пользователей, которые определены в users.xml, или в локальных параметрах управления доступом.
    - Использовать LDAP как внешний пользовательский каталог и разрешить аутентификацию локально неопределенных пользователей, если они есть на LDAP сервере.

    При первом - юзер должен быть уже определен локально. При втором - должен НЕ быть определен локально.
  • https://t.me/clickhouse_ru
    SHOW | ClickHouse Documentation

    SHOW Statements SHOW CREATE TABLE SHOW CREATE [TEMPORARY] [TABLE|DICTIONARY|VIEW] [db.]table|view [INTO OUTFILE filename

  • https://t.me/clickhouse_ru
    …или вы про AD?
  • https://t.me/clickhouse_ru
    @198385297 #234353 08:21 PM, 13 Sep 2021
    Да да про clickhouse
  • https://t.me/clickhouse_ru
    @198385297 #234354 08:21 PM, 13 Sep 2021
    Спасибо за запрос
  • https://t.me/clickhouse_ru
    @tron_wai #234355 08:22 PM, 13 Sep 2021
    👍
  • https://t.me/clickhouse_ru
    @198385297 #234356 08:22 PM, 13 Sep 2021
    Волновал момент возможной подменов прав
  • https://t.me/clickhouse_ru
    @198385297 #234357 08:22 PM, 13 Sep 2021
    Получается подменить негде, все в изолированной сессии
  • https://t.me/clickhouse_ru
    @198385297 #234358 08:23 PM, 13 Sep 2021
    Ибо могла быть уязвимость в расширении прав
  • https://t.me/clickhouse_ru
    да, каждый раз заново. Но есть кеширование, см. verification_cooldown настройку LDAP сервера в ClickHouse
  • https://t.me/clickhouse_ru
    @198385297 #234360 08:24 PM, 13 Sep 2021
    Очень хорошо, главное что бы туда низя залезть
  • https://t.me/clickhouse_ru
    @198385297 #234361 08:25 PM, 13 Sep 2021
    И поправить текущую сессию
  • https://t.me/clickhouse_ru
    @198385297 #234362 08:27 PM, 13 Sep 2021
    Типо расширить себе права
  • https://t.me/clickhouse_ru
    @tron_wai #234363 08:27 PM, 13 Sep 2021
    Пока сессия открыта, она существует, но вроде менять GRANTS на ней нельзя, т.к., каталог, в котором информация о данном пользователе - read-only.
    Попробуйте.
  • https://t.me/clickhouse_ru
    @198385297 #234364 08:29 PM, 13 Sep 2021
    Вопрос 2
    Одновременно Kerberos и Ldap можно использовать?
  • https://t.me/clickhouse_ru
    @tron_wai #234365 08:30 PM, 13 Sep 2021
    для разных пользователей - да
  • https://t.me/clickhouse_ru
    @198385297 #234366 08:30 PM, 13 Sep 2021
    Ок
  • https://t.me/clickhouse_ru
    @tron_wai #234367 08:31 PM, 13 Sep 2021
    Kerberos - только для существующих локально пользователей (для которых он включен вместо проверки пароля и т.п.), и только для HTTP запросов.
  • https://t.me/clickhouse_ru
    @198385297 #234368 08:32 PM, 13 Sep 2021
    Интересует для сервисов как интеграционные потоки
  • https://t.me/clickhouse_ru
    @198385297 #234369 08:33 PM, 13 Sep 2021
    По mTLS нет описания, не поддерживается?
  • https://t.me/clickhouse_ru
    @tron_wai #234370 08:33 PM, 13 Sep 2021
    Нет, но возможно будет в ближайшем будущем.
  • https://t.me/clickhouse_ru
    @198385297 #234371 08:34 PM, 13 Sep 2021
    Отличные планы
  • https://t.me/clickhouse_ru
    @198385297 #234372 08:34 PM, 13 Sep 2021
    И неужели скоро аналог pgpl/sql будет?
  • https://t.me/clickhouse_ru
    @198385297 #234373 08:36 PM, 13 Sep 2021
    Аналог #hint?
    Acid?

    Год назад были просьбы и вроде готовы были обсудить сроки в 21году
    , а как в этом году ?
  • https://t.me/clickhouse_ru
    @tron_wai #234374 08:37 PM, 13 Sep 2021
    Это к @milovidov_an
  • https://t.me/clickhouse_ru
    @198385297 #234375 08:37 PM, 13 Sep 2021
    Хинты нужны для bi tool
  • https://t.me/clickhouse_ru
    @198385297 #234376 08:37 PM, 13 Sep 2021
    Хорошо напишу
  • https://t.me/clickhouse_ru
    хинты? А что можно хинтами было бы задать?
    Я вижу пока только first_rows / all_rows
  • https://t.me/clickhouse_ru
    @den_crane #234378 11:23 PM, 13 Sep 2021
    ну может хинт не использовать skip index еще можно сделать, хотя это нужно очень редко
  • 14 September 2021 (192 messages)
  • Вообще можно еще много чего. Можно типы джоинов задавать. Сеттинги разные на разные подзапросы. Материализовывать подзапрос или нет, выполнять фильтрацию и групинг на стороне дб линка или своей.
  • @milovidov_an #234381 06:21 AM, 14 Sep 2021
    3. Хинтов нет и планов по ним тоже нет.
    2. Acid в разработке, уже работает прототип.
    1. Нет. Из похожего сейчас появились UDF в виде внешних скриптов и в виде SQL выражений.
  • https://t.me/clickhouse_ru
    Мы использовали hint для однозначного определения плана запроса
  • https://t.me/clickhouse_ru
    @198385297 #234383 06:38 AM, 14 Sep 2021
    И ещё задавали степень параллела
  • https://t.me/clickhouse_ru
    Как задать число используемых ядер для запроса ?
  • Settings max_threads
  • https://t.me/clickhouse_ru
    @198385297 #234387 07:30 AM, 14 Sep 2021
    Спасибо
  • https://t.me/clickhouse_ru
    @198385297 #234388 07:31 AM, 14 Sep 2021
    Это весь запрос или можно на подзапрос ?
  • https://t.me/clickhouse_ru
    @198385297 #234389 07:31 AM, 14 Sep 2021
    Например когда работаю с внешними таблицами, хочу ограничить число обращений в Postgres
  • https://t.me/clickhouse_ru
    Не работает для отдельного запроса или подзапрос

    SET max_threads = 2; SELECT ...

    Это для соединения
  • https://t.me/clickhouse_ru
    @198385297 #234391 07:51 AM, 14 Sep 2021
    Вопрос остался актуальным , ограничение числа потоков для запроса и подзапроса

    можно ли реализовать?
  • https://t.me/clickhouse_ru
    @198385297 #234392 07:53 AM, 14 Sep 2021
    Вот такие манипуляции
    SET profile = 'postgres';
    SELECT ....;
    SET profile = 'default';

    Не помогут
  • @subotic0 #234394 08:12 AM, 14 Sep 2021
    Добрый день, после апа с 21.3 на 21.8 сильно возросла нагрузка на диск, есть ли какая-то опция для регулировки, или какие есть варианты?
  • Нет, говорю же, это нужно хинты допиливать и вообще обработку
  • https://t.me/clickhouse_ru
    Вот бы в план на 22год взяли
  • Да хоть каждый год на след брать можно )
  • https://t.me/clickhouse_ru
    ACID не убьет ли саму идею?
  • @softbot_xxl #234399 08:49 AM, 14 Sep 2021
    А можно подробнее про АСИД?
    1. Появятся WAL?
    2. Какой уровень изоляции планируется, snapshot isolation?
    3. Это будет работать с Distributed?
  • https://t.me/clickhouse_ru
  • @softbot_xxl #234401 08:51 AM, 14 Sep 2021
    Ну и как лочить будете внутри? Оптимистик небось какой-нибудь.
  • Нет, там всё очень легко и красиво получается.
    MVCC + snapshot изоляция.

    Сразу получим бонусы - транзакционная вставка в несколько таблиц, атомарные вставки в таблицу и все materialized views. Консистентное выполнение нескольких SELECT из одного снапшота.

    Всё это для MergeTree, ReplicatedMergeTree, и пока без Distributed (там тоже всё ясно, но будет не сразу).
  • @milovidov_an #234403 08:53 AM, 14 Sep 2021
    Вот здесь первый прототип: https://github.com/ClickHouse/ClickHouse/pull/24258
    [WIP] In-memory MVCC prototype for MergeTree by tavplubix · Pull Request #24258 · ClickHouse/ClickHouse

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

  • @milovidov_an #234404 08:53 AM, 14 Sep 2021
    [RFC] Limited support for transactions in MergeTree tables · Issue #22086 · ClickHouse/ClickHouse

    Use case Main use cases: Ability to execute multiple INSERTs (maybe into multiple MergeTree tables, including materialized views, #11909) in a single "transaction". All INSERT que...

  • @milovidov_an #234405 08:54 AM, 14 Sep 2021
    WAL тоже будет, но он не связан с транзакциями, можно отдельно включать и выключать.
  • https://t.me/clickhouse_ru
    @1695040889 #234406 08:54 AM, 14 Sep 2021
    wal - а tmp_insert не оно ли?
  • @milovidov_an #234407 08:59 AM, 14 Sep 2021
    Не, это не лог, это одна вставка, она либо целиком записана и переименована, либо не считается.
  • https://t.me/clickhouse_ru
    @1695040889 #234408 08:59 AM, 14 Sep 2021
    Граждане, хелп, я чего-то не понимаю, однозначно.
    create view x as select bla-bla-bla from remote(bla-bla-bla) union all select bla-bla-bla from remote(bla-bla-bla);
    select count(*) from x всегда 0
    select count(*) from x where всегда пусто
    select * from x limit 10 дает результат
  • @milovidov_an #234409 08:59 AM, 14 Sep 2021
    WAL для in-memory кусков. Которые у нас сейчас в финальной стадии разработки (доступны в релизах, но не полностью готовы для продакшена)
  • https://t.me/clickhouse_ru
    Да, эту странность заметил, запрос на вставку по таймауту отвалился, а кол-во строк продолжает прирастать :)
  • https://t.me/clickhouse_ru
    wal не помешал бы со всеми вставками
    но это, повторюсь, перечеркнет всю идею скоростной вставки
  • https://t.me/clickhouse_ru
    @1695040889 #234413 09:12 AM, 14 Sep 2021
    select * from x where bla-bla-bla limit 10 тоже пусто
  • https://t.me/clickhouse_ru
    @1695040889 #234414 09:14 AM, 14 Sep 2021
    where превращается в prewhere на ноде назначения, может кто-то объяснить, если не затруднит, что это значит?
  • https://t.me/clickhouse_ru
    Почему WAL должен замедлить вставку?
  • https://t.me/clickhouse_ru
    @yourock88 #234416 09:18 AM, 14 Sep 2021
    ClickHouse ведь мержи когда делает, тоже по несколько раз одни и те же данные с диска читает и пишет, и вроде все живы до сих пор :).
  • https://t.me/clickhouse_ru
    Ну, вроде, пока никто не смог факт дублирования записи обойти?
  • https://t.me/clickhouse_ru
    Я тогда накину немного ещё: раз есть MVCC и прочее, может быть и апдейты без необходимости вручную использовать ReplacingMergeTree и группировки подъедут? Всё это вроде итак есть с SELECT ... FINAL и прочим, но выглядит так, что ClickHouse мог бы и сам схлопывать лишние строки при чтении партов, как в обычном LSM
  • https://t.me/clickhouse_ru
    Дублирование записи для WAL не так уж сильно замедлит вставку, потому что данные все равно наверняка будут сжиматься, как и для обычных партов, и к тому же, как я уже выше написал, ClickHouse итак по много раз данные пишет на диск из-за мержей.
  • https://t.me/clickhouse_ru
    Кстати, а auto increment кроме как через словари можно сделать?
  • https://t.me/clickhouse_ru
    @hombit #234421 09:24 AM, 14 Sep 2021
    Добрый день. Подскажите, в чем может быть проблема, могу с одного хоста на другой подключиться с помощью клиента, но использование функции remote() с того же хоста возвращает Timeout
  • @milovidov_an #234422 09:25 AM, 14 Sep 2021
    Не, с апдейтами всё сложно. Сразу перелопачивать старые данные нельзя. А если делать это постепенно и мержить в фоне, то возникают ещё сложности с репликацией...

    Например, можно рассмотреть частный случай задачи - сделать unique primary key. И она как-то плохо решается :(
  • https://t.me/clickhouse_ru
    @1695040889 #234423 09:25 AM, 14 Sep 2021
    Ну, возможно, а если wal будет compact?
  • @milovidov_an #234424 09:26 AM, 14 Sep 2021
    Тут не понимаю, что имеется ввиду.
  • https://t.me/clickhouse_ru
    @1695040889 #234425 09:28 AM, 14 Sep 2021
    Ну, типы хранимых таблиц - compact & wide
  • https://t.me/clickhouse_ru
    Хм, но ведь сейчас (вроде?) в ClickHouse нет уникальных индексов. Без них апдейты можно было бы делать относительно безболезненно? Но вообще да, про репликацию я не подумал, спасибо за ответ.
  • @milovidov_an #234427 09:29 AM, 14 Sep 2021
    У нас есть три вида кусков в MergeTree: wide, compact, in-memory.
    Compact уже давно в продакшене по-умолчанию.
  • Да, сейчас в проработке вариант, где во время апдейта мы вычисляем маски удалённых строк, записываем их вместе с новыми данными... всё это формирует новый кусок и удаления старых строк применяются при чтении.
  • https://t.me/clickhouse_ru
    Точно-точно? Именно compact?
  • @milovidov_an #234430 09:33 AM, 14 Sep 2021
    Да.
  • https://t.me/clickhouse_ru
    Куски данных могут храниться в формате Wide или Compact. В формате Wide каждый столбец хранится в отдельном
    файле, а в формате Compact все столбцы хранятся в одном файле. Формат Compact может быть полезен для
    повышения производительности при частом добавлении небольших объемов данных.
    Это из документации.
  • https://t.me/clickhouse_ru
    @1695040889 #234432 09:41 AM, 14 Sep 2021
    Я подниму вопрос, извините :(
  • https://t.me/clickhouse_ru
    @1695040889 #234433 09:41 AM, 14 Sep 2021
    Граждане, хелп, я чего-то не понимаю, однозначно.
    create view x as select bla-bla-bla from remote(bla-bla-bla) union all select bla-bla-bla from remote(bla-bla-bla);
    select count(*) from x всегда 0
    select count(*) from x where всегда пусто
    select * from x limit 10 дает результат
  • https://t.me/clickhouse_ru
    @1695040889 #234434 09:42 AM, 14 Sep 2021
    select * from x where bla-bla-bla limit 10 тоже пусто
  • https://t.me/clickhouse_ru
    @1695040889 #234436 09:56 AM, 14 Sep 2021
    Забавно
    select * from x where y = (select min(y) from x limit 1) limit 10;
    DB::Exception: Limit for result exceeded, max rows: 1.00, current rows: 65.50 thousand.
  • @theo_inside #234438 11:55 AM, 14 Sep 2021
    Возможно ли в кликхаусе создать алиас для таблицы?
    Не нашёл подобного в документации.
  • в запросе?
  • Нет, на уровне базы - чтобы к одной таблице можно было обращаться по раным названиям в любых запросах.
  • https://t.me/clickhouse_ru
    Merge?
  • О, это подходит.
    Но, как я понимаю, этот движок нужен для параллельного чтения из разных таблиц - не возникнет каких-то проблем из-за того, что я использую его для чтения из одной довольно большой таблицы?
  • https://t.me/clickhouse_ru
    Мне кажется, Merge выступает ровно как алиас, просто еще с доп фичами. Но я сам не юзал
  • может быть view логичнее?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #234442 #234445 12:15 PM, 14 Sep 2021
    тут view очень ограниченное - условия where не прокидываются, поэтому ценность view стремится к нулю на реальных запросах. Не очень понятен изначальный вопрос - про обращения по разным именам к одной и той-же таблице.
  • view, кажется, не логичнее - он, как я понимаю, будет выполнять select * from table, после чего хранить результат этого селекта в памяти
  • так и задача не звучит логичной)
    зачем разный нейм для одной таблицы?
  • https://t.me/clickhouse_ru
    в этом и проблема, нечего пока задавать, у плана нету возможных вариантов.
  • https://t.me/clickhouse_ru
    и на весь и в каждом подзапросе можно свои settings
  • Задача следующая:
    Есть две таблицы c одинаковой структурой.
    Нужно иметь возможность быстро заменять одну таблицу на другую для большого количества запросов в разных местах.
    Идея следующая: создать алиас и написать запросы к нему. По мере необходимости делать его алиасом первой или второй таблицы.
  • https://t.me/clickhouse_ru
    1 нет
    2 snapshot isolation
    3 нет
  • https://t.me/clickhouse_ru
    в серверных настроках, прямо в корне задайте asynchronous_metrics_update_period_s=60
  • @l_dar #234453 12:24 PM, 14 Sep 2021
    Привет.
    Подскажите, вот такая конструкция рабочая?

    ALTER TABLE table
    ATTACH PARTITION '2021-04-25' FROM remote('','','','','')
  • @l_dar #234454 12:25 PM, 14 Sep 2021
    Я про remote()
  • https://t.me/clickhouse_ru
    Покопаю, спсб
  • https://t.me/clickhouse_ru
    Incorrect count optimization with UNION DISTINCT · Issue #27578 · ClickHouse/ClickHouse

    ClickHouse chooses a column to calculate count, and then UNION DISTINCT collapses the result set. SELECT * FROM system.databases UNION DISTINCT SELECT * FROM system.databases ┌─name ───┬─engine ─────...

  • а можете подсказать что за она? на что влияет
  • https://t.me/clickhouse_ru
    это частота с которой КХ пишет в таблицу system.asynchronous_metrics_log.
    была раз в минуту, начиная с 21.8 пишет раз в секунду
  • Спасибо!
  • https://t.me/clickhouse_ru
    будет медленно. Сейчас множество потоков могут читать фильтровать и группировать независимо разные парты
  • тогда Merge выглядит неплохо, _table есть для условий
    Там пушдаун для вью не работает вроде
  • https://t.me/clickhouse_ru
    возникнет много разных проблем
  • Т.е. так делать не стоит?
  • https://t.me/clickhouse_ru
    возникнет много разных проблем, лучше не использовать engine=Merge без крайней необходимости.
    он редко используемый и постоянно ломается, сейчас неправильный результат при сортировке например
  • https://t.me/clickhouse_ru
    @den_crane #234465 12:39 PM, 14 Sep 2021
    ORDER BY does not work as expected with Merge engine · Issue #28198 · ClickHouse/ClickHouse

    I have two tables something like the following (ClickHouse server version 20.8.7 revision 54438): CREATE TABLE short (e UUID, t DateTime, ...24 additional columns...) ENGINE = MergeTree PARTITION B...

  • Ок, спасибо.
    Таким образом, средствами Clickhouse моя задача сейчас не решается?
  • https://t.me/clickhouse_ru
    >условия where не прокидываются
    прокидываются, если возможно
  • https://t.me/clickhouse_ru
    да, алиасов объектов нет.
    что за задача то?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #234467 #234469 12:41 PM, 14 Sep 2021
    недавно сделали? Или какие-то важные нюансы есть? Раньше читало всю таблицу.
  • https://t.me/clickhouse_ru
    нерабочая, там будет другой синтаксис

    ALTER TABLE {database}.{table} MOVE PART 'all_0_0_0' TO SHARD '/clickhouse/tables/ck_cluster/2/{database}/{table}
  • https://t.me/clickhouse_ru
    много лет назад сделали
  • Есть две таблицы c одинаковой структурой.
    Нужно иметь возможность быстро заменять одну таблицу на другую для большого количества запросов в разных местах.
    Идея следующая: создать алиас и написать запросы к нему. По мере необходимости делать его алиасом первой или второй таблицы.
  • https://t.me/clickhouse_ru
    зачем?
  • Нужно для этих запросов перейти с одной таблицы на другую с возможностью быстро откатить.
  • https://t.me/clickhouse_ru
    один сервер? проще Distributed пересоздавать
  • Distributed подходит, спасибо!
  • Привет, подскажите плз простой пример как можно изменить параметры только для подзапроса.
  • https://t.me/clickhouse_ru
    не всё можно менять
    select * from (select from settings xxx=...) settings xxx=...
    что за проблема?
  • https://t.me/clickhouse_ru
    @198385297 #234479 01:00 PM, 14 Sep 2021
    Не очень понял пример, мне также актуально пример
  • https://t.me/clickhouse_ru
    у каждого select можно задать settings, НО не все settings можно менять и не везде.

    я не понимаю что за проблему решаем?
  • https://t.me/clickhouse_ru
    Полагаю, зависит от реализации. Например, писать WAL для каждой колонки, партиции и т.д. отдельно, но согласен, об этом не подумал. В случаях, когда есть одна основная таблица, куда идет вся запись, WAL может замедлить вставку до скорости записи одного HDD, если вся запись сериализуется
  • https://t.me/clickhouse_ru
    У меня
    ограничить нагрузку на внешние источники

    И полезно для ограничения ресурсов на определенную задачу, оставим другим ресурсы
  • https://t.me/clickhouse_ru
    сейчас пилятся легковесные delete, которые будут в спец. парт писать маски для удаленных записей.
  • https://t.me/clickhouse_ru
    эм, чта?, КХ в постре не может задать уровень параллелизма
  • https://t.me/clickhouse_ru
    @198385297 #234485 01:09 PM, 14 Sep 2021
    И не надо
  • https://t.me/clickhouse_ru
    я не понимаю куда стреляем
  • https://t.me/clickhouse_ru
    @198385297 #234487 01:10 PM, 14 Sep 2021
    Снижаем число обращений в источник
  • https://t.me/clickhouse_ru
    @198385297 #234488 01:10 PM, 14 Sep 2021
    И не тратим ресурсы на задачу второго плана
  • https://t.me/clickhouse_ru
    @198385297 #234489 01:10 PM, 14 Sep 2021
    Но гарантируем минимум потоков, достаточно для выполнения в расчётное время
  • https://t.me/clickhouse_ru
    вы точно про КХ говорите? Такое ощущение что я попал в параллельную вселенную и там другой КХ. Или я настолько не разбираюсь в КХ что не вдупляю
  • https://t.me/clickhouse_ru
    @art_mir #234491 01:13 PM, 14 Sep 2021
    Привет, кто может подсказать, как можно грузить значения NaN(NULL) в КХ с питона, заполнение всех пропусков не подходит?
  • https://t.me/clickhouse_ru
    вы про приоритеты в двух разных сессиях?
  • https://t.me/clickhouse_ru
    Спасибо за помощь, протестирую эти параметры.
  • https://t.me/clickhouse_ru
    NaN и NULL вообще-то разные штуки.
    и в чем собственно проблема? Берете и грузите? Что не получается?
    у питона 4 разных драйвера для КХ, вы про какой?
  • https://t.me/clickhouse_ru
    Это для etl процессов важно. Сессии могут быть разные, в этом кейсе одна. иногда сложные запросы много ресурсов потребляют.

    И управлять ресурсами удобнее из запроса и не привязываться к параметрам сессии
  • https://t.me/clickhouse_ru
    Использую clickhouse_driver, если отправлять NaN выдает ошибку "AttributeError: 'float' object has no attribute 'encode'" на просторах интернетов не нашел как решить это, поле в которое отправляю NaN типа String
  • https://t.me/clickhouse_ru
    select avg(number) from numbers_mt(10000000000) settings max_threads=1, priority=1;
    Elapsed: 2.609 sec.

    select avg(number) from numbers_mt(10000000000) settings max_threads=16;
    Elapsed: 0.332 sec.
  • https://t.me/clickhouse_ru
    Да да
    🙏
  • https://t.me/clickhouse_ru
    NaN -- это только!!!!! про float, причем Nan и None (Null) это вообще совершенно разные вещи.
    вам похоже нужен именно None
    у String только None (Null) возможен https://github.com/mymarilyn/clickhouse-driver/issues/91

    Nan это типа результат выражения 0/0
  • https://t.me/clickhouse_ru
    Спасибо, попробую
  • https://t.me/clickhouse_ru
    select 1/0 ;
    ┌─divide(1, 0)─┐
    │ inf │
    └──────────────┘

    SELECT 0 / 0
    ┌─divide(0, 0)─┐
    │ nan │
    └──────────────┘

    select sum(1) x where 0 settings aggregate_functions_null_for_empty=1;
    ┌────x─┐
    │ ᴺᵁᴸᴸ │
    └──────┘
  • @635404397 #234503 02:04 PM, 14 Sep 2021
    Вопрос про репликацию - как восстанавливаются данные после потери одной из реплик?Интересует в контексте durability записи. К примеру имеется две реплики, на первую из них пришел insert запрос, блок записался в первую и был реплицирован на вторую. Сразу после этого первая реплика перезагружается не успев сбросить данные на диск. После рестарта первой реплики она автоматически восстановится и получит недостающие данные со второй? или будет рассинхрон данных между репликами?
  • https://t.me/clickhouse_ru
    да, сфетчит парт со второй.
  • @635404397 #234506 02:29 PM, 14 Sep 2021
    отличненько. тогда след вопрос:

    какого порядка задержки стоит ожидать от репликации? например insert values (1) into table. через сколько в лучшем случае это появится на реплике при условии идеальной погоды - быстрая сеть, низкая нагрузка? ну чтобы не мечтать о миллисекундах.
  • https://t.me/clickhouse_ru
    @seriych #234507 02:53 PM, 14 Sep 2021
    Привет. Тут обнаружилось случайно, что LowCardinality(Nullable()) можно запихивать в order by таблицы, и оно с виду работает. Насколько это норм использовать, когда кардинальность колонки действительно низкая? С виду вставка, запросы, пропуск данных, запросы с final, optimize - всё работает.
  • https://t.me/clickhouse_ru
    Не стоит, это баг, оно должно быть закрыто экспериментальной настройкой allow_nullable_key.

    Там недавно вроде даже креш был где то рядом
  • https://t.me/clickhouse_ru
    @seriych #234509 03:10 PM, 14 Sep 2021
    Блин, так не честно)
  • @chamaeleon_rex #234510 03:17 PM, 14 Sep 2021
    Всем привет. Подскажите, пожалуйста, как я могу получить uuid, по которому располагаются данные таблицы в базе с движком atomic?
  • https://t.me/clickhouse_ru
    SELECT * FROM system.tables WHERE is_temporary = 0 SETTINGS show_table_uuid_in_table_create_query_if_not_nil=1
  • Спасибо
  • https://t.me/clickhouse_ru
    еще эту же настройку для SHOW CREATE TABLE попробуйте
  • Тоже работает)
  • https://t.me/clickhouse_ru
    ну почему бы не мечтать о милисекундах если сеть быстрая и Zookeeper на нормальном диске...

    вот если вы 1000 записей по одной умудритесь вставить... тогда да, ZK придется разгребать...
  • https://t.me/clickhouse_ru
    У меня бывший коллега как-то миллион вставил. Был очень опечален :)
  • https://t.me/clickhouse_ru
    @x4mmm #234517 03:49 PM, 14 Sep 2021
    Всем привет! Мы тут запилили хранение спанов Jaeger в Clickhouse
    https://news.ycombinator.com/item?id=28526526
  • https://t.me/clickhouse_ru
    красавцы, давно за этим проектом слежу
    не знал что этим именно ребята из Yandex занимаются =)
  • https://t.me/clickhouse_ru
    @x4mmm ↶ Reply to #234518 #234520 03:59 PM, 14 Sep 2021
    Ну там начинали не мы, но Юра подключился в активной фазе просто.
  • https://t.me/clickhouse_ru
    CREATE DICTIONARY
    покажите
  • https://t.me/clickhouse_ru
    SELECT count() FROM dbdbdbdbd.ThisIsView что показывает?

    ThisIsView это MATERIALIZED VIEW или обычный VIEW?
  • https://t.me/clickhouse_ru
    count() из него работает?
  • https://t.me/clickhouse_ru
    а что такое "открть созданный словарь" ?

    SELECT * FROM DashboardDataMartPlayerDict ?

    имя базы данных тут пробовали подставить?
  • https://t.me/clickhouse_ru
    очень странно, в какой момент ошибка выскакивает? случайно не во время старта? там были всякие приколы с dictGet в default выражениях
  • https://t.me/clickhouse_ru
    @AdSafe #234530 04:44 PM, 14 Sep 2021
    Подскажите пожалуйста, как сделать подобный запрос на CH (суммирование по условию) ?
    SELECT user_id, SUM(point) AS total_point, SUM(point=3) AS point_3, SUM(point=1) AS point_1
    FROM table
    WHERE status = 0
    GROUP BY user_id
    ORDER BY point_1,point_3,total_point
  • sumIf(point, point = 3)
  • https://t.me/clickhouse_ru
    @AdSafe ↶ Reply to #234531 #234533 04:46 PM, 14 Sep 2021
    благодарю!
  • https://t.me/clickhouse_ru
    в dictGet указывается имя базы данных? db.dict_name? или просто dict_name?
  • https://t.me/clickhouse_ru
    A словарь как создан? через XML или через CREATE DICTIONARY?
  • https://t.me/clickhouse_ru
    @700793887 #234539 06:08 PM, 14 Sep 2021
    Подскажите в таблице более 500млн записей, делаю перенос с одной таблицы в другую Insert Select где то 5 млн записей переносит и выдает ошибку, есть какой нибудь практичный способ переноса данных?
  • https://t.me/clickhouse_ru
    Есть buffer table engine, есть MV (но это больше триггер на вставку), а есть clickhouse-copier. Зависит от вашей задачи.
  • https://t.me/clickhouse_ru
    @critskiy #234541 06:15 PM, 14 Sep 2021
    А можно нааписать скрипт, который вставляет по 1000 записей, тем самым потребление памяти снизится (проверено на собственном опыте), но опять же, зависит от вас
  • https://t.me/clickhouse_ru
    превышено время ожидания
  • https://t.me/clickhouse_ru
    я тоже так подумал, ждал ждал, но данные не лились, может клиент прерывает
  • https://t.me/clickhouse_ru
    через секунду
  • https://t.me/clickhouse_ru
    LowCardinality(Nullable()) -- вообще не нормально. Зачем Nullable у строк?

    LowCardinality(Nullable()) в order by таблицы -- это баг, это не должно работать. И это роняет КХ.

    https://github.com/ClickHouse/ClickHouse/issues/28769
  • https://t.me/clickhouse_ru
    был в одной версии КХ баг что поля PRIMARY KEY playerId, brandName не стоят в первых позициях в структуре
  • https://t.me/clickhouse_ru
    из какого клиента вызываете?
  • https://t.me/clickhouse_ru
    dbeaver
  • https://t.me/clickhouse_ru
    поставьте в настройках драйвера в соед. socket_timeout = 600000000
  • https://t.me/clickhouse_ru
    О спасибо попробую
  • https://t.me/clickhouse_ru
    @S_Dimitry #234553 07:22 PM, 14 Sep 2021
    Подскажите, пожалуйста, а в каком случае КХ может обрезать последние 2 цифры ID, который тащим из ПГ. Тип данных на колонке выбран верно.
  • https://t.me/clickhouse_ru
    а что значит "выбран"?

    есть postgresql табличная функция https://clickhouse.tech/docs/en/sql-reference/table-functions/postgresql/
    если кверять через нее что показывается?
    postgresql | ClickHouse Documentation

    postgresql Allows SELECT and INSERT queries to be performed on data that is stored on a remote PostgreSQL server. Syntax

  • https://t.me/clickhouse_ru
    @1236463047 #234555 07:29 PM, 14 Sep 2021
    Всем привет,
    Вопросец - есть большая табличка, данные по часам. По истечении скажем неск мес часовые уже не нужны - я бы слил их в дневные. Добавил бы таблице TTL c group. А вопрос собсно - там миллиарды строк - если я скажу таблице Alter add ttl - не ляжет ли сразу сервер? Или КХ грамотно запустит в сторонке нечто, что тихонько поползет по таблице и за неск дней мне все сделает? База боевая
  • https://t.me/clickhouse_ru
    грузим в КХ через файл. Неожиданно при проверке нашлось несколько транзакций дубли ID, которые уникальны в пг. При детальной проверке выяснилось, что у этих ID отрезано 2 последних цифры. остальные колонки "не пострадали".
  • https://t.me/clickhouse_ru
    т.е. постгре вообще тут ни при чем.
    покажите пример id-шников, как они выглядели в файле, какой тип данных вы используете в КХ
  • https://t.me/clickhouse_ru
    а вы проверяли на пустой таблице? на тестовых данных из 3 строк? вы вообще можете добавить TTL group by на сущ. таблицу?
  • https://t.me/clickhouse_ru
    uint64, а вот файлов уже не смогу предоставить (приложение удаляет), запрос, который формирует файл из ПГ формирует его корректно. вместо 255186430 наблюдаю 2551864
  • https://t.me/clickhouse_ru
    а формат файла TSV/CSV/... ?
  • https://t.me/clickhouse_ru
    А что, разве нельзя добавить TTL в таблицу без TTL?
  • https://t.me/clickhouse_ru
    можно, просто для TTL GROUP BY обычна нужна особая структура ORDER BY
  • https://t.me/clickhouse_ru
    Незачем, но мы пока не можем выпилить старое легаси. А LowCardinality(Nullable()) работает также, как обычный Nullable - делает маску null-ов? Просто когда увидел, что работает, подумалось, что null просто делается отдельным элементом словаря, и поэтому тут поведение другое относительно простой Nullable колонки.
  • https://t.me/clickhouse_ru
    в общем вам надо
    set materialize_ttl_after_modify=0;
    alter table modify ttl....
    а потом вручную запускать alter table materialize ttl in partition по одной
  • https://t.me/clickhouse_ru
    TSV
  • https://t.me/clickhouse_ru
    аа, эдакий полуручной запуск - но ничего - нормально
  • https://t.me/clickhouse_ru
    должно работать, может какой-то древний баг.
    Какая версия КХ ?
  • https://t.me/clickhouse_ru
    А что там с особой структурой? Зачел еще раз док - не вижу нич специального. Ордер бу конечно есть, таблица SummingMergeTree и ордер by куча колонок, но первая - дата
  • https://t.me/clickhouse_ru
    21.5
  • https://t.me/clickhouse_ru
    Ну собсно, да, создам тест таблцу такой же структуры и попробую добавить ttl. Спасибо!
  • https://t.me/clickhouse_ru
    даже не знаю как сказать, group by можно делать только по префиксу order by
    вот тут в одном примере ORDER BY (key, toStartOfWeek(ts), toStartOfDay(ts), toStartOfHour(ts)) https://kb.altinity.com/altinity-kb-queries-and-syntax/ttl/ttl-group-by-examples/
  • https://t.me/clickhouse_ru
    скорее всего была проблема в выгрузке из PG, в файлах были уже кривые id
  • https://t.me/clickhouse_ru
    Да, именно. Отличная статья, спасибо
  • https://t.me/clickhouse_ru
    хорошо, завтра прогоню еще раз выгрузки, вдруг всплывет на тестовом стенде
  • https://t.me/clickhouse_ru
    @saintech #234582 08:25 PM, 14 Sep 2021
    Всем привет. Хочу разобраться почему простейший селект SELECT * FROM foo LIMIT 50 на 75к (2МБ) строк ставит весь КХ колом, но после запроса даже KILL QUERY не работает.
    Вопрос такой - как сделать, чтобы по таймауту запрос килялся сам, а не висел в system.processes? max_execution_time=20 и cancel_http_readonly_queries_on_client_close=1 ничего не дают независимо от типа подключения, это разве нормально?
  • @vvvjhaq #234583 08:55 PM, 14 Sep 2021
    Добрый вечер. Вернусь с проблемой медленной вставки, хотел бы еще уточнить момент.
    У нас есть таблица(replacing), где хранятся данные по вставленным id, по этой таблице мы мониторим какие id уже вставлены, а какие нет из источника.
    В таблице около 50 строк, в зависимости от таблицы в которую вставляем данные, берется нужный id и источник уже по нему загружает данные в КХ.
    Так вот, так как у нас много вставок, эта таблица заполняется данными постоянно, как минимум несколько раз в секунду, и выбираются id оттуда через final.
    И перед основными тормозами на вставке в другие таблицы, я вижу как вставка деградирует вставка и в эту маленькую таблицу, хотя вставляется туда всего несколько строк, но очень часто. И запросы на вставку в эту маленькую таблицу оканчиваются одновременно с тем как и заканчивается вставка в основные большие таблицы.

    Вопрос, может ли этот инсерт в маленькую таблицу деградировать все остальные запросы, и если да, то как ускорить?
    PS: обычно в эту таблицу вставки меньше 100мс
  • https://t.me/clickhouse_ru
    это нормально.
    В контексте запроса выставляется флаг killed, при переключении блоков (65k строк), флаг проверяется и выходим из выполнения.

    SELECT * -- полей сколько? Каждое поле аллоцирует 1MB буфер для декомпрессии, если полей много и max_threads=16 например то все они будут аллоцировать память, возможно очень долго.
  • https://t.me/clickhouse_ru
    так замените select final на argmax / или max
  • https://t.me/clickhouse_ru
    типа вы делаете insert table select .... from table final во многих потоках и оно зависает?

    и таблица Replicated
    и сколько реплик?
    вставка на разных репликах?
  • 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
    max_execution_time

    Максимальное время выполнения запроса в секундах.
    На данный момент не проверяется при одной из стадий сортировки а также при слиянии и финализации агрегатных функций.
  • https://t.me/clickhouse_ru
    Я это читал, спасибо что еще раз напомнили про этот момент, проверил - запрос без ORDER BY some_field DESC действительно быстро работает, а SELECT COUNT(*) FROM foo так же все вешает нафиг, теперь хотябы стало понятно на какой стадии. Но претензии к cancel_http_readonly_queries_on_client_close все еще остаются.
  • https://t.me/clickhouse_ru
    эм, `SELECT COUNT(*) FROM foo` не читает таблицу , там сделан хак, он считает по структуре в памяти, parts, в parts есть rows.
  • https://t.me/clickhouse_ru
    @den_crane #234594 10:23 PM, 14 Sep 2021
    он просто суммирует rows. select count() работает за наносекунды
  • https://t.me/clickhouse_ru
    @den_crane #234595 10:24 PM, 14 Sep 2021
    SELECT count()
    FROM fact_event

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

    1 rows in set. Elapsed: 0.062 sec.
  • https://t.me/clickhouse_ru
    @saintech #234597 11:05 PM, 14 Sep 2021
    да он рандомно уже виснет, ладно, буду разбираться дальше, спасибо
  • 15 September 2021 (112 messages)
  • https://t.me/clickhouse_ru
    @IceCoub #234602 06:08 AM, 15 Sep 2021
    привет всем!
    есть table_1
    есть mat_view_2

    я хочу соединить их скриптом:
    select * from table_1 t1
    left join mat_view_2 mv2 on t1.a = mv2.a
    where t1.date between mv2.eff_dt and mv2.exp_dt
    and t1.number between mv2.start_range and mv2.end_range

    но вылетает ошибка по превышению памяти
    подскажите, пожалуйста, как можно переделать такой запрос
  • https://t.me/clickhouse_ru
    Не использовать * / поменять таблицы местами / увеличить память / переделать структуру хранения данных / отказаться от КХ 🤷‍♂
  • https://t.me/clickhouse_ru
    @hostadminonline #234604 06:42 AM, 15 Sep 2021
    всем привет
    подскажите плз ни как не могу сообразить
    есть таблица в которой есть date, uhash
    дата и уникальный хеш задачи
    каждые сутки на каждую задачу в таблице появляется запись, т.е. uhash каждые сутки должен появлятся в таблице
    каким образом лучше вычислить среднее и максимальное время между записями uhash ?
  • нет
    если говорить про маленькую таблицу, то я делаю insert into values()
    их может быть 5-15 в секунду.
    select id from table final редкий
    Таблицаа replicated, 3 реплики. вставка только в одной реплике.
  • https://t.me/clickhouse_ru
    @last_hope_hero #234612 11:45 AM, 15 Sep 2021
    всем привет, подскажите такой вопрос
    есть table с движком kafka, есть MATERIALIZED VIEW соотв AS SELECT * FROM table с кафкой

    сам впорос, в таблицы добавилась новая колонка, достаточно ли при этом было сделать DETACH ATTACH самой view перед и после занесения новой колонки, или же нужно дропать ?
  • https://t.me/clickhouse_ru
    To секция есть в MV?
  • https://t.me/clickhouse_ru
    В гитхаб создавайте ишью и приложите код, чтобы можно было воспроизвести
  • https://t.me/clickhouse_ru
    всмысле секция ?
  • https://t.me/clickhouse_ru
    Суммирую . Т.е. вы делаете 15 вставок в сек. по одной строке в таблицу в которой 50 строк и иногда инсерты работают очень долго?
  • абсолютно так
  • https://t.me/clickhouse_ru
    Create mat. view mvname TO целеваятаблица
  • https://t.me/clickhouse_ru
    CREATE MATERIALIZED VIEW IF NOT EXISTS table_consumer TO table AS SELECT * FROM table_queue
    вот такое MATERIALIZED VIEW
  • точнее так, что пытаюсь выяснить взаимосвязь этих вставок в маленькую таблицу и много вставок в большую таблицу, может ли медленный инсерт на маленькую трогать и инсерт на другую таблицу. В этот момент селектов в маленькую таблицу нет
  • https://t.me/clickhouse_ru
    Тогда дропнуть мат.вью, пересоздать Кафка таблицу если надо , добавить поле в таблицу table и снова создать мат.вью
  • Добрый день, в отдельные промежутки времени нагрузка на диск все так же высока, может подскажете какие настройки можно подкрутить попробовать?
    И второй вопрос, кх в докер контейнерах, в моменты пиковой нагрузки на диск, все 3 базы перестают отвечать на запросы, и после ребута одного контейнера, все остальные базе начинают отвечать как ни в чем небывало
  • https://t.me/clickhouse_ru
    спасибо за помощь!
  • https://t.me/clickhouse_ru
    @mikhailberg #234626 12:32 PM, 15 Sep 2021
    Привет
    Подскажите такой вопрос

    Есть: кластер 2х2, таблица users_all engine distirbuted shard key user_id % 2, таблица users replacing, так же консьюмер из кафки для пользователей который вставляет данные в users_all

    Такая проблема: произошел баг, что записи с одинаковым user_id попадали в разные шарды. Как такое может быть ?
    Так же при выборке из локальной таблицы на шарде select * from users where user_id = X => возвращается то 2, то 3, то 5, то 1 записей в зависиомсти от фазы луны(записи полностью одинаковые).
  • https://t.me/clickhouse_ru
    @bububup #234630 12:49 PM, 15 Sep 2021
    #вакансия Всем привет!💚
    Вакансия: Retailers Marketing Analyst (Junior+)
    Компания: Сбермаркет
    Расположение: г.Москва, м.Новокузнецкая
    Формат: офис/ удаленно/ офис+удаленно
    Кто мы?
    💚Sbermarket.ru (ex-Instamart) – стартап по доставке продуктов из супермаркетов. Мы помогаем людям освободить время под что-то более важное, чем очереди в магазинах. За последние 2 года мы выросли в 70 раз и стали одним из крупнейших игроков на рынке e-grocery.
    💚У нас сильная команда, собранная из Яндекс, Avito, Ozon, Mail.ru, SkyEng, Gett, McKinsey, GoldmanSachs и тд. Эти люди будут прокачивать тебя и, надеемся, ты нас тоже научишь многому.
    💚Что нужно делать:
    Аналитика: Думать над правильными дизайнами исследований для проверки гипотез, внедрять их в текущие процессы, оценивать эффективность проектов (в том числе, при помощи А/Б тестов). Строить понятный и прозрачный репортинг, который позволяет бизнес-пользователям принимать data-driven решения
    Маркетинг: сотрудничать с маркетингом и Key Account Manager по ритейлеру для создания стратегии маркетинговых активностей в ключевых каналах digital и offline маркетинга для улучшения бизнес-метрик
    Создавать инструменты для эффективных бизнес-решений, которые закроют боли коллег
    💚Почему у нас круто?
    -Быстро принимаем решения и их тестируем. Без бюрократии и мучительных согласований.
    -Развиваемся сами и развиваем команду. Ходим на курсы, тренинги — их оплачивает компания. Если нужно, проводим внутренние митапы.
    -Опираемся на исследования и метрики, аккуратно следим за консистентностью и пикселями.
    -Делаем полезный продукт, который бережёт время для важного. Им пользуются миллионы людей (мы и сами им пользуемся).
    -Уважаем время и силы других. Не проводим созвоны, если не нужны. Готовимся перед выступлением, чтобы сообщать только важное.
    💚 Где можно ознакомиться с вакансией?
    С вакансией можно ознакомиться здесь: https://www.notion.so/Retailers-Marketing-Analyst-Junior-7ce886c0de6c42beac161455733d4f1c
    💚Что дальше?
    Отклики можно оставлять на ekaterina.presnukhina@sbermarket.ru или мне в лс @bububup
    Мы активно растем, поэтому у нас есть и другие вакансии, которые могут быть интересны джунам и не только;)
  • https://t.me/clickhouse_ru
    Похоже на спам
  • https://t.me/clickhouse_ru
    @bububup #234632 12:51 PM, 15 Sep 2021
    не спам, я не нашла админа, но вроде тут публиковали вакансии ранее
  • https://t.me/clickhouse_ru
    там есть строчка "Будет плюсом опыт работы с Clickhouse" 🙂
  • https://t.me/clickhouse_ru
    @bububup #234634 12:53 PM, 15 Sep 2021
    Да, спасибо, наш основной стек там тоже указан - Python, Clickhouse, Tableau, Metabase, Gitlab :)
  • 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
    это тестовая система?
    что если таблицы не replicated ?
    никто не знает что это за проблема и не получается ее воспроизвести
  • https://t.me/clickhouse_ru
    another table насколько широкая? сколько там полей?
  • нет, прод система(
    с nonreplicated попробуем протестировать
  • another_table - другие таблицы, их 5 штук полей от 3 до 5, в одной 25 полей.

    Да, еще добавлю, что на big_table есть 2 MV
  • https://t.me/clickhouse_ru
    и во что упираетесь? в диск, память или проц?
  • ни во что, памяти навалом, проц курит все время 2-3% нагрузка, диск аналогично.
  • https://t.me/clickhouse_ru
    большая таблица - реплейсинг, а маленькая таблица - лог?
  • обе replicatedreplacing
  • https://t.me/clickhouse_ru
    т.е. вы делаете вставки в большую таблицу, на которой висит мат вью и переливает эти же сырые строки в маленькую таблицу, в которой периодически запускается схлопывание десятков тысяч сырых строк в 50 агрегированных и в этот момент у вас происходит деградация вставки в маленькую таблицу?
  • нет, они не связаны никак.
    маленькая таблица содержит всего 3 поля и 50 строк.
    туда заполняются id последних вставленых значений, на случай падения КХ/сервисов/и прочего.
    а большая таблица содержит уже больше 25 полей.
    МВ переливает данные из большой в две другие таблицы агрегаты.
  • https://t.me/clickhouse_ru
    т.е. маленькая таблица никак не связана другими ни на ней нет мат вью, ни у других мат вью она не указана как целевая? она вообще сбоку но периодически деградирует вставка и при это сервер не нагружен? а как в этот момент загружен зукипер?
  • Да, она сбоку, на ней есть view с final на которую прикручен словарь, и редко(пару раз в час) используется этот словарь.
    Да, периодически деградирует вставка. Памяти много свободной, максимум CPU idle time 85%. LA максимум 5, на 36 физ ядрах.
    ЗК avg_latency 0мс
  • @l_dar #234654 02:38 PM, 15 Sep 2021
    подскажите пожалуйста, как можно очистить replication_queue?
  • а что там застряло?
  • echo mntr | nc localhost 2181
    zk_version 3.5.6-c11b7e26bc554b8523dc929761dd28808913f091, built on 10/08/2019 20:18 GMT
    zk_avg_latency 0
    zk_max_latency 2458
    zk_min_latency 0
    zk_packets_received 5343218233
    zk_packets_sent 5444632907
    zk_num_alive_connections 3
    zk_outstanding_requests 0
    zk_server_state follower
    zk_znode_count 219655
    zk_watch_count 216
    zk_ephemerals_count 426
    zk_approximate_data_size 40895751
    zk_open_file_descriptor_count 61
    zk_max_file_descriptor_count 500000
  • @l_dar #234657 02:39 PM, 15 Sep 2021
    висит с ошибкой. не может сделать репликацию одной партиции. но ее физически нет
  • @l_dar #234658 02:40 PM, 15 Sep 2021
    удалил эту партицию вручную
  • есть что-то типа system restart replica db.table
  • https://t.me/clickhouse_ru
    @orginux #234660 02:41 PM, 15 Sep 2021
    Добрый день
    Подскажите, пожалуйста.
    Есть ли возможность корректной остановки ноды CH? В доке есть про остановку с помощью kill и остановку сервиса, но хотелось бы чтобы перед завершением все данные сбрасывались на диск, переставали приниматься новые подключения, корректно завершались существующие подключения от других нод и проч, как для Cassandra ‘nodetool drain’
  • @l_dar ↶ Reply to #234659 #234661 02:43 PM, 15 Sep 2021
    Спасибо!
  • https://t.me/clickhouse_ru
    max latency - две с половиной секунды - это ок? больше полсекунды гуглится только у тех у кого были проблемы с зукипером.
  • тут за все время же, с момента запуска
  • вот вопрос задавал, остался без ответа, мб знаете?
  • https://t.me/clickhouse_ru
    да, можно рестарнатуть и проверить при фризах :) но это вряд ли, но и идей кроме попробовать другую версию кх нету.
  • https://t.me/clickhouse_ru
    там же альтерами старые строки не удаляются надеюсь?
  • alter вообще нет
    replacing таблицы, там нет вообще удалений
  • https://t.me/clickhouse_ru
    "И второй вопрос, кх в докер контейнерах, в моменты пиковой нагрузки на диск, все 3 базы перестают отвечать на запросы"

    При этом зависоне идет нагрузка на проц?
  • https://t.me/clickhouse_ru
    @a1s_333444 #234669 03:07 PM, 15 Sep 2021
    А никто не подскажет, насколько плохо делать кластер КХ на виртуалках (KVM) с проброшенными туда дисками, с помощью SR-IOV ?
  • https://t.me/clickhouse_ru
    >тут вроде уже не раз писали, что лучше group by чем final.
    >где писали что group by лучше final?

    сорян за такой долгий ответ:
    https://t.me/clickhouse_ru/178098
    https://t.me/clickhouse_ru/166938
    https://t.me/clickhouse_ru/166951
    https://t.me/clickhouse_ru/155697
    https://t.me/clickhouse_ru/152077

    не претендую на единственно верную стратегию, но для себя на основе этих сообщений решил, что лучше argmax, потому что чутка быстрее, потому что final не работает с Distributed, и потому что запрос можно дополнительно оптимизировать
    Denny Crane [Starship Captain at Altinity (NB,Canada)] in ClickHouse не тормозит

    Distributed таблица не делает final, она не в курсе что надо финализировать дубликаты с шардов Т.е. придется делать argmax/groupby

  • Скорее всего идет троттлинг cpu, т.к. кончаются timeshares. У вас ведь стоит ограничения по кол-ву “ядер”?
  • вы про max threads?
  • Нет, про ограничения на кол-во ядер в докере.
  • @subotic0 #234675 03:23 PM, 15 Sep 2021
    а каким образом это может помочь? пока были на 21.3, проблем не возникало
  • Я спрашиваю, стоит ли у вас ограничение на кол-во ядер в докере?
  • @subotic0 #234677 03:27 PM, 15 Sep 2021
    нет
  • @softbot_xxl #234678 03:27 PM, 15 Sep 2021
    sudo docker inspect <container> | grep Cpu

    CpuPeriod/CpuQuota
  • @softbot_xxl #234680 03:31 PM, 15 Sep 2021
    Тогда не знаю 🙂
  • @packofopinions #234681 03:31 PM, 15 Sep 2021
    Всем привет. Может кто поможет. Есть кластер из двух реплик. Zookeeper на третьем сервере. Нужно в рамках одной реплики перенести данные с одной таблицы в другую. Можно ли использовать для этого copier?
  • схема таблиц отличается, поэтому как я понял нужно делать view той таблицы, с которой переношу
  • insert into select?
  • свежий комент по похожей проблеме как у вас

    https://github.com/ClickHouse/ClickHouse/issues/26755#issuecomment-920125629
    Background Replicated Merges seems to be stuck from time to time, greatly affecting insert latency · Issue #26755 · ClickHouse/ClickHouse

    We have latency-critical application (real-time statistics system with watchdogs), which is sensitive to insert latency. We'd like latency to be less than 5 seconds, or better. In productio...

  • тоже мониторите?
  • проблемы нет, но интересно чем закончится)
  • пробовал изначально так, сразу упирался запрос в память, но в итоге получил данную ошибку
    Too many parts (xxx). Merges are processing significantly slower then inserts
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Тогда это похоже на то, о чем я выше писал, только у меня один инстанс, одно ядро 😄 Но там и база очень маленькая 75к строк ~2МБ. Это я просто PoC делаю. Но все равно, мне кажется такого быть не должно.
  • можно сделать кусками, есть настройки для сброса данных на диск из памяти
  • какой-то настройкой может тюнится?
  • https://t.me/clickhouse_ru
    1. хз
    2. реплейсинг схлопывает строки в фоне, а не сразу. подробнее читайте доку
  • в смысле инсертить отдельными партишенами?
  • https://t.me/clickhouse_ru
    дак реплейсинг может вернуть меньше записей, но никак не больше
  • https://t.me/clickhouse_ru
    возможно, но в любом случае я уже более мощный инстанс поднимать буду, там потом посмотрим
  • кстати тоже бывает, что просто начинает репликация отставать на таблицах меньше 1К строк, которые пополняются пару раз в день. Репликация отстает всегда на похожее кол-во времени
  • https://t.me/clickhouse_ru
    т.е. вы вставили одну запись, а в таблице может быть 2 или 3?
  • https://t.me/clickhouse_ru
    вообще это сторонняя проблема которая меня никак не афкеттит, просто как факт
    я вставил 10 записей
    делаю селект
    возвращается то 1, то 3, то 5, то 2. Рандомное количество
  • можно и так, можно промежутками дат, в зависимости от структуры таблицы
  • но я правильно понимаю, что ошибка из-за большого количества слияний на уровне движка mergeTree?
  • https://t.me/clickhouse_ru
    ну если активно идёт вставка новых строк, то число может скакать вверх-вниз. если вы остановили вставку, а количество записей продолжает скакать вверх-вниз, а не только вниз, то может идти репликация и параллельно сворачивание.
  • https://t.me/clickhouse_ru
    этим данным больше месяца
  • мерджи медленнее вставок
  • понял, большое спасибо
  • https://t.me/clickhouse_ru
    лучше подскажите почему шардинг перестал работать) кластеру больше двух лет. никаких проблем не было.
  • https://t.me/clickhouse_ru
    и как обычно за эти два года ничего не менялось... ну разве что там один маленький параметр подкрутили, который ни на что не должен был повлиять...
    тут половина вопросов с такого вступления начинается, а потом оказывается, что кластер разъехался или где-то колонку добавили или место на дисках закончилось :)
    PS: вспоминайте последние изменения, даже самые безобидные
  • https://t.me/clickhouse_ru
    класттер живет своей жизнью
    тока селекты выполнялись)
  • https://t.me/clickhouse_ru
    @solard #234710 03:56 PM, 15 Sep 2021
    селекты потому что не распределенные
  • https://t.me/clickhouse_ru
    ну если совсем ничего не менялось, то смотрите логи, может там ошибки появились, которых раньше не было.
  • https://t.me/clickhouse_ru
    @mikhailberg #234712 03:57 PM, 15 Sep 2021
    чекал логи, вссе тачки были доступны)
  • https://t.me/clickhouse_ru
    тогда только дебаг данных. смотреть какие строки то пропадают, то появляются, анализировать, находить общие между ними моменты.
  • https://t.me/clickhouse_ru
    а какая версия кликхауса?
  • https://t.me/clickhouse_ru
    20.8.12
  • https://t.me/clickhouse_ru
    хм, не думал, что больше двух лет назад уже была эта версия :)
  • https://t.me/clickhouse_ru
    ну так мы его апдейтим. он не обновлялся уже месяца 3-4. был чисто спайк за 2 дня с этим шардингом. поттом все само восстановилось
  • https://t.me/clickhouse_ru
    2 дня спайк. что ж там такое произошло... обновили все ноды?
  • 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
    @saintech #234724 04:32 PM, 15 Sep 2021
    а это нормально, что в thread_ids у процесса вот такое:
    [258,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,205,204,205,205,205,205,205,295,205,205,205,205,295,205,204,295,205,295,295,205,295,205,205,205,205,295,204,205,295,205,295,295,205,295,205,205,205,205,295,205,205,205,205,295,204,205,295,295,295,295,295,205,295,295,295,295,295,204,207,207,207,207,295,207,295,205,207,207,207,207,207,207,204,207,295,205,207,204,295,207,295,295,295,207,205,205,205,205,207,207,207,295,295,207,204,207,204,204,204,204,207,207,207,207,207,205,205,205,205,207,207,207,207,207,207,207,207,295,295,295,295,207,207,207,207,204,204,204,204,205,205,205,205,295,295,207,207,204,204,204,204,207,207,207,207,295,295,295,295,205,205,205,205,204,204,204,204,207,207,207,207,295,295, ... ]

    ?
    Итого 563 штук, max_threads=4
  • https://t.me/clickhouse_ru
    ну тут их вроде всего и 4, ну может 5 :)
  • https://t.me/clickhouse_ru
    @saintech #234728 11:17 PM, 15 Sep 2021
    Друзья, в system.users появилась колонка default_database, как ее можно поменять у SQL-воркфлоу юзера?
    ALTER USER foo SETTINGS default_database='bar' не работает.
  • 16 September 2021 (74 messages)
  • Дополню информацию, в system.part_log есть MergeParts по 4-30 сек. Это следствие медленной вставки, или причина?
    И как можно ускорить мердж, все настройки по мерджу дефолтные.
  • @957807795 #234733 07:58 AM, 16 Sep 2021
    We are getting below error while executing some queries in clickhouse
    -------------------------------------------------------------- ru.yandex.clickhouse.except.ClickHouseException: ClickHouse exception, code: 160, host: clickhouse, port: 8123; Code: 160, e.displayText() = DB::Exception: Estimated query execution time (4132.422197661254 seconds) is too long. Maximum: 500. Estimated rows to process: 2157231: While executing MergeTreeThread (version 20.9.2.20 (official build))
    -------------------------------------------------------------
    Is there any configuration changes need to be done in config.xml or users.xml file
  • @M_makareno #234735 10:44 AM, 16 Sep 2021
    Господа, подскажите по мутациям/ перегону данных. Нужно из таблицы A перегнать данные в таблицу B( тривиальная задача, которая для других таблиц решалась много раз). Но в таблицу B вставляется лишь 50% данных из таблицы A. При этом в центри ошибок нет, запрос отрабатывается. Таблица B имеет движок Distributed, кластер, движок ReplicatedMergeTree.

    Причем, если удалить данные по условию из таблицы B - то удаление происходит через минут 5. Все это время висит мутация, в которой parts_to_do имеет значение ~6000 и уменьшается.

    В чем может быть проблема? Или сразу к админам бежать?)
  • https://t.me/clickhouse_ru
    @konnectrl #234736 10:55 AM, 16 Sep 2021
    Приветствую, стоит задача, чтобы посчитать количество определённых ивентов, которые происходили с 20 до 24 часов, каждый день в течение месяца. Как это можно реализовать ?
  • toHour
  • https://t.me/clickhouse_ru
    Спасибо
  • @635404397 #234739 11:02 AM, 16 Sep 2021
    как запустить "фоновый" запрос из clickhouse-client? запускаю insert который отработает за 2-3 дня, есть желание видеть прогресс выполнения, но нет желания отменять запрос в случае есть оборвется ssh коннект к ноде. после раз при обрыве соединения запрос завершился
  • https://t.me/clickhouse_ru
    tmux запустите на ноде на которой идет выполнение запроса
    вы отвалитесь а сссия на сервере нет
  • @demm88 ↶ Reply to #234739 #234741 11:06 AM, 16 Sep 2021
    screen
  • @635404397 #234742 11:14 AM, 16 Sep 2021
    отвечу сам себе, сразу как-то не подумал
    nohup clickhouse-client —queries-file 1.sql —progress &
  • https://t.me/clickhouse_ru
    @time_2_work #234743 11:22 AM, 16 Sep 2021
    nohup разве переживет реконект ssh ?
  • @635404397 #234744 11:39 AM, 16 Sep 2021
    да, nohup переживает отключение сессии
  • @635404397 #234745 11:40 AM, 16 Sep 2021
    reconnect к сессии - нет, но он пишет stdout в nohup.out, который можно читать tail -f nohup.out и видеть прогресс

    соотв. после реконнекта читаем из файла и все
  • @7699150 #234747 12:20 PM, 16 Sep 2021
    подскажите пожалуйста как можно выбрать рандомное число от 0 до 99?

    Такой подход норм или есть что-то более эффективное?
    ```
    SELECT *
    FROM
    (
    SELECT number AS n
    FROM system.numbers
    LIMIT 100
    )
    ORDER BY rand() ASC
    LIMIT 1
    ```
  • https://t.me/clickhouse_ru
    @andreysenko #234748 12:22 PM, 16 Sep 2021
    доброго дня.
    если есть смещения времени к UTC, типа +03:00 / +11:00 и т.п., есть хороший способ из кликхауса получить время в нужном часовом поясе, без конструкций типа switch (time) case '+03:00' => 'Europe/Moscow' break;
    ?

    поле объявлено как DateTime('UTC')

    хотя, проще будет на существующем бэке привести всё к utc и запросить из базы в этом формате.
  • https://t.me/clickhouse_ru
    rand()% 100
  • Только стоит упомянуть что в рамках блока это будет одно и тоже значение
  • https://t.me/clickhouse_ru
    Кто сказал?

    SELECT rand() % 100 AS x
    FROM numbers(10)

    Query id: 194923dc-644e-49cb-9f56-0815c6f74fd4

    ┌──x─┐
    │ 95 │
    │ 27 │
    │ 17 │
    │ 96 │
    │ 96 │
    │ 45 │
    │ 48 │
    │ 70 │
    │ 85 │
    │ 20 │
    └────┘
  • @n1ght_f0x #234752 12:33 PM, 16 Sep 2021
    Воу
  • https://t.me/clickhouse_ru
    @enclaved #234754 12:36 PM, 16 Sep 2021
    Привет. Небольшой вопрос: синхронное выполнение ALTER TABLE DELETE имеет побочные эффекты на идущие параллельно селекты? Есть ли там локи?
  • @vvvjhaq #234755 12:43 PM, 16 Sep 2021
    в system.part_log есть MergeParts по 4-30 сек. Это следствие медленной вставки, или причина?
    И как можно ускорить мердж, все настройки по мерджу дефолтные.
  • https://t.me/clickhouse_ru
    это норма, мерж читает все данные партов и записывает на диск. больше данных => больше операция
  • https://t.me/clickhouse_ru
    @nyoroon #234757 12:45 PM, 16 Sep 2021
    у меня бывают мержи по много десятков минут
  • https://t.me/clickhouse_ru
    @nyoroon #234758 12:48 PM, 16 Sep 2021
    зависит собственно от скорости чтения и записи диска
  • https://t.me/clickhouse_ru
    @aleksey1302 #234759 12:49 PM, 16 Sep 2021
    Привет! Подскажите плиз, этот параметр = сколько оперативной памяти «съел» запрос?
  • ок, спасибо
    все пытаемся выяснить проблемы долгих инсертов(
  • https://t.me/clickhouse_ru
    Сколько данных просканировали, если я не ошибаюсь
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #234759 #234762 12:50 PM, 16 Sep 2021
    Сколько всего данных отсканили
  • https://t.me/clickhouse_ru
    @mrAndersen7 #234763 12:51 PM, 16 Sep 2021
    33 млн и 133мб соответственно
  • https://t.me/clickhouse_ru
    @aleksey1302 #234764 12:51 PM, 16 Sep 2021
    Спасибо. А потребление памяти clickhouse-client не умеет показывать?
  • https://t.me/clickhouse_ru
    либо через send_logs_level=trace, либо в конце запроса максимальное показывает
  • https://t.me/clickhouse_ru
    Спасибо, помогло
  • https://t.me/clickhouse_ru
    @dream_of_silence #234767 01:09 PM, 16 Sep 2021
    здравствуйте, товарищи! подскажите, плиз, что делать, есть ситуация, когда, как-будто залочилась таблицы Engine = Log, запросы к ней зависают, и их никак не получается убить?
  • https://t.me/clickhouse_ru
    что-то подобное здесь уже обсуждали. инсерт блочит вставку и если две матвью пытаются писать в эту таблицу, то дедлок. в этот движок нужно писать только в один поток.
  • https://t.me/clickhouse_ru
    @Hero_of_Comix #234769 01:20 PM, 16 Sep 2021
    Всем привет, может кто сталкивался и может подсказать, пожалуйста, почему такое могло случиться:
    при инсерте в КХ получил ошибку DB::Exception: Table is in readonly mode
    в это же время в лозах зокипера видел следующее
    2021-09-16 15:19:49,412 [myid:13] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@192] - Accepted socket connection from /10.11.33.15:23774
    2021-09-16 15:19:49,412 [myid:13] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:ZooKeeperServer@882] - Connection request from old client /10.11.33.15:23774; will be dropped if server is in r-o mod
    2021-09-16 15:19:49,412 [myid:13] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:ZooKeeperServer@928] - Client attempting to establish new session at /10.11.33.15:23774
    2021-09-16 15:19:49,413 [myid:13] - INFO [CommitProcessor:13:ZooKeeperServer@673] - Established session 0xd7beda7b44d0000 with negotiated timeout 30000 for client /10.11.33.15:23774
    есть предположение что хост КХ начал новую сессию и в рамках старой сессии прилетел запрос в зокипер
  • https://t.me/clickhouse_ru
    может вы попытались вставить из под ридонли юзера?
  • https://t.me/clickhouse_ru
    @Hero_of_Comix #234771 01:24 PM, 16 Sep 2021
    к сожалению нет, юзер был не ридонли, сразу после запрос у меня прошел
  • https://t.me/clickhouse_ru
    что за движок таблицы?
  • https://t.me/clickhouse_ru
    насчет вставки в один поток знаю, запрос на инсерт, блин только щас увидела что тоже в процессах висит, но почему он завис, вроде селект для вставки сам по себе легко выполнялся и как его дропнуть это процесс? со стороны линукса?
  • https://t.me/clickhouse_ru
    поиск по чату "убить запрос"?
  • https://t.me/clickhouse_ru
    kill query не работает
  • https://t.me/clickhouse_ru
    Slach [altinity] in ClickHouse не тормозит

    к сожалению, clickhouse by design не убивает запросы немедленно вместо этого выставляется флаг который периодически тред выолняющий запрос может прочитать (а может и нет) и выйти так что ждите для интеракивного стопа я использую KILL QUERY ... SYNC

  • https://t.me/clickhouse_ru
    инсертил в Distributed, который смотрит в ReplicatedSummingMergeTree, ну т.е по факту ReplicatedSummingMergeTree (в ошибке КХ путь до него фигурирует)
  • https://t.me/clickhouse_ru
    KILL QUERY ... SYNC?
  • 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
    поиск по чату "DB::Exception: Table is in readonly mode"?

    https://t.me/clickhouse_ru/230862
    Victor in ClickHouse не тормозит

    Добрый день, коллеги. Есть проблема. Периодически, в процессе работы в логе возникают сообщения вида: 2021.08.16 11:08:34.917174 [ 1355178 ] {a8adb218-1edd-4e48-ad73-ac944a020b48} <Error> TCPHandler: Code: 242, e.displayText() = DB::Exception: Table is in readonly mode (zookeeper path: /clickhouse/tables/01/some_table_name), Гуглили, крутили всякие настройки - толку нет. Может кто наступал на эти грабли? clickhouse-server-21.5.5.12 Stack trace: 0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x879d83a in /usr/bin/clickhouse 1. DB::Exception::Exception<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(int, 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&) @ 0x883c3e3 in /usr/bin/clickhouse 2. DB::StorageReplicatedMergeTree::assertNotReadonly()…

  • @vvvjhaq #234785 01:41 PM, 16 Sep 2021
    Могли бы подсказать, в логах вижу такую запись:
    {a1288f42-9ea7-4e0e-b194-ddd3afce5fe9} <Debug> InterpreterSelectQuery: MergeTreeWhereOptimizer: condition "NOT deleted" moved to PREWHERE

    но в запросе с таким query_id a1288f42-9ea7-4e0e-b194-ddd3afce5fe9 вообще нет condition NOT deleted

    Мб это относиться к другому запросу? Поле deleted есть, но оно не фигурирует в where/prewhere
  • https://t.me/clickhouse_ru
    может оптимизатор добавил. без самого запроса не понять
  • шаблон запрос такой:
    insert into table select id, value, deleted, sign from table final where id in (select id from table where id in (1) and date between group by id having sum(sign)!=0);
  • https://t.me/clickhouse_ru
    попробуйте без финал. возможно он тригерит такое добавление кондишена. у вас реплейсинг или агригейтинг? какой ордер бай и что в качестве версии используется? в общем ддл таблицы в студию.
  • collapsing, в order by id+date
  • https://t.me/clickhouse_ru
    maybe check quotas in users.xml
  • https://t.me/clickhouse_ru
    @nebotov_dmitry #234793 02:38 PM, 16 Sep 2021
    Добрый день, подскажите в чем может быть причина проблемы.

    В базе есть таблица (engine MergeTree), перед ней есть буфферная таблица.

    После того как были выполнены запросы добавления столбцов:
    ALTER TABLE "table" ADD COLUMN IF NOT EXISTS "BrandName" String;
    ALTER TABLE "buffer" ADD COLUMN IF NOT EXISTS "BrandName" String;

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

    Что я сделал не так при добавлении нового столбца?
  • https://t.me/clickhouse_ru
    version 21.8.4.51 (official build)
  • https://t.me/clickhouse_ru
    Спасибо, нашел причину сам
  • https://t.me/clickhouse_ru
    @nebotov_dmitry #234796 02:54 PM, 16 Sep 2021
    Кто нибудь знает как атомарно выполнить пересоздание буферной таблицы?
  • https://t.me/clickhouse_ru
    create + EXCHANGE
  • Up
    Такой же вопрос
    версия 21.2.9.4
    Что с ними делать? Они на что-то влияют?
  • https://t.me/clickhouse_ru
    то есть сделать сначала create buffer2, потом exchange buffer and buffer2 и drop table buffer2?
  • https://t.me/clickhouse_ru
    да, старый буфер удалять после того как из него данные точно попадут в основную таблицу
  • https://t.me/clickhouse_ru
    получается что exchange в фоне данные перегоняет?
  • https://t.me/clickhouse_ru
    он просто переименовывыет две таблицы атомарно
  • https://t.me/clickhouse_ru
    а старым будет после create + exchage таблица buffer2?
  • https://t.me/clickhouse_ru
    не понял вопроса
  • https://t.me/clickhouse_ru
    вы сказали "старый буффер удалить после ..." получается что после exchange таблица buffer2 будет таблицей buffer и то есть старой, которую надо удалить? Просто мог не правильно понять, поэтому переспросил
  • https://t.me/clickhouse_ru
    да буффер2 удалить
  • https://t.me/clickhouse_ru
    спасибо большое
  • @zhora9001 #234809 08:04 PM, 16 Sep 2021
    Добрый вечер! Хотим сделать дикт, который будет хранить ключ-значения из нескольких таблиц mysql (ключи не пересекаются). Правильно мыслим, что нужно делать Н таблиц с движком MySQL, одну вью, которая прочитает и соберет данные из Н этих таблиц (через юнион, например), а дикт травить с сорсом clickhouse на эту вью?
  • Супер, спасибо!
  • https://t.me/clickhouse_ru
  • 17 September 2021 (158 messages)
  • да был не прав.
    Одно и тоже значение будет в рамках строки, а не блока если не передавать аргумент в rand
  • https://t.me/clickhouse_ru
    @marshinov #234817 05:54 AM, 17 Sep 2021
    Здравствуйте. Вопрос про следующий сценарий: хотим в CH хранить около 5.000.000 строк и 1500 колонок. Со временем количество строк может расти, но сравнительно медленно. Сценарий вставки такой: сначала приходят 100-200 колонок для одной строки, потом еще 300-500, потом еще пачка колонок. Так через несколько итераций собирается строка на 1500 колонок. Колонки могут быть в т.ч. Nested. На запись будет не больше 5RPS. При нормальном использовании даже меньше 1RPS. Во всех доках, которые я нашел сказано, что INSERT для CH - норм, а UPDATE, DELETE - ну такое. В этом сценарии мне стоит опасаться, что при вставках через UPDATE я нарвусь на сильные деградации производительности или можно первую вставку делать INSERT’ом, а остальные UPDATE’ом? Пока склоняюсь к тому, что лучше бетчить: дожидаться получения строки целиком или лучше даже дожидаться нескольких строк, хранить промежуточные результаты во временном хранилищец и потом вставлять в CH INSERT’ом пачкой. Есть ли еще какие-нибудь варианты?
  • https://t.me/clickhouse_ru
    Добрый день, посмотрите в сторону движка CollapsingMergeTree или
    VersionedCollapsingMergeTree, мб это то, что вам подойдёт
  • https://t.me/clickhouse_ru
    и просто UPDATE’ами писать в таблицу в этом случае?
  • https://t.me/clickhouse_ru
    @Alexey_037 #234820 06:07 AM, 17 Sep 2021
    Нет, там только INSERT'ы и передается флаг sign = -1 (удалить строку), 1 - добавить.
  • https://t.me/clickhouse_ru
    @marshinov #234821 06:07 AM, 17 Sep 2021
    А понял. Кажется это то, что нужно. Спасибо!
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Там специальный insert, со старыми данными и новыми, вы как бы шлете старые с флагом -1, и оно их схлопывает само, а новые с 1, они остаются, почитайте, в доках очень подробно об этом. Потом есть специальный подход к выборке через select, чтобы не брать старые данные
  • https://t.me/clickhouse_ru
    @marshinov #234824 06:09 AM, 17 Sep 2021
    да, понял
  • https://t.me/clickhouse_ru
    @marshinov #234825 06:09 AM, 17 Sep 2021
    выглядит как то, что нужно
  • https://t.me/clickhouse_ru
    @Vasyaabr #234826 06:41 AM, 17 Sep 2021
    Привет!
    Есть ли какие-то рекомендации или лучшие практики по количеству реплик в шарде?
    Планируем довести его до 8 штук: шард из трёх реплик расширяем до 5 чтобы снизить нагрузку на каждую реплику, и в отдельном ДЦ - ещё три, в роли резервной площадки (если в основном ДЦ всё умирает). Беспокоит, не начнутся ли какие-то проблемы при таком количестве реплик.
    3 десятка Replicated таблиц, записи 1-3 раза в секунду в каждую (только в основном ДЦ).
  • https://t.me/clickhouse_ru
    @maximdelong #234828 07:59 AM, 17 Sep 2021
    Привет
    А есть встроенная функция, которая переведет 60 секунд в 1 минуту и так далее? или просто деление и округление?)
  • @AlexNov89 #234829 08:31 AM, 17 Sep 2021
    подскажите, что не так?
    если в запросе пишу groupUniqArrayState(mac_address), то получаю ошибку:
    DB::Exception: Illegal type AggregateFunction(groupUniqArray, UInt64) of argument of function length.
    если пишу просто groupUniqArray(mac_address), то получаю массив с уникальными значениями.
  • https://t.me/clickhouse_ru
    @Argxotan #234832 08:54 AM, 17 Sep 2021
    Всем привет. я правильно понимаю из дока, если нужно поставить clickhouse-client на последнуюю MacOS то это https://builds.clickhouse.tech/master/macos-aarch64/clickhouse?

    и есть ли способ поставить только клиент, без сервера?
  • https://t.me/clickhouse_ru
    ответ на ваш вопрос кроется в ответе на следующий - вы 60 секунд как какой тип данных храните?
  • @softbot_xxl #234834 09:02 AM, 17 Sep 2021
    Есть два массива (array), keys and values. Нужно проверить, есть ли ключ и по индексу ключа взять значение и сравнить/

    select * from table where has(keys, key) and values[indexOf(keys, key)] = value

    Можно ли сделать эффективнее?
  • @softbot_xxl #234835 09:04 AM, 17 Sep 2021
    Знаю про тип MAP, но пока тестирую с массивами.
  • https://t.me/clickhouse_ru
    arrayFirstIndex не ?
  • Там ведь функция будет внутри, я думаю это будет помедленнее чем два вызова без дополнительного интерпретатора, но я проверю, спасибо.
  • https://t.me/clickhouse_ru
    @vasiunin_maksim #234838 09:37 AM, 17 Sep 2021
    Добрый день. Используется старая версия, при запросе возникает ошибка где указана другая "No alias for subquery or table function in JOIN (set joined_subquery_requires_alias=0 to disable restriction). (version 20.4.4.18 (official build)) (206)"}. Что может быть не так?)
  • https://t.me/clickhouse_ru
    а есть ли решение для?
    Code: 76. DB::ErrnoException: Cannot open file /usr/bin/clickhouse.new, errno: 1, strerror: Operation not permitted. (CANNOT_OPEN_FILE) (version 21.11.1.8098 (official build))

    похоже пока открытый issue https://github.com/ClickHouse/ClickHouse/issues/25514
    Proposed changes for "clickhouse install" · Issue #25514 · ClickHouse/ClickHouse

    Currently, there are several issues/shortcomings with clickhouse install: 1. If a custom prefix path is specified via --prefix /some/path (and only that path is customized), then at least some of o...

  • https://t.me/clickhouse_ru
    алиас добавь после скобки.
  • https://t.me/clickhouse_ru
    @Alexey_037 #234841 09:38 AM, 17 Sep 2021
    JOIN (set joined_subquery_requires_alias=0 to disable restriction) as 'alias'
  • https://t.me/clickhouse_ru
    @vasiunin_maksim #234842 09:43 AM, 17 Sep 2021
    Тут вопрос скорее почему отличаются версии
  • https://t.me/clickhouse_ru
    8 копий данных звучит как жуткий оверкилл
  • https://t.me/clickhouse_ru
    @nyoroon #234845 09:48 AM, 17 Sep 2021
    Если денег не жалко и большая нагрузка на чтение - почему нет
  • https://t.me/clickhouse_ru
    Нагрузка на чтение действительно большая - из клика аналитика почти в реальном времени идёт в другие сервисы. А для трёх реплик на резервной площадке просто не придумать более удобного и экономного варианта (с условием, что клик на ней должен подняться с минимальным даунтаймом при уходе основного ДЦ в оффлайн).
  • https://t.me/clickhouse_ru
    С 2 ДЦ проблема будет в зукипер кластере
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @nyoroon #234849 09:55 AM, 17 Sep 2021
    Если в упавшем ДЦ находится большинство зукиперов, то кликхаус перейдёт в ридонли
  • @packofopinions #234850 10:06 AM, 17 Sep 2021
    Добрый день. При переносе с одной таблицы в другую с репликацией упирается в zookeeper.

    Cannot allocate block number in ZooKeeper

    На сколько я понимаю, инсерты приходят быстрее, чем обрабатываются. Может кто знает решение?
  • https://t.me/clickhouse_ru
    План такой: держим зукипер только в одном ДЦ (основном), если ДЦ падает - включаем зукипер на втором ДЦ, переключаем местные реплики на него и записываем в него метаданные реплицируемых таблиц с помощью SYSTEM RESTORE REPLICA.
  • https://t.me/clickhouse_ru
    а данные в зукипере откуда возьмутся?
  • https://t.me/clickhouse_ru
    @nyoroon #234853 10:20 AM, 17 Sep 2021
    а, понял
  • https://t.me/clickhouse_ru
    @nyoroon #234854 10:20 AM, 17 Sep 2021
    звучит как-то очень сложно
  • https://t.me/clickhouse_ru
    Ну, делать развесистый кластер зукипера распределенный между датацентрами тоже как-то так себе идея, мне кажется. Вырастут задержки. Или это нормальная практика?
  • https://t.me/clickhouse_ru
    @nyoroon #234856 10:22 AM, 17 Sep 2021
    какой пинг между дц?
  • https://t.me/clickhouse_ru
    @Kanuas_1 #234857 10:31 AM, 17 Sep 2021
    Всем привет, возникли проблемы с odbc: HTTP status code: 500 Internal Server Error, body: � std::exception. Code: 1001, type: nanodbc::database_error, e.what() = ../contrib/nanodbc/nanodbc/nanodbc.cpp:1625: HY00: [Oracle][ODBC][Ora]ORA-03114: not connected to ORACLE. В чем может быть проблема? До апдейта кликхауса odbc работал без проблем
  • https://t.me/clickhouse_ru
    ~40мс
    А между серверами в одном ДЦ - ~0.3мс
  • @infoss_cto #234860 11:14 AM, 17 Sep 2021
    Добрый день! Есть вопрос по arrayIntersect. Как быть, если количество массивов для поиска пересечений заранее неизвестно? Массив массивов функция воспринимает именно как один массив.
  • @olga_mng #234862 11:20 AM, 17 Sep 2021
    Добрый день! Подскажите, а ClickHouse легко интегрируется со сторонними сервисами такими как Google Analytics, Facebook, Youtube, ну и подобное
  • https://t.me/clickhouse_ru
    Подскажите а какую интеграцию кликхауса и утуба вы хотите ?
  • @olga_mng #234864 11:26 AM, 17 Sep 2021
    забирать данные по рекламным кампаниям
  • https://t.me/clickhouse_ru
    @time_2_work #234865 11:27 AM, 17 Sep 2021
    А что значит легко ? Вы про готовое решение где нажал кнопку и потекли данные ?
  • @olga_mng #234866 11:32 AM, 17 Sep 2021
    я про то, возможно ли это вобще технически)) и если да, и для этого существуют какие-то готовые решения, которые вы знаете, буду очень благодарна
  • да, конечно это технически возможно
  • @olga_mng #234868 11:38 AM, 17 Sep 2021
    а есть наверное какие-то говтоые решения?
  • @ViacheslavNefedov #234869 11:40 AM, 17 Sep 2021
    с готовыми не сталкивался. Поставщики решений для такой аналитики используют как базу-получатель BigQuery. Технически средства, которые можно использовать существуют, но нужна команда разработчиков чтобы их задействовать
  • @olga_mng #234870 11:41 AM, 17 Sep 2021
    вот да, для BigQuery встречала подобные решения на рынке, наверное, и для ClickHouse должно быть, на российском рынке
  • Owox вроде обдумывал интеграцию. Спросите, может дошли у них руки. Или на заказ сделают.
  • @ViacheslavNefedov #234872 11:43 AM, 17 Sep 2021
    вообще если у вас разработчиков своих нет, то BigQuery - хороший вариант, много преимуществ
  • @ViacheslavNefedov #234873 11:44 AM, 17 Sep 2021
    кликхауз - это больше вариант когда есть своя хорошая разработка и администрирование, не для покупных решений
  • https://t.me/clickhouse_ru
    @drinkbloodnight #234874 11:46 AM, 17 Sep 2021
    Подскажите пожалуйста решение проблемы
    Сделали копию рядом с текущей таблицей в той же директории. Потом основная таблица удалена и на ее место встала та копия.
    Теперь при попытке вновь сделать рядом еще одну копию - не хватает место на сервере (хотя по запросу на вес таблиц в кликхаусе их должно хватать).
    Т.е получается если копать дальше в кликхаусе и "забился"
    Таблица удалялась простым запросом DROP. Могло что то самостоятельно скопироваться в shadow ? Судя по запросом забит он и папка data.
    И если да, то как можно ее безопасно почистить?
  • @olga_mng #234875 11:47 AM, 17 Sep 2021
    BigQuery просто находится не на территори РФ, проблема с перс.данными
  • https://t.me/clickhouse_ru
    А какие персональные данные в Аналитики ?
  • https://t.me/clickhouse_ru
    Там их нет по-умолчанию. Если только явно не передавать
  • Google BigQuery to ClickHouse | OWOX BI Pipeline

    Станьте первым, кто оценит возможности новой интеграции

  • @simpl1g #234880 11:53 AM, 17 Sep 2021
    Подскажите как можно заимпортить через Kafka engine вложенный массив JSON?

    типа такого
    {
    "framework"=>"ios_native",
    "events"=>
    [{"session_uptime_m"=>128780000,
    "category"=>"session",
    "message"=>"Report sessions"},
    {"session_uptime_m"=>128780000,
    "category"=>"session",
    "message"=> "Save session"},
    {"session_uptime_m"=>128782000,
    "category"=>"session",
    "message"=>"Sessions successfully tracked"}]
    }
  • вспомнил. Манзана говорила, что разработали свою CDP, причём хранят данные именно в кликхаузе. Связать вас с их продажниками?
  • давайте
  • Кидайте контакты в личку, передам им
  • https://t.me/clickhouse_ru
    @Mike_Er #234884 12:08 PM, 17 Sep 2021
    Коллеги, добрый день, подскажите где искать причину того, что одна реплика одного и того же шарда занимает боле чем в 2 раза места больше чем другая? Всего две реплики. Настройки серверов идентичны, компрессии тоже.
  • Форматы входных и выходных данных | Документация ClickHouse

    Форматы входных и выходных данных ClickHouse может принимать (INSERT) и отдавать (SELECT) данные в различных форматах. П

  • это я читал
  • пока работает только LineAsString + JSONExtract + Tuple Nested, но выглядит странно
  • https://t.me/clickhouse_ru
    возможно, сказала девопсам, мне не ответили, но такое перестало больше появляться))
  • https://t.me/clickhouse_ru
    @nikitenkoolga #234890 12:40 PM, 17 Sep 2021
    Добрый день, может кто-то намекнуть, куда копать.
    При запуске параллельных запросов отваливается клик. Там историческая загрузка через клихаус клиент в нативном формате по дню - около 3 млн строк в день в proccesslist около 0,7G и через Dbeaver запрос с агрегацией - с 10G памяти

    less /var/log/clickhouse-server/clickhouse-server.log

    2021.09.16 11:55:29.953651 [ 785 ] {} <Information> Application: Setting max_server_memory_usage was set to 0.00 B (141.99 GiB available * 0.00 max_server_memory_usage_to_ram_ratio)
    (0.00 B- вот тут я еще не поняла почему 0 , если ratio ниже 0.9 установлено)
    free -h
    total used free shared buff/cache available
    Mem: 141Gi 3.1Gi 121Gi 1.0Mi 17Gi 138Gi
    Swap: 8.0Gi 0B 8.0Gi

    cat /etc/clickhouse-server/config.xml | grep max_server_memory_usage_to_ram_ratio
    <max_server_memory_usage_to_ram_ratio>0.9</max_server_memory_usage_to_ram_ratio>

    cat /etc/clickhouse-server/users.xml | grep max
    <max_memory_usage>60000000000</max_memory_usage> - для default
    <max_memory_usage>20000000000</max_memory_usage> - для test
  • https://t.me/clickhouse_ru
    @ilejn #234892 01:19 PM, 17 Sep 2021
    Добрый пятничный день,
    какие есть полезные знания по добавлению шард в кластер? Статьи, скрипты, доклады?
    Были/есть ли планы у разработчиков по автоматическому решардингу?
  • https://t.me/clickhouse_ru
    SELECT * FROM system.settings WHERE name LIKE '%max_memory%'
  • https://t.me/clickhouse_ru
    не хватает памяти даже на создание таблицы или таблицу создали, но данные не заливаются полностью, а только часть?
    select database,
    table,
    formatReadableSize(sum(bytes)) as size,
    sum(rows) as rows,
    max(modification_time) as latest_modification,
    sum(bytes) as bytes_size,
    sum(bytes_on_disk) as bytes_on_disk_size,
    sum(data_uncompressed_bytes) as data_uncompressed_bytes,
    sum(data_compressed_bytes) as data_compressed_bytes,
    any(engine) as engine,
    formatReadableSize(sum(primary_key_bytes_in_memory)) as primary_keys_size,
    formatReadableSize(sum(bytes) / rows * 1000000) as size_per_1kk_rows
    from system.parts
    where active and database != 'system'
    group by database, table
    order by bytes_size desc
  • https://t.me/clickhouse_ru
    попробуйте запрос выше, может отличие заметите. например данных раскопресино больше или какие-нибудь неактивные парты висят
  • https://t.me/clickhouse_ru
    toStartOfMinute
  • https://t.me/clickhouse_ru
    В логе нашлось следующее - "<Error> ladnl.dnl_log.DirectoryMonitor: Code: 8, e.displayText() = DB::Exception: Cannot find column lanode in source stream: While sending batch" - мы проверили - эта колонка есть в таблице везде по кластеру. И в лолкальных таблицах и в дистрибутед. Место съело огромное количество файлов в директории data/db_name/distributed_table_name/shard1_replica1,shard1_replica2 и тому подобные. Перезапуск нод не помогает. КХ так и не видит это поле и не видит на remote . в логе <Warning> ....DirectoryMonitor: Structure does not match. Проверили - порядок и количество полей везде одинаково (в metadata)
  • https://t.me/clickhouse_ru
    и какого типа у вас mac_address?
  • https://t.me/clickhouse_ru
    >И в лолкальных таблицах и в дистрибутед.
    >КХ так и не видит это поле и не видит на remote .
    немного запутано. если кх не видит, то как вы его увидели в таблицах?
  • https://t.me/clickhouse_ru
    show create table - поле есть. но в логах КХ утверждает, что поля нет. и это происходит только на одном из 10 серверов (5 шардов по 2 реплики)
  • UInt64
  • https://t.me/clickhouse_ru
    мат вью есть на этой таблице?
    что значит "и не видит на remote"?
  • https://t.me/clickhouse_ru
    -State работает только для типов AggregateFunction(...)
  • Не совсем понял. Что тогда мне нужно подавать на вход этой функции?
    Можете привести пример, когда бы эта функция работала?
  • https://t.me/clickhouse_ru
    вам и не нужен -State, это функции для работы с таблицами AggregatingMergeTree, у которых поля в формате AggregateFunction
  • https://t.me/clickhouse_ru
    Нет. Не видит - я выше в логе писал - Error> ladnl.dnl_log.DirectoryMonitor: Code: 8, e.displayText() = DB::Exception: Cannot find column lanode in source stream: While sending batch
  • Ну так вот я и хочу создать такую таблицу, одно из полей которой будет как раз формироваться на основании данной функции
  • больше похоже что вы где-то дальше вызываете length() на этой колонке
  • Да, есть такое дело
  • ну вот на это и ругается) возможно -Merge нужен или через uniqState
  • https://t.me/clickhouse_ru
    во первых вам лучше использовать SimpleAggregateFunction, чтоб потом как раз не париться с -Merge / -State
    во вторых - читайте доку, там всё есть :)
    https://kb.altinity.com/engines/mergetree-table-engine-family/aggregatingmergetree/
    https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/aggregatingmergetree/
    AggregatingMergeTree | Документация ClickHouse

    AggregatingMergeTree Движок наследует функциональность MergeTree, изменяя логику слияния кусков данных. Все строки с оди

  • Я length вызываю на этапе тестирования для проверки корректности составленного запроса, в mv мне такое поле не нужно будет.
    Спасибо. Завтра попробую без него выполнить запрос
  • https://t.me/clickhouse_ru
    Спасибо, была одна mv, удалили - все ожило.
  • @softbot_xxl #234918 04:14 PM, 17 Sep 2021
    Уменьшение гранулярности индекса для ReplicatedMergeTree (в крайнем случае до 1) ведет к падению производительности запросов на сканирование (1.2 миллиона записей). Это как-то меняется внутри формат хранения данных?
  • https://t.me/clickhouse_ru
    если индексы не помогают, то меняйте order by, если он уже оптимален для основного кейса, но для второстепенных - нет и не получится, то юзайте проекции.
    https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/mergetree/#projections
    MergeTree | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    и? там же я в users.xml переопределила и по памяти от бросает exception для test пользователя 20.....0 . Вопрос, что когда у клик вполне себе много памяти, и запросов только 2 он падает совсем. Не может это быть из-за количества выбранных строк или из-за количества потоков? таблицы Mergetree
  • Для одних и тех же запросов и данных изменение гранулярности рушит производительность на сканирование. Т.е. с 800 QPS при гранулярности в 8192, до 64 при 1. Но данные те же и запросы те же.
  • Ну вам надо в 8 тысяч раз чаще читать, конечно будет медленно
  • Сканирование идет всей таблицы в любом случае, это фул скан. Гранулярность меняет как-то формат хранения данных?
  • https://t.me/clickhouse_ru
    данные отдельно, индексы отдельно, индексы сбоку и не влияют на хранение данных
  • Ну индексу может надо куда-то указывать, что распаковано и лежит отдельно. Просто мысли вслух.
  • https://t.me/clickhouse_ru
    то что вы описали называется проекции, а не индексы :)
  • Мне казалось primary key всегда используется, даже при seq scan, но возможно я не прав
  • Попробуйте send_logs_level = 'trace' и посмотреть что читает
  • https://t.me/clickhouse_ru
    >и?
    проверить, что ваши девопсы сервер перезагрузили и настройки применились.
    и я думал, что вы этот запрос из под теста выполните, а не из под пользователя, где всё ок.
    и у меня эта настройка не применятся для юзеров, а только на профили
    >и запросов только 2 он падает совсем.
    а где собственно ошибка о падении?
  • @githubreleases_bot #234930 b o t 05:17 PM, 17 Sep 2021
    ClickHouse/ClickHouse tagged: v21.3.17.2-lts
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.3.17.2-lts
    Release notes:
    ClickHouse lts release v21.3.17.2-lts
    Release v21.3.17.2-lts · ClickHouse/ClickHouse

    ClickHouse lts release v21.3.17.2-lts

  • https://t.me/clickhouse_ru
    @aleksey1302 #234931 05:27 PM, 17 Sep 2021
    Всем привет, не могу понять, как сделать группировку с null, ведь clickhouse считает null при группировке, как настоящее значение.
  • https://t.me/clickhouse_ru
    а весь запрос можно? там есть джойн?
  • https://t.me/clickhouse_ru
    Можно считать, что нужно из левой структуры данных, с помощь группировки, получить правую структуру. Типа левая и есть первообразная
  • https://t.me/clickhouse_ru
    @aleksey1302 #234934 05:35 PM, 17 Sep 2021
    Join вообще не рассматриваю, ибо записей миллионы, лучше с group by и группировкой во внешней памяти страдать
  • https://t.me/clickhouse_ru
    тогда пока не вкуряю, что по чём вы там группируете
  • вы объясните логику, вообще не понятно как получить правую таблицу
  • https://t.me/clickhouse_ru
    ща подтянутся телепаты и всё порешают :)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    rating общий для любых category_region_id
  • https://t.me/clickhouse_ru
    🤣 напишите хотя бы, что у вас в group by и в колонках какие агрегирующие функции. и в каком собственно месте отличие кликхауса от других sql бд.
  • https://t.me/clickhouse_ru
    select
    marketplace_id,
    external_id,
    category_region_id,
    anyLast(rating) as rating
    from test_unified_product_v3
    group by
    marketplace_id, external_id, category_region_id;
  • https://t.me/clickhouse_ru
    но у вас же marketplace_id - это значение первой колонки, а не название колонки. по крайней мере у вас так выглядит "первообразная структура", что-то у вас значит с первообразной структурой не так и это запутывает ещё больше.
  • там колонки/строки местами поменяны как я понял
  • https://t.me/clickhouse_ru
    пипец. интересно как мы могли дать человеку ответ после первого его сообщения? :)
  • иногда я не понимаю как на некоторые вопросы отвечают)
  • https://t.me/clickhouse_ru
    @aleksey1302 #234946 05:53 PM, 17 Sep 2021
    Вот оригинал
  • https://t.me/clickhouse_ru
    @aleksey1302 #234947 05:53 PM, 17 Sep 2021
    Нужно, чтобы в результате агрегации осталось только две строки, у которых category_region_id != NULL и был рейтинг
  • а как отсюда понять какой рейтинг какому category_region_id должен соответствовать? там же null
  • https://t.me/clickhouse_ru
    where category_region_id is not null
  • https://t.me/clickhouse_ru
    Любой рейтинг пускай, не равный null
  • https://t.me/clickhouse_ru
    select
    marketplace_id,
    external_id,
    category_region_id,
    anyLast(rating) as rating
    from test_unified_product_v3
    group by
    marketplace_id, external_id, category_region_id
    having category_region_id is not null;
  • https://t.me/clickhouse_ru
    Рейтинг null, а должен быть везде 200 или 100
  • https://t.me/clickhouse_ru
    @aleksey1302 #234953 05:59 PM, 17 Sep 2021
    Немного помогает такое, но это костыль

    select
    marketplace_id,
    external_id,
    ifNull(category_region_id, 1) as category_region_id,
    anyLast(rating) as rating
    from test_unified_product_v3
    group by
    marketplace_id, external_id, category_region_id;
  • https://t.me/clickhouse_ru
    вам надо из group by убрать category_region_id
  • https://t.me/clickhouse_ru
    Если я уберу, то потеряю запись с category_region_id = 2, а она нужна
  • https://t.me/clickhouse_ru
    значит вы криво пишите в ваш AggregatingMergeTree и строки, которые содержат рейтинг должны также содержать и category_region_id
  • https://t.me/clickhouse_ru
    В это и непонятки, записи с rating не могу содержать category_region_id, там всегда будет null
  • https://t.me/clickhouse_ru
    и зачем вы на картинке поменяли колонки со строками, первый раз такое вижу, можно мозг сломать
  • https://t.me/clickhouse_ru
    >там всегда будет null
    и какому тогда по вашему category_region_id должны соответствовать эти рейтинги?
  • https://t.me/clickhouse_ru
    Ну ведь у нас колоночная бд, а там данные хранятся в таком виде, так и визуализировал 😉
  • https://t.me/clickhouse_ru
    Любому не равному null
  • https://t.me/clickhouse_ru
    почему тогда у вас колонка горизонтальная? :) горизонтально обычно строки
  • https://t.me/clickhouse_ru
    типа рандомно? один category_region_id будет иметь 100, а другой 200? а при следующем запросе наоборот или также?
  • https://t.me/clickhouse_ru
    Я уже согласен и на рандом) Нужен последний добавленный, можно смотреть по дате
  • select marketplace_id, external_id, category_region_id, rating from (
    select
    marketplace_id,
    external_id,
    arrayFilter(x -> isNotNull(x), groupUniqArray(category_region_id)) regions,
    anyLastIf(rating, isNotNull(rating)) as rating
    from test_unified_product_v3
    group by
    marketplace_id, external_id
    ) array join regions as category_region_id
  • https://t.me/clickhouse_ru
    этот костыль означает, что все рейтинги у которых category_region_id не задан попадают в category_region_id = 1.
    я не знаю насколько это вообще криво, но если вас устраивает, то и наверно ок. что вы хотите поменять не понятно.
  • но лучше конечно подумать как нормально писать данные
  • https://t.me/clickhouse_ru
    Работает, спасибо)
  • https://t.me/clickhouse_ru
    @aleksey1302 #234969 06:10 PM, 17 Sep 2021
    Правда боюсь предствить, как будет на 100млн строк
  • https://t.me/clickhouse_ru
    мега подгонка под ответ, я уже думал, что такое никак и не накостылить :)
  • думаю никак
  • можно что угодно на массивах написать)
  • https://t.me/clickhouse_ru
    Эти костыли ради того, чтобы не делать join. То есть поместить в одну биг таблицу кучу разного и попытаься через группировки получить единое состояние, собранное из мелких кусков
  • хотя конечно зависит от количества уникалтных комбинаций
  • https://t.me/clickhouse_ru
    то что описали - норм, то что вы реализовали - нет. при вставке рейтинга вам нужно вставлять category_region_id.
  • https://t.me/clickhouse_ru
    Очень хотелось бы да, но у рейтинга его просто нет
  • /report
  • https://t.me/clickhouse_ru
    @aleksey1302 #234979 06:16 PM, 17 Sep 2021
    Типа есть два разных набора данных из разных регионов, у которых один и тот же рейтинг
  • https://t.me/clickhouse_ru
    @aleksey1302 #234980 06:17 PM, 17 Sep 2021
    Можно было бы заюзать внешний словарь и сделать dictGet, но рейтинги тоже под 100 млн
  • https://t.me/clickhouse_ru
    если на момент вставки у вас уже есть записи, которые содержат category_region_id но не содержат регион, то лучше сразу селектом достать эти регионы и указывать их у рейтинга, тогда потом запросы будут легче отрабатывать
  • https://t.me/clickhouse_ru
    Тоже походит на костыль, ибо рейтинг вообще не связан с регионами. А если добавится третий регион, то нужно делать хук на добавление? Чтобы задублировать все рейтинги с новым регионом?
  • https://t.me/clickhouse_ru
    да, после падения как раз и применились, да меняла в profile, потом в юзере применила, там еще квоты можно прописать
    запрос из под теста с агрегацией, второй из основного
    в логах по времени перед падение пишет <Error> Application: DB::Exception: Suspiciously many (21) broken parts to remove.: Cannot attach table
    в настройках стоит по умолчанию 5, но это следствие какой-то другой ошибки или настроек, до этого пару часов спокойно все грузилось.

    Еще раз посмотрела логи -
    <Error> system.asynchronous_metric_log (a66e295a-ce3c-4a29-a66e-295ace3cba29): Detaching broken part /var/lib/clickhouse/store/a66/a66e295a-ce3c-4a29-a66e-295ace3cba29/202109_151633_151633_0. If it happened after update, it is likely because of backward incompability. You need to resolve this manually начинается с этого , потом еще раз это же, потом там неправильный запрос с отсутсвием поля
    Cannot parse input: expected 'columns format version: 1\n' at end of stream
    а затем от пишет ошибку отсутсвия это поля для таблицы, которая грузилась параллельно с упавшим запросом. В таблице (назовем история) историии это колонки version нет, в принципе. Потом пишет, что и там ее нет и часть сломанны - вот это Suspiciously many (21) , а потом уже новый лог после перезагрузки

    по логам похоже, что-то с больного на здоровое перекинул, сам не понял и умер.
  • https://t.me/clickhouse_ru
    что-то я не уловил взаимосвязи "падают запросы из за недостаточного количества памяти" и "Suspiciously many (21) broken parts to remove.: Cannot attach table".
    судя по всему, когда у вас таблицы то пропадали, то появлялись - это всё следствие этих вот ошибок. а увеличение памяти у юзера - это как мёртвому припарки. вам нужно фиксить проблемы, а не симптомы.
    может у вас с дисками проблемы или ещё что. вы писали, что это тестовый сервер. пусть его дропнут и пересоздадут с нуля без вот этого вот наследия.
  • https://t.me/clickhouse_ru
    Я бы так и сделала, дропнула и пересоздала. Ладно, спасибо, хорошего вечера
  • https://t.me/clickhouse_ru
    Yes
  • @githubreleases_bot #234989 b o t 08:17 PM, 17 Sep 2021
    ClickHouse/ClickHouse tagged: v21.9.3.30-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.9.3.30-stable
    Release notes:
    v21.9.3.30-stable
  • 18 September 2021 (49 messages)
  • https://t.me/clickhouse_ru
    @decembrin #234991 08:31 AM, 18 Sep 2021
    Доброго всем времени суток.
    Подскажите пожалуйста как CollapsingMergeTree понимает какие две строки из трех нужно свернуть?
    4324182021466249494 | 5 | 146 | 1
    4324182021466249494 | 5 | 146 | -1
    4324182021466249494 | 6 | 185 | 1
  • https://t.me/clickhouse_ru
    @decembrin #234992 08:33 AM, 18 Sep 2021
    Пример из документации
    Если я правильно понял, то ключ сортировки тут тольк UserID (4324182021466249494). Правильно ли я понимаю, что CH еще как-то сортирует данные, и порядок вставики имее значение?
  • понимает по порядку вставки
  • @simpl1g #234994 08:45 AM, 18 Sep 2021
    VersionedCollapsingMergeTree если паралельные вставки идут
  • https://t.me/clickhouse_ru
    Большое спасибо, не заметил этот движок
  • @githubreleases_bot #234996 b o t 08:47 AM, 18 Sep 2021
    ClickHouse/ClickHouse tagged: v21.7.10.4-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.7.10.4-stable
    Release notes:
    v21.7.10.4-stable
    Release v21.7.10.4-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.7.10.4-stable

  • @emd1tey #234997 09:29 AM, 18 Sep 2021
    Здравствуйте, был вчера в логах /var/log/clickhouse-server/clickhouse-server.err ошибко что лефт спэйс девайс, но диск и оператос с запасом свободны, клик в одной ноде, система на одном диске /var на другом диске, может есть какой то буфер/тэмп/еще какая магия
  • @emd1tey #234998 09:29 AM, 18 Sep 2021
    размер которой можно подкрутить
  • @emd1tey #234999 09:30 AM, 18 Sep 2021
    ошибка не сохранилась и потерлась
  • @emd1tey #235000 09:49 AM, 18 Sep 2021
    2021.09.18 08:23:32.038512 [ 1428 ] {} <Error> auto DB::IBackgroundJobExecutor::jobExecutingTask()::(anonymous class)::operator()() const: Code: 243, e.displayText() = DB::Exception: Cannot reserve 3.42 GiB, not enough space, 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) @ 0x88b64ca in /usr/bin/clickhouse
    1. ? @ 0xfd9c676 in /usr/bin/clickhouse
    2. DB::MergeTreeData::reserveSpace(unsigned long, std::__1::shared_ptr<DB::Space>) @ 0xfd9c4bb in /usr/bin/clickhouse
    3. DB::MergeTreeData::cloneAndLoadDataPartOnSameDisk(std::__1::shared_ptr<DB::IMergeTreeDataPart const> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::MergeTreePartInfo const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&) @ 0xfda25cc in /usr/bin/clickhouse
    4. DB::MergeTreeDataMergerMutator::mutatePartToTemporaryPart(DB::FutureMergedMutatedPart const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, DB::MutationCommands const&, DB::BackgroundProcessListEntry<DB::MergeListElement, DB::MergeInfo>&, long, DB::Context const&, std::__1::unique_ptr<DB::IReservation, std::__1::default_delete<DB::IReservation> > const&, std::__1::shared_ptr<DB::RWLockImpl::LockHolderImpl>&) @ 0xfdd8a25 in /usr/bin/clickhouse
    5. DB::StorageMergeTree::mutateSelectedPart(std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, DB::StorageMergeTree::MergeMutateSelectedEntry&, std::__1::shared_ptr<DB::RWLockImpl::LockHolderImpl>&) @ 0xfb327fe in /usr/bin/clickhouse
    6. ? @ 0xfb41b88 in /usr/bin/clickhouse
    7. ? @ 0xfd12967 in /usr/bin/clickhouse
    8. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0x88f8fd8 in /usr/bin/clickhouse
    9. ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()>(void&&, void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()&&...)::'lambda'()::operator()() @ 0x88faf9f in /usr/bin/clickhouse
    10. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x88f65af in /usr/bin/clickhouse
    11. ? @ 0x88fa043 in /usr/bin/clickhouse
    12. start_thread @ 0x76db in /lib/x86_64-linux-gnu/libpthread-2.27.so
    13. clone @ 0x12171f in /lib/x86_64-linux-gnu/libc-2.27.so
    (version 21.4.3.21 (official build))
    2021.09.18 08:23:32.038548 [ 1288 ] {} <Error> auto DB::IBackgroundJobExecutor::jobExecutingTask()::(anonymous class)::operator()() const: Code: 243, e.displayText() = DB::Exception: Cannot reserve 3.40 GiB, not enough space, Stack trace (when copying this message, always include the lines below):
  • @emd1tey #235001 09:49 AM, 18 Sep 2021
    нашел пример алерта
  • https://t.me/clickhouse_ru
    какая фс? мержи резервируют 2x места для себя, они сейчас идут?
  • ext4, да
  • https://t.me/clickhouse_ru
    в ext4 ещё по-умолчанию для рута резервируется сколько-то процентов места, можно уменшить
  • диск что рутовый что под вар на треть забит
  • @emd1tey #235007 10:30 AM, 18 Sep 2021
    40гб и 1.3 тб соответственно
  • https://t.me/clickhouse_ru
    /report
  • https://t.me/clickhouse_ru
    Check inodes
    df -i
  • https://t.me/clickhouse_ru
    И используйте свежую версию кликхауса
  • хорошая идея, но нет 1%
  • clickhouse-server --version
    ClickHouse server version 21.8.4.51 (official build).
  • https://t.me/clickhouse_ru
    Странно.
    In recent versions we have added better diagnostics on free space. It will show you the filesystem path, the amount of total and free space and inodes.
  • @emd1tey #235017 11:36 AM, 18 Sep 2021
    а алерт крайний 14:33
  • https://t.me/clickhouse_ru
    Тогда забейте. Может у вас бекап делался на этот же диск или ещё что-то, что на короткий промежуток времени забило диск. Посмотрите в мониторинге.
  • бэкапа нет... )
  • https://t.me/clickhouse_ru
    Optimize тоже не запускали?
  • https://t.me/clickhouse_ru
    А зря. Можно сделать хотя бы самый простой инкрементальный, чтобы места много не занимал. Раз в сутки сохранять новые записи за эти сутки в csv и гзипом. Так хоть можно будет восстановить всё кроме последнего дня.
  • у нас резервирование, и на второй сервак льются те же данные, типа дев
  • @emd1tey #235024 11:40 AM, 18 Sep 2021
    если наступает ахтунг, то переключаем на дев и переналиваем
  • @emd1tey #235025 11:41 AM, 18 Sep 2021
    базу
  • не запускали
    Вопросик такой, есть где лог по подкапотным операциям кликхауса, время планового того же optimize к примеру
  • https://t.me/clickhouse_ru
    В конфиге есть путь до файла и уровень логирования. Попробуйте выкрутить на максимум.
  • уже выставлени trace
  • @emd1tey #235030 12:47 PM, 18 Sep 2021
    в logger.level
  • https://t.me/clickhouse_ru
    Хороший ник кстати у Вас
  • https://t.me/clickhouse_ru
    😂
  • https://t.me/clickhouse_ru
    😂
  • https://t.me/clickhouse_ru
    @andreysenko #235037 02:39 PM, 18 Sep 2021
    такой вопрос. есть в таблице кликхауса физическое поля sensor_a и sensor_b, например.
    если в запросе написать вот так: sum(sensor_a) as sensor_a, то в дальнейшем в запросе sensor_a - будет уже не физическое поле в таблице, а алиас этой суммы.

    есть способ обратится к физическому полю ещё раз, не меняя алиас результата?
    например, чтобы получить там же sum(plus(sensor_a * coefficient, sensor_b + coefficient)) / sum(plus(sensor_a, sensor_b)?
  • https://t.me/clickhouse_ru
    prefer_column_name_to_alias
  • https://t.me/clickhouse_ru
    @andreysenko #235039 02:41 PM, 18 Sep 2021
    о, спасибо.
  • https://t.me/clickhouse_ru
    а его для конкретного запроса как-то можно изменить?
  • https://t.me/clickhouse_ru
    да

    SELECT 1 SETTINGS ...
  • @glekro #235044 04:34 PM, 18 Sep 2021
    Привет!
    Правильно понимаю, что на движке ReplicatedMergeTree запросы типа ALTER TABLE REPLACE PARTITION реплицируются?
    На двух репликах разъехались данные, кроме replace partitions ничего не выполнялось, с чем может быть связано?
  • https://t.me/clickhouse_ru
    Да, должно

    Что в system.replication_queue для этой таблицы?
  • @glekro ↶ Reply to #235045 #235046 05:07 PM, 18 Sep 2021
    очередь пустая
  • https://t.me/clickhouse_ru
    Ну хорошо, а разница в system.parts есть?
  • @glekro ↶ Reply to #235047 #235048 05:11 PM, 18 Sep 2021
    да, на одной реплике есть партиция, на второй нет
  • https://t.me/clickhouse_ru
    сделайте grep по name парта в эррор логах сервера, где ее нет
  • 19 September 2021 (54 messages)
  • https://t.me/clickhouse_ru
    @Hardstep83 #235057 09:51 AM, 19 Sep 2021
    Подскажите, когда ожидается UDF в стабильной версии?
  • https://t.me/clickhouse_ru
    Когда 20.10 до стейбла дойдёт
  • https://t.me/clickhouse_ru
    @Aleksey_Veselov #235059 11:27 AM, 19 Sep 2021
    всем привет!) подскажите плз, если мы создаем мат вью с движком MergeTree обращаясь к распределенной таблице - почему мат вью может не обновляться? мне кажется я где то видел, что мат вью должны работать без проблем с распределенными таблицами как и с обычными, но у меня почему то данные не обновляются

    вот DDL создания мат вью) буду признателен за помощь)

    CREATE MATERIALIZED VIEW log.adv_spendings_view
    ENGINE = MergeTree()
    PARTITION BY toYYYYMM(event_date)
    ORDER BY event_time
    SETTINGS index_granularity = 8192 POPULATE AS
    SELECT
    event_time,
    event_date,
    kiss__adv_spendings_justcontrolit__adv_plt AS adv_plt,
    kiss__adv_spendings_justcontrolit__adset_name AS adset_name,
    kiss__adv_spendings_justcontrolit__campaign AS campaign,
    kiss__adv_spendings_justcontrolit__campaign_start AS campaign_start,
    kiss__adv_spendings_justcontrolit__campaign_finish AS campaign_finish,
    kiss__adv_spendings_justcontrolit__cost AS cost,
    kiss__adv_spendings_justcontrolit__impressions AS impressions,
    kiss__adv_spendings_justcontrolit__clicks AS clicks,
    kiss__adv_spendings_justcontrolit__downloads AS downloads
    FROM log.kiss
    WHERE event = 'kiss__adv_spendings_justcontrolit'
    AND event_date >= '2020-01-01'
  • https://t.me/clickhouse_ru
    в момент создания MV
    данные из log.kiss подтянулись в lo.adv.spending_view ?
    POPULATE отработал?
  • https://t.me/clickhouse_ru
    Обновление данных срабатывает только на insert, либо при создании с указанием populate
  • https://t.me/clickhouse_ru
    Спасибо, а не до 21.10?
  • https://t.me/clickhouse_ru
    Populate да отработал без проблем - данных там прям немного
  • https://t.me/clickhouse_ru
    @Aleksey_Veselov #235066 11:58 AM, 19 Sep 2021
    то что мат вью это триггер на инсерт я в курсе - в том и дело, что при вставке новых данных в основную таблицу эти данные не подтягиваются в мат вью
  • https://t.me/clickhouse_ru
    ок. вы вставляете в distributed таблицу?
  • https://t.me/clickhouse_ru
    может они подтягиваются но не на том сервере на котором вы смотрите?

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

    если вы вставляете в log.events
    то и MV должен быть на log.events

    потому что триггер MV ничего не знает ни про какие другие таблицы кроме той что во FROM указана...
  • https://t.me/clickhouse_ru
    более того log.kiss НИЧЕГО не знает про вставки в log.events, он вообще даже не знает есть ли такая таблица на самом деле и какая там у нее под капотом логика

    потому что при SELET из log.kiss просто происходит иницализация нескольких паралельных дочерних SELECT запросов читающих из log.events
  • https://t.me/clickhouse_ru
    @Aleksey_Veselov #235073 12:02 PM, 19 Sep 2021
    я просто не доконца понимаю как в таком случае работает мат вью если она работает на распределенной таблице, которая фактически состоит из двух таблиц на разных серверах

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

    в таком случае надо отдельно на каждом сервере создавать мат вью ? а можем мы потом как то объединить эти данные в третью мат вью ?
  • https://t.me/clickhouse_ru
    распределенная таблица, это прокси движок
    на SELECT он умеет переписывать запросы к underlying таблицам и запускать из на серверах из настройки <remote_serves>
    на INSERT на ноде инициаторе в tmp_path создаются *.bin файлы которые потом пушатся в underlying таблицы соответствующих шардов
  • https://t.me/clickhouse_ru
    сделайте MV на log.events
    на всех серверах

    сделайте обычную Distributed таблицу поверх этого MV
    и читайте из нее

    вставляйте в log.events

    нет best practice
    есть либо понимание того как движки таблиц работают либо отсутствие такового =)
  • https://t.me/clickhouse_ru
    если вы переключите запись в distributed
    то надо сделать MV на каждом сервере
    и вам все равно вам нужна будет distributed таблица на чтение из этого MV
    потому что на каждом сервере будут лежать разные куски данных
  • https://t.me/clickhouse_ru
    окей, понял вас, спасибо огромное!)
  • @simpl1g #235079 12:11 PM, 19 Sep 2021
    @Aleksey_Veselov обязательно к просмотру)
  • @simpl1g #235080 12:11 PM, 19 Sep 2021
    рекомендую посмотреть, всё что надо знать про матвью

    https://www.youtube.com/watch?v=1LVJ_WcLgF8&t=7596s

    https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf
  • @Teghuti #235083 12:23 PM, 19 Sep 2021
    Добрый день.
    Столкнулся с проблемой. При попытке созранить в базе данные , представленные uint256 в колонке через драйвер для golang github.com/ClickHouse/clickhouse-go вылетает ошибка, что тип данных uint256 не пределен. Я понимаю, что там русским по белому написано, что тип не поддеживается, но я пытался обойти через вставку не самого числа, а строки с конрвертацией
    values (toUInt256(?))
    однако это тоже не работает.
    Может кто подсказать правильный путь для работы с такой разрядностью через golang?
    GitHub - ClickHouse/clickhouse-go: Golang driver for ClickHouse

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

  • https://t.me/clickhouse_ru
    А просто как строку пробовали вставить?
  • @Teghuti #235085 12:27 PM, 19 Sep 2021
    пробовал как строку, пробовал конвертацию через toUint из строки, пробовал сразу числом - не проходит
  • https://t.me/clickhouse_ru
    Хм, можно сделать через Null table engine
    Либо через input

    https://clickhouse.tech/docs/en/sql-reference/table-functions/input/
    input | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @Aleksey_Veselov #235087 12:37 PM, 19 Sep 2021
    @BloodJazMan @simpl1g
    подскажите плз, у нас достаточно много небольших мат вью и хотелось бы сделать так чтобы они работали учитывая что у нас распределенная таблица (и запись скоро будет переключена на другую таблицу) Но хотелось бы это сделать не создавая на каждом сервере MV и поверх distributed таблицу.

    Я вот увидел в файле следующий метод но я не могу его доконца осознать:
    SERVER2: CREATE TABLE dest (A Int64, B String)
    Engine=MergeTree ...;
    CREATE TABLE remote_src_log AS remote('SERVER2', default, dest)
    CREATE MATERIALIZED VIEW src_log_mv1
    TO remote_src_log AS
    SELECT A, B
    FROM src WHERE A % 2 = 0;

    вот если у нас распределенная таблица log.kiss а старая таблица log.events - туда скоро данные перестанут писаться
    то мне надо на на любом сервере создать таблицу через remote с подключением ко всем локальным таблицам и после этого создать мат вью, которая будет писать туда данные, а в этом мат вью я уже смогу обратиться к распределенной таблице log.kiss через select при создании и это должно сработать ? или я не доконца понял контекст ?
  • а чем мне поможет структура? тип не поддерживается драйвером. Если он на прямую не поддерживается, то и внутри структуры так же
  • https://t.me/clickhouse_ru
    @Aleksey_Veselov #235089 12:39 PM, 19 Sep 2021
    к моему сообщению скрин из файла
  • https://t.me/clickhouse_ru
    Конвертировать на стороне кх будете из строки которую передавать будете в драйвере
  • @Teghuti #235091 12:40 PM, 19 Sep 2021
    я пытался передавать именно вообще строкой, но - ошибка не меняется
  • https://t.me/clickhouse_ru
    я скорее тут не доконца понял если этот пример про from distributed to distributed то при создании мат вью тут в селекте мы обращаемся к удаленной таблице ? т.е.: SELECT A, B
    FROM src WHERE A % 2 = 0
    тут src это распределенная таблица имеется ввиду ?
  • https://t.me/clickhouse_ru
    Покажите ошибку
  • @Teghuti #235094 12:44 PM, 19 Sep 2021
    Code: 50. DB::Exception: Unknown data type family: UInt256
    column: unhandled type UInt256
  • а ваша версия КХ поддерживает UInt256?
  • @simpl1g #235096 12:48 PM, 19 Sep 2021
    нужен 20.8+ вроде + allow_experimental_bigint_types = 1
  • @Teghuti #235097 12:49 PM, 19 Sep 2021
    моя уверенность, что поддерживает. Так как через консоль все работает. вопрос в работе через golang
  • https://t.me/clickhouse_ru
    select version();
  • этот пример про то что можно писать в другой кластер данные через связку remote + mv, src в данном случае может быть любая таблица, MergeeTree или Distributed
  • @simpl1g #235100 01:04 PM, 19 Sep 2021
    > вот если у нас распределенная таблица log.kiss а старая таблица log.events - туда скоро данные перестанут писаться
    log.kiss это Distributed над log.events? или я не понял?
  • @Teghuti #235101 01:04 PM, 19 Sep 2021
    А версия самого clickhouse важна для драйвера golang?
  • @Teghuti #235102 01:05 PM, 19 Sep 2021
    21.8.4.51 - если это важно)
  • https://t.me/clickhouse_ru
    да, log.kiss - это распределенная над log.events и в log.events данные скоро перестанут и будут писаться как я понял в другую новую таблицу
    сейчас у нас построено (15-20 шт) небольших MV из старой таблицы log.events и когда я создал MV заменив log.events на log.kiss то новые данные перестали писаться в новые MV)
  • а зачем переделывать view если данные будут писаться в другую тадлицу?) задачу первоначальную не могу понять
  • https://t.me/clickhouse_ru
    не должно,

    попробуйте комбинацию

    таблица с Null движком с String типом в этой колонке и MV которая конвертирует строку в ваш инт
  • https://t.me/clickhouse_ru
    вот это уже неправдой попахивает
    MV независимы друг от друга, если каскадно друг на друга не ссылаются
  • https://t.me/clickhouse_ru
    да важна, но сам драйвер по себе не поддерживает =)

    вы запрос пробовали свой выполнить в clickouse-client?
    точно ваша версия UInt256 поддерживает?

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

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

    или вы все MV пересоздали с новой distributed таблицей? тогда вы меня извините, я не правильно понял
  • https://t.me/clickhouse_ru
    ну вообще toUInt256(?)
    и передача строки вместо числа, должно работать
  • https://t.me/clickhouse_ru
    да я пересоздал MV все заменив log.events на log.kiss - распределенную таблицу) и новые MV не работают)
  • Но - не работает
  • 20 September 2021 (206 messages)
  • @Crawles #235116 03:24 AM, 20 Sep 2021
    Привет. А кто-нибудь курсе, почему половину датасетов с clickhouse.tech фиг развернешь (ну или я делаю что-то не так)? Версия кликхауса: 21.9.3.30.

    1️⃣ Яндекс Метрика: hits_v1 и visits_v1 импортируются нормально, а hits_100m_obfuscated_v1.tsv.xz ломается:
    Code: 27. DB::ParsingException: Cannot parse input: expected '\t' before: 'http://bonprix.ru/index.ru/cinema/art/0 986 424 233 сезон\t\t0\t0\t0\t3\t177\t0\t0\t0\t0\t0\t\t0\t0\t15\tD�\t1\t0\t0\t0\t\t\t2630537\t4\t0\t\t0\t0\t0\t0\t-1\t1971-01-01 17:16:06\t0\t0\t0\t0\t\t':
    ...
    Column 13, name: UserAgent, type: UInt8, ERROR: text "http://bon" is not like UInt8

    : (at row 1)
    . (CANNOT_PARSE_INPUT_ASSERTION_FAILED), 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) @ 0x936713a in /usr/bin/clickhouse

    2️⃣ OnTime датасет не импортится из файлов:
    On_Time_Reporting_Carrier_On_Time_Performance_1987_present_2017_10.zip
    Code: 27. DB::ParsingException: Cannot parse input: expected '"' before: 'N732SK","2930",10140,1014003,30140,"ABQ","Albuquerque, NM","NM","35","New Mexico",86,14107,1410702,30466,"PHX","Phoenix, AZ","AZ","04","Arizona",81,"1525","1515':
    Row 1:
    Column 0, name: Year, type: UInt16, parsed text: "2017"
    ...
    Column 8, name: IATA_CODE_Reporting_Airline, type: String, parsed text: "<DOUBLE QUOTE>OO<DOUBLE QUOTE>"
    Column 9, name: Tail_Number, type: Int32, parsed text: "<DOUBLE QUOTE>"ERROR
    Code: 27. DB::ParsingException: Cannot parse input: expected '"' before: 'N732SK","2930",10140,1014003,30140,"ABQ","Albuquerque, NM","NM","35","New Mexico",86,14107,1410702,30466,"PHX","Phoenix, AZ","AZ","04","Arizona",81,"1525","1515'. (CANNOT_PARSE_INPUT_ASSERTION_FAILED) (version 21.9.3.30 (official build))

    3️⃣ Criteo Terabyte logs - ссылка ведет на страницу, где лично я не вижу, как их скачивать - https://labs.criteo.com/2013/12/download-terabyte-click-logs/? Нашел в гугле по такому адресу: https://ailab.criteo.com/download-criteo-1tb-click-logs-dataset/
  • @Crawles #235117 03:28 AM, 20 Sep 2021
    4️⃣ Ну и OnTime из партиций у меня тоже не получилось установить, в таблице показывается 0 рядов. Но тут я грешу на маленький радиус кривизны своих рук.
  • @Nikolay_samsonov #235119 05:53 AM, 20 Sep 2021
    Привет. Подскажите, пожалуйста.
    Как установить максимальный размер для system.query_log.
    Вроде бы можно retention size задать. но по доке я не разобрался каким параметром именно для query_log это можно сделать.
  • https://t.me/clickhouse_ru
    @526143964 #235120 06:20 AM, 20 Sep 2021
    Всем привет. Подскажите, пожалуйста, CollapsingMergeTree ведет себя так же как и ReplacingMergeTree при инсертах? То есть если я делаю несколько инсертов с одинаковым ключем и с единичками в поле sign, но с разными counts в таблицу с движком CollapsingMergeTree, то в фоне происходит сворачивание этих записей и остается только последняя запись. Или для этого можно использовать FINAL в запросе. В документации явного указания на это я не увидел. Там объясняется алгоритм работы удаления с использованием sign. Но когда я просто экспериментировал с такой таблицей, то записи сворачиваются
  • Надо использовать FINAL, все таблицы *MergeTree сливают данные в бэкграунде. У вас видимо данных очень мало и всё быстро под капотом отрабатывает
  • https://t.me/clickhouse_ru
    @emptyone #235122 07:04 AM, 20 Sep 2021
    Хелло, господа! подскажите, есть ли какая то разница между выполнением сабселекта и чтением из обычной VIEW с последующей фильтрацией? сабселект отрабатывает, аналогичная вьюха - нет с падением по памяти (Memory limit, ConvertingAggregatedToChunksTransform). тоже не ворк, если оборачиваю сабселект в функцию view(. можно ли заставить вью работать точно также как селект?

    в запросе union из нескольких AggregatingMT с вычислением -Merge
  • Можно задать TTL например, про размер не слышал https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-system-tables-eat-my-disk/
  • https://t.me/clickhouse_ru
    Спасибо. Да, использую final, забыл сказать. Но интересно в чем тогда преимущество replacing именно в такой задаче, когда прилетает какое-то количество inserts, которые являются update, фактически.
  • Спасибо. Похоже то что нужно
  • Если вам нужен чистый апдейт, то наверное replacing лучше. Collapsing позволяет удалять
  • Не все оптимизации могут во вью корректно работать, и получается довольно частая ситуация когда вью работает медленнее. Как это пофиксить хз, не использовать вью например)
  • https://t.me/clickhouse_ru
    да, видимо мы медленно идем в эту сторону. мерси. хотелось визуально уменьшать запросы
  • https://t.me/clickhouse_ru
    @kreygasmus #235129 07:23 AM, 20 Sep 2021
    ребят, а truncate в кликхаус работает? или какие способы есть очистить таблицу
  • https://t.me/clickhouse_ru
    Раьотает
  • https://t.me/clickhouse_ru
    @kreygasmus #235131 07:26 AM, 20 Sep 2021
    спасибо
  • https://t.me/clickhouse_ru
    да, мне нужно и удалять. Я правильно понимаю, что при апдейте между ними нет разницы? Просто удаление у меня редко происходит, а апдейтов очень много. Поэтому если в replacing апдейт происходит эффективнее, то я бы рассмотрел возможность soft delete или другие обходные пути..
    И, вообще, хотелось бы понять есть ли разница при апдейте
  • https://t.me/clickhouse_ru
    вместо максимального размера, надо по дате удалять через TTL в engine параметре в XML config.d
  • https://t.me/clickhouse_ru
    разницы с точки зрения производительности между Replacing и Collapsing практически нет

    все "удаления" и "апдейты" это просто немного разная логика пропусков строк при слиянии партов внутри партиции в background merge trhead pool
  • https://t.me/clickhouse_ru
    спасибо большое!
  • вы хотите слать всегда sign = 1 для обновления через collapsing? Не звучит чем-то надёжным и идеологическии верным. Что будет если 2 потока пришлют разные значения?
  • https://t.me/clickhouse_ru
    @hombit #235138 08:29 AM, 20 Sep 2021
    Доброе утро. Подскажите, какие настройки влияют на количество мепингов памяти? У меня запрос падает требуя увеличить vm.max_map_count, но я, к сожалению, не могу менять такие вещи в своем окружении
  • https://t.me/clickhouse_ru
    ну вообще это у вас не все сообщение об ошибке
    , а дополнение, которое пишется когда памяти не хватило
    и хочется понять где не хватило, но при чтении /proc/self/map выясняется что maps больше чем лимит...

    https://github.com/ClickHouse/ClickHouse/blob/287262d5002106f537292a6b82477fae4e6b41ac/src/Common/Exception.cpp#L227

    сколько у вас памяти на сервере вообще?
    ClickHouse/Exception.cpp at 287262d5002106f537292a6b82477fae4e6b41ac · 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
    @hombit #235140 08:40 AM, 20 Sep 2021
    Спасибо большое! 384ГБ
  • https://t.me/clickhouse_ru
    @hombit #235141 08:43 AM, 20 Sep 2021
    Не похоже, что дело именно в недостатке памяти, выглядит так, будто аллокация не сработала, эта функция проверила, что не хватает мэпингов и вот объяснила мне в логах почему не удалось выделить еще мегабайт памяти
  • https://t.me/clickhouse_ru
    @hombit #235142 08:46 AM, 20 Sep 2021
    Но что делать все равно непонятно =)
  • https://t.me/clickhouse_ru
    @marshinov #235143 09:26 AM, 20 Sep 2021
    А кто-нибудь из nodejs пользовался ClickHouse’ом? Вот здесь 2 библиотеки рекомендуются: https://clickhouse.tech/docs/en/interfaces/third-party/client-libraries/. Ни в одной не вижу поддержки параметризованных запросов, а хотелось бы их, чтобы самому не экранировать параметры.
    Client Libraries | ClickHouse Documentation

    Client Libraries from Third-party Developers Disclaimer Yandex does not maintain the libraries listed below and hasn’t d

  • https://t.me/clickhouse_ru
    @ruslansvir #235144 09:35 AM, 20 Sep 2021
    Привет! Есть ли способ при аггрегации получить список значений колонки, соответствующий первым N значениям другой колонки (например timestamp)?
  • https://t.me/clickhouse_ru
    А разве в базе данных не должны хранится уже экранированные данные?
  • https://t.me/clickhouse_ru
    Если правильно тебя понял, может помочь функция groupArray(max_size)(column): https://clickhouse.tech/docs/ru/sql-reference/aggregate-functions/reference/grouparray/
    groupArray | Документация ClickHouse

    groupArray Синтаксис: groupArray(x) или groupArray(max_size)(x) Составляет массив из значений аргумента. Значения в масс

  • https://t.me/clickhouse_ru
    Или вы собираетесь пользователям давать возможность добавлять данные? Мне кажется не лучая идея
  • https://t.me/clickhouse_ru
    да не, все проще const sql = “SELECT … “ + helloSqlInjection + “FROM …”
  • https://t.me/clickhouse_ru
    @marshinov #235149 09:41 AM, 20 Sep 2021
    В Питоне, например, все норм
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @decembrin #235152 09:43 AM, 20 Sep 2021
    Я вас понял. Просто в CH данные вставляются подготовленные и не пользовательские. Поэтому там в принципе не может возникать подобные сложности. И выборки также, заранее подготовленные в которые параметры берутся не их querystring)
  • https://t.me/clickhouse_ru
    @marshinov #235153 09:44 AM, 20 Sep 2021
    а почему сценарий с динамической фильтрацией - плохая идея для CH?
  • https://t.me/clickhouse_ru
    @decembrin #235154 09:45 AM, 20 Sep 2021
    У вас должны быть асоцииации параметров их querystring и подготовленных, тогда не валидные параметры просто не попадут в запрос
  • https://t.me/clickhouse_ru
    @avdotion #235155 09:46 AM, 20 Sep 2021
    Добрый день! Расскажите, пожалуйста, как сделать группировку по значениям массива?
    У меня есть табличка, в ней поле foo со значениями number[]. Хочу сделать group by по каждому значению внутри таких массивов и посчитать их количество

    пример:
    test-1 | [1, 2]
    test-2 | [2, 3]

    >

    1 | 1
    2 | 2
    3 | 1
  • https://t.me/clickhouse_ru
    Посмотри на функцию arrayJoin - должна помочь :)
  • https://t.me/clickhouse_ru
    @avdotion #235157 09:52 AM, 20 Sep 2021
    Спасибо, ARRAY JOIN — именно то, что я искал :)
  • https://t.me/clickhouse_ru
    Да, план такой. Из-за необходимости удаления. Поэтому я и засомневался в эффективном обновлении. Пока шлю данные в один поток. Если будет больше, то либо в коде надо это предусмотреть, либо брать collapsingVersioned. Думал так..
  • https://t.me/clickhouse_ru
    у вас так работает? просто у меня питон выдает ошибку
  • https://t.me/clickhouse_ru
    я не пробовал. Увидел доку только. Мне для ноды нужно
  • https://t.me/clickhouse_ru
    @rvkggwp #235161 10:29 AM, 20 Sep 2021
    Добрый день, подскажите как без перезагрузки CH удалить пользователя, созданного в users.xml ?
  • https://t.me/clickhouse_ru
    Вроде бы КХ конфиги на лету читает, так что можно просто удалить?
  • https://t.me/clickhouse_ru
    Ну удалил просто и пользователь остался, хотя в конфиге его не ((
  • https://t.me/clickhouse_ru
    @ExplosiveJam #235164 10:34 AM, 20 Sep 2021
    Я бы попробовал тогда SYSTEM RELOAD CONFIG, хотя скорее всего это не про юзеров.
  • https://t.me/clickhouse_ru
    Ну в общем все автоматически, просто надо было подождать ). Спасибо за помощь
  • https://t.me/clickhouse_ru
    @Russkie_Vpereed #235166 11:20 AM, 20 Sep 2021
    Ребят кто знает, что за fited?

    select distinct city
    from bd
    where date(dtime) = '{some_date}' and fired
  • fired? Вполне может быть каким-нибудь UInt8 полем. Аналогичная запись ... and fired=1.
  • https://t.me/clickhouse_ru
    Оказалось булевым, спасибо)
  • https://t.me/clickhouse_ru
    sysctl запустить как сказано
  • https://t.me/clickhouse_ru
    @Hero_of_Comix #235171 11:54 AM, 20 Sep 2021
    Всем привет, подскажите, пожалуйста, с чем может быть связана проблема
    есть 3 шарда по 2 реплики, внутри каждого шарда replicated табличка,
    но есть проблема что в один шард в разы больше пишется данных, хотя запись происходит в distributed табличку следующей структуры:
    CREATE TABLE relap_logs.adroom_log
    (
    `creative_id` Int64,
    `for_url_id` UInt32,
    `position` UInt16,
    `uid` FixedString(8),
    `front_uid` FixedString(8),
    `is_new_uid` UInt8,
    `rec_id` FixedString(19),
    `geo_code` String,
    `country_code` FixedString(2),
    `region_code` FixedString(3),
    `city_name` String,
    `device_type` Enum8('mac' = 1, 'pc' = 2, 'other_desktop' = 3, 'iphone' = 4, 'android_phone' = 5, 'ipad' = 6, 'android_tablet' = 7, 'other_mobile' = 8) DEFAULT CAST('other_desktop', 'Enum8(\'mac\' = 1, \'pc\' = 2, \'other_desktop\' = 3, \'iphone\' = 4, \'android_phone\' = 5, \'ipad\' = 6, \'android_tablet\' = 7, \'other_mobile\' = 8)'),
    `alg_id` UInt16,
    `adroom_id` UInt32,
    `is_reload` UInt8,
    `is_valid_session` UInt8,
    `ctime` DateTime,
    `event_date` Date,
    `domain_id` UInt32,
    `widget_id` UInt32,
    `event_type` Enum8('show' = 1, 'view' = 2, 'click' = 3),
    `adroom_type` Enum8('local' = 1, 'net' = 2, 'local2' = 3),
    `payfor` Enum8('cpc' = 1, 'cpm' = 2, 'cpv' = 3, 'promo' = 4),
    `relap_revenue` Float32,
    `publisher_revenue` Float32,
    `brand_safety_categories` Array(String)
    )
    ENGINE = Distributed('relap_cluster_1', 'relap_logs', 'adroom_log_replicated', adroom_id)
    может кто-то подскажет, по какому принципу он распехивает по шардам данные основываясь на ключе шардирования?
    Или где я мог ошибиться?(
  • https://t.me/clickhouse_ru
    @hombit ↶ Reply to #235170 #235172 11:54 AM, 20 Sep 2021
    У меня нет рута на этой машине, к сожалению
  • остаток от деления adroom_id на число шардов, перекосы по данным лекго могут в таком случае
  • https://t.me/clickhouse_ru
    @solard #235174 11:57 AM, 20 Sep 2021
    Приветствую
  • https://t.me/clickhouse_ru
    @solard #235175 11:58 AM, 20 Sep 2021
    Народ можете помочь? Куда копать при возникновении такой ошибки:

    Cause: ru.yandex.clickhouse.except.ClickHouseUnknownException: ClickHouse exception, code: 1002, host: clickhouse, port: 8123; Code: 122. DB::Exception: There was an error on [clickhouse-c-1:9000]: Code: 122. DB::Exception: Table columns structure in ZooKeeper is different from local table structure. (INCOMPATIBLE_COLUMNS) (version 21.9.2.17 (official build)). (INCOMPATIBLE_COLUMNS) (version 21.9.2.17 (official build))
  • https://t.me/clickhouse_ru
    @solard #235176 11:58 AM, 20 Sep 2021
    Кластер КХ 3 шарда
  • https://t.me/clickhouse_ru
    блин, а вот это оч странно, посмотрел у меня там 83501 уникальных значений adroom_id (по которому шардируется)
  • https://t.me/clickhouse_ru
    @solard #235178 12:00 PM, 20 Sep 2021
    CREATE TABLE test.test_database_sharded ON CLUSTER '{cluster}'
    (
            timestamp Date,
            operator_id UInt64,
            funds_movement_id String,
            deposit Nullable(Decimal(16, 2)),
            payment Nullable(Decimal(16, 2)),
            is_deleted UInt8,
            ver UInt64 DEFAULT toUnixTimestamp64Milli(now64(3))
    )
    ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/{shard}/{cluster}/test_database_sharded', '{replica}', ver)
    PARTITION BY toYYYYMMDD(timestamp)
    order by (timestamp, user_id, operation_id)
  • https://t.me/clickhouse_ru
    @solard #235179 12:00 PM, 20 Sep 2021
    Не могу понять куда копать с этой ошибкой
  • а какая разница сколько уникальных значений? тут важно количество записей
  • https://t.me/clickhouse_ru
    у тебя где-то есть табличка с таким же путем /clickhouse/tables/{shard}/{cluster}/test_database_sharded ?
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #235181 #235182 12:02 PM, 20 Sep 2021
    Да я ее создаю в начале
  • https://t.me/clickhouse_ru
    @solard #235183 12:02 PM, 20 Sep 2021
    Потом дропаю
  • https://t.me/clickhouse_ru
    @solard #235184 12:02 PM, 20 Sep 2021
    Потом опять создаю
  • https://t.me/clickhouse_ru
    у вас Atomic?
    не могло быть такого что уже пытались таблицу создать
    а потом DROP без SYNC сделали с таким же именем?