【问题标题】:Optimizing Materialized View优化物化视图
【发布时间】:2015-09-03 03:20:46
【问题描述】:

有没有人有最好的方法来每月优化从数据库中的视图绘制的实体化视图。我使用了“标准”,但是否有任何其他的花里胡哨可以提供快速有效的刷新数据和减少查询时间的视图?

提前致谢。

MATERIALIZED VIEW Table_X 
REFRESH
  FAST
  START WITH SYSDATE
  NEXT DATE '2016-01-01' + 31
  WITH PRIMARY KEY
  As <Query>

【问题讨论】:

  • 您是否尝试针对物化视图优化查询?还是优化物化视图的刷新?你的next date 没有多大意义,所以我猜这不是你真正拥有的。物化视图真的可以快速刷新吗?一个月内的更改量是否足够小,以至于进行增量刷新而不是完全刷新实际上是有意义的?
  • 我正在尝试优化物化视图的刷新。物化视图将是汇总汇总。下一个日期可能是错误的。我会收集音量变化是半增量的,至少每月添加额外的行。增量和完全之间的速度差异是多少?谢谢。
  • 如果您要检索表中的大部分行,如果在整个过程中累积的更改日志量,就像对表进行全面扫描比使用索引更有效一样与表中的行数相比,一个月大,完全刷新可能更有效。除此之外,我们还需要更多细节。查询是否命中分区表,其中只有最近的一个或两个分区更改了数据?如果是这样,您可能希望使用分区更改跟踪。
  • 这些刷新是基于表上的常规 DML、仅直接路径插入、分区 DDL 还是它们的组合?
  • 鉴于最新信息(即 6 个月或更早)将有最大的数据变化差异,我可以对月度或季度数据使用范围分区。更多背景知识:它包含 3 个聚合联合和 2 个左连接的视图,它们将聚合每月数据,然后物化视图将访问这些数据以汇总到汇总表中。

标签: oracle optimization materialized-views


【解决方案1】:

物化视图的刷新,无论是快速的还是完整的,都与任何其他操作一样适合性能调整,并且通常使用几乎相同的方法。

刷新只是对基表、物化视图日志、物化视图和系统表的各种查询的封装,您只需要深入了解整个过程。重要的是要意识到一切都只是 SQL,这意味着您可以添加索引、修改内存分配、使用分区以及几乎所有其他过程

获得洞察力的最佳机制是 Oracle 自己的工具,例如 AWR 或事件跟踪。我都使用过,但后者非常有见地,可以为您提供有关刷新时间花在何处的准确信息。当您使用事件跟踪查看 SQL 本身时,您可能可以找出丢失的索引等在哪里。寻找在 Sys_Op_Map_Nonnull(column_name) 上建立索引的潜力。

所以,虽然说这些技术都很标准,这里有一些信息太长/具体的链接也包括在这里。

https://oraclesponge.wordpress.com/2006/04/12/a-quick-materialized-view-performance-note/ http://oraclesponge.blogspot.co.uk/2005/09/optimizing-materialized-views-part-i.html http://oraclesponge.blogspot.co.uk/2005/09/optimizing-materialized-views-part-ii.html https://oraclesponge.wordpress.com/2005/11/23/optimizing-materialized-views-part-iii-manual-refresh-mechanisms/ https://oraclesponge.wordpress.com/2005/12/08/optimizing-materialized-views-part-iv-introduction-to-holap-cubes/ http://oraclesponge.blogspot.co.uk/2005/12/optimizing-materialized-views-part-v.html

【讨论】:

  • 希望分割实体化视图而不是聚合视图。
猜你喜欢
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
  • 2022-11-12
  • 2012-01-28
  • 2019-10-07
  • 2014-06-07
相关资源
最近更新 更多