在Oracle中,更新存储过程物化视图的计算成本是基于查询执行还是基于结果集?更具体地说,Oracle存储查询结果的方式是否会大大增加刷新视图所需的时间?当然,需要很长时间执行的查询以及令人难以置信的或大或小的结果集使得这不可能普遍地回答。问题更多的是关于视图如何实际存储结果集(在内存中,在磁盘上),这样我就可以考虑多久重建一次物化视图。
gc0ot86w1#
物化视图基本上是一个物理表,并结合了一个更新它的算法。
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
tgabmvqs2#
有两种类型的多视图完全刷新mview -每次刷新都会重新生成整个mview。类似于删除和插入(注意:如果您指定atomic = F或版本< 9,它将被截断/插入/追加)。快速刷新mview - oracle将创建一个表来存储增量更改。刷新时,存储在侧表中的更改将应用于mview。快速刷新在刷新时更快,但是减慢了对基表的DML操作。在考虑刷新策略时,应该考虑对基表应用了多少更改以及需要刷新mview的频率。
2条答案
按热度按时间gc0ot86w1#
物化视图基本上是一个物理表,并结合了一个更新它的算法。
您还可以在预构建的表上创建实体化视图。
如果我们谈论刷新-有两种选择:快速刷新和完全刷新。
完全刷新只是重新执行MV查询,而快速刷新执行增量更新。
http://docs.oracle.com/cd/E16338_01/server.112/e10706/repmview.htm#i29858
tgabmvqs2#
有两种类型的多视图
完全刷新mview -每次刷新都会重新生成整个mview。类似于删除和插入(注意:如果您指定atomic = F或版本< 9,它将被截断/插入/追加)。
快速刷新mview - oracle将创建一个表来存储增量更改。刷新时,存储在侧表中的更改将应用于mview。
快速刷新在刷新时更快,但是减慢了对基表的DML操作。
在考虑刷新策略时,应该考虑对基表应用了多少更改以及需要刷新mview的频率。