Size: a a a

ClickHouse не тормозит

2020 August 25

IK

Ilona Knizhnikova in ClickHouse не тормозит
То есть replicas_status 200 на самом деле не гарантирует актуальность реплики? А есть что-то, что гарантирует?)
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Ilona Knizhnikova
То есть replicas_status 200 на самом деле не гарантирует актуальность реплики? А есть что-то, что гарантирует?)
реплики всегда отстают, т.е. скорость света конечна, поэтому в любой момент времени есть вероятность что в другую реплику уже вставили, а мы еще не знаем
источник

EM

Evgeny Makarov in ClickHouse не тормозит
подскажите, а есть ли какой-то способ конвертировать результат SELECT в словарь, без source(executable(command 'clickhouse-client...')))?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Evgeny Makarov
подскажите, а есть ли какой-то способ конвертировать результат SELECT в словарь, без source(executable(command 'clickhouse-client...')))?
create view aa as select

source aa
источник

IK

Ilona Knizhnikova in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
реплики всегда отстают, т.е. скорость света конечна, поэтому в любой момент времени есть вероятность что в другую реплику уже вставили, а мы еще не знаем
А как тогда можно защититься от случайных альтеров в отстающие реплики? В плане, именно на отстающую таблицу.
источник

AZ

Anton Zhuravsky in ClickHouse не тормозит
Добрый день! Есть ли аналог функции quantile, где можно указать «разрешение» (чтобы уменьшить размер стейта)?
источник

И

Иван in ClickHouse не тормозит
Ilona Knizhnikova
А как тогда можно защититься от случайных альтеров в отстающие реплики? В плане, именно на отстающую таблицу.
Опять же надо понимать что мы говорим не об отстающем сервере, а об отстающей таблице на сервере, 1 таблица может отставать и статус будет не 200, а в остальные таблицы будут вполне рабочими. Так что надо понять сколько секунд можно отставать для конкретной таблицы
источник

EM

Evgeny Makarov in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
create view aa as select

source aa
то есть можно прямо view использовать в качестве source?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Ilona Knizhnikova
А как тогда можно защититься от случайных альтеров в отстающие реплики? В плане, именно на отстающую таблицу.
ну так отставание задайте например 30 сек.
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Evgeny Makarov
то есть можно прямо view использовать в качестве source?
да
источник

EM

Evgeny Makarov in ClickHouse не тормозит
спасибо, попробую
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Anton Zhuravsky
Добрый день! Есть ли аналог функции quantile, где можно указать «разрешение» (чтобы уменьшить размер стейта)?
quantileTDigest ?
источник

IK

Ilona Knizhnikova in ClickHouse не тормозит
Иван
Опять же надо понимать что мы говорим не об отстающем сервере, а об отстающей таблице на сервере, 1 таблица может отставать и статус будет не 200, а в остальные таблицы будут вполне рабочими. Так что надо понять сколько секунд можно отставать для конкретной таблицы
Вот если остальные таблицы рабочие - как можно это понять? Выяснять допустимый лаг для каждой выглядит не очень эффективным выходом.
Для контекста: выполняю последовательность операций (создание-заливка-проверка-свап-удаление) над одной replcated таблицей, размазанной по куче шардов, реплик по две штуки на шард. Нужно, чтобы если одна реплика легла/мигнула/долго лежала и восстала в середине процесса я не поломала репликацию внезапным альтером на восстанавливающуюся таблицу и не поломала свой процесс, делая запросы к отстающим репликам.
Была информация, что replicas_status мне это обеспечивает, но, видимо, это не так? Есть ли надежный способ обезопасить себя от сюрпризов в условиях отсутвия транзакций?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Ilona Knizhnikova
Вот если остальные таблицы рабочие - как можно это понять? Выяснять допустимый лаг для каждой выглядит не очень эффективным выходом.
Для контекста: выполняю последовательность операций (создание-заливка-проверка-свап-удаление) над одной replcated таблицей, размазанной по куче шардов, реплик по две штуки на шард. Нужно, чтобы если одна реплика легла/мигнула/долго лежала и восстала в середине процесса я не поломала репликацию внезапным альтером на восстанавливающуюся таблицу и не поломала свой процесс, делая запросы к отстающим репликам.
Была информация, что replicas_status мне это обеспечивает, но, видимо, это не так? Есть ли надежный способ обезопасить себя от сюрпризов в условиях отсутвия транзакций?
ну absolute_delay в replicas показывает насколько отстает текущая реплика. Но если сервер лежит то это не узнать.

вместо свапа таблиц, может делать свап/replace партиций ?

https://gist.github.com/den-crane/521975b5333c5dc7059bed4030f62f94
источник

IK

Ilona Knizhnikova in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
ну absolute_delay в replicas показывает насколько отстает текущая реплика. Но если сервер лежит то это не узнать.

вместо свапа таблиц, может делать свап/replace партиций ?

https://gist.github.com/den-crane/521975b5333c5dc7059bed4030f62f94
Проверку живости делаю, на мертвый хост запросы кидать не буду. Но актуальность проверять хочется тоже.
Для партиционированных таблиц как раз replace partition, да. Для непартиционированных двойной rename через дополнительную tmp таблицу. Не стала расписывать потому что вроде не очень релевантно к теме)
источник

IK

Ilona Knizhnikova in ClickHouse не тормозит
Все равно нарваться на отстающую можно почти на каждом этапе
источник

EM

Evgeny Makarov in ClickHouse не тормозит
на синтаксис в виде create dictionary ... source aa.. он ругается expected source, из документации пока не понял какой тип для view  чтобы задать source(...)
источник

IK

Ilona Knizhnikova in ClickHouse не тормозит
А absolute_delay показывает только релевантное отставание (идет репликация, ждет выполнения ON CLUSTER и всякое такое) или там еще что-то внутреннее может быть, что не нужно ждать?
В плане, могу ли я ориентировать на супер-низкий absolute_delay для таблицы или я никогда не дождусь момента для записи при таком подходе?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Ilona Knizhnikova
Проверку живости делаю, на мертвый хост запросы кидать не буду. Но актуальность проверять хочется тоже.
Для партиционированных таблиц как раз replace partition, да. Для непартиционированных двойной rename через дополнительную tmp таблицу. Не стала расписывать потому что вроде не очень релевантно к теме)
>>Для партиционированных таблиц как раз replace partition, да.
>> Для непартиционированных двойной rename через дополнительную tmp таблицу.

почему ?  что такое непартиционированные таблицы? таких не бывает. У них партиция одна и называется tuple()
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Evgeny Makarov
на синтаксис в виде create dictionary ... source aa.. он ругается expected source, из документации пока не понял какой тип для view  чтобы задать source(...)
ну aa это имя таблицы

SOURCE(CLICKHOUSE(HOST 'localhost' PORT 9000 TABLE aaaa DB 'default' USER 'default'))
источник