oracle 性能基线,Oracle 11g:SQL性能分析器(一)(3)

1)准备模拟

我创建了一个新表SH.SALES_AGENTS,并装入了一套大约420,000行的样例数据,然后,我在该表上创建五个索引:一个在主键SALESPERSON_ID上的唯一性(UNIQUE)索引和四个附加的索引(典型地用于决策支持系统DSS或联机事务处理应用程序OLTP以加快减速速度),列表1.1包括了我创建表、索引和更新它们的基于成本的优化器统计的DDL(数据描述语言)语句,LoadSalesAgents.sql包括了DML语句。

2)准备收集SQL

接下来,我创建了几条SQL语句使用不同的执行计划访问SH.SALES_AGENTS表,注意我提供了几个不同的访问路径情景:有时候,我允许基于成本的优化器使用所有可用的索引选择最佳执行计划,另外的情况下,我使用不合适的优化提示完全覆盖基于成本的优化器,列表1.2展示了这些通过LDGN用户执行的SQL语句,列表1.3展示了我如何启动捕获这些简单的SQL语句进入一个叫做STS_SPA_100的SQL调整集(STS)。

3)创建一个“之前”的性能基线因为我之前的数据库映像现在已经准备好可以开始测试了,我创建一个SQL性能分析任务并让Oracle 11g决定任务的名字(TASK_69),如列表1.4展示的那样,这个新任务使用STS_SPA_100 SQL调整集作为SPA调整会话的输入,然后,我用存储过程DBMS_SQLPA.EXECUTE_ANALYSIS_TASK创建超前的性能基线映像。

4)修改数据库环境

一旦基线被成功创建,我将模拟最简单的修改情景,如列表1.5中例子,我移除了SH.SALES_AGENTS表的两个原始索引,然后我刷新了该表的统计数值。

5)创建一个“之后”的性能基线

要确定对这些原始索引改动的后果,相对与相同的工作量,我再次执行DBMS_SQLPA.EXECUTE_ANALYSIS_TASK存储过程,测试相同SQL调整集的执行,列表1.6展示了如何创建后面的性能基线。

6)比较“之前”的和“之后”的基线

最后,我执行列表1.7中的代码通过比较“之前”和“之后”的测试用例的结果判断修改的影响,然后,我通过象列表1.8中举例的那样调用DBMS_SQLPA.REPORT_ANALYSIS_TASK存储过程生成一个这些不同之处的简单的摘要报告。

◆有3条语句完全没有受到影响,即使移除了两条索引后也没有受到影响

◆意料之中的是,至少有1条SQL语句在索引移除后产生了消极的影响

◆但是,有4条SQL语句在移除2条索引后受到了明显的影响。这真的很有意义,因为这些语句是通过优化器提示强制使用这些索引的,这有助于提升它们原始的低劣的性能。

下一步

在本系列的下一篇文章中,我将讲述SQL性能分析器如何分析更复杂的Oracle数据库和环境的改变,包括一个说明如何分析一个经历从Oracle 10gR2环境转移到Oracle 11g环境的SQL工作负载的情景,我也将广泛地探讨如何使用Oracle数据库11g企业管理器(EM)控制面板提供的SQL性能分析器图形用户接口更容易地创建、执行和导航。

【51CTO.COM 独家翻译,转载请注明出处及作者!】

【责任编辑:于捷 TEL:(010)68476606】

6785eca0c56bd190bf40b9cf66d7c625.png

(0票)

3f8584ba3718a0e03c4aaa86689cb569.png

(0票)

da2ace28913c3d13ee0f496bbf2a720a.png

(0票)

d089b1a3cdcb667fe07fec79eaf24794.png

(0票)

854528b1908051d4128b6c01ca39a9a5.png

(0票)

2fee956e15795cfe1c8724976fc08be6.png

(0票)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值