она же несколько секунд длится, все остальное на этот момент останавливается.
можно делать
box.atomic(function()
local i = 0
for _, x in ... do
...
i = i + 1
if i % batch_size == 0 then
box.commit()
box.begin()
end
end
end)
чтобы йилдило периодически, так и размер лога каждой тх будет меньше, запись в вал ускорится
есть одна маленькая "таблица" - на 80тыщ записей - она апдейтится одним коммитом (т.к. там надо проапдейтить/добавить новое и удалить старое, не присутствующее во входящих данных). fiber тоже апдейтит маленькую таблицу - берет данные из одной маленькой таблицы - ключ1 => [item1, item2], трансформирует в item1=>[ключ1], item2 =[ключ1, ключ2344] и апдейтит, без транзакции (с транзакцией сервер стабильно в картридже становился dead). большие с миллионами записей сейчас апдейтятся по 1 записи на коммит, хотя можно увеличить до 1тыщи апдейтов за 1 заход и в среднем входит тысяч 10 апдейтов/коммитов подряд, потом пауза
Обсуждают сегодня