订单出票逻辑疑问

来源:19-12 增加轮询购票结果功能

小白ovo

2024-01-30

如下,请问这里为什么一次只查询5个订单进行出票,这不会增加数据库连接的开销吗?为什么不一次性把所有订单数据查询到内存中,然后再轮询出票。(难道是因为订单生成的速度有限?)

while (true) {
   // 取确认订单表的记录,同日期车次,状态是I,分页处理,每次取N条
   ConfirmOrderExample confirmOrderExample = new ConfirmOrderExample();
   confirmOrderExample.setOrderByClause("id asc");
   ConfirmOrderExample.Criteria criteria = confirmOrderExample.createCriteria();
   criteria.andDateEqualTo(dto.getDate())
       .andTrainCodeEqualTo(dto.getTrainCode())
       .andStatusEqualTo(ConfirmOrderStatusEnum.INIT.getCode());
   // 一次查询5个订单
   // PageHelper.startPage(1, 5);
   List<ConfirmOrder> list = confirmOrderMapper.selectByExampleWithBLOBs(confirmOrderExample);
   ....
}
写回答

2回答

甲蛙

2024-02-10

楼上同学说得对。

5只是个例子,实际可根据业务而定,每次查10或100,但是不能查全部,万一并发订单很多,全部放内存有可能会导致内存溢出

0
0

wyz666

2024-02-03

你内存突然炸了,哪个受影响的范围大?每次只取前5个,直到全部取完  和  一下全部取完;两者总的开销差不多吧?


0
0

新版Springboot3.0打造能落地的高并发仿12306售票系统

最新版Spring3.0仿12306售票系统实战

852 学习 · 512 问题

查看课程