序号 | 术语/缩略语 | 全称和说明 |
---|---|---|
1 | 物化视图(Materialized View) | 物化视图用来存储数据副本或集合,可以用来复制本地或远程表的全部或者部分,或者复制对多个表的查询结果。物化视图可根据需要自动完成复制数据的自动刷新。 |
2.1 表关联的物化视图,如果使用fast刷新模式,只能用基于rowid的物化视图。
这是MV的技术限制要求。
2.2 不允许使用On Commit的刷新模式,须使用On Demand的模式进行刷新工作。
为不影响数据库的性能,不允许使用On Commit的刷新模式,因为如果使用On Commit的刷新模式数据库会将物化视图的刷新操作作为Commit事务处理的一部分来执行,从而增加了Commit完成的时间。
2.3 On demand refresh方式的MV,不允许使用START WITH的自动刷新模式,要求自行开发用于物化视图刷新的JOB。
为了便于管理,要求自行开发用于物化视图刷新的JOB,并设置定时调度来代替物化视图的自动刷新功能。为刷新工作创建的JOB要遵守《JOB管理规范》。
2.4 不允许使用Force Refresh方式。
Force Refresh方式Oracle自动判断是否满足Fast刷新条件,如果满足则进行Fast刷新,否则进行Complete刷新,使用Force Refresh方式带有不确定性,因此不允许使用Force Refresh方式。
2.5 除了初始化数据和大的维护工作外,不能使用Complete Refresh方式,只能使用Fast Refresh方式。
由于Complete Refresh方式会将表清空后重新复制数据,将占用大量的资源。因此除了初始化数据或者是很大的维护工作外,物化视图不允许采用Complete方式进行刷新。
2.6 如果存在预建表,且预建表再没有其他的用途,在删除物化视图时,需要同时删除预建表。若想不删除,需申请例外。
使用预建表方式创建的物化视图,在删除物化视图后,所建的同名的预建表不会自动删除,还可以进行查询操作,因此需要手动进行删除。
drop materialized view 属主.物化视图名; drop table 属主.预建表名;
drop materialized view olapdata.CAL_MONTH_SALES_MV; drop table olapdata.CAL_MONTH_SALES_MV;
2.7 删除物化视图时,如果是快速刷新的物化视图,需要同时删除物化视图日志。
在使用快速刷新时,需要创建基于物化视图的日志表,因此在删除物化视图时,同时需要删除此日志表。
注意:对于物化视图和物化视图日志表不在同一个数据库的情况,在删除物化视图和物化视图日志表时,需要连接到相应的数据库删除对应的对象。
如果物化视图和物化视图日志表是不同的Schema,在删除物化视图和物化视图日志表时,需要以不同的Schema用户登录并删除,或临时授予删除权限。
drop materialized view log on 表属主.表名;
drop materialized view log on olapdata.cal_month_sales;
2.8 为了保证mview能够进行fast refresh,需在Materialized View Log创建时加入sequence参数。
sequence的作用在于确定dml操作的先后顺序,当对于多表进行mixed dml操作时,涉及到join+aggregate类型的mv要进行fast refresh则需设置sequence的关键字。