таблиц типа Buffer не имеет смысла вставлять данные по одной строке, так как таким образом будет достигнута скорость всего лишь в несколько тысяч строк в секунду…
Понимаю что это довольно условно, но имеется ввиду запись в одну таблицу или в общем по кластеру.
Сейчас есть одна табличка, в нее идет порядка 4k одиночных записей в секунду, можно ли обойтись Buffer?
Так же несовсем понятен смысл этого
> Если таблица назначения является реплицируемой, то при записи в таблицу Buffer будут потеряны некоторые ожидаемые свойства реплицируемых таблиц.
Может кто-то расшифровать?
1 можно 2 у replicated таблиц есть фича -- дедупликация инсертов. Если инсерт совпадает до бита с одним из предыдущих, он будет пропущен. буферная таблица склеивает инсерты, поэтому они не совпадают до бита, поэтому дедупликация инсертов не работает
По поводу второго это относится только ко вставкам из buffer, правильно? Или при вставке из того же rabbitmq ожидать такого же поведения?
rabbitmq по другому работает. buffer пересортировывает инсерты которые вы повторяете с клиента, а повторяете по причине timeout / сетевой проблемы. rabbitmq engine выбирает из очереди, собирает блок, и делает инсерты сам, и повторяет сам внутри до успеха.
а он при этом ack посылает в очередь что обработал ДО INSERT или после? и где он блок хранит? на диске?
Если я правильно понимаю, мне достаточно добавить к buffer таблице уникальное поле например с uuid чтобы такого не случилось, а в репликатед таблице это поле не обязательно должно быть
я не смотрел, наверное как в кафке, ack после успеха инсерта, блок в памяти, зачем на диске
все неправильно поняли. Дедупликация инсертов это вообще не про это, читайте доку про репликацию.
Обсуждают сегодня