我正在阅读有关如何使用数据库类型和数据库引擎进行事务处理的非常详细的教程,但是我没有找到一个指南,教我何时以及为什么要使用它们。
我知道交易通常用于银行业务,因此当我们处理货币数据时,我可以想象它们会以其他许多方式使用。
今天我正在处理一个包含关系数据库的各种INSERT
语句的页面,我想知道这是否是我应该使用它们的情况之一。
我得到一个印象,我不知道数据可能部分丢失的情况(除了编码器错误),所以我总是担心何时应该使用它们。
有人可以解释或提供这些基本规则的链接吗?
我正在使用MySQL 5.0.8
。我应该对需要交易的所有表使用InnoDB
吗?如果是,InnoDB
比普通MyISAM
慢,但我不应该担心吗?
感谢
答案 0 :(得分:18)
基本上,只要您的工作单元对外部更改敏感,或需要能够回滚每次更改,如果发生错误或其他原因。
Look here for some excellent answers and their reasons for using them
答案 1 :(得分:9)
除了Nick Craver写的内容之外,当你有一系列需要原子执行的写操作时,你会想要使用一个事务;也就是说,他们都应该成功,否则都不会成功。
答案 2 :(得分:8)
如果在完成任务失败或在任务中间读取或写入其他人可能导致数据损坏,则应使用事务。这些包括但不限于:
答案 3 :(得分:4)
当您拥有必须为原子的一组操作(全部成功或无成功)时,您将使用事务。在事务中包装这些操作允许您回滚遇到错误时已成功的操作。它还确保您正在使用的数据是一致的,因为在事务完成之前将保持锁定。
答案 4 :(得分:0)
在某些框架中,例如Spring,自动事务允许在失败时重新执行事务。
答案 5 :(得分:0)
主要用于多个相同的凝乳案例,您希望保存有效条目的更改,用于具有多个输入的多步骤表单,这些表单的每个步骤提交案例,以及在获得外部 api 反馈后提交表单。当您想回滚查询以获得某些返回值时。