【发布时间】:2021-11-15 15:26:51
【问题描述】:
我正在开发一个 Django 应用程序,我希望在其中对数据的正确性有强有力的保证。为此,我将SERIALIZABLE 作为事务隔离级别。
但是,在负载测试期间,我看到了一些相关的错误消息:
由于事务之间的读/写依赖关系,无法序列化访问
详细信息:原因代码:在写入期间因识别为枢轴而取消。
提示:如果重试,事务可能会成功。
和
由于事务之间的读/写依赖关系,无法序列化访问
详细信息:原因代码:在读取期间因冲突而取消到枢轴 23933812。
提示:如果重试,事务可能会成功。
和
当前事务被中止,命令被忽略直到事务块结束
我确实通过 Django 自动重试事务,但我不确定这个解决方案是否真的很好。我想知道:是否可以让 Postgres 自动重试因这些原因而失败的事务? Django 中是否有直接允许我配置的东西? (不一定适用于所有交易;我知道失败更频繁/更重要的候选人)
【问题讨论】:
标签: django postgresql transaction-isolation