Dav_笔记13:SQL Access Advisor 之 1 Summary

news2024/9/23 7:25:04

SQL Access Advisor概述

      SAA Summary

      在调整数据库以实现复杂的数据密集型查询的最佳性能时,物化视图,分区和索引是必不可少的。

     SQL Access Advisor通过为给定工作负载推荐适当的物化视图集,物化视图日志,分区和索引,帮助您实现性能目标。

     在优化SQL时,理解和使用这些结构至关重要,因为它们可以显著提高数据检索的性能。然而,优点并非没有成本。创建和维护这些对象可能非常耗时,并且空间要求可能很高。特别是,对未分区的基表进行分区是一项复杂的操作,必须仔细规划。

SQL Access Advisor索引建议包括位图,基于函数和B树索引。与其他索引技术相比,位图索引为许多类型的即时查询提供了缩短的响应时间,并降低了存储要求。位图索引最常用于数据仓库中,用于索引唯一或接近唯一的键。 SQL Access Advisor物化视图建议包括快速刷新和完全可刷新的MV,用于一般重写或精确文本匹配重写。

SQL Access Advisor使用TUNE_MVIEW过程,还建议如何优化物化视图,以便可以快速刷新它们并利用常规查询重写。

此外,SQL Access Advisor可以建议对现有的未分区基表进行分区以提高性能。

此外,它可能会建议自己分区的新索引和物化视图。

    虽然创建新的分区索引和物化视图与未分区的情况没有区别,但应谨慎执行对现有基表的分区。在表上定义索引,视图,约束或触发器时尤其如此。有关在线执行此任务的基表分区的问题列表,请参阅 Dav_笔记13中的 “脚本包括分区建议时的特殊注意事项”。

您可以使用SQL Access Advisor向导或通过调用DBMS_ADVISOR包从Oracle Enterprise Manager(可从Advisor Central页面访问)运行SQL Access Advisor。

DBMS_ADVISOR包由一组可从任何PL / SQL程序调用的分析和建议函数和过程组成。

图18-1说明了SQL Access Advisor如何为从用户定义的表或SQL缓存获取的给定工作负载建议访问结构。

如果未提供工作负载,则它还可以生成和使用假设工作负载,前提是用户架构包含CREATE DIMENSION关键字定义的维度。

在Enterprise Manager或API中使用SQL Access Advisor,您可以执行以下操作:

■根据收集的,用户提供的或假设的工作负载信息推荐物化视图和索引。

■建议对表,索引和物化视图进行分区。

■标记,更新和删除建议。

此外,您可以使用SQL Access Advisor API执行以下操作:

■使用单个SQL语句执行快速调整。

■演示如何使物化视图快速刷新。

■显示如何更改实例化视图,以便可以进行常规查询重写。

为了提出建议,SQL Access Advisor依赖于有关维度级别列,JOIN KEY列和事实表键列的表和索引基数的结构统计信息。

您可以使用DBMS_STATS包收集精确或估计的统计信息。由于收集统计数据非常耗时且不需要完整的统计准确性,因此通常优先估算统计数据。

如果不收集给定表的统计信息,则引用此表的查询将在工作负载中标记为无效,从而不会对这些查询进行建议。

还建议分析所有现有索引和物化视图。

有关DBMS_STATS包的更多信息,请参见Oracle Database PL / SQL包和类型参考。

使用SQL Access Advisor概述

使用SQL Access Advisor的一种简单方法是调用其向导,该向导可从Advisor Central页面的Enterprise Manager中获得。如果您更喜欢通过DBMS_ADVISOR包使用SQL Access Advisor,那么本节将介绍必须调用这些过程的基本组件和顺序。

本节介绍生成一组建议的四个步骤:

■创建任务

■定义工作负载

■生成建议

■查看并实施建议

步骤1创建任务

顾问程序任务是数据字典中的一个容器,用于存储智能顾问程序分析运行的输入和结果。与推荐操作相关的所有信息(包括结果)都驻留在任务中。

在SQL Access Advisor可以提出建议之前,您必须使用以下任一方法创建任务:

■Oracle Enterprise Manager中的向导或DBMS_ADVISOR.QUICK_TUNE过程,该过程自动创建任务

■DBMS_ADVISOR.CREATE_TASK过程

您可以使用DBMS_ADVISOR.SET_TASK_PARAMETER过程通过定义任务的参数来控制任务的功能。

步骤2定义工作负载

工作负载由一个或多个SQL语句以及完全描述每个语句的统计信息和属性组成。完整工作负载包含来自目标业务应用程序的所有SQL语句。部分工作负载包含SQL语句的子集。不同之处在于,对于完整工作负载,SQL Access Advisor可能会建议删除未使用的物化视图和索引。

没有工作负载,您无法使用SQL Access Advisor。工作负载可能包含各种语句。

SQL Access Advisor根据特定统计信息,业务重要性或两者的组合对条目进行排名,这使得顾问程序可以首先处理最重要的SQL语句。

SQL Access Advisor可能要求在有效工作负载中存在特定属性。虽然顾问可以在缺少负载及属性时时进行分析,但建议的质量可能会较低。例如,SQL Access Advisor要求工作负载包含SQL查询和运行查询的用户,其他属性为可选。但是,如果工作负载还包含I / O和CPU数据,则SQL Access Advisor可以更好地评估语句效率。

数据库将工作负载存储为SQL调优集。您可以使用DBMS_SQLTUNE包访问工作负载,并在许多Advisor任务中共享它。由于工作负载是独立的,因此必须使用DBMS_ADVISOR.ADD_STS_REF过程将其链接到任务。建立此链接后,在所有顾问程序任务消除了对工作负载的依赖之前,您无法删除或修改工作负载。当用户删除父顾问程序任务或使用DBMS_ADVISOR.DELETE_STS_REF过程手动从任务中删除工作负载引用时,将删除工作负载引用。

您可以通过分析维度和约束来从架构创建假设工作负载。

为获得最佳结果,请将工作负载作为SQL调优集提供。 DBMS_SQLTUNE包提供了几个辅助函数,可以从常见工作负载源创建SQL调优集,例如SQL缓存,存储在表中的用户定义工作负载以及假设工作负载。

在生成建议时,您可以对工作负载应用过滤器以限制分析的内容。此限制提供了基于不同工作负载方案生成不同建议集的能力。 SQL Access Advisor参数控制推荐过程和工作负载的自定义。这些参数控制流程的各个方面,例如所需的推荐类型和推荐的命名约定。

要设置这些参数,请使用SET_TASK_PARAMETER过程。参数是持久的,因为它们在任务的生命周期内保持设置。使用SET_TASK_PARAMETER设置参数值时,在您再次调用此过程之前,它不会更改。

步骤3生成建议

在任务存在且工作负载链接到任务并设置了相应的参数后,您可以使用DBMS_ADVISOR.EXECUTE_TASK过程生成建议。这些建议存储在SQL Access Advisor存储库中。

推荐过程产生了若干建议。每个建议指定一个或多个动作。例如,建议可以是创建多个物化视图日志,创建物化视图,然后对其进行分析以收集统计信息。

任务建议的范围可以从简单的建议到需要对一组现有基表进行分区以及实现一组数据库对象(如索引,物化视图和物化视图日志)的复杂解决方案。执行顾问程序任务时,SQL Access Advisor会仔细分析收集的数据和用户调整的任务参数。然后,它形成用户可以查看和实施的结构化建议。

有关生成建议的详细信息,请参阅Dav笔记13系列的“生成建议”。

步骤4查看并实施建议

您可以通过以下任一方式查看SQL Access Advisor中的建议:

■使用目录视图

■使用DBMS_ADVISOR.GET_TASK_SCRIPT过程生成脚本

在Enterprise Manager中,您可以在SQL Access Advisor过程完成后显示建议。

有关使用目录视图查看建议的说明,请参阅本章页的“查看建议”。

请参阅本笔记13系列的“生成SQL脚本”以了解如何创建脚本。

您无需接受所有建议。您可以标记要包含在推荐脚本中的那些。但是,建议使用基表分区时,某些建议取决于其他建议。例如,如果您还没有在索引基表上实现分区建议,则无法实现本地索引。最后一步是实施建议并验证查询性能是否已得到改进。

SQL Access Advisor存储库 :SQL Access Advisor Repository

SQL Access Advisor所需和生成的所有信息都驻留在Advisor存储库中,该存储库是数据库字典的一部分。使用存储库的好处是:

■收集SQL Access Advisor的完整工作负载。

■支持历史数据。

■由服务器管理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2036784.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

macOS Sequoia 15 beta 5 (24A5309e) Boot ISO 原版可引导镜像下载

macOS Sequoia 15 beta 5 (24A5309e) Boot ISO 原版可引导镜像下载 iPhone 镜像、Safari 浏览器重大更新、备受瞩目的游戏和 Apple Intelligence 等众多全新功能令 Mac 使用体验再升级 请访问原文链接:https://sysin.org/blog/macOS-Sequoia-boot-iso/&#xff0c…

基于JAVA的外来人口管理系统设计与实现,源码、部署+讲解

摘 要 在新型冠状病毒性肺炎流行的背景下,我国数亿流动人口应该受到高度关注和保护。并让这一易感染人群离开成为“受害者传染源”的双重风险,的确是一项关键而富有挑战性的任务。因此,本毕业设计是以规模复杂的外来人口及居民群体为典例&am…

UI-无限循环列表

无限循环列表 创建 在任意节点上,添加Scroller,ScrollView组件,和RectMask2D组件: 其中列表的大小,依赖Rect的大小。 界面参数介绍 ViewPort:视口大小 SrollDirction:滚动方向 MovementType&#xff1a…

go语言后端开发学习(五)——如何在项目中使用Viper来配置环境

前言 在之前的文章中我们就介绍过用go-ini来读取配置文件,但是当时我们在介绍时说了他只能读取.ini格式的配置文件所以局限性较大,这里我们介绍一个适用范围更大的配置管理第三方库——Viper。 什么是Viper Viper是适用于Go应用程序(包括Twelve-Factor App&#…

算法-差分, 二维前缀和, 离散化

文章目录 本节提要1. 一维差分1.1 一维差分原理分析1.2 一维差分例题应用 2. 等差数列差分2.1 等差数列差分原理分析 3. 二维前缀和3.1 二维前缀和原理分析3.2 二维前缀和例题应用 本节提要 本节的主要目标是一维差分的总结, 包括一维差分, 一维等差数列差分; 二维差分和二维前…

唐诡探案外传-MySQL误操作之“寻凶”

序幕:字符集被修改之谜 立秋后的第一天下午,太阳仍不知疲倦地炙烤着大地,办公室内的中央空调不停歇地鼓吹着冷风。某办公楼内,IT部门的阿祖被同事急匆匆地找来,说是系统出现了奇怪的bug,追查之下发现测试环…

搭建高可用OpenStack(Queen版)集群(十二)之启动一个实例

一、搭建高可用OpenStack(Queen版)集群之启动一个实例 创建实例之前,首先要创建虚拟网络 一、创建网络 建议命令行和web管理协同进行配置,这样不容易出错 在控制节点执行 1、创建公有网络部分 1、在命令行执行 . admin-openrc ne…

【SQL】平均售价

目录 题目 分析 代码 题目 表:Prices ------------------------ | Column Name | Type | ------------------------ | product_id | int | | start_date | date | | end_date | date | | price | int | ---------------…

技术研究:Redis 数据结构与 I/O 模型

数据结构 Redis之所以“快”,一方面因为它是内存数据库,所有操作都在内存上完成,内存的访问速度本来就快。另一方面则是因为高效的数据结构,使得操作键值效率较高。总体来说,Redis使用了一个用来保存每个Key/Value的全…

【Story】如何高效记录并整理编程学习笔记?

目录 一、为何笔记在编程学习中如此重要?1.1 知识的捕捉1.2 理解和消化1.3 知识的复习1.4 知识的分享 二、建立高效的笔记系统2.1 确定笔记的目标2.2 选择合适的工具2.3 笔记的结构化2.4 记录有效的内容2.5 定期回顾和更新 三、保持笔记条理性的技巧3.1 使用一致的格…

【数据结构】堆排序与TOP-K问题

🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 文章目录 1.堆排序1.1 建堆1.2 利用堆删除思想来进行排序1.3 堆排序的时间复杂度 2.TOP-K问…

Uniapp之微信小程序计算器

UI仿的iOS手机计算器,基本功能已经实现,如下效果图 具体使用可以参考微信小程序:日常记一记--我的---计算器 第一步:UI界面设计 1,strClass模块是计算过程代码展示 2,result-view模块是结果展示 3&#xff…

嵌入式学习---DAY24:进程--二

一、exec函数族----启动一个新程序 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支), 子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的 用户空间代码和数据完全被…

SHT30温湿度传感器全解析——概况,性能,MCU连接,样例代码

常见温湿度传感器测量范围:(价格仅供参考,具体性能要看折线图) 型号DHT11DHT20AHT10AHT20AHT30SHT20价格¥ 2.49¥3.04¥ 1.9¥1.4¥ 1.3¥5.5温度测量范围20—90%RH0—100%RH0—100%RH0—…

pycharm最新专业版激活码

pycharm最新专业版激活码 Pycharm下载地址:pycharm下载 首先,我们打开下载的 pycharm 专业版并安装。 按照下图所示先点击上方的 Activation code,再将激活码粘贴至输入框,最后点击 Activate 激活。 激活码: OS2AN…

旋转关系介绍

目录 旋转矩阵与轴角 旋转矩阵与欧拉角 旋转矩阵与四元数 轴角与四元数 轴角与欧拉角 欧拉角与四元数 欧拉角与四元数 旋转矩阵与轴角 设旋转矩阵R[■8(r_11&r_12&r_13r_21&r_22&r_23r_31&r_32&r_33)],轴角使用一个单位向量n和一个角…

Go--GMP调度模型

目录 GMP模型G、M、P简介P和M的个数**P和M何时会被创建**goroutine创建流程goroutine什么时候会被挂起 GMP的调度调度流程调度策略调度时机同时启动了一万个goroutine,会如何调度? GMP模型 G、M、P简介 GMP是Go运行时调度层面的实现,包含4个…

质量对中国开发商提升游戏品牌信誉和信任度的影响

随着全球游戏产业的持续增长,中国开发商正在大举进军国际市场。然而,他们面临的关键挑战之一是建立和维护与全球参与者的品牌信誉和信任。他们的游戏质量在实现这一目标方面起着至关重要的作用。从技术性能到故事讲述和本地化,高质量的游戏对…

OpenGL3.3_C++_Windows(35)

PBR_IBL漫反射 IBL图像的光照(Image based lighting):非直接光源,它是一种更精确的环境光照输入格式,甚至也可以说是一种全局光照的粗略近似。环境光照:获取每个wi光源辐射率,求辐照度:将周围环…

Linux学习笔记11(计算机网络)

目录 网络七层模型/五层模型 IP地址分类 CIDR Centos7的网卡IP配置 RockyLinux9的网卡IP配置 网络七层模型/五层模型 自下到上 物理层: 建立物理连接,传输 0 和 1 的比特流 数据链路层: 物理地址寻址,流量控制,差错…