1

我开发了一个允许用户输入测量值的应用程序 - 这些测量值存储在 Oracle 数据库中。每个测量“会话”可以包含大约 100 个测量值。一个“批次”中可能有大约 100 个测量会话,因此每批次有 10,000 个测量值。在某个时候很容易有大约 1000 个批次,使测量的总数达到数百万。

问题是需要对测量结果进行计算和统计。它的范围从每批次的平均测量值到过去 6 个月测量的统计数据。

我的问题是:有什么方法可以使计算这些统计数据的过程更快?通过我正在运行的查询类型或数据库的结构?

谢谢!

4

2 回答 2

0

我假设大多数计算将在单个会话或单个批次上执行。如果是这种情况,那么重要的是会话和批处理不要分布在整个磁盘上。

为了实现所需的数据集群,您可能希望创建一个按批次和会话组织的索引组织表 (IOT)。这样,属于同一会话或同一批次的测量值在磁盘上的位置非常接近,并且会话或批次的查询将仅限于少量磁盘页面。

于 2012-12-06T11:29:59.747 回答
0

不幸的是,由于需要执行的计算数量不仅限于几个,我无法在每次测量结束时计算它们。

最后,查询并没有花这么长时间——计算所有统计数据大约需要 3 分钟。对于最终用户来说,等待的时间仍然很长,但好在统计数据不一定要完全更新。

因此,我使用物化视图拍摄统计数据的“快照”,并将其设置为每天凌晨 2 点自行更新。然后,当用户从物化视图请求统计信息时,它是即时的!

于 2013-01-31T14:25:28.137 回答