如何实现预订结构和查询,以最大限度地减少客户之间的争用

时间:2017-03-14 17:31:45

标签: sql oracle jdbc

我正在寻找实施音乐厅预订数据结构和算法的最佳方式:

  • 最小化并行客户之间的争用/等待
  • 达到最佳表现

前提条件是:

  • 数据结构必须具有预定义的条目(例如,座位1,座位2 ......,座位1000)
  • 客户可预订超过1个席位
  • 客户无法选择座位
  • 算法应该在JDBC中

例如,我坚持使用以下实现。

数据结构有一个SEATS表,其中包含BOOKED列。首先,该表包含N行,BOOKED列设置为false。预订伪算法如下:

ps = statement("SELECT * FROM SEATS
WHERE BOOKED = false
FOR UPDATE SKIP LOCKED")

ps.setFetchSize(min(seatsToBook, 50));

while(seats.size() < seatsToBook){
    seats.add(ps.next())
}

// Update per slice of 1000 to avoid IN limitation
statement("UPDATE SEATS SET BOOKED = true WHERE ID in slice(seats,1000)");

有更好的解决方案吗?

谢谢!

0 个答案:

没有答案