gpt4 book ai didi

sql - 可序列化事务中的40类错误都是正常的吗?

转载 作者:行者123 更新时间:2023-11-29 11:27:23 25 4
gpt4 key购买 nike

我的一些交易被声明为可序列化。有时我会返回 40 类错误,例如 40001 serialization_failure40P01 deadlock_detected(我还没有看到其他代码),特别是当我通过执行压力测试系统时大量并发事务。

如果我对手册的理解正确,这是意料之中的。因此,当这些错误发生时,我想重试交易。我怀疑处理 SERIALIZABLE 事务时 所有 类 40 错误是否“正常”。换句话说,我是否可以假设任何 40 类错误都应该导致我重试交易,或者这个假设是否只对 40 类错误的一个子集正确?

最佳答案

根据 the error codes section of the manual 40xxxx SQLSTATE 类别是“事务回滚”。

它包括错误代码:

  • 40000 transaction_rollback
  • 40002 transaction_integrity_constraint_violation
  • 40001 serialization_failure
  • 40003 statement_completion_unknown
  • 40P01 deadlock_detected

其中,我通常不希望 transaction_integrity_constraint_violation 触发重试,因为当 DEFERRED 外键检查导致事务在提交时中止时会引发重试被尝试。如果重试,这不太可能消失,除非您的应用程序存在并发和锁定设计问题。

我还没有遇到statement_completion_unknown;我建议查一下。

我个人只会在 deadlock_detectedserialization_failure 上重试。

关于sql - 可序列化事务中的40类错误都是正常的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16402654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com