我开发了一个允许用户输入测量值的应用程序 - 这些应用程序存储在Oracle数据库中。每个测量“会话”可包含大约100个测量值。 “批次”中可能有大约100个测量会话,因此每批10,000个测量。在某些时候可能很容易有大约1000个批次,使测量的总数达到数百万。
问题是需要对测量进行计算和统计。它的范围从每批平均测量值到过去6个月测量值的统计数据。
我的问题是:有什么方法可以让我更快地计算这些统计数据的过程?通过我正在运行的查询类型或数据库的结构?
谢谢!
答案 0 :(得分:0)
我假设大多数计算将在单个会话或单个批处理中执行。如果是这种情况,则重要的是会话和批处理不会分布在整个磁盘上。
为了实现所需的数据集群,您可能希望创建按批处理和会话组织的索引组织表(IOT)。这样,属于同一会话或同一批次的测量值接近于磁盘,并且会话或批处理的查询将限制为少量磁盘页。
答案 1 :(得分:0)
不幸的是,由于需要执行的计算次数不仅限于少数,我无法在每次测量会话结束时计算出来。
最后查询没花这么长时间 - 大约3分钟来计算所有统计数据。对于最终用户而言,这仍然是一个令人无法接受的漫长时间等待,但好消息是,统计数据不一定非必须完全更新。
因此,我使用物化视图拍摄统计数据的“快照”,并将其设置为每天凌晨2点更新。然后,当用户从物化视图请求统计数据时,它是即时的!