我开发了一个应用程序,允许用户输入测量值-这些测量值存储在Oracle数据库中。每个度量“会话”可以包含大约100个度量。在一个“批”中可能有大约100个测量会话,所以每批有10,000个测量。在某一时刻,可能很容易有大约1000个批次,使总测量数量达到数百万次。
问题是需要对测量值执行计算和统计。它的范围从每个批次的平均测量到过去6个月测量的统计数据。
我的问题是:有什么方法可以让计算这些统计数据的过程更快吗?是通过我运行的查询类型还是通过数据库的结构?
谢谢!
发布于 2013-01-31 22:25:28
不幸的是,由于需要执行的计算数量并不限于少数,我无法在每次测量会话结束时计算它们。
最后,查询并没有花费那么长的时间--大约3分钟来计算所有的统计数据。对于终端用户来说,这仍然是一个不可接受的长时间等待,但好消息是统计数据不一定要完全最新。
因此,我使用了一个物化视图来获取统计数据的“快照”,并将其设置为每天凌晨2点进行自我更新然后,当用户从物化视图请求统计数据时,它是即时的!
发布于 2012-12-06 19:30:00
我假设大多数计算将在单个会话或单个批处理上执行。如果是这种情况,那么重要的是不要将会话和批处理分布在整个磁盘上。
为了实现所需的数据集群,您可能希望创建一个按批处理和会话组织的按索引组织的表(IOT)。这样,属于同一会话或同一批的度量在磁盘上更紧密地集中在一起,并且对会话或批的查询将被限制为少量的磁盘页。
https://stackoverflow.com/questions/13741677
复制相似问题