184 похожих чатов

Насколько я понял, optimize создает задачу на слияние, и

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

В сети нашел инфу, что кому-то помогало попытаться сделать OPTIMIZE в момент пока нет задач, я пытался это поймать и выполнил с десяток или больше запросов на OPTIMIZE. Но вот на скрине есть мерж который выполняется уже 1000сек и он выполнился только на 0.05%
Получается эти задачи все равно ставились?

21 ответов

18 просмотров

вставку остановить есть возможность? пока вы вставляете - КХ будет запускать новые мержи

Сергей-Худояров Автор вопроса

может можно для этого шарда вес=0 сделать? это сработает?

OPTIMIZE - это не столько директивный приказ, сколько пожелание Кликхаусу. Типа - давай, посмотри, не пора ли тебе что-нибудь по-мерджить. А он попробует сделать (или нет), исходя из текущей нагрузки, состояния разделов в таблице и фазы Луны.. Отношения не как у водителя и машины, а скорее как у адмирала флота на флагманском корабле (которым непосредственно командует всё же капитан):) Если хотите бОльшей степени детерминированности, пробуйте OPTIMIZE FINAL. Для больших таблиц лучше ограничивать команду определённым PARTITION. А ещё лучше OPTIMIZE FINAL и настройкой SETTINGS optimize_throw_if_noop=1

Сергей-Худояров Автор вопроса
Konstantin Rebrikov
OPTIMIZE - это не столько директивный приказ, скол...

Спасибо за объяснение. Можно ли приостановить запись в кх с помощью weight=0 для шарда? нужно ли перезапускать кх,

Сергей Худояров
может можно для этого шарда вес=0 сделать? это сра...

так а кто пишет в КХ? у вас вставка через distributed таблицу с ключом rand?

Сергей-Худояров Автор вопроса
Konstantin Ilchenko
так а кто пишет в КХ? у вас вставка через distribu...

нет, у меня зукипер (и старый кх 22.2.2.1) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/buyouts_new_local', '{replica}') PARTITION BY toYYYYMMDD(buyout_date_time)

Хмм, ваще может так статься что мерж застрял, у него есть прогресс?

Сергей-Худояров Автор вопроса

да, но медленный.

Сергей-Худояров Автор вопроса
Dmitry [Altinity] Titov
Хмм, ваще может так статься что мерж застрял, у не...

мне оч нужно выполнить DEDUPLICATE для таблицы, потому что произошла небольшая авария и данные задублировались. Вставку я остановить не могу, это хайлоад прод, но могу попробовать через весы выставить 0 для этого шарда. Это поможет? дедуплицировать нужно партицию на всем кластере, поэтому если так получится, то повторю еще на другой ноде

Сергей Худояров
16М строк

А сколько строк в проблемной партиции?

Сергей Худояров
да, но медленный.

Тяжелый мерж вообще относится к данной партиции или нет?

Dmitry [Altinity] Titov
Тяжелый мерж вообще относится к данной партиции ил...

неужто предложите ему перетащить партишн в другую табличку и там дедуплицнуть?

Сергей Худояров
screenshot 43гб, 3 шарда.

SELECT count() FROM tbl WHERE _partition_id = ''

Сергей Худояров
нет, у меня зукипер (и старый кх 22.2.2.1) ENGINE ...

а зукипер тут причём? в какую таблицу идёт вставка? как распределяете данные между шардами?

Сергей-Худояров Автор вопроса
Konstantin Ilchenko
а зукипер тут причём? в какую таблицу идёт вставка...

<yandex> <zookeeper> <node index="1"> <host>rtb-ch01-techru</host> <port>2181</port> </node> <node index="2"> <host>rtb-ch03-techru</host> <port>2181</port> </node> <node index="3"> <host>rtb-ch05-techru</host> <port>2181</port> </node> </zookeeper> <remote_servers> <rtb_cluster> <shard> <weight>1</weight> <internal_replication>True</internal_replication> <replica> <host>rtb-ch01-techru</host> <port>9000</port> <user>rtbch01_user</user> <password>***</password> </replica> </shard> <shard> <weight>1</weight> <internal_replication>True</internal_replication> <replica> <host>rtb-ch05-techru</host> <port>9000</port> <user>rtbch05_user</user> <password>***</password> </replica> </shard> <shard> <weight>1</weight> <internal_replication>True</internal_replication> <replica> <host>rtb-ch03-techru</host> <port>9000</port> <user>rtbch03_user</user> <password>***</password> </replica> </shard> </rtb_cluster> </remote_servers>

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта