我正在寻找Oracle物化视图的生命周期。例如声明:
Create materialized view foo
Refresh On Commit
...
每次提交数据库时,或者只是视图语句中引用的某个表时,是否会更新此视图?除此之外,Oracle在什么时候销毁旧缓存并将其替换为新缓存?具体来说,物化视图的“陈旧性”窗口是什么?意思是它取决于创建物化视图所需的时间。
答案 0 :(得分:2)
ON COMMIT
子句modify the commit process of all transactions that issue DML on a base table:
指定ON COMMIT以指示只要数据库提交在实例化视图的主表上操作的事务,就会发生快速刷新。此子句可能会增加完成提交所需的时间,因为数据库会在提交过程中执行刷新操作。
提交将取决于物化视图刷新的成功(这意味着提交可能会失败,因为无法刷新依赖的MV)。
刷新发生在与发出提交的事务相同的事务中。这意味着一旦提交完成,所有会话都可以看到更改(因此数据永远不会过时)。
您必须注意的一些事项: