0

在Oracle中,基于查询执行或结果集更新存储过程物化视图的计算成本是多少?更具体地说,Oracle是否以这种方式存储查询的结果,这对刷新视图所需的时间有重大贡献?Oracle物化视图计算成本

当然,执行时间很长的查询以及令人难以置信的大或小结果集使这无法回答无处不在。

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

+0

你是什么意思,重建存储过程? – 2013-04-25 17:24:38

+0

@beherenow对不起,我的意思是'物化视图',但我想大脑存储过程。我已经重写了这个问题,谢谢!虽然我仍然不确定'刷新'或'重建'是否正确。 – 2013-04-25 17:31:22

回答

1

有两种类型mviews

完全刷新MVIEW的 - 的entier MVIEW将是重建每次刷新。类似于删除和插入(注意:如果您指定atomic = F或具有版本< 9,它将被truncate/insert append)。

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

快速刷新在刷新时速度更快,但会降低基表上的dml操作速度。

当您考虑刷新策略时,应考虑对基表应用了多少更改以及需要多长时间刷新一次mview。

+0

所以@haki,如果我每天刷新一次物化视图,那么更全面的刷新会更值得建议? – 2016-03-22 01:00:51

2

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

01:37:23 [email protected]> create materialized view mv_dual as select dummy from dual; 

Materialized view created. 

Elapsed: 00:00:00.52 
01:37:56 [email protected]> 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