Dav_笔记12:Automatic SQL Tuning 之 1 概述

自动调整优化器概述

Oracle数据库使用优化程序为已提交的SQL语句生成执行计划。优化器以以下模式运行:

■普通模式

优化器编译SQL并生成执行计划。正常模式为绝大多数SQL语句生成合理的计划。在正常模式下,优化器以非常严格的时间约束运行,通常只有几分之一秒。

■调整模式

优化程序执行其他分析以检查是否可以进一步改进在正常模式下生成的计划。优化器输出不是执行计划,而是一系列操作,以及它们的基本原理和产生明显更好的计划的预期收益。在调整模式下运行时,优化程序称为自动调整优化程序。

在调整模式下,优化器可能需要几分钟来调整单个语句。每次必须对查询进行硬解析时,调用自动调整优化器既耗时又耗费资源。自动调整优化器适用于对数据库有重大影响的复杂和高负载SQL语句。

自动数据库诊断监视器(ADDM)主动识别适合SQL调优的高负载SQL语句(请参阅Dav_笔记 1 “自动执行性能诊断”)。 自动SQL调整功能还可以自动识别有问题的SQL语句,并在系统维护窗口期间实现调整建议,作为自动维护任务。

自动调整优化器执行以下类型的调整分析:

■统计分析

■SQL分析

■访问路径分析

■SQL结构分析

■替代计划分析

统计分析

优化器依赖于对象统计信息来生成执行计划。如果这些统计信息过时或缺失,则优化程序不具备所需的必要信息,并且可能会生成较差的执行计划。自动调整优化程序检查每个查询对象是否有丢失或过时的统计信息,并生成两种类型的输出:

■建议收集具有过期或无统计信息的对象的相关统计信息

由于自动收集和刷新优化程序统计信息,因此仅在禁用自动优化程序统计信息收集时才会出现此问题。请参阅第13-2页的“管理自动优化程序统计信息收集”。

■没有统计信息的对象的辅助统计信息,以及具有过时统计信息的对象的统计调整因子

数据库将此辅助信息存储在称为SQL配置文件的对象中。

SQL分析

SQL配置文件是一组特定于SQL语句的辅助信息。从概念上讲,SQL配置文件是SQL语句对表或索引的统计信息。数据库可以使用辅助信息来改进执行计划。

访问路径分析

访问路径是从数据库中检索数据的手段。

例如,使用索引的查询和使用全表扫描的查询使用不同的访问路径。

通过减少对大型表进行完全扫描的需要,索引可以极大地提高SQL语句的性能。

有效的索引是一种常见的调优技术。自动调整优化器探索新索引是否可以显着提高查询性能。

如果是,那么顾问建议创建索引。

由于自动调整优化程序不会分析其索引建议如何影响整个SQL工作负载,因此还建议在SQL语句上运行SQL Access Advisor以及具有代表性的SQL工作负载。

SQL Access Advisor在提出建议之前会查看在整个SQL工作负载上创建索引的影响。

请参见Dav_笔记12上的“自动SQL调整功能”。

SQL结构分析

自动调整优化程序可识别可能导致性能不佳的SQL语句结构的常见问题。

这些可能是语法,语义或设计问题。在每种情况下,自动调整优化程序都会提供相关建议来重构语句。

建议的替代方案与原始陈述类似,但不相同。

例如,优化器可能建议使用UNION ALL替换UNION运算符,或者使用NOT EXISTS替换UN IN运算符。然后,您可以确定该建议是否适用于您的情况。

例如,如果模式设计不可能重复,则UNION ALL运算符比UNION运算符更有效。这些更改需要很好地理解数据属性,并且只有在仔细考虑后才能实现。

替代计划分析

在调整SQL语句时,SQL Tuning Advisor会搜索实时和历史性能数据,以获取该语句的替代执行计划。如果存在除原始计划之外的计划,则SQL Tuning Advisor将报告备用计划查找。

SQL Tuning Advisor验证备选执行计划并记录任何不可重现的计划。

找到可重现的替代计划后,您可以创建SQL计划基准,以指示优化程序将来选择这些计划。

例17-1显示了SELECT语句的替代计划查找。

例17-1替代计划查找

2-替代计划发现

---------------------------

通过搜索找到了该语句的一些替代执行计划

系统的实时和历史性能数据。

下表按平均经过时间列出了这些计划。

有关每个部分的详细信息,请参阅“替代计划部分”部分计划。

信息

-----------

- 根据每次执行所用的时间,原始计划似乎具有最佳性能。

但是,如果您知道一个备用计划比原始计划更好,则可以为其创建SQL计划基准。

这将指示Oracle优化器在将来的任何其他选择中选择它。

execute 
dbms_sqltune.create_sql_plan_baseline
(
task_name => 'TASK_XXXXX',object_id => 2, 
task_owner => 'SYS', 
plan_hash => xxxxxxxx
);

例17-1显示SQL Tuning Advisor发现了两个计划,一个在共享SQL区域,另一个在SQL调优集中。 共享SQL区域中的计划与原始计划相同。

如果原始计划的耗用时间比备用计划差,则QL Tuning Advisor仅建议备用计划。

在这种情况下,SQL Tuning Advisor建议用户在计划上创建具有最佳性能的SQL计划基准。

在示例17-1中,备用计划的性能与原始计划不同,因此SQL Tuning Advisor不建议使用备用计划。

在示例17-2中,SQL Tuning Advisor输出的备用计划部分包括原始计划和备用计划,并总结了它们的性能。

最重要的统计数据是经过的时间。

原始计划使用索引,而替代计划使用全表扫描,将经过时间增加.002秒。

例17-2替代计划部分

无论SQL Tuning Advisor是否推荐使用替代计划,请调用DBMS_SQLTUNE.CREATE_SQL_PLAN_BASELINE。

您可以使用此过程在任何现有的可重现计划上创建SQL计划基准。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 高阶语法

前言: 我们通过上篇文章学习了Python的基础语法,接下来我们来学习Python的高阶语法 1.初识对象 在Python中我们可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的 面向对象包含 3 大主要特性:  封装  继承 …

Oracle系统表空间的加解密

实验环境 数据库选择的是orclpdb1,当前系统表空间未加密: SQL> show con_nameCON_NAME ------------------------------ ORCLPDB1SQL> select TABLESPACE_NAME, STATUS, ENCRYPTED from dba_tablespaces;TABLESPACE_NAME STATUS …

软件测试:Postman 工具的使用。开发及测试均需要掌握的测试工具

工具介绍 各个模块功能的介绍如下: 1、New:在这里创建新的请求、集合或环境;还可以创建更高级的文档、Mock Server 和 Monitor以及API。 2、Import:这用于导入集合或环境。有一些选项,例如从文件,文件夹导…

【Linux】远程连接Linux虚拟机(MobaXterm)

【Linux】远程连接Linux虚拟机(MobaXterm) 零、原因 有时候我们在虚拟机中操作Linux不太方便,比如不能复制粘贴,不能传文件等等,我们在主机上使用远程连接软件远程连接Linux虚拟机后可以解决上面的问题。 壹、软件下…

学习小型gpt源码(自用)

数据集构建_哔哩哔哩_bilibili (b站上有一系列课,从数据处理到模型构建和训练使用) 什么是batch? 为什么一个batch内的句子要一样长? 不同batch的长度可以不一样,但是同一个batch内长度一样!…

回文子串转二维dp的方式

目录 写在最前: 1. 首先我们要考虑一个问题:如何判断一个字符串是回文子串 2.如何创建dp[i][j]表示回文子串 3. 如何初始化? 4. 如何实现 问题引入: LCR 020. 回文子串 给定一个字符串 s ,请计算这个字符串中有…

Spring Boot入门指南:留言板

一.留言板 1.输⼊留⾔信息,点击提交.后端把数据存储起来. 2.⻚⾯展⽰输⼊的表⽩墙的信息 规范: 1.写一个类MessageInfo对象,添加构造方法 虽然有快捷键,但是还是不够偷懒 项目添加Lombok。 Lombok是⼀个Java⼯具库,通过添加注…

C语言 | Leetcode C语言题解之第279题完全平方数

题目: 题解: // 判断是否为完全平方数 bool isPerfectSquare(int x) {int y sqrt(x);return y * y x; }// 判断是否能表示为 4^k*(8m7) bool checkAnswer4(int x) {while (x % 4 0) {x / 4;}return x % 8 7; }int numSquares(int n) {if (isPerfect…

项目实战1(30小时精通C++和外挂实战)

项目实战1(30小时精通C和外挂实战) 01-MFC1-图标02-MFC2-按钮、调试、打开网页05-MFC5-checkbox及按钮绑定对象06--文件格式、OD序列号08-暴力破解09-CE10-秒杀僵尸 01-MFC1-图标 这个外挂只针对植物大战僵尸游戏 开发这个外挂,首先要将界面…

【SpringCloud】 微服务分布式环境下的事务问题,seata大合集

目录 微服务分布式环境下的事务问题 分布式事务 本地事务 BASE理论与强弱一致性 BASE理论 强弱一致性 常见分布式事务解决方案 - 2PC 常见分布式事务解决方案 - TCC 常见分布式事务解决方案 - 最大努力通知 常见分布式事务解决方案 - 最终一致性 Seata介绍与术语 Seata…

学习测试10-4自动化 web自动化

网页资源 链接: https://pan.baidu.com/s/17XL2c2lkw_R6BD–VnOQqw?pwd43dr 提取码: 43dr 复制这段内容后打开百度网盘手机App,操作更方便哦 框架之间切换 driver.switch_to.frame("idframe1") # 父切子 参数用id和name# 子切子必须先转回父 driver.sw…

【OpenCV C++20 学习笔记】操作图片

操作图片 概述图片的导入和保存对导入的图片的操作获取像素值Point类型和图片像素 内存管理和引用计数一些简便操作图片可视化更精确的类型转换 概述 在本专栏的第一篇文章中就介绍了一个用OpenCV处理图片的实例(《图片处理基础》),这篇文章…

SQL injection UNION attacks SQL注入联合查询攻击

通过使用UNION关键字,拼接新的SQL语句从而获得额外的内容,例如 select a,b FROM table1 UNION select c,d FROM table2,可以一次性查询 2行数据,一行是a,b,一行是c,d。 UNION查询必须满足2个条…

实战解读:Llama Guard 3 Prompt Guard

前序研究:实战解读:Llama 3 安全性对抗分析 近日,腾讯朱雀实验室又针对 Llama 3.1 安全性做了进一步解读。 2024年7月23日晚,随着Llama3.1的发布,Meta正式提出了“Llama系统”的概念,通过系统级的安全组件对…

ansible基础讲解和加密文件讲解

ansible最重要的三个文件 /etc/ansible/ansible.cfg #####ansible的配置文件 /etc/ansible/host ##清单文件inventory ansible-navigator.yml ####以yml结尾的文件可以理解为conf结尾的文件,是配置文件,用于设置剧本playbook playbook讲解 以.yml结…

Java泛型理解这一篇就够了

好文推荐&#xff0c;请阅读此文&#xff1a;Java泛型最佳实践 总结&#xff1a; 泛型类 泛型接口 泛型函数 通配符 通配符是为了让Java泛型支持范围限定&#xff0c;这样使得泛型的灵活性提升&#xff0c;同时也让通用性设计有了更多的空间。 <?>&#xff1a;无界…

【SpringBoot】2 项目搭建

创建项目 1&#xff09;确实本地 jdk 版本 打开命令行窗口&#xff1a;快捷键 Windows R&#xff0c;输入 CMD&#xff0c;敲回车 执行命令&#xff1a;java -version 2&#xff09;在项目 clone 的位置创建 Spring Boot 项目&#xff0c;使用 Maven 进行依赖管理&#xff…

Python 机器学习求解 PDE 学习项目——PINN 求解二维 Poisson 方程

本文使用 TensorFlow 1.15 环境搭建深度神经网络&#xff08;PINN&#xff09;求解二维 Poisson 方程: 模型问题 − Δ u f in Ω , u g on Γ : ∂ Ω . \begin{align} -\Delta u & f \quad & \text{in } \Omega,\\ u & g \quad & \text{on } \Gamma:\p…

vue3 vxe-table 点击行,不显示选中状态,加上设置isCurrent: true就可以设置选中行的状态。

1、上个图&#xff0c;要实现这样的&#xff1a; Vxe Table v4.6 官方文档 2、使用 row-config.isCurrent 显示高亮行&#xff0c;当前行是唯一的&#xff1b;用户操作点击选项时会触发事件 current-change <template><div><p><vxe-button click"sel…

【个人记录】pkg可以将Node.js应用打包为可执行文件

背景 之前按客户需求做了一个简易定时任务应用&#xff0c;完成后为方便客户使用需要打包为可执行文件。 pkg工具 pkg 是一个非常流行的工具&#xff0c;它能够将 Node.js 应用打包成独立的可执行文件。它支持多个平台&#xff0c;包括 Windows、macOS 和 Linux。 测试环境…