首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL-使用回滚的最佳实践

问MySQL-使用回滚的最佳实践
EN

Database Administration用户
提问于 2020-05-20 16:59:20
回答 2查看 868关注 0票数 0

如果任何DML操作失败,那么使用回滚操作的最佳实践/推荐方法是什么?

是否有回滚、提交机制?

FYI:我使用符合原子性的InnoDB表。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2020-05-20 19:36:42

有两种不提交事务的方法

  • 显式回滚
  • 关闭连接w/o提交

根据应用程序的逻辑,它们都可以很好地使用。

什么时候显式回滚?

如果您想重用一个连接。如果你想做尽可能短的交易(这是一件好事)。

何时关闭连接w/o提交?

如果事务是一次任务,并且您希望简化错误处理。

很少有事情要考虑。

  • 不要长期保存未提交的事务。当应用程序打开一个trx,去做其他事情,稍后回来完成并提交事务时,通常会发生这种情况。这真的很痛。它导致高CPU使用率和扼杀性能。
  • 回滚通常进入except ...块(或任何适用于特定语言的内容)。但是回滚本身可能会失败,因此请确保正确处理异常,以避免“未能回滚事务”错误。
  • 回滚通常比您预期的花费更多的时间。如果事务很大,回滚需要比事务中所有先前的语句花费更多的时间。使交易尽可能短。
票数 2
EN

Database Administration用户

发布于 2020-05-20 18:03:49

回滚不是专门针对任何DML失败的,但它可以用于以下情况:

  1. 由于瞬态冲突/错误,可能会部分插入数据。
  2. 错误地将数据注入您的表中。
  3. 如果将来没有必要从特定的(保存)点回滚数据,那么使用保存点+回滚就是回滚。
票数 -1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/267547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档