Одна из классических причин, по которой мы имеем тупик базы данных, - это когда две транзакции вставляют и обновляют таблицы в другом порядке.
Например, транзакция A вставляет в таблицу A, а затем таблицу B.
И транзакция B вставлена в таблицу B, за которой следует A.
Такой сценарий всегда находится под угрозой блокировки базы данных (при условии, что вы не используете сериализуемый уровень изоляции).
Мои вопросы:
-
Какие шаблоны вы используете в своем дизайне, чтобы убедиться, что все транзакции вставляются и обновляются в том же порядке. В книге, которую я читал, было предложено сортировать заявления по имени таблицы. Вы сделали что-то подобное или другое - что обеспечило бы соблюдение всех вложений и обновлений в одном порядке?
-
Как насчет удаления записей? Удалить нужно начинать с дочерних таблиц и обновлений, а вставки нужно начинать с родительских таблиц. Как вы гарантируете, что это не запустится в тупик?