![]() |
1
16
可能吧 感觉 对你来说就像是黑客攻击,但对我来说,它看起来像是“乐观并发”方法的合法、合理的实现——尝试做任何事情,检测由竞争条件引起的冲突,如果发生冲突,请稍后重试。一些数据库系统地使用它而不是锁定,并且它可以导致更好的性能,除非在 写负载(在现实生活中很少见)。
我建议的一个改进是等一会儿
随机的
时间量—避免“元竞争条件”,即两个进程同时尝试,都找到冲突,然后都重试
再一次
同时,导致“饥饿”。
一个更精细的改进是,如果遇到更多冲突,则延长预期的等待时间——这就是TCP/IP中所称的“指数退避”(您不必以指数方式延长时间,即通过一个常数乘数>当然,每次都是1,但这种方法有很好的数学特性)。它只允许限制 非常 写加载的系统(在尝试写的过程中经常发生多个冲突),在您的特定情况下可能不值得这样做。 |
![]() |
3
0
具有
只是为了确保我处理的是最新的职位编号(在我的情况下,由于一些保留的未使用的职位,该编号可能不是item\u count) |
![]() |
Patrick Bond · 如何将模型中的函数结果添加到列表中? 4 月前 |
![]() |
bur · 每次从模板调用方法都会查询数据库吗? 5 月前 |
|
Stefan · 在子目录中设置Django 5 月前 |
![]() |
vale383 · 如何在Django端点中查找user_id 5 月前 |
![]() |
Kovy Jacob · Django在动态URL段中添加斜线 5 月前 |
![]() |
user987 · 如何在Django中访问提交的表单请求数据 6 月前 |
![]() |
user24242514 · 将嵌套查询字符串请求转换为字典 6 月前 |