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

Спасибо. 1) Стало быть, частичная вставка блока невозможна Полагаю, возможен случай, что

вставка удалась, но информация об этом не дошла до вставляющего процесса...

2) В этом случае всё ещё можно полагаться на идемпотентность? (Точнее, именно в этом случае и нужно, для того она и есть?)

3) А если при повторной попытке в таком случае запись пойдет в другую реплику?

2 ответов

4 просмотра

насколько я в курсе, повторно блок не вставится https://clickhouse.yandex/docs/en/operations/table_engines/replication/ https://clickhouse.yandex/docs/en/operations/settings/settings/#settings-max_insert_block_size https://clickhouse.yandex/docs/en/operations/settings/settings/#settings-insert_quorum

нужно делать все очень аккуратно. >1) Стало быть, частичная вставка блока невозможна НО возможна частичная вставка инсерта. Инсерт может разбиться на несколько блоков, это зависит от ключа партиционирования, т.е. инсерт должен покрывать только одну партицию. Плюс зависит от max_insert_block_size. атомарность insert ... select зависит от max_block_size и от того откуда select (от движка таблицы). У MV нет атомарности, вставка может пройти в таблицу и не пройти в MV. >2) В этом случае всё ещё можно полагаться на идемпотентность? только для replicated таблиц, для последних 100 инсертов и только если блок абсолютно идентичен, теже строки в том же порядке. >3) А если при повторной попытке в таком случае запись пойдет в другую реплику? если для insert используются distributed то нужен ключ шардирования, чтобы блок попал в тот же самый шард что и предыдущая попытка

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
9
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
Карта сайта