Я хочу явно указать, как MySql InnoDB должен получать блокировки для строк. По возможности не должно быть мертвых замков, просто заглохших. (Если мы будем следовать соглашению.)
Во-первых, база данных должна заблокировать все строки таблицы «модели» в порядке возрастания. Затем все строки во второй таблице «цвета» должны быть заблокированы в порядке возрастания. Есть ли способ управлять базой данных, чтобы сначала заблокировать таблицы «модели», а затем «цвета»?
Например:
start transaction;
select *
from models m
join colors c on c.model_id = m.id
where c.id IN (101, 105, 106)
order by m.id asc, c.id asc
for update;
SELECT ... FOR UPDATE
, который блокирует. - person eggyal   schedule 31.05.2012