ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 一些可以预见的Oracle应用程序性能调优 (2)

一些可以预见的Oracle应用程序性能调优 (2)

原创 Linux操作系统 作者:idba 时间:2008-04-16 22:21:45 0 删除 编辑

藏宝图

在Oracle性能调优级上,藏宝图就是v$sqlarea视图。如果我是一个IT管理者,我将会记住这个视图的名字。并且,每当我在大厅遇见我的数据库管理员时,我都会问他们这周他们查询这个视图的次数。

Metalink 注释 235146.1给出了对这个视图进行查询的一些样例。例如:

select sql_text, executions, buffer_gets, disk_reads, rows_processed,

sorts, address, first_load_time, HASH_VALUE, module

from v$sqlarea

where executions > 0

order by reads_per desc

最近,越来越多的Oracle 9i版本加入了模块(MODULE)这个列,该列揭示了Oracle应用程序的模块名称。

统计包

在很多大型企业中,统计包的使用仍然被忽视。这可能是带有胁迫性的报道。不要犯试图仅仅读取输出结果,就能获取所有信息的错误,即使是第一页就足以告诉你这份报道中剩下的你应该重视的10%在哪儿。Oracle 9.2版本的统计包,现在包含CPU和消耗时间列。以前,为了将长时间运行的SQL语句排序到最顶端,我们不得不开启“追踪”,连接追踪文件,并将它们交付程序tkprof来处理。对于那些一个简单的“追踪”就要处理多达10GB数据的大型企业而言,这是不现实的。

让用户参与到性能调优中去

将这条建议(即,让用户参与到性能调优中去)写入书中的人应该因其创造性而得到赞誉。让你的用户也参与到性能诊断中去。购买一台Oracle应用程序评测个人电脑,并把它给用户使用。不要使用与个人电脑类似的配置好的笔记本,因为在同样规范的情况下,笔记本没有个人电脑的同样性能特性。配置清单如下:

* 750 MB CPU

* 256 MB 内存

* Windows 2000 企业版(第四版)

* 使用独立的逻辑磁盘

* Jinitiator-锁定版

* 标准软件,例如Office 2003

供评测用的个人电脑不需要以下配置:

* 墙纸

* 屏幕截图

* 工具条

* 常驻程序

将评测用个人电脑送上用户的桌面,带着性能问题。将用户的电脑接入局域网,让用户工作一段时间。然后,再将用户的电脑放进计算机房间,并把它接入中间层,让用户在它上面进行更多的工作。评测用个人电脑消除了用户方对Oracle应用程序性能的主观性,同时也消除了面对用户抱怨性能问题你们的主观性。

索引计数和性能

回到70年代,开发者指南基本上说不要在一个表上建立4到5个索引。今天,开发者指南上的注释如下:

Oracle不限制在一个表上建立索引的个数。尽管如此,你需要考虑索引所带来的性能改善,以及你的数据库应用程序的实际需要,从而决定需要对哪些列建立索引。

事实是:每个Oracle应用程序表可能包含30多个索引。如果我们加入一个索引能将经常需要的SQL语句的输入输出减少,我们会不考虑高索引计数的问题而加入这个索引。

CPU

减小并发管理池的宽度,至今我们还没发现这会阻塞任务的进行。我们经常会看到的情景是:减小并发管理池的宽度实际上增加了批处理任务的吞吐量,它也使CPU不那么忙碌。有许多包含对等进程的任务必须被完成。如果一个任务的池宽度过窄,所需的任务可能永远也得不到处理,从而阻塞整体任务。

我们和Oracle应用程序安装小组、培训者打过交道,他们喜欢增加并发管理池的宽度,而无视对CPU的影响,这种设置一直保持到产品发布时仍然存在。在训练和测试环境中,安全问题的大门是开着的,并且安装者增加并发管理池的宽度以期望他们的批处理任务可以尽早完成。他们这样做或许根本没有考虑到对CPU的影响,CPU可能会因此而被完全占用。

CPU运行队列不应该比你的CPU计数的两倍还深。如果CPU在一天中被经常性完全占用,就必须放弃某些设置。寻找这个需要被放弃的设置的第一位置就应该是并发管理池。

结论:

Oracle日常维护和性能调优,不是单纯的技术,指定科学严谨的管理维护计划更重要,一定要将调优,维护过程中的所有为难题记录,形成文档,在知识经验上得到积累,不至于同样的错误犯两次;

记录运行日志,什么时候系统性能差,速度慢;然后分析找出原因,指定解决的办法;

调优分两部分:

一.应用层,包括逻辑数据库结构,数据库操作,访问路径(SQL),内存分配等.优化的方法有,分解大表,修改关键表结构,分析应用层的sql语句,优化,使之达到最优执行;配置参数,恰当地分配内存;定期分析,重建索引,移动表,消除碎片;

二.系统层,包括输入输出和物理数据库结构,资源竞争,底层操作系统平台等;根据系统应用的规模,选择恰当的文件系统,这样可以达到减少io操作的次数;操作系统是支撑大规模的吞吐量,window是微内河,linux/unix是宏内核,造成了在系统内进程间通信的速度和操作性能的差异等.

根据需求->指定运维计划->分析运行日志->更该运行计划->分析运行日志....这样一个反复的过程。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/1384/viewspace-239005/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-03-25

  • 博文量
    210
  • 访问量
    391057