【发布时间】:2022-01-05 13:22:15
【问题描述】:
我有一些关于优化物化视图 (MV) 的问题:
在以下教程中建议将 PCTFREE 和 PCTUSED 设置为 0 或 99:
注意:如果物化视图完全刷新,则将其设置为 PCTFREE 为 0,PCTUSED 为 99,以获得最高效率。
--> https://satya-dba.blogspot.com/2009/07/materialized-views-oracle.html
第一个问题:
这个建议正确吗? PCTFREE 0和PCTUSED 99这两个参数是否应该相应设置?
MV更新的具体流程是怎样的?
MV 已创建(PCTFREE 0 和 PCTUSED 99 已相应设置):
CREATE MATERIALIZED VIEW "SYSK85"."CMVF_01_SK85_BESTAND_2019" ("BRNR", "LEAT", "TLRTAL", "LEATSO", "STAND_DATUM", "VOAT", "AQEQ", "ELAT", "ELDT", "VSKN", "VTKZ", "ANZAHL")
PCTFREE 0 PCTUSED 99
NOCOMPRESS LOGGING
NO INMEMORY
BUILD IMMEDIATE
USING INDEX
REFRESH FORCE ON DEMAND
ENABLE QUERY REWRITE
AS (
select BRNR, LEAT, TLRTAL, LEATSO, STAND_DATUM, VOAT, AQEQ, ELAT, ELDT, VSKN, VTKZ, count(*) as ANZAHL
from CVF_SK85_BESTAND_2019 GROUP BY BRNR, LEAT, TLRTAL, LEATSO, STAND_DATUM, VOAT, AQEQ, ELAT, ELDT, VSKN, VTKZ
);
第二个问题:
MV的Create是否应该设置PCTFREE 0和PCTUSED 99这两个参数?
但是如果MV更新了呢?
EXEC DBMS_MVIEW.REFRESH('CMVF_01_SK85_BESTAND_2019', 'C', atomic_refresh=>FALSE);
是否应该在更新后再次显式重置 PCTFREE 和 PCTUSED 两个参数(以便数据库可以重新组织数据 - 如有必要)?还是没有必要?
非常感谢
亲切的问候
乔治
【问题讨论】:
标签: oracle performance