返回顶部
首页 > 资讯 > 数据库 >怎么是SQL Profile
  • 553
分享到

怎么是SQL Profile

2024-04-02 19:04:59 553人浏览 安东尼
摘要

本篇内容主要讲解“怎么是sql Profile”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么是SQL Profile”吧!SQL Profile是什么

本篇内容主要讲解“怎么是sql Profile”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么是SQL Profile”吧!

SQL Profile是什么

SQL Profile是我非常喜欢的一个技术,通过它可以在不修改SQL语句的情况下,为SQL绑定任何需要的hint,与SQL代码是分离的,而且相对Baseline、outline来说,操作步骤简单,如果使用熟练可以在极短的时间内修正一个查询语句的执行计划,我已经在多个场合使用SQL Profile解决了数据库的性能问题。SQL Profile是oracle 10G出现的一个功能,SQL Profile在Oracle文档中被描述为作为SQL Tuning Advisor的一部分,只能通过SQL Tuning Advisor来使用,一般是通过运行SQL Tuning Advisor的JOB,JOB运行结束后可以查看SQL Tuning Advisor给出的优化建议,这些建议里可能会包含让DBA采用SQL Profile(hint的集合),作为ORACLE 10G后提供的新功能,DBA可以将SQL调优的工作交给SQL Tuning Advisor来做。正常情况下,一个SQL语句交给SQL 优化器后,优化器需要在非常短的时间内,给出解析结果,但是SQL Tuning Advisor却不同,它为了产生一个高效的执行计划,可能会花费很长的时间。进一步讲,它还会使用一些非常耗时的技术如Wath-If 分析,并加强对动态采样技术的利用来核实优化器的估计值。SQL Tuning Advisor的任务是分析SQL语句并建议如何使用一些方法来提高语句的性能,包括收集遗漏或过时的对象统计信息,创建新索引,改变SQL语句或者采用SQL Profile。按照官方的说法,SQL Profile只能通过SQL Tuning Advisor来使用,但是本节后面的几个章节都会使用手工创建SQL Profile的方式来告诉读者如何更快速的使用、创建SQL Profile,但是手工创建SQL Profile并不被ORACLE技术支持所支持。

简单来说SQL Profile是一个对象,包含了一系列的hint,这些hint包含了可以帮助优化器为一个特定的SQL语句找到高效执行计划的额外信息。这些hint包含执行环境,对象统计信息,和对查询优化器所作评估的修正信息,例如广为流传的OPT_ESTIMATE就是由SQL Profile所引入的hint,它主要的作用是设定对象统计信息、放大或缩小优化器的评估基数、修正表连接的基数,例如,select * from a where status='Inactive',真实的返回基数为10000,但是由于统计信息的陈旧,导致优化器认为只返回100,因此通过OPT_ESTIMATE会纠正这一信息,例如通过OPT_ESTIMATE(@"SEL$1", TABLE, "A"@"SEL$1", SCALE_ROWS=100)来告诉优化器,对于表A经过谓词过滤后返回的基数为:优化器的评估基数再放大100倍,也就是优化器评估基数100,再乘以放大系数100,最终的基数为10000(注意OPT_ESTIMATE等hint的纠正信息并不会存储、更新到表、索引等对象的统计信息里)。从这里我们也可以看出,SQL Profile并不是真正的定执行计划,而只是告诉优化器一些更加真实的信息,让优化器根据真实的信息来得到更加合理的执行计划。因此,即使一个SQL使用了SQL Profile,优化器在选择执行计划的时候也具有很大的灵活性,随着数据的变化,时间的推移,这些修正因子可能也已经不再准确,因此可能会出现在某些使用了SQL Profile的SQL,刚开始这些SQL Profile工作的很好,但是不久就会产生一些问题。不过SQL Profile跟outline、Baseline一样都是基于存储一些hint来发挥作用的,SQL Profile虽然默认不会使用例如index、full等我们常见的hint,但是这些hint依然可以在SQL Profile里发挥作用。

SQL Profile在10G和11G默认是被打开的,可以通过设置参数SQLTUNE_CATEGoRY为false来关闭SQL Profile。每个SQL Profile都被放置在一个特定的category中,可以在创建SQL Profile时指定category的值,如果不指定会被放在SQLTUNE_CATEGORY为defualt的category中。如果SQLTUNE_CATEGORY的值被设置为非default的值,那么只有SQL Profile的category的值为参数SQLTUNE_CATEGORY设置值的才会生效。

n Note:SQL Profile可以为SQL语句添加任何hint,例如:bind_aware这个hint并不能通过SQL Baseline起作用,但是可以通过SQL Profile起作用。因为SQL Profile作为一种基于hint修正SQL执行计划的机制,做的比较傻瓜化,它仅仅是把hint应用到特定签名的SQL上,不会做其他校验,SQL Baseline不仅仅只是应用hint,还需要做plan_hash_value值的计算校验,因此对于bind_aware这种hint并不能对SQL Baseline起作用,因为这个hint会导致执行计划的不稳定性,而Baseline创建的时候是跟具体的plan_hash_value挂钩的,不能与这种具有不稳定性的hint挂钩。

n SQL Profile可以在DataGuard中使用,也就是说在主库创建SQL Profile后,备库可以自动使用到在主库上创建的SQL Profile,但是Baseline不能在DataGuard中使用。

到此,相信大家对“怎么是SQL Profile”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: 怎么是SQL Profile

本文链接: https://lsjlt.com/news/64626.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么是SQL Profile
    本篇内容主要讲解“怎么是SQL Profile”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么是SQL Profile”吧!SQL Profile是什么 ...
    99+
    2024-04-02
  • SQL Profile(第二篇)
    通过SQL Tuning Advisor使用SQL profile 在11GR2上SQL Tuning Advisor已经变得非常好用,我非常喜欢将一些非常复杂的SQL语句交给SQL Tunin...
    99+
    2024-04-02
  • Manual类型的SQL Profile
    实验目的:Manual类型稳定执行计划,相对AUTOMATIC类型更稳定 关键词: dbms_stats.gather_table_stats、 DBMS_SQLTUNE.DROP...
    99+
    2024-04-02
  • Mysql profile怎么用
    这篇文章将为大家详细讲解有关Mysql profile怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 如何通过profile来发现语句...
    99+
    2024-04-02
  • 如何手工创建SQL Profile
    本篇内容介绍了“如何手工创建SQL Profile”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!手工创建S...
    99+
    2024-04-02
  • Oracle固定SQL的执行计划(一)---SQL Profile
    我们都希望对于所有在Oracle数据库中执行的SQL,CBO都能产生出正确的执行计划,但实际情况却并非如此,由于各种各样的原因(比如目标SQL所涉及的对象的统计信息的不准确,或者CBO内部一些成本计算公式的...
    99+
    2024-04-02
  • 怎么使用MySQL profile
    本篇内容主要讲解“怎么使用MySQL profile”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用MySQL profile”吧!剖析单条查询 prof...
    99+
    2024-04-02
  • linux .profile的作用是什么
    本篇内容主要讲解“linux .profile的作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux .profile的作用是什么”吧! ...
    99+
    2023-03-22
    linux
  • ORA-13826: empty SQL profile not allowed for create or update SQL profile ORACLE 报错 故障修复 远程处理
    文档解释 ORA-13826: empty SQL profile not allowed for create or update SQL profile Cause: No attributes were specified to th...
    99+
    2023-11-05
    报错 故障 empty
  • linux etc profile的含义是什么
    今天小编给大家分享一下linux etc profile的含义是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下...
    99+
    2023-04-20
    linux
  • mysql中profile的作用是什么
    在MySQL中,PROFILE是一个用于分析查询语句性能的工具。通过使用PROFILE,可以查看查询语句的执行计划、扫描行数、扫描时...
    99+
    2024-03-14
    mysql
  • 通过案例学调优之--SQL Profile
    通过案例学调优之--SQL Profile一、什么是SQL Profile(概要)        SQL Profile在性能优化中占有一个重要的位置。&n...
    99+
    2024-04-02
  • springboot中profile怎么设置
    这篇文章主要介绍“springboot中profile怎么设置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot中profile怎么设置”文章能帮助大家解决问题。配置方式命令行方式命...
    99+
    2023-06-29
  • SpringBoot2的profile功能是什么与怎么自定义starter
    本篇内容主要讲解“SpringBoot2的profile功能是什么与怎么自定义starter”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot2的profile功能是什么与怎么自...
    99+
    2023-06-29
  • Mysql如何使用profile分析sql开销
    小编给大家分享一下Mysql如何使用profile分析sql开销,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!Mysql使用profile分析sql开销1.使用之前先查看当前数据库的版本信息,...
    99+
    2024-04-02
  • profile怎么在mysql中使用
    这篇文章给大家介绍profile怎么在mysql中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。profile是什么当我们要对某一条sql的性能进行分析时,可以使用它。Profil...
    99+
    2024-04-02
  • Linux profile文件怎么修改
    这篇文章主要介绍“Linux profile文件怎么修改”,在日常操作中,相信很多人在Linux profile文件怎么修改问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux profile文件怎么修改...
    99+
    2023-06-28
  • linux怎么修改profile文件
    要修改Linux系统中的profile文件,可以按照以下步骤进行操作:1. 打开终端窗口,以root用户或具有sudo权限的用户身份...
    99+
    2023-10-11
    linux
  • Linux下bashrc和profile的区别是什么
    本篇内容主要讲解“Linux下bashrc和profile的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux下bashrc和profile的区别是什么”吧!使用终端ssh登录L...
    99+
    2023-06-16
  • mysql中profile的使用方法是什么
    在MySQL中,PROFILE是一个用于分析查询性能的工具。它可以显示查询执行时所涉及的各种信息,包括查询优化器如何优化查询、查询执...
    99+
    2024-03-14
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作