暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 19C 关于SQL配置文件

原创 Asher.HU 2021-02-04
906


必要时,SQL Tuning Advisor建议使用SQL配置文件。您可以DBMS_SQLTUNE用来实现,更改,删除和传输SQL配置文件。

本章包含以下主题:

 

26.1关于SQL配置文件

一个SQL配置文件是包含辅助统计信息的具体的SQL语句的数据库对象。

从概念上讲,SQL概要文件对于SQL语句而言,对象级统计信息对于表或索引而言。当DBA调用SQL Tuning Advisor时,将创建SQL配置文件。

本节包含以下主题:

 

26.1.1 SQL配置文件的目的

分析SQL语句时,SQL Tuning Advisor使用一组特定的绑定值作为输入。

顾问将优化器的估计值与通过在数据样本上执行语句的片段而获得的值进行比较。当发现明显差异时,SQL Tuning Advisor会在SQL概要文件中将纠正措施捆绑在一起,然后建议接受。

SQL概要文件中的更正统计信息可以改善优化程序的基数估计,从而使优化程序选择更好的计划。与其他改进计划的技术相比,SQL概要文件具有以下优点:

  • 与提示和存储的大纲不同,SQL配置文件不会将优化程序绑定到特定的计划或子计划。SQL配置文件修复了错误的估计,同时使优化器可以灵活地在不同情况下选择最佳计划。
  • 与提示不同,使用SQL配置文件时无需更改应用程序源代码。数据库对SQL配置文件的使用对用户是透明的。

也可以看看:

 

26.1.2 SQL配置文件的概念

SQL概要文件是查询的辅助统计信息的集合,包括查询中引用的所有表和列。

概要文件以内部格式存储在数据字典中。用户界面是DBA_SQL_PROFILES字典视图。优化器在优化过程中使用此信息来确定最佳方案。

本节包含以下主题:

也可以看看:

Oracle数据库参考以了解更多信息DBA_SQL_PROFILES

 

26.1.2.1 SQL配置文件中的统计信息

除其他统计信息外,SQL配置文件还包含一组基数调整。

基数度量基于对WHERE子句的采样,而不是基于统计预测。配置文件使用查询的一部分来确定估计基数是否接近实际基数,如果存在不匹配,则使用校正后的基数。例如,如果存在一个SQL配置文件用于SELECT * FROM t WHERE x=5 AND y=10,则该配置文件将存储返回的实际行数。

Oracle Database 18c开始,SQL Tuning Advisor可以推荐一个Exadata感知的SQL配置文件。在Oracle Exadata数据库云服务器上,智能扫描的成本取决于系统统计信息I / O查找时间(ioseektim),多块读取计数(mbrc)和I / O传输速度(iotfrspeed)。这些统计数据的值通常在Exadata上有所不同,因此可能会影响计划的选择。如果系统统计数据过时,并且收集它们可以提高性能,则SQL Tuning Advisor建议接受Exadata感知的SQL配置文件。

也可以看看:

 

26.1.2.2 SQL配置文件和执行计划

SQL概要文件包含整个语句的补充统计信息,而不是单个计划的补充统计信息该配置文件本身并不能确定特定的计划。

在内部,SQL配置文件是使用提示解决不同类型问题的。这些提示未指定任何特定计划。而是,这些提示纠正了优化器估计算法中导致错误计划的错误。例如,TABLE_STATS当统计信息丢失或过时时,概要文件可以使用提示来设置表的对象统计信息。

选择计划时,优化器具有以下信息来源:

下图显示了SQL语句和该语句的SQL配置文件之间的关系。优化器使用SQL概要文件和环境来生成执行计划。在此示例中,该计划在该语句SQL计划基线中。

图26-1 SQL配置文件


如果优化程序环境或SQL配置文件发生更改,则优化程序可以创建新计划。随着表的增长,或者索引的创建或删除,SQL概要文件的计划可能会更改。即使相应语句的数据分配或访问路径发生了变化,该配置文件仍然是相关的。

通常,您不需要刷新SQL配置文件。但是,随着时间的流逝,个人资料内容可能会过时。在这种情况下,SQL语句的性能可能会下降。该语句可能显示为高负载或顶级SQL。在这种情况下,“自动SQL调整”任务再次将语句捕获为高负载SQL。您可以为该语句实现新的SQL配置文件。

也可以看看:

 

26.1.2.3 SQL配置文件建议

SQL Tuning Advisor调用自动优化优化器以生成SQL配置文件建议。

在发现中出现了实施SQL配置文件的建议,该发现出现在SQL Tuning Advisor报告的单独部分中。当您实现(或接受)SQL概要文件时,数据库将创建该概要文件并将其永久存储在数据字典中。但是,SQL配置文件信息不会通过常规词典视图公开。

示例26-1 SQL配置文件建议

在此示例中,数据库为SELECT使用多个昂贵联接语句找到了更好的计划数据库建议运行DBMS_SQLTUNE.ACCEPT_SQL_PROFILE以实现概要文件,这使该语句的运行速度提高了98.53%。

-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
 
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
  A potentially better execution plan was found for this statement. Choose
  one of the following SQL profiles to implement.
 
  Recommendation (estimated benefit: 99.45%)
  ------------------------------------------
  - Consider accepting the recommended SQL profile.
    execute dbms_sqltune.accept_sql_profile(task_name => 'my_task',
            object_id => 3, task_owner => 'SH', replace => TRUE);
 
  Validation results
  ------------------
  The SQL profile was tested by executing both its plan and the original plan
  and measuring their respective execution statistics. A plan may have been
  only partially executed if the other could be run to completion in less time.
 
                           Original Plan  With SQL Profile  % Improved
                           -------------  ----------------  ----------
  Completion Status:             PARTIAL          COMPLETE
  Elapsed Time(us):            15467783            226902      98.53 %
  CPU Time(us):                15336668            226965      98.52 %
  User I/O Time(us):                  0                 0
  Buffer Gets:                  3375243             18227      99.45 %
  Disk Reads:                         0                 0
  Direct Writes:                      0                 0
  Rows Processed:                     0               109
  Fetches:                            0               109
  Executions:                         0                 1
 
  Notes
  -----
  1. The SQL profile plan was first executed to warm the buffer cache.
  2. Statistics for the SQL profile plan were averaged over next 3 executions.

有时,SQL Tuning Advisor可能建议实现使用自动并行度(Auto DOP)功能的配置文件。仅当原始计划是串行计划并且并行执行可以显着减少长时间运行的查询所花费的时间时,才建议使用并行查询配置文件。

当建议使用Auto DOP的配置文件时,SQL Tuning Advisor会提供有关对报表中的SQL语句使用并行执行的性能开销的详细信息。对于并行执行建议,SQL Tuning Advisor可以提供两个SQL配置文件建议,一个建议使用串行执行,另一个建议使用并行。

以下示例显示了并行查询建议。在此示例中,并行度为7可显着改善响应时间,但代价是将资源消耗增加了近25%。您必须确定减少数据库吞吐量是否值得增加响应时间。

  Recommendation (estimated benefit: 99.99%)
  ------------------------------------------
  - Consider accepting the recommended SQL profile to use parallel execution
    for this statement.
    execute dbms_sqltune.accept_sql_profile(task_name => 'gfk_task',
            object_id => 3, task_owner => 'SH', replace => TRUE,
            profile_type => DBMS_SQLTUNE.PX_PROFILE);
 
  Executing this query parallel with DOP 7 will improve its response time
  82.22% over the SQL profile plan. However, there is some cost in enabling
  parallel execution. It will increase the statement's resource consumption by
  an estimated 24.43% which may result in a reduction of system throughput.
  Also, because these resources are consumed over a much smaller duration, the
  response time of concurrent statements might be negatively impacted if
  sufficient hardware capacity is not available.
 
  The following data shows some sampled statistics for this SQL from the past
  week and projected weekly values when parallel execution is enabled.
 
                                 Past week sampled statistics for this SQL
                                 -----------------------------------------
  Number of executions                                                   0
  Percent of total activity                                            .29
  Percent of samples with #Active Sessions > 2*CPU                       0
  Weekly DB time (in sec)                                            76.51
 
                              Projected statistics with Parallel Execution
                              --------------------------------------------
  Weekly DB time (in sec)                                            95.21

也可以看看:

 

26.1.2.4 SQL配置文件和SQL计划基准

您可以在有或没有SQL计划管理的情况下使用SQL配置文件。

SQL概要文件和SQL计划基线之间不存在严格的关系。如果语句在SQL计划基线中有多个计划,则SQL概要文件很有用,因为它使优化器可以选择基线中成本最低的计划。

也可以看看:

 SQL计划管理概述 

 

26.1.3 SQL配置文件的用户界面

Oracle企业管理器云控制(Cloud Control)通常将SQL配置文件作为自动SQL调整的一部分进行处理。

在命令行上,您可以使用DBMS_SQLTUNE程序包管理SQL配置文件要使用API,您必须具有ADMINISTER SQL MANAGEMENT OBJECT特权。

也可以看看:

 

26.1.4 SQL配置文件的基本任务

基本任务包括接受(实现)SQL配置文件,对其进行更改,列出它并删除它。

下图显示了基本的工作流程。

图26-2管理SQL配置文件

 

通常,您按以下顺序管理SQL配置文件:

  1. 实施推荐的SQL配置文件。
      
    “ 实现SQL配置文件 ”描述了此任务。
  2. 获取有关存储在数据库中的SQL配置文件的信息。

     列出SQL配置文件 描述了此任务。

  3. (可选)修改实现的SQL配置文件。

     更改SQL配置文件 描述了此任务。

  4. 不再需要已实施的SQL配置文件时,将其删除。

     删除SQL配置文件 描述了此任务。

要调整另一个数据库上的SQL语句,可以将SQL调整集和SQL概要文件都传输到单独的数据库。 传输SQL配置文件 描述了此任务。

也可以看看:

《 Oracle数据库PL / SQL软件包和类型参考》以获取有关DBMS_SQLTUNE软件包的 信息


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论