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

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

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

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

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

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

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

спасибо

27
задан mc01 24 May 2016 в 18:31
поделиться

4 ответа

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

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

18
ответ дан 28 November 2019 в 05:24
поделиться

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

  • чтение из таблицы для последующего удаления
  • Написание данных, связанных с несколькими таблицами
9
ответ дан 28 November 2019 в 05:24
поделиться

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

4
ответ дан 28 November 2019 в 05:24
поделиться

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

10
ответ дан 28 November 2019 в 05:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: