在处理用户的接收请求时,有两种方式,一种是批量(BATCH),另一种是联机。在批量处理过程中,用户的请求被分类后,积累到一起一同提交给主机,提交后,主机按顺序对这些请求逐一进行处理,待全部处理完成后再将处理结果一同输出出来。联机处理是指请求的接收和处理都是实时的,一旦处理完成后就要实时将处理结果传给用户。同批量不同的是,联机交易是并发的,来自于四面八方,因此联机交易无法控制请求的顺序、种类和先后,因此具有不可预测性。
联机程序与批量程序对比具有以下的特点:
(1)联机程序一次请求处理的输入/输出(I/O)较少;批量程序每次需要处理大量的数据,具有大量的I/O。
(2)联机系统需要实时、快速响应用户的请求,一般交易的响应时间在100ms内;批量程序由于每次需要处理大量的数据,执行时间将较长。
(3)联机程序需要强大的网络系统支持;批量程序可以运行在操作系统内部,不必有一个独立网络平台支撑。
在实践中ORACLE数据库联机交易应用查询(平均查询返回的行数)可能会引发性能问题。
通常相关指标为查询语句平均单次返回记录数不得大于1000条。
联机交易应用查询必须增加分页机制,对返回记录数进行控制,限制最大不超过1000条。返回记录数过多,不但造成数据库负载高,极端情况下还可能造成中间件out of memory错误。
WEB展示类应用要防止客户反复点击同样的查询,避免向DB重复发送查询请求。
解决方案:
采用数据库分页需要两次sql完成:(1)一个sql计算总数量(2)一个sql返回分页后的数据
常见分页语法:通过ROWNUM分页如果是导出操作,建议一个文件不超过5万条,超过5万条,分多个文件导出。
更多内容请关注公众号“测试小号等闲之辈”~