[转]Oracle DB 通过SQL 优化管理性能

? 将SQL 优化指导用于:

– 确定使用资源最多的 SQL 语句

– 优化使用资源最多的 SQL 语句

? 使用SQL 访问指导优化工作量

  • SQL 优化

SQL 优化进程

? 确定没有很好地优化的SQL 语句。

? 优化各条语句。

? 优化整个应用程序。

一般情况下,效果最明显的优化工作是SQL 优化。没有很好地优化的SQL 会不必要地使用过多资源。这种低效率会降低可伸缩性、使用更多的OS
和数据库资源并增加响应时间。要对没有很好地优化的SQL
语句进行优化,必须先确定这些语句,然后再进行优化。可以分别对各条SQL
语句进行优化,但优化一条语句的解决方法经常会影响多条其它语句的性能。

顾名思义,使用资源最多的SQL 语句是需要优化的语句。这些语句的用时最长,使用的CPU
资源最多,或者物理或逻辑读取次数最多。

优化各条语句的方法是:检查优化程序统计信息,检查最高效的访问路径的解释计划,测试替代SQL
构造,以及测试可能的新索引、实体化视图和分区。

使用优化后的SQL 语句测试整个应用程序的性能。整体性能是否有所提高?

方法很可靠,但有些拖沓。优化单条语句并不难。测试各条语句优化对应用程序的整体影响可能非常困难。

在Oracle Database 11 g 中,可以使用一组SQL 指导来确定和优化语句(单独优化或集体优化)。

  • SQL 指导

Oracle Database 11 g 提供了一组SQL 指导:SQL 访问指导、SQL 优化指导、SQL 性能分析器和SQL
修复指导。AWR 可确定最近的高负荷SQL 语句并记录有关的统计信息。

SQL 优化指导可分析一个或多个SQL
语句(一次分析一个)。它会检查统计信息、SQL 概要文件、索引、实体化视图以及调整后的SQL 。SQL
优化指导可随时通过手动方式运行;但主要是在每个维护窗口期间针对最近的高负荷SQL
语句运行。单击“Automatic SQL Tuning Results(自动SQL
优化结果)”可查看和实施建议。可以对此自动作业进行配置,自动为高负荷语句实施建议的SQL 概要文件。

SQL 访问指导会考察应用到一组SQL 语句的更改,确定性能是否有净提高。这组语句可能是一组假想的SQL
语句,以往的语句或手动创建的语句。

SQL 性能分析器可用于预测和防止任何影响SQL 执行计划结构的数据库环境更改所带来的潜在性能问题。

SQL 修复指导是在某个SQL 语句因严重错误而失败时从支持工作台运行的。严重错误还会产生意外事件。修复指导会尝试查找并推荐一个SQL
补丁程序。如果未找到任何补丁程序,可以接着在支持工作台中打包意外事件,并将意外事件程序包作为服务请求(SR) 提交给Oracle
 技术支持部门。

  • 自动SQL 优化结果

默认情况下,自动SQL 优化任务在每天晚上运行。自动SQL 优化结果链接会显示结果概要页。如果单击“View
Report(查看报表)”,则可查看接受检查的每条SQL 语句。

单击“Configure(配置)”按钮会显示一个页面;在此页面中,可以更改自动优化任务的默认设置,并启用SQL
概要文件自动实施功能。

  • 实施自动优化建议

如果单击“Automatic Tuning Results Summary (自动优化结果概要)”页上的“View Report
(查看报表)”按钮,将显示“Automatic SQL Tuning Result Details (自动SQL
优化结果详细资料)”页。可以实施所有建议,或细化以查看或实施单个建议。

在“Recommendations(建议)”页上,可以单击右侧的眼镜图标查看实施SQL
概要文件会对解释计划产生的影响。

  • SQL 优化指导:概览

全面SQL优化

检测过时或缺少的统计信息

优化SQL 计划(SQL 概要文件)

添加缺少的索引

调整SQL 结构

SQL 优化指导是优化过程中使用的主要驱动程序。它可以执行多种类型的分析:

?
统计信息分析:检查每个查询对象是否缺少统计信息或统计信息是否过时,然后提出建议以收集相关的统计信息。

? SQL 概要分析:优化程序会验证它自身的估计值并收集辅助信息以消除估计错误。它使用辅助信息构建SQL
概要文件,并提出创建SQL 概要文件的建议。创建SQL 概要

文件后,查询优化程序便可以通过此文件生成合理优化的计划。

?
访问路径分析:考察新索引是否会显著改善对查询中的每个表的访问性能。如果合适,则会建议创建此类对象。

? SQL 结构分析:确定使用了错误计划的 SQL
语句,并提出对这些语句进行结构调整的相关建议。建议的更改可能涉及语法方面的更改,也可能涉及语义方面的更改。

SQL 优化指导会分别考察指导任务中包括的每个SQL 语句。创建一个新索引可能会对查询有帮助,但也可能增加DML
的响应时间。因此,应使用SQL 访问指导检查建议的索引或其它对象对工作量(一组SQL
语句)的影响,以确定性能是否有净提高。

  • 使用SQL 优化指导

? 使用SQL 优化指导可分析SQL 语句,并获得性能建议。

? SQL 优化指导分析的来源:

– 顶级活动:分析当前处于活动状态的顶级 SQL 语句

– SQL 优化集:分析用户提供的一组 SQL 语句

– 以往的SQL (AWR):分析 AWR 快照收集的 SQL 语句中的语句

SQL 优化指导会在每晚以自动SQL 优化任务的形式自动运行。有时,可能需要对某个SQL 语句立即进行优化操作。你可以随时使用SQL
优化指导分析SQL
语句,并获得性能建议。通常,运行此指导类似于使用ADDM 查找性能问题的操作。

此外,可以运行SQL 优化指导来分析哪些SQL 语句占用的CPU 时间、I/O  和内存最多。

即使在一项任务中提交了多条语句进行分析,对每条语句的分析仍是分别进行的。要获得考虑了一组SQL 语句的整体性能的优化建议,使用SQL
访问指导。

  • SQL 优化指导选项

在“Schedule SQL Tuning Advisor(调度SQL
优化指导)”页上,可以选择要包括的SQL 语句,以及更改优化任务的自动默认设置。可以设置SQL
语句的来源;如果有

ADVISOR系统权限,可以提交任务。随后,Oracle Enterprise Manager 会为SQL
优化指导创建一项优化任务。

通过SQL 语句选项,可以从以下来源中选择一条或多条SQL 语句:最近的顶级活动、AWR 中存储的以往的SQL 语句或者已创建的SQL
优化集。

选择优化任务的适当范围很重要。如果选择“Limited(有限制)”选项,SQL 优化指导会根据统计信息检查结果、访问路径分析结果和SQL
结构分析结果来生成建议。“Limited(有限制)”选项不会产生SQL
概要文件建议。如果选择“Comprehensive(综合)”选项,SQL
优化指导不仅会生成“Limited(有限制)”选项生成的所有建议,在SQL 概要分析模式下还会调用优化程序来构建SQL
概要文件。使用“Comprehensive(综合)”选项时,还可以指定优化任务的时间限制,该时间限制的默认值是30
分钟。选择“Run SQL Tuning Advisor(运行 SQL 优化指导)”之后,请使用“SQL Tuning
Options(SQL 优化选项)”页配置优化任务。

  • SQL 优化指导建议

任务的SQL 优化结果会在任务完成后即刻显示,也可以在以后通过“Advisor
Central(指导中心)”页访问这些优化结果。此时还会显示建议的概要。可以复查和实施单个建议。选择语句并单击“View(查看)”。

  • 使用SQL 优化指导:示例

可以通过执行以下步骤来调用SQL 优化指导:

1. 在“Database(数据库)”主页中,单击“Related Links(相关链接)”区域中的“Advisor
Central(指导中心)”。

2. 单击“SQL Advisors (SQL 指导)”。此时将出现“SQL Tuning Advisor
Links(SQL 优化指导链接)”页。

可以对以下任一来源运行该指导:

- Active SQL (活动SQL):分析当前活动的顶级 SQL 语句

- SQL Tuning Sets(SQL 优化集):分析用户提供的一组 SQL 语句

- Historical SQL (AWR) (以往的SQL (AWR)):分析AWR
快照捕获的SQL 语句

3. 选择“Active SQL (活动SQL
)”。选择要分析的五分钟间隔,方法是将灰色框拖到目标时间段上。请选择要在选定期间内分析的一条或多条语句。

4. 单击“Run SQL Tuning Advisor(运行 SQL 优化指导)”。此时会出现“SQL
Tuning Options(SQL 优化选项)”页,显示此时间间隔内的SQL 语句。提供任务的名称和

描述,选择“Comprehensive(综合)”作为范围,选择“Immediately(立即)”作为启动时间。单击“OK(确定)”。

5. 重新导航到“Advisor Central(指导中心)”页。指导任务的状态列于“Results
(结果)”区域中此标题的下面。请一直等待,直至任务状态变为已完成。通过单击浏览

器中的“Refresh(刷新)”检查状态。选择任务并单击“View Result (查看结果)”。此时会显示“SQL Tuning
Result (SQL 优化结果)”页。

6. 选择SQL 语句并单击“View Recommendations (查看建议)”。

  • 重复的SQL

重复的SQL
语句是指只是所用的文字值或格式有所不同的语句。每个不同的语句在库高速缓存中都会有一个单独的游标。如果将文字替换为绑定变量,并统一格式,则重复的语句可以使用相同的游标。

通过在“Additional Monitoring
Links(其他监视链接)”区域中单击“Performance(性能)”选项卡页上的“Duplicate SQL(重复的SQL
)”,可以确定重复的SQL 语句。已确定为重复的SQL
(不考虑格式或文字差异)会列在一起。这将有助于确定应用程序中的哪个SQL
可以合并,从而降低对库高速缓存的需求,提高语句的执行速度。

  • SQL 访问指导:概览

评估 SQL 的全部工作量, 并建议索引, 分区和实体化视图, 它们将改善 SQL 工作量的总体性能。

SQL 访问指导能够为给定工作量建议一组适当的实体化视图、实体化视图日志、分区和索引。了解和使用这些结构在优化SQL
时至关重要,因为这些结构在数据检索时能够极大地改善性能。

SQL 访问指导建议使用位图索引、基于函数的索引和B
 树索引。位图索引可减少许多类型的即席查询的响应时间,并且相对于其它索引技术而言降低了存储要求。B
 树索引在数据仓库中最为常用,用于为唯一关键字或接近唯一的关键字编制索引。

SQL 访问指导的另一个组件还提供了优化实体化视图的建议,使这些视图可以快速刷新并利用常规查询重写。

  • 典型的SQL 访问指导会话

启动SQL 访问指导会话时,可以选择“Use Default
Options(使用默认选项)”,以一组建议的预定义指导选项开始。此外,还可以选择“Inherit Options from a Task or
Template(从任务或模板继承选项)”来启动任务,并使该任务继承一组由模板或任务定义的选项值。这些模板包括多个针对通用环境、OLTP
 和数据仓库数据库设计的通用模板。你可以保存先前任务中的定制模板并在需要时重新使用。

单击“Continue (继续)”启动SQL 访问指导向导。

  • 工作量来源

使用SQL 访问指导向导的“Workload
Source(工作量源)”页提供已定义的工作量,以便访问指导可以生成建议。支持的工作量源包括:

? Current and Recent SQL Activity(当前和最近的SQL 活动):使用高速缓存中的当前SQL
作为工作量

? Use an existing SQL Tuning Set(使用现有的SQL 优化集):可以将先前创建的
SQL 优化集指定为工作量源

? Create a Hypothetical Workload from the Following Schemas and Tables
(从下列方案和表创建假想工作量):提供方案以便访问指导可以搜索维表并生成工作量

通过应用“Filter Options
(过滤器选项)”部分中的可用过滤器,可以进一步缩小工作量的范围。使用这些选项,可以缩小出现在工作量中的SQL
语句的范围。指导将过滤器应用于工作量后,可以对重点部分进行优化。

可用的过滤器选项包括:

? 消耗资源最多的SQL 语句

? 用户、模块标识符或操作

? 表

  • 建议选项

使用“Recommendations Options (建议选项)”页可以选择是否限制指导基于单个访问方法提出建议。从“Access
Structures to Recommend(要推荐的访问结构)”部分选择“Indexes(索引)”、“Materialized
Views (实体化视图)”、“Partitioning (分区)”或者上述各项的任意组合。可以选择“Evaluation
Only(仅评估)”,从而只评估现有的访问结构。在此模式下,指导不生成新的建议,而是就现有结构的使用提出意见。此项在跟踪当前索引、实体化视图的有效性和MV
日志使用率随时间变化方面非常有用。

可以使用“Advisor Mode
(指导模式)”部分,以两种模式之一运行指导。这些模式会影响建议的质量和处理所需的时间。在“Comprehensive(综合)”模式中,指导将搜索候选的大型池,以便得到最高质量的建议。在“Limited(有限制)”模式中,指导执行速度很快,但是会限制候选建议。

可以选择“Advanced
Options(高级选项)”来显示或隐藏选项,这些选项可用于设置空间限制、优化选项和默认存储位置。使用“Workload
Categorization(工作量类别)”部分可以设置“Workload
Volatility(工作量不稳定性)”和“Workload
Scope(工作量范围)”选项。生成建议时,可以选择关注只读操作,或者考察被引用对象的不稳定性。你还可以选择“Partial
Workload (部分工作量)”,其中不包括删除未使用的访问结构的建议;或者选择“Complete
Workload(全部工作量)”,其中包括删除未使用的访问结构的建议。

使用“Space
Restrictions(空间限制)”部分可指定硬性空间限制,强制指导仅使用不超过指定限制的总空间要求生成建议。

使用“Tuning Options(优化选项)”部分可指定相关选项对指导生成的建议进行定制。

使用“Prioritize Tuning of  SQL Statements by(确定优化SQL
语句优先级的依据)”下拉列表,可以按“Optimizer Cost(优化程序开销)”、“Buffer Gets
(缓冲区获取数)”、“CPU Time(CPU 时间)”、“Disk Reads(磁盘读取数)”、“Elapsed
Time(用时)”和“Execution Count (执行计数)”划分优先级。

使用“Default Storage
Locations(默认存储位置)”部分可以覆盖为方案和表空间位置定义的默认值。默认情况下,索引放置在所引用表的方案和表空间中。实体化视图放置在相应用户的方案和表空间中,该用户执行的某一个查询为实体化视图建议提供了信息。

定义了这些参数以后,可以调度和复查优化任务。

  • 复查建议

使用“Advisor Central(指导中心)”页可以列出所有已完成的SQL 访问指导任务。选择要查看建议的任务,然后单击“View
Result (查看结果)”按钮。使用“Results for Task(任务结果)”的“Summary
(概要)”页,可以访问指导查找结果的概览。该页中给出了图表和统计信息,提供了建议可能对整体工作量性能和查询执行时间产生的改进。使用该页可以显示语句计数和建议操作计数。

要查看指导任务结果的其它方面,可单击该页上其它三个选项卡之一:“Recommendations(建议)”、“SQL
Statements(SQL 语句)”或“Details (详细资料)”。

“Recommendations(建议)”页中提供了一个图表和一个表,其中按建议对整个工作量总开销的改进百分比显示顶级建议。顶级建议对总体性能的改进幅度最大。

单击“Show SQL(显示SQL )”按钮,可以查看为所选建议生成的SQL
脚本。在表中单击相应的建议标识符,可以查看实施建议所需执行的操作列表。在“Actions(操作)”

页上,可以查看实施操作需要执行的所有相应SQL 语句。对于不希望实施的建议,请使对应的复选框处于未选中状态。然后,单击“Schedule
Implementation(安排实施)”按钮来实施保留的操作。此步骤以调度程序作业的形式执行。

  • SQL 性能分析程序:概览

? 目标用户:DBA、QA、应用程序开发人员

? 帮助预测系统更改对SQL 工作量响应时间的影响

? 构建不同版本的SQL 工作量性能数据(即SQL 执行计划和执行统计信息)

? 以串行方式执行SQL(不考虑并发)

? 分析性能差异

? 针对单个SQL 提供细粒度性能分析

? 与SQL 优化指导相集成以优化回归

Oracle Database 11 g 包括SQL 性能分析程序,该工具可以准确地评估更改对构成工作量的SQL 语句的影响。SQL
性能分析程序有助于预测潜在的更改对SQL 查询工作量的性能影响。此功能可为DBA 提供有关SQL
语句性能的详细信息,如执行前后的统计信息,以及性能有所提高或降低的语句。这样您便可以(例如)在测试环境中进行更改,以确定数据库的升级是否会改进工作量性能。

  • SQL 性能分析程序:使用情形

SQL 性能分析程序可用于预测和防止任何影响SQL
执行计划结构的数据库环境更改所带来的潜在性能问题。这些更改可包括(但不限于)以下任何更改:

? 数据库升级

? 实施优化建议

? 方案更改

? 收集统计信息

? 更改数据库参数

? 更改操作系统和硬件

可以使用SQL 性能分析程序分析最复杂的环境更改所导致的SQL
性能变化。随着应用程序在开发生命周期中的推进,数据库应用程序开发人员可以测试对方案、数据库对象和重写应用程序的更改,以减轻任何潜在的性能影响。

SQL 性能分析程序还可以比较SQL 性能统计信息。

可以通过Oracle Enterprise Manager 或使用DBMS_SQLPA程序包访问SQL 性能分析程序。

  • 使用SQL 性能分析程序

1. 捕获生产环境的SQL 工作量。

2. 将SQL 工作量传输至测试系统。

3. 构建“更改前”性能数据。

4. 进行更改。

5. 构建“更改后”性能数据。

6. 比较步骤3  和步骤5  的结果。

7. 优化回归的SQL。

1. 收集SQL:在此阶段中,将收集代表生产系统中的 SQL 工作量的SQL 语句集。

2. 传输:必须将得到的工作量结果传输到测试系统。将 STS  从生产系统中导出,然后再导入测试系统。

3. 计算“之前版本”性能:在进行任何更改之前,先执行 SQL
语句,收集评估未来更改对工作量性能可能产生的影响所需的基线信息。

4. 进行更改:获得了之前版本数据后,即可实施计划的更改,然后开始查看对性能的影响。

5. 计算“之后版本”性能:在数据库环境中进行了更改之后,执行此步骤。SQL
工作量中的每个语句都在虚拟执行模式下运行(仅收集统计信息),收集与步骤3  所捕获的

相同的信息。

6. 比较和分析SQL 性能:在获得了两个版本的 SQL
工作量性能数据后,可以比较之后与之前版本的数据,进行性能分析。

7. 优化回归的SQL:在此阶段中,已经准确地确认了哪些SQL
语句在进行数据库更改时可能导致性能问题。你可以使用任何一种数据库工具来优化系统。在实施了任何优

化操作后,应重复该过程来创建新的之后版本数据,然后分析性能差异以确保新的性能是可接受的。

  • 小结

? 将SQL 优化指导用于:

– 确定使用资源最多的 SQL 语句

– 优化使用资源最多的 SQL 语句

? 使用SQL 访问指导优化工作量

来源:http://blog.csdn.net/rlhua/article/details/13021985

[转]Oracle DB 通过SQL 优化管理性能,布布扣,bubuko.com

时间: 2024-10-27 13:01:27

[转]Oracle DB 通过SQL 优化管理性能的相关文章

深入oracle 12c数据库备份与恢复(优化RMAN性能、Oracle flashback技术)

课程讲师:小流老师 课程分类:Oracle 适合人群:高级 课时数量:15课时 更新程度:完成 服务类型:C类(普通服务类课程) 用到技术:oracle 涉及项目:oracle 12c数据库备份与恢复 需要更多相关资料可以联系 Q2748165793 课程提纲 第一讲:介绍备份和恢复相关操作 备份和恢复的目标 备份和恢复的解决方案 Oracle flashback技术 第二讲:开始RMAN操作和RMAN体系架构 RMAN的环境 RMAN Channels RMAN Repository RMAN

oracle中的SQL优化

一.SQL语言的使用1.IN 操作符    用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格.    但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:    ORACLE试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询.    由此可见用IN的SQL至少多了一个转换的过程.一般的SQL都可以转换成功,但对于含有分组统计等方面

Oracle 的sql优化提高性能

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=0 3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用

【See】自动化SQL审核 SQL优化管理平台

缘起于上家公司DBA同学的执着意愿,在他们的感染和帮助下开发了这套MySQL上线平台. 平台的核心功能是SQL操作,SQL语句优化.可以做到这些点,得益于开源力量的强大,在此感谢开源项目Inception及SQLAdvisor团队! 1 开源项目简介Inception:一个集审核.执行.备份及生成回滚语句于一身的MySQL自动化运维工具. SQLAdvisor:基于MySQL原生态词法解析,结合分析SQL中的where条件.聚合条件.多表Join关系 给出索引优化建议.关于inception的意

[转]Oracle DB管理内存

? 描述SGA 中的内存组件 ? 实施自动内存管理 ? 手动配置SGA 参数 ? 配置自动PGA 内存管理 内存管理:概览 DBA 必须将内存管理视为其工作中至关重要的部分,因为: ? 可用内存空间量有限 ? 为某些类型的功能分配更多内存可提高整体性能 ? 自动优化的内存分配通常是正确的配置,但特定环境甚至短期情况下可能需要特别注意 由于数据库服务器上的可用内存量有限,因此,对于Oracle DB 实例,必须注意内存的分配情况.如果将过多的内存分配给没有此需求的特定区域使用,则很可能导致其它功能

Oracle DB管理内存

? 描述SGA 中的内存组件? 实施自动内存管理? 手动配置SGA 参数? 配置自动PGA 内存管理  内存管理:概览DBA 必须将内存管理视为其工作中至关重要的部分,因为:? 可用内存空间量有限? 为某些类型的功能分配更多内存可提高整体性能? 自动优化的内存分配通常是正确的配置,但特定环境甚至短期情况下可能需要特别注意 由于数据库服务器上的可用内存量有限,因此,对于Oracle DB 实例,必须注意内存的分配情况.如果将过多的内存分配给没有此需求的特定区域使用,则很可能导致其它功能区没有足够的

基于oracle的sql优化方法论

Oracle数据库里SQL优化的终极目标就是要缩短目标SQL语句的执行时间.要达到上述目的,我们通常只有如下三种方法可以选择: 1.降低目标SQL语句的资源消耗: 2.并行执行目标SQL语句: 3.平衡系统的资源消耗. "方法1:降低目标SQL语句的资源消耗"以缩短执行时间,这是最常用的SQL优化方法.这种方法的核心是要么通过在不更改业务逻辑的情况下改写SQL来降低目标SQL语句的资源消耗,要么不改SQL但通过调整执行计划或相关表的数据来降低目标SQL语句的资源消耗. 方法2:并行执行

对oracle中SQL优化的理解

Oracle数据库里SQL优化的终极目标就是要缩短目标SQL语句的执行时间.要达到上述目的,我们通常只有如下三种方法可以选择:1.降低目标SQL语句的资源消耗.2.并行执行目标SQL语句.3.平衡系统的资源消耗.方法1:a.在不更改业务逻辑的情况下改写SQL来降低目标SQL语句的资源消耗. b.不改写SQL但通过调整执行计划或相关表的数据来降低目标SQL语句的资源消耗.注意:走索引不一定比全表扫描好,例如在很多情况下走索引的嵌套循环连接的执行效率往往比不上走全表扫描的哈希连接的执行效率.方法2:

[转]Oracle DB 配置备份设置

? 使用Oracle Enterprise Manager 配置备份设置 ? 启用控制文件自动备份 ? 配置备份目标 ? 为磁带目标分配通道 ? 配置备份优化 ? 创建压缩备份 ? 创建加密备份 配置RMAN 的永久性设置 ? RMAN 有预设的默认配置设置. ? 使用CONFIGURE命令可以: – 配置自动通道 – 指定备份保留策略 – 指定要创建的备份副本数 – 将默认备份类型设置为BACKUPSET或COPY – 限制备份片段的大小 – 在备份中排除表空间 – 启用和禁用备份优化 – 配