【发布时间】:2013-04-30 10:32:23
【问题描述】:
我的一些交易被声明为 SERIALIZABLE。有时我会返回 40 类错误,例如 40001 serialization_failure 和 40P01 deadlock_detected(我还没有看到其他代码),特别是当我通过执行大量并发事务对系统进行压力测试时。
如果我正确理解了手册,这是意料之中的。当这些错误发生时,我因此假设重试事务。我的疑问是在处理 SERIALIZABLE 事务时,所有 类 40 错误是否“正常”。换句话说,我可以假设任何 40 类错误都会导致我重试事务,还是这个假设仅对 40 类错误的子集正确?
【问题讨论】:
-
你使用的是哪个版本的 Postgres?
-
我使用的是 PostgreSQL 9.1。虽然我会在 Ubuntu 13.04 软件包可用时立即更新到 9.2。
标签: sql postgresql