从服务器本身的高负载,低带宽或其他原因加载数据的过程中,我一直在寻找最佳实践,这些数据本身就很慢,而您对性能却无能为力源,仅在加载中。
我有一个数据源,Pervasive PSQL Server 11.2和一个包含30M +记录的表。我只想提取最近两年的数据。任何使用WHERE语句的查询都会使查询运行60分钟以上,而不会发送任何数据。
recommendNPages :: Int -> Blog -> ([Post], Blog)
recommendNPages n = runState $ replicateM n step
where
-- | One step of our computation. (Just wrapping it into `State`.)
step :: State Blog Post
step = state recommendPage
可以工作,但是却获得了我10多年不需要的数据,而且花了这么长时间,我无法每晚都运行它。将AutoAdjustBufferSize设置为true可以提高性能,但还不够。
日期列是DATE数据类型列。我已经尝试了YEAR(column)> 2018,并尝试了BETWEEN并将前四个字符转换为INT,但是没有什么可以加快加载时间。
答案 0 :(得分:0)
我们最终做了两个阶段的解决方案。我们将以前的年份加载到历史记录表中(一次加载或每年加载一次),然后每周加载当前年份,然后每天加载上个月+当前月份。限制数据使使用WHERE语句成为可能。而且我认为这已经足够使用。