2009-07-16 74 views
0

远程物化视图我有一个问题reagrding甲骨文的物化视图...性能在甲骨文

我们有两个数据库:

  1. 核心数据库
  2. 报告数据库

的举报数据库有:

  • 到核心数据库的数据库链接
  • 核心数据库中的表的许多同义词
  • 许多在这些同义词上定义的物化视图。

视图设置为每小时刷新一次。

随着源系统中数据量的增加,我们看到增加CPU以实现视图。

经过仔细检查后,看起来刷新进程构建了报表数据库中的结果集 - 并将单个较小的SQL语句发送到Core数据库。

其中一些物化视图非常复杂,并且在表之间有很多连接。这会导致数百万个针对Core数据库的小型SQL语句。

我的问题是:这将是最好创建在核心数据库中对应的“复杂”的观点,并在报告数据库中的物化视图,一个简单的“SELECT * FROM CORE.MY_MAT_VIEW”

感谢任何指针,

欢呼声, 埃文

+0

假设当你说“复杂”时,你是否可以安全地使用它,就像Oracle在谈到复杂的物化视图时所做的那样 - 即无法逐步刷新的物化视图?还是你在更一般的意义上使用“复杂”? – 2009-07-16 04:31:48

+0

我的意思是一般意义上的复杂 - 就像在许多表中加入的那样,很多嵌套的表达式,分组等等。我不知道足够的Oracle知道决定这些是否可以逐步完成的cirteria。 顺便说一句,进一步阅读抛出了“driving_site”的提示。我认为它可能正是我需要的 - 但我认为它不能在视图定义中完成(即在DML内)。 – Evan 2009-07-16 05:09:01

回答

4

,我不会有什么核心数据库过于复杂。你会在核心数据库上增加更多的负载,并且可能会拖拽更多的数据。

您是否考虑过使用针对这些复制表构建的MV将Core表复制到Reporting环境(简单​​复制)中。 针对核心的SQL应该更简单,从核心到报告的数据量应该更小,并且复杂的MV在单个数据库中进行管理。

+0

是的。好点子。我认为这是我们需要做的,但实际上这对我们来说是中期的。 特别是因为交易量不是很大。要复制的增量更改量将远远少于定期运送整个结果集。 现在,我是在“快速获胜”之后。希望:-) – Evan 2009-07-16 05:22:20

+0

+1 - 如果你的物化视图很复杂(我在这种情况下使用复杂的含义来表示昂贵的SQL),这通常是最好的架构。使用简单的增量式MV将表转换为报表数据库,只需很少或不进行转换,然后从这些表中执行报表数据库中更昂贵的MV刷新。 – dpbradley 2009-07-16 11:58:04

0

如果您的交易率并不像您说的那么好,我会考虑降低您的刷新率。许多报告系统使用24小时周转时间报告服务,用户通常可以进行调整。通过在1小时到24小时之间使用刷新率,您甚至可以看到显着的改进。