【问题标题】:When should I use transactions in my queries?我什么时候应该在查询中使用事务?
【发布时间】:2011-01-10 16:05:37
【问题描述】:

我正在阅读有关如何将事务与数据库类型和数据库引擎一起使用的非常详细的教程,但我还没有找到指导我何时以及为什么应该使用它们的指南。

我知道交易通常用于银行业务,所以当我们处理货币数据时,但我可以想象它们还有许多其他用途。

今天我正在处理一个包含各种INSERT 关系数据库语句的页面,我想知道这是否是我应该使用它们的情况之一。

我的印象是我不知道数据可能会部分丢失的情况(除了编码器错误),所以我总是担心什么时候应该使用它们。

有人可以解释这些基本规则或提供一些链接吗?

我正在使用MySQL 5.0.8。我应该对所有需要事务的表使用InnoDB 吗?如果是,InnoDB 是否比常见的MyISAM 慢,但我不应该担心吗?

谢谢

【问题讨论】:

    标签: mysql transactions pdo data-transfer


    【解决方案1】:

    基本上任何时候您的工作单元对外部更改很敏感或需要能够回滚每个更改,如果发生错误或其他原因。

    Look here for some excellent answers and their reasons for using them.

    【讨论】:

    【解决方案2】:

    除了 Nick Craver 所写的之外,当您有一系列需要以原子方式执行的写入时,您可能希望使用事务;也就是说,他们应该都成功,否则都不应该成功。

    【讨论】:

      【解决方案3】:

      当您的任务无法完成或其他人在您的任务中读取或写入可能导致数据损坏时,应使用事务。这些包括但不限于:

      • 从表中读取以供后续删除
      • 将相关数据写入多个表

      【讨论】:

        【解决方案4】:

        当您有一组必须是原子的操作(全部成功或都不成功)时,您可以使用事务 将这些操作包装在事务中允许您在遇到错误时回滚已经成功的操作。它还确保您正在使用的数据是一致的,因为锁定将一直保持到事务完成。

        【讨论】:

          【解决方案5】:

          在某些框架中,例如Spring,自动事务允许在失败时重新执行事务。

          【讨论】:

            【解决方案6】:

            主要用于多个相同的 curd 案例,您希望保存对有效条目的更改,对于这些表单的提交案例的每个步骤具有多个输入的多步骤表单,以及在获得外部 api 反馈后提交表单.. 主要当您想要回滚查询以获得某些返回值时。

            【讨论】:

              猜你喜欢
              • 2022-12-18
              • 2016-11-01
              • 1970-01-01
              • 2010-12-30
              • 1970-01-01
              • 1970-01-01
              • 2017-06-08
              • 1970-01-01
              相关资源
              最近更新 更多