考虑一个座位预订数据库。有 n 个座位的列表,每个座位都有一个属性is_booked。0 表示不是,1 表示是。任何更高的数字都会出现超额预订。
在不允许超额预订的情况下进行多次交易(每个交易将同时预订一组 y 个座位)的策略是什么?
我会简单地选择所有未预订的座位,选择其中 y 个随机选择的一组,全部预订,然后检查该预订是否正确(也就是 is_booked 的数量不超过一个,这将表示预订了座位的另一笔交易和提交),然后提交。否则中止并重试。
这是在 Postgres 中的 Read Committed 隔离级别上运行的。