【问题标题】:Is there an issue in fast refreshing materialized view every 1 min?每 1 分钟快速刷新实体化视图是否存在问题?
【发布时间】:2017-09-05 07:36:14
【问题描述】:

我需要每 1 分钟刷新一次具体化视图,所以我使用了以下代码:

CREATE MATERIALIZED VIEW Any_Name
BUILD IMMEDIATE 
REFRESH fast start with (sysdate) next  (sysdate+1/1440) with rowid
ON DEMAND 
AS
SELECT * FROM AnyTable@DB_Link;

我将把这段代码应用到 7 个很少更新的表中,但是当表更新时,物化视图快速刷新很重要。

每1分钟快速刷新一次物化视图有问题吗?

【问题讨论】:

  • 它们不适合在提交时快速刷新吗?
  • 不,它们是合适的。但我问的是即使它很快我也担心 1 分钟的间隔会在数据库中产生性能问题?
  • 如果你 refresh on commit 那么你不需要每分钟刷新一次。您不会有这种开销,并且在更新的表和反映更改数据的 MV 之间不会有差距,这似乎是您首先要避免的。
  • @AlexPoole 我不能在提交时使用刷新,因为它只有在同一个数据库中的主表不是我的情况下才有效(检查这个link
  • 我不会将此添加为答案,因为您不太可能使用数据库的 12.2 版本。但请查看 12.2 中物化视图的 enable on query computation 选项,了解将来如何回答这个问题。

标签: database oracle refresh materialized-views


【解决方案1】:
  1. 我相信这是另一个与优化相关的问题,没有任何信息。性能取决于您的数据库有多少 RPM(对于此视图)?它刷新多长时间/桌子有多大? 它是链接表,因此它们可能在其他服务器上。也许您只需要刷新一部分数据(更改数据库的架构并刷新小型物化视图)以防万一?
  2. 我也不确定,但在 refresh mat view 的情况下,您可以拥有更多 REDO 日志,而不是简单的 truncate insert /*+ append */ 和这可能是一个很大的性能问题(通常是硬盘问题的瓶颈)

【讨论】:

  • 我想你问的在快速刷新方面不会有什么不同?
  • 不一样。快速刷新您可以称为“增量刷新”(© Kyte),因此它生成重做和撤消日志,而不是我建议的方式。但正如我已经写的那样,信息还不够。
猜你喜欢
  • 2016-06-05
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 2015-06-13
  • 2016-12-15
  • 2018-03-29
  • 1970-01-01
  • 2020-03-13
相关资源
最近更新 更多