Давайте представим, что у вас есть таблица с этим определением:
CREATE TABLE public.positions
(
id serial,
latitude numeric(18,12),
longitude numeric(18,12),
updated_at timestamp without time zone
)
И у вас есть 50 000 строк в такой таблице. теперь для целей тестирования вы запустите обновление следующим образом:
update positions
set updated_at = now()
where latitude between 234.12 and 235.00;
этот оператор обновит 1000 строк из 50 000 (в этом конкретном наборе данных)
если вы запустите такой запрос в 30 разных потоках, MySQL innodb завершится успешно, а postgres завершится с большим количеством взаимоблокировок.
Почему?