使用大型本机查询SQL / JPA / Hibernate提高性能

时间:2018-10-30 14:45:07

标签: java sql-server hibernate jpa caching

我的应用程序目前被多个Spring Batch流程用来对数据库执行数次(本机)查询,历时2年,然后遍历该数据以与另一组数据进行比较以检测两者之间的模式。 为期2年的查询(通常每批次运行3个查询)大约需要一分钟才能检索出数百万个结果。

这里要注意的重要一点是,数据不会改变,只是数据的开始日期和结束日期每天都会增加一个。表示如果有了缓存机制,每天查询仅需要使用最新数据更新缓存,并删除该2年范围之外的最旧日期数据。当然,初始查询(以及在删除高速缓存后的任何查询)将需要再次执行整个操作。当前,每天有几次批处理运行执行此查询,每次都检索相同的结果。

如何在这里改善我的表现?看起来显而易见的解决方案是以某种方式利用缓存。我研究了一些机制,例如Redis。我在这种情况下经验不足,希望能对您的使用有所帮助。

相关的JPQL查询:

SELECT a.Account as externalAccount, 
       a.Serial as serialNum, 
       b.Account as toAccount
FROM ITEM_VIEW a, ITEM_VIEW b 
WHERE b.TxnNum = a.TxnNum 
    AND b.[Date] = a.[Date] 
    AND a.[Date] >= :parmEndDate 
    AND a.[Date] <= :parmBeginDate 
    AND a.DBCR = 'D' 
    AND (a.Amount/100) >= :parmAmount 
    AND b.DBCR = 'C'

0 个答案:

没有答案