Oracle 21c 新特性: Automatic Materialized Views
在oracle database 21c版本开始materialized views可以自动的创建和维护,用于自冶数据库。 物化视图提供了显着提高查询性能的潜力,但需要大量的努力和技能来确定要使用的物化视图。结合了工作负载监控来确定需要哪些物化视图。基于决定,物化视图和物化视图日志被自动创建和维护,无需任何手动交互。对于复杂查询SQL的查询块(QB),MVIEW查询重写技术可以优化此类查询,基于扩展覆盖子表达式算法(ECSE),权衡生成等价、超/子/交/合集的预查询结果。支持分区和非分区基表。支持增量物化视图刷新。Automatic Materialized Views使用对象活动跟踪系统 (OATS) 提供的工作负载信息作为自动决策过程的一部分。
使用DBMS_AUTO_MV 包管理,相关视图有DBA_ACTIVITY_* DBA_AUTO_MV_*
SQL> desc DBMS_AUTO_MV PROCEDURE CONFIGURE Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- PARAMETER_NAME VARCHAR2 IN PARAMETER_VALUE VARCHAR2 IN ALLOW BOOLEAN IN DEFAULT PROCEDURE CONFIGURE Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- PARAMETER_NAME VARCHAR2 IN PARAMETER_VALUE NUMBER IN ALLOW BOOLEAN IN DEFAULT PROCEDURE DROP_AUTO_MVS Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- OWNER VARCHAR2 IN MV_NAME VARCHAR2 IN ALLOW_RECREATE BOOLEAN IN DEFAULT FUNCTION RECOMMEND RETURNS VARCHAR2 Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- STS_OWNER VARCHAR2 IN DEFAULT STS_NAME VARCHAR2 IN DEFAULT WORKLOAD_START_TIME TIMESTAMP IN DEFAULT WORKLOAD_END_TIME TIMESTAMP IN DEFAULT AUTOMV_MODE VARCHAR2 IN DEFAULT PROCEDURE REFRESH FUNCTION REPORT_ACTIVITY RETURNS CLOB Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- ACTIVITY_START TIMESTAMP WITH TIME ZONE IN DEFAULT ACTIVITY_END TIMESTAMP WITH TIME ZONE IN DEFAULT TYPE VARCHAR2 IN DEFAULT SECTION VARCHAR2 IN DEFAULT LEVEL VARCHAR2 IN DEFAULT FUNCTION REPORT_LAST_ACTIVITY RETURNS CLOB Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- TYPE VARCHAR2 IN DEFAULT SECTION VARCHAR2 IN DEFAULT LEVEL VARCHAR2 IN DEFAULT SQL> @d DBA_AUTO_MV Show data dictionary views and x$ tables matching the expression "DBA_AUTO_MV"... TABLE_NAME COMMENTS ---------------------------------------- -------------------------------------------------------------------------------- DBA_AUTO_MV_ANALYSIS_ACTIONS DBA_AUTO_MV_ANALYSIS_EXECUTIONS DBA_AUTO_MV_ANALYSIS_RECOMMENDATIONS DBA_AUTO_MV_ANALYSIS_REPORT DBA_AUTO_MV_ANALYSIS_TASK DBA_AUTO_MV_CONFIG set of AUTO MV configuration parameters DBA_AUTO_MV_MAINT_REPORT DBA_AUTO_MV_REFRESH_HISTORY DBA_AUTO_MV_VERIFICATION_REPORT DBA_AUTO_MV_VERIFICATION_STATUS 10 rows selected. TABLE_NAME COMMENTS ------------------------------ -------------------------------------------------------------------------------- DBA_ACTIVITY_CONFIG Object Activity Tracking Configuation DBA_ACTIVITY_MVIEW Object Activity Tracking for Materialized Views DBA_ACTIVITY_SNAPSHOT_META Object Activity Tracking Metadata for Snapshot Intervals DBA_ACTIVITY_TABLE Object Activity Tracking for Tables
DBMS_AUTO_MV.RECOMMEND 生成并报告SYS_AUTO_STS过去 24 小时使用的建议。请注意,默认行为是REPORT_ONLY。
自动生成一组正确的物化视图是具有挑战性的任务,这是自动驾驶的一个非常理想的功能数据库。 物化视图的选择必须基于成本,可在实际数据库环境中验证。已全面实施并将部署在云上的 Oracle 自治数据库。另一方面,自动生成物化视图,本身就提出了各种挑战我们可以考虑生成每个语法相关的物化视图,用于基于所有可能的表子集的工作负载查询工作负载查询,但它会爆炸搜索空间,即使一些基于启发式的修剪;任意表子集可以在物化视图定义中引入笛卡尔积。在另一个极端,我们可以为每个查询生成,当在语法上可能,一个候选物化视图与查询的文本完全匹配;这通常会违反存储限制并导致物化视图刷新一个棘手的任务。理想化的目标是生成一个少量的物化视图,大小合理,包含连接和分组的大量预计算,并且可以重写大量当前和未来的工作量查询。这对系统提出了相互矛盾的要求。一种包含大量预计算的物化视图更多有利于它重写的查询,但它通常会重写更少的查询。此外,一个物化视图重写了许多查询往往有大量的分组列,而很少或没有选择谓词,这往往会增加物化根据它包含的行数查看大小。它提出了一种新技术,称为扩展覆盖子表达式算法(ECSE) ,用于自动化物化视图的生成。 ECSE 算法旨在相互冲突的需求之间达成妥协在两个极端之间找到平衡。自动化物化视图项目是更广泛的努力称为 Oracle 自治数据库。 其他该项目的组成部分包括任务管理、 基于机器学习的物化视图的自动刷新等。
选择:
验证:
在最后一步,我们使用名为 SQL Performance Analyzer 的 Oracle 工具验证推荐的物化视图的性能,该工具接受 SQL 工作负载并允许我们使用各种性能指标来衡量推荐的物化视图对工作负载查询执行的影响。对于验证阶段,优化器重写模块以基于成本的方式决定哪些推荐的物化视图最有利于每个工作负载查询的重写。
刷新:
自动 MV 刷新由后台作业执行,该作业每 15 分钟定期执行一次,持续时间为一小时,具有预定义的资源限制。
Auto-MV 维护使用 Oracle 数据挖掘包中提供的基于神经网络的机器学习算法 [21]。 目标是安排所有陈旧自动 MV 的刷新,以便最大化未来查询重写的次数。 每 24 小时,我们构建一个新的神经网络模型来预测未来的 DML 操作和未来的自动 MV 使用。 用于构建神经网络模型的数据——插入、删除和更新的行数,以及自动 MV 重写的数量——来自 OATS。 建立模型后,将使用五重交叉验证技术 [7] 对其进行验证,该技术将来自 OATS 的数据分成五个相等的块。 为了保证模型的准确性,神经网络算法运行了 5 次,每次使用不同的块作为测试集,其余 4 块作为训练集。
references Automated Generation of Materialized Views in Oracle. PVLDB
对不起,这篇文章暂时关闭评论。