我正在寻找实施音乐厅预订数据结构和算法的最佳方式:
前提条件是:
例如,我坚持使用以下实现。
数据结构有一个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)");
有更好的解决方案吗?
谢谢!