Size: a a a

ClickHouse не тормозит

2020 September 09

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Serhii Mikhno
в день пара ТB

Существующая таблица просто как первый шард остается?
ну автоматического решардинга нет.

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

Р

Рустам in ClickHouse не тормозит
UUID хоть как то гарантирует свою уникальность?
источник

НМ

Николай Моисеенко... in ClickHouse не тормозит
добрый день коллеги, подскажите, как можно избавиться от дублей записей, если они не схлопнулись самим CH при движке MergeTree
может есть какой-то запрос для принудительного схлопывания?
источник

У

Ухудшанский... in ClickHouse не тормозит
optimize table
источник

ДБ

Дмитрий Бережнов... in ClickHouse не тормозит
Николай Моисеенко
добрый день коллеги, подскажите, как можно избавиться от дублей записей, если они не схлопнулись самим CH при движке MergeTree
может есть какой-то запрос для принудительного схлопывания?
Обычный MergeTree не слопывает дублик. Может у вас ReplacingMergeTree?
источник

НМ

Николай Моисеенко... in ClickHouse не тормозит
да, прошу прощения, ReplacingMergeTree(), конечно
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Николай Моисеенко
добрый день коллеги, подскажите, как можно избавиться от дублей записей, если они не схлопнулись самим CH при движке MergeTree
может есть какой-то запрос для принудительного схлопывания?
Дедупликация данных производится лишь во время слияний. Слияние происходят в фоне в неизвестный момент времени, на который вы не можете ориентироваться. Некоторая часть данных может остаться необработанной. Хотя вы можете вызвать внеочередное слияние с помощью запроса OPTIMIZE, на это не стоит рассчитывать, так как запрос OPTIMIZE приводит к чтению и записи большого объёма данных.

Таким образом, ReplacingMergeTree подходит для фоновой чистки дублирующихся данных в целях экономии места, но не даёт гарантии отсутствия дубликатов.

https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/replacingmergetree/
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Рустам
UUID хоть как то гарантирует свою уникальность?
нет, но дубликаты очень очень очень маловероятны
источник

НМ

Николай Моисеенко... in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
Дедупликация данных производится лишь во время слияний. Слияние происходят в фоне в неизвестный момент времени, на который вы не можете ориентироваться. Некоторая часть данных может остаться необработанной. Хотя вы можете вызвать внеочередное слияние с помощью запроса OPTIMIZE, на это не стоит рассчитывать, так как запрос OPTIMIZE приводит к чтению и записи большого объёма данных.

Таким образом, ReplacingMergeTree подходит для фоновой чистки дублирующихся данных в целях экономии места, но не даёт гарантии отсутствия дубликатов.

https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/replacingmergetree/
как правильнее избавиться от дублей?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Николай Моисеенко
как правильнее избавиться от дублей?
сначала понять что они дубли. Дубли схлопываются только в шарде в партиции. Если дубли на разных шардах то нет, если дубли в разных партициях то нет
источник

Р

Рустам in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
нет, но дубликаты очень очень очень маловероятны
Понял, спасибо
источник

НМ

Николай Моисеенко... in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
сначала понять что они дубли. Дубли схлопываются только в шарде в партиции. Если дубли на разных шардах то нет, если дубли в разных партициях то нет
у нас без шардирования, дубли по идее в 1 партиции (партиционирование по дате) в дублях даты идентичны
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Николай Моисеенко
у нас без шардирования, дубли по идее в 1 партиции (партиционирование по дате) в дублях даты идентичны
вариантов много, например дубли в одном парте

set optimize_throw_if_noop=1; -- бросать ошибку почему не стартует optimize

create table a (A Int64) Engine=ReplacingMergeTree order by A;

insert into a values (1), (1);

select *,_part from a
┌─A─┬─_part─────┐
│ 1 │ all_1_1_0 │
│ 1 │ all_1_1_0 │
└───┴───────────┘

set optimize_throw_if_noop=1;

optimize table a;

DB::Exception: Cannot OPTIMIZE table: There is no need to merge parts according to merge selector algorithm. Cannot select parts for optimization.

optimize table a final;

select *,_part from a
┌─A─┬─_part─────┐
│ 1 │ all_1_1_1 │
└───┴───────────┘
источник

НМ

Николай Моисеенко... in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
вариантов много, например дубли в одном парте

set optimize_throw_if_noop=1; -- бросать ошибку почему не стартует optimize

create table a (A Int64) Engine=ReplacingMergeTree order by A;

insert into a values (1), (1);

select *,_part from a
┌─A─┬─_part─────┐
│ 1 │ all_1_1_0 │
│ 1 │ all_1_1_0 │
└───┴───────────┘

set optimize_throw_if_noop=1;

optimize table a;

DB::Exception: Cannot OPTIMIZE table: There is no need to merge parts according to merge selector algorithm. Cannot select parts for optimization.

optimize table a final;

select *,_part from a
┌─A─┬─_part─────┐
│ 1 │ all_1_1_1 │
└───┴───────────┘
спасибо, попробуем
источник

SD

Stanislav Dimitriev in ClickHouse не тормозит
Ребят, привет
источник

SD

Stanislav Dimitriev in ClickHouse не тормозит
я случайно удалил данные из зк
источник

SD

Stanislav Dimitriev in ClickHouse не тормозит
как мне их восстановить?
источник

SD

Stanislav Dimitriev in ClickHouse не тормозит
метаинформацию о табличке удалил
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Stanislav Dimitriev
как мне их восстановить?
https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/replication/#vosstanovlenie-v-sluchae-poteri-ili-povrezhdeniia-metadannykh-na-zookeeper-klastere

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



Преобразование из MergeTree в ReplicatedMergeTree
Здесь и далее, под MergeTree подразумеваются все движки таблиц семейства MergeTree, так же для ReplicatedMergeTree.

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

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

Переименуйте имеющуюся MergeTree таблицу, затем создайте со старым именем таблицу типа ReplicatedMergeTree.
Перенесите данные из старой таблицы в поддиректорию detached в директории с данными новой таблицы (/var/lib/clickhouse/data/db_name/table_name/).
Затем добавьте эти куски данных в рабочий набор с помощью выполнения запросов ALTER TABLE ATTACH PARTITION на одной из реплик.
источник

SD

Stanislav Dimitriev in ClickHouse не тормозит
спасибо большое
источник