当 select_for_update 与 select_related 一起使用时,Django 将尝试获取查询中所有表的锁。
我们用来获取事务的代码尝试获取事务表、用户、产品、类别表的锁。...一旦 ETL 在午夜锁定了后三个表,交易就开始失败。
一旦我们对问题有了更好的理解,我们就开始寻找只锁定必要表(事务表)的方法。...User)
在上面的模型中,Django 将会隐式的创建两个索引:一个用于用户,一个用于组。...M2M 模型中的另一个常见模式是在两个字段一起作为一个唯一约束。...假设我们在一列中有这些值,每一个都是一个块:
1, 2, 3, 4, 5, 6, 7, 8, 9
我们为每三个相邻的块创建一个范围:
[1,2,3], [4,5,6], [7,8,9]
对于每个范围,我们将保存范围内的最小值和最大值