Oracle 物化视图计算成本

问题描述 投票:0回答:2

在 Oracle 中更新存储过程物化视图的计算成本是基于查询执行还是结果集?更具体地说,Oracle 存储查询结果的方式是否会显着增加刷新视图所需的时间?

当然,执行时间很长的查询以及极大或极小的结果集使得这个问题不可能得到普遍的回答。

问题更多的是关于视图实际如何存储结果集(在内存中、磁盘上),因此我可以考虑重建物化视图的频率。

oracle optimization query-optimization materialized-views
2个回答
3
投票

物化视图基本上是一个物理表与更新它的算法相结合。

01:37:23 HR@sandbox> create materialized view mv_dual as select dummy from dual;

Materialized view created.

Elapsed: 00:00:00.52
01:37:56 HR@sandbox> select object_name, object_type from user_objects where object_name = 'MV_DUAL';

OBJECT_NAME     OBJECT_TYPE
--------------- -------------------
MV_DUAL         TABLE
MV_DUAL         MATERIALIZED VIEW

Elapsed: 00:00:00.01

您还可以在预建表上创建物化视图。

如果我们谈论刷新 - 有两种选择:快速刷新和完全刷新。

完全刷新只是重新执行MV查询,而快速刷新则执行增量更新。

http://docs.oracle.com/cd/E16338_01/server.112/e10706/repmview.htm#i29858


1
投票

mview 有两种类型

完全刷新 mview - 每次刷新都会重建整个 mview。类似于删除和插入(注意:如果您指定atomic = F或有版本< 9 it will be truncate / insert append).

快速刷新mview - oracle将创建一个表来存储增量更改。刷新时,侧表中存储的更改将应用到 mview。

快速刷新刷新速度更快,但会减慢基表上的 dml 操作。

当您考虑刷新策略时,您应该考虑对基表应用了多少更改以及需要刷新 mview 的频率。

© www.soinside.com 2019 - 2024. All rights reserved.