Size: a a a

ClickHouse не тормозит

2020 August 17

i

iPrior in ClickHouse не тормозит
Dj
grep -B4 -A4 timezone /etc/clickhouse-server/preprocessed/config.xml
root@ubuntu-bionic:/etc/clickhouse-server# grep -B4 -A4 timezone /etc/clickhouse-server/preprocessed/config.xml

        Please note, that server could display time zone alias instead of specified name.
        Example: W-SU is an alias for Europe/Moscow and Zulu is an alias for UTC.
   -->
   <timezone>UTC</timezone>

   <!-- You can specify umask here (see "man umask"). Server will apply it on startup.
        Number is always parsed as octal. Default umask is 027 (other users cannot read logs, data files, etc; group can only read).
   -->
root@ubuntu-bionic:/etc/clickhouse-server#
источник

i

iPrior in ClickHouse не тормозит
о, почти мой случай, только у меня на серваках разные версии кх, а тут, как я понимаю, у чувака 19.13 на обоих
источник

D

Dj in ClickHouse не тормозит
iPrior
о, почти мой случай, только у меня на серваках разные версии кх, а тут, как я понимаю, у чувака 19.13 на обоих
да собственно, 19.14 ставьте
источник

i

iPrior in ClickHouse не тормозит
ну да... можно еще в ОС поменять зону на UTC =)
всем спасибо за участие, очень помогли
источник

ZZ

Zorro Zorroff in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
аа, я не туда cast написал.

я просто не пишу обычно у MV описания полей, использую выведение типов из селекта

CREATE MATERIALIZED VIEW klmn
ENGINE = SummingMergeTree()  order by (ts) as
select ts, toDate(a.ts) dt, toUInt32(sum(1)) cntx, sum(a.size * a.cnt) sumx
from pqrs
group by ts;
В доках (https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/summingmergetree/) там вообще в примерах нету sum, а движок сам суммирует (но не всегда! иногда key duplication изза внутренней организации). Поэтому пишут что на такие таблицы надо натравлять sum снова, чтобы это "не всегда" устранить. Про materialized вью пока не дошел.
источник

MP

Maxim Pronkin in ClickHouse не тормозит
Коллеги, такой вопрос, кто нибудь знает как устанавливать сервер кликхауса в "тихом" режиме? что бы пароль для default пользователя задавался автоматически или брался из переменной?

дело в том что кликхаус нужно тиражировать большим кол-вом и из за этого с новой версией клика моя автоматизация ломается =(
источник

ML

Mimik Lamerger in ClickHouse не тормозит
Maxim Pronkin
Коллеги, такой вопрос, кто нибудь знает как устанавливать сервер кликхауса в "тихом" режиме? что бы пароль для default пользователя задавался автоматически или брался из переменной?

дело в том что кликхаус нужно тиражировать большим кол-вом и из за этого с новой версией клика моя автоматизация ломается =(
Какойнить вагрант или тупо башскрипт не?
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Maxim Pronkin
Коллеги, такой вопрос, кто нибудь знает как устанавливать сервер кликхауса в "тихом" режиме? что бы пароль для default пользователя задавался автоматически или брался из переменной?

дело в том что кликхаус нужно тиражировать большим кол-вом и из за этого с новой версией клика моя автоматизация ломается =(
env DEBIAN_FRONTEND=noninteractive \
       apt-get install --allow-unauthenticated --yes --no-install-recommends \
           clickhouse-common-static=$version \
           clickhouse-client=$version \
           clickhouse-server=$version \
источник

MP

Maxim Pronkin in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
env DEBIAN_FRONTEND=noninteractive \
       apt-get install --allow-unauthenticated --yes --no-install-recommends \
           clickhouse-common-static=$version \
           clickhouse-client=$version \
           clickhouse-server=$version \
при этом варианте пароль для default будет пустой?
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Maxim Pronkin
при этом варианте пароль для default будет пустой?
а какая разница-то? , вы же подложите свои конфиги, ну подложите какой надоэ
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Maxim Pronkin
Коллеги, такой вопрос, кто нибудь знает как устанавливать сервер кликхауса в "тихом" режиме? что бы пароль для default пользователя задавался автоматически или брался из переменной?

дело в том что кликхаус нужно тиражировать большим кол-вом и из за этого с новой версией клика моя автоматизация ломается =(
никогда не меняйте конфиги вендорные, подкладывайте свои в conf.d
https://gist.github.com/den-crane/4d67e1d4cc49de66cd36d1d76a2b14a5
источник

MP

Maxim Pronkin in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
а какая разница-то? , вы же подложите свои конфиги, ну подложите какой надоэ
мне разницы ни какой. просто для понимания
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Maxim Pronkin
мне разницы ни какой. просто для понимания
просто не создатся, будет пустой, как и было пока инсталлер не научился  пароль спрашивать
источник

MP

Maxim Pronkin in ClickHouse не тормозит
угу. спасибо большое!
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Artem Bochkov
Всем привет.
Регулярно возникает проблема с переименованием таблиц.

Есть CH версии 20.5.4. Есть таблица MergeTree. В неё каждый час загружается текущее состояние данных из mysql - таблица выгружается полностью, так как по ней в мускуле идёт большое количество апдейтов.
Чтобы для пользователей кликхауса таблица не моргала, скрипт перегрузки данных делает вот так:
1) Данные из TSV грузит в {table}_new;
2) Как только данные влились, делает рокировку: RENAME TABLE  {table} TO {table}_old, {table}_new TO {table};
3) DROP TABLE {table}_old;
Проблема в том, что по факту в 2/3 случаев получается очень плохо:
- целевая таблица мигает - исчезает на сотни секунд;
- иногда вообще валится ошибка WRITE locking attempt on "{table}_new" has timed out! (120000ms) Possible deadlock avoided. Client should retry. IN:RENAME TABLE {table} TO {table}_old, {table}_new TO {table}

Увеление lock_acquire_timeout ни к чему не привело - в большей части случаев RENAME всё равно не успевает выполниться, плюс целевая таблица оказывается невидна на время куполнения RENAME.
Судя по system.query_log у нас нет запросов, которые выполнялись бы более 30 секунд.
Сама по себе таблица, на которой происходит проблема - небольшая, буквально 20ГБ в Clickhouse.

Собственно вопросы:
1) Что можно еще попробовать, чтобы решить проблемы с а)  видимостью таблицы во время RENAME б) больщим временем выполнения RENAME?
2) Возможно, схема с RENAME  TABLE вообще не рабочая, и не надо пытаться сейчас реашать проблему из предыдущего пункта, а есть работающие устоявшиеся практики для полной перегрузки таблиц?
я кстати перепутал, надо для atomic использовать EXCHANGE TABLES atom.X1 AND atom.X2;

https://gist.github.com/den-crane/521975b5333c5dc7059bed4030f62f94#file-rename_atomic-txt-L70
источник

IG

Ilyas Guseynov in ClickHouse не тормозит
Всем привет! Хочу вычислять воронку с разными  интервалами между шагами.
Вижу есть sequenceMatch с возможностью задать кастомные периоды, но возвращается только 1 или 0.
И есть windowFunnel, который возвращает количество "пройденных" шагов, но тут одно общее окно.

Получается что для отрисовки одной такой воронки, грубо говоря, нужно посчитать  столько sequenceMatch сколько у меня шагов? Типа таокго:
sequenceMatch("(?1)(?t < 100)(?2)", ts, c1, c2) as level2,
sequenceMatch("(?1)(?t < 100)(?2)(?t < 200)(?3)", ts, c1, c2, c3) as level3,
...

Это можно было б вычислить через один вызов windowFunnel(), если бы не разные временные интервалы...
Всё так или есть какой-то более удачный вариант?
источник

АШ

Асхат Шаяхметович... in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
вы про какой final ? select from final  как раз не глядя на партиции работает

create table f (a Int64, d date, s String) engine=ReplacingMergeTree partition by d order by a
insert into f values(1, 11, '1')
insert into f values(1, 11, '2')
select * from f final;
┌─a─┬──────────d─┬─s─┐
│ 1 │ 1970-01-12 │ 2 │
└───┴────────────┴───┘
Это в какой версии так работает? В вашем случае все работает верно потому что поле d, по которому вы проводите партицирование не изменилось. Вставьте в d=12 второй транзакцией и постройте два запроса WHERE d=11 и WHERE d=12. Вы увидете одну и ту же запись в обоих резальтатах, только d у них будет отличаться. Ну и s разумеется.

>ClickHouse also automatically cuts off the partition data where the partitioning key is specified in the query.
https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/mergetree/

Я так понимаю и сужу по полученным данным, что это общее свойство для всех mergetree. Допустим у вас есть один товар с id=1, который был создан 15 июля - он попадает в партицию 15-го июня, затем этому же товару изменили дату создания на 15 августа. Когда вы будете искать список товаров созданных в июне, вы найдете товар с id = 1, когда вы будете искать товар созданный в августе найдете этот же товар. Потому что FINAL видит первичный ключ, по которому происходит секционирование и отрубает все остальные данные.
источник

K

Konstantin in ClickHouse не тормозит
/stat@combot
источник

C

Combot in ClickHouse не тормозит
Total messages: 176685
источник

D

Dj in ClickHouse не тормозит
Асхат Шаяхметович
Это в какой версии так работает? В вашем случае все работает верно потому что поле d, по которому вы проводите партицирование не изменилось. Вставьте в d=12 второй транзакцией и постройте два запроса WHERE d=11 и WHERE d=12. Вы увидете одну и ту же запись в обоих резальтатах, только d у них будет отличаться. Ну и s разумеется.

>ClickHouse also automatically cuts off the partition data where the partitioning key is specified in the query.
https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/mergetree/

Я так понимаю и сужу по полученным данным, что это общее свойство для всех mergetree. Допустим у вас есть один товар с id=1, который был создан 15 июля - он попадает в партицию 15-го июня, затем этому же товару изменили дату создания на 15 августа. Когда вы будете искать список товаров созданных в июне, вы найдете товар с id = 1, когда вы будете искать товар созданный в августе найдете этот же товар. Потому что FINAL видит первичный ключ, по которому происходит секционирование и отрубает все остальные данные.
во первых - вы путаете парт и партиция - это две разные вещи.
я так понял что у вас проблема в том при селектах из одной партиции, остальные не учитываются.
Но это так и должно быть. Сначала всегда идет отсечение партиций, потом уже на оставшихся данных мердж.
с этим надо жить и понимать, либо строить запросы типа d>date, либо как в других базах делать ключ партиционирования частью PK.
источник