Подтвердить что ты не робот

Когда следует использовать транзакции в моих запросах?

Я читаю очень подробные руководства о том, как использовать транзакции с типами баз данных и ядрами баз данных, но я не нашел руководства, которое учит меня, когда и почему я должен их использовать.

Я знаю, что транзакции обычно используются для банковских операций, поэтому, когда мы работаем с денежными данными, но могу себе представить, что они используются многими другими способами.

Сегодня я работаю над страницей с различными операторами INSERT для реляционной базы данных, и мне хотелось знать, является ли это одним из случаев, когда я должен их использовать.

У меня создается впечатление, что я не знаю случаев, когда данные могут быть частично потеряны (кроме ошибок в кодере), поэтому я всегда беспокоюсь о том, когда я должен их использовать.

Может кто-нибудь объяснить или дать ссылку на эти основные правила?

Я использую MySQL 5.0.8. Должен ли я использовать InnoDB для всех таблиц, требующих транзакций? Если да, то InnoDB медленнее обычного MyISAM, но я не должен беспокоиться об этом?

спасибо

4b9b3361

Ответ 1

В принципе, в любое время, когда у вас есть единица работы, чувствительная к внешним изменениям или , требуется возможность отката при каждом изменении, если возникает ошибка или какая-то другая причина.

Посмотрите здесь несколько отличных ответов и их причины для их использования.

Ответ 2

В дополнение к тому, что написал Nick Craver, вы хотели бы использовать транзакцию, когда у вас есть серия записей, которые должны выполняться атомарно; то есть все они должны преуспеть, или никто не должен преуспеть.

Ответ 3

Транзакции следует использовать, когда есть вероятность, что либо сбой завершения, либо чье-либо еще чтение или запись в середине вашей задачи может привести к повреждению данных. К ним относятся, но не ограничиваются:

  • Чтение из таблицы для последующего удаления
  • Запись связанных данных в несколько таблиц

Ответ 4

Вы используете транзакции, когда у вас есть группа действий, которые должны быть атомарными (либо все успешно, либо не удастся). Объединение этих действий в транзакцию позволяет вам выполнять откатные действия, которые уже преуспели при возникновении ошибки. Он также гарантирует, что данные, с которыми вы работаете, согласуются с тем, что блокировки будут удерживаться до завершения транзакции.

Ответ 5

В некоторых рамках, например, Spring, автоматические транзакции позволяют повторно выполнить транзакцию, если она не удалась.