优秀是一种习惯 , 生活是一种过程, 放弃是一种智慧 , 缺点是一种恩惠。 爱好:看书/K歌/上网/游泳/汉服 哼着單身情歌,彈着藍色吉它,展示突然的自我 QQ:19636427 另觅:160左右的女孩

通过分析SQL语句的执行计划优化SQL 一

上一篇 / 下一篇  2008-08-04 11:34:11

8月8日,世界中心的鳥巢,來了一群鳥人,在開什麽鳥會,爭奪什麽鳥冠,耗盡百姓的血汗。

第1章 性能调整综述ITPUB个人空间,e h];cZQar
   ITPUB个人空间*OF_|,N.^,i0I
   Oracle数据库是高度可调的数据库产品。本章描述调整的过程和那些人员应与Oracle服务器的调整有关,以及与调整相关联的操作系统硬件和软件。本章包括以下方面:
w8Pg4\Pa2X701141l        谁来调整系统?
h1lw tbd#m701141l        什么时候调整?ITPUB个人空间4\ jg%H sLj/nu.z
l        建立有效调整的目标ITPUB个人空间_+Lb/Ef ^9}]
l        在设计和开发时的调整
-d p{*@ x$_c |701141l        调整产品系统ITPUB个人空间7k:N4~zn tR,P@
l        监控产品系统ITPUB个人空间2G;H V;ak[](_%t

4GT,Uj^c)j701141谁来调整系统:
kBaL7n'r4U3t701141  为了有效地调整系统,若干类人员必须交换信息并牵涉到系统调整中,例如:ITPUB个人空间;e,CSwl9eU5cl2F3|7l\
l        应用设计人员必须传达应用系统的设计,使得每个人都清楚应用中的数据流动.
]f T fUpk q1b|1YV$g701141l        应用开发人员必须传达他们选择的实现策略,使得语句调整的过程中能快速、容易地识别有问题的应用模块和可疑的SQL语句.ITPUB个人空间(Z:~'i$~?pNd*Ct
l        数据库管理人员必须仔细地监控系统活动并提供它们的资料,使得异常的系统性能可被快速得识别和纠正.ITPUB个人空间1To#^6SvL;s| a
l        硬件/软件管理人员必须传达系统的硬件、软件配置并提供它们的资料,使得相关人员能有效地设计和管理系统。
qD zSy&|701141
qi gt UE701141    简而言之,与系统涉及的每个人都在调整过程中起某些作用,当上面提及的那些人员传达了系统的特性并提供了它们的资料,调整就能相对的容易和更快一些。
"OB/u^O*amW701141
f%ESyJ8E"vkdJ-C701141     不幸的是,事实上的结果是:数据库管理员对调整负有全部或主要的责任。但是,数据库管理员很少有合适的系统方面的资料,而且,在很多情况下,数据库管理员往往是在实施阶段才介入数据库,这就给调整工作带来许多负面的影响,因为在设计阶段的缺陷是不能通过DBA的调整而得以解决,而设计阶段的缺陷往往对数据库性能造成极大的影响。
K'p*Xk&m3S(T701141      其实,在真正成熟的开发环境下,开发人员作为纯代码编写人员时,对性能的影响最小,此时大部分的工作应由应用设计人员完成,而且数据库管理员往往在前期的需求管理阶段就介入,为设计人员提供必要的技术支持。ITPUB个人空间;v)t%b3v$F3d;Rh
调整并不是数据库管理员的专利,相反大部分应该是设计人员和开发人员的工作,这就需要设计人员和开发人员具体必要的数据库知识,这样才能组成一个高效的团队,然而事实上往往并非如此。ITPUB个人空间n#M$z ujCI"_

H4eV8O Oo701141什么时候作调整?
CW YraH4t ^701141     多数人认为当用户感觉性能差时才进行调整,这对调整过程中使用某些最有效的调整策略来说往往是太迟了。此时,如果你不愿意重新设计应用的话,你只能通过重新分配内存(调整SGA)和调整I/O的办法或多或少地提高性能。Oracle提供了许多特性,这些特性只有应用到正确地设计的系统中时才能够很大地提高性能。
;yNq+Zf6]^E x701141ITPUB个人空间9{W._l5zz
      应用设计人员需要在设计阶段设置应用的性能期望值。然后在设计和开发期间,应用设计人员应考虑哪些Oracle 特性可以对系统有好处,并使用这些特性。ITPUB个人空间)cl$PkFl;c
通过良好的系统设计,你就可以在应用的生命周期中消除性能调整的代价和挫折。图1-1图1-2说明在应用的生命周期中调整的相对代价和收益,正如你见到的,最有效的调整时间是在设计阶段。在设计期间的调整能以最低的代价给你最大的收益。ITPUB个人空间v.Prfq["y9e5R5W

EA2z2y8xQ}?701141ITPUB个人空间Z } [3fj-V.Y[
图1-1 在应用生命周期中调整的代价 
If-}tR701141
-|*F;yS-[701141
NX-f2s7L [701141ITPUB个人空间|2A2wV(}MK
      图1-2  在应用生命周期中调整的收益ITPUB个人空间4H9N~F!]-{ y
   
T"b5S1A[/W$v3V q[701141    当然,即使在设计很好的系统中,也可能有性能降低。但这些性能降低应该是可控的和可以预见的。
oDP$E5S'K$S-q701141
i\.zZ-Rs@{y701141调整目标
1['ok7cr9x @+a+C701141      不管你正在设计或维护系统,你应该建立专门的性能目标,它使你知道何时要作调整。如果你试图胡乱地改动初始化参数或SQl 语句,你可能会浪费调整系统的时间,而且无什么大的收益。调整你的系统的最有效方法如下:
*A"@&ays5FV-nW7f'q*J701141l        当设计系统时考虑性能
L1r\8^MR3}W*u^701141l        调整操作系统的硬件和软件
j0d T*z-i$^YG[m!m701141l        识别性能瓶颈
Y7V%ogE u-Ep F701141l        确定问题的原因ITPUB个人空间Srcj"BL g2ZR
l        采取纠正的动作ITPUB个人空间:[m6]&[(yy2Y~
当你设计系统时,制定专门的目标;例如,响应时间小于3秒。当应用不能满足此目标时,识别造成变慢的瓶颈(例如,I/O竞争),确定原因,采取纠正动作。在开发期间,你应测试应用研究,确定在采取应用之前是否满足设计的性能目标。ITPUB个人空间D vkam7{}:Hb0N_rW

"@'z _4q%w0o,p4m701141     当你正在维护生产库系统时,有多种快速有效的方法来识别性能瓶颈。
w/J1lk9e701141不管怎样,调整通常是一系列开销。一旦你已确定了瓶颈,你可能要牺牲一些其它方面的指标来达到所要的结果。例如,如果I/O有问题,你可能需要更多内存或磁盘。如果不可能买,你可能要限制系统的并发性,来获取所需的性能。然而,如果你已经明确地定义了性能的目标,那用什么来交换高性能的决策就变的很容易的,因为你已经确定了哪些方面是最重要的,如过我的目标为高性能,可能牺牲一些空间资源。ITPUB个人空间u)`;t b"I%J
ITPUB个人空间C `7f"L]2v3U
     随着应用的越来越庞大,硬件性能的提高,全面的调整应用逐渐变成代价高昂的行为,在这样情况下,要取得最大的投入/效率之比,较好的办法是调整应用的关键部分,使其达到比较高的性能,这样从总体上来说,整个系统的性能也是比较高的。这也就是有名的20/80原则,调整应用的20%(关键部分),能解决80%的问题。ITPUB个人空间+X0y zBGr"[-jF0eE
ITPUB个人空间5C n*R,Gp} \8e[eup
在设计和开发系统时作调整ITPUB个人空间*K'NlDk6S0JNs
     良好设计的系统可以防止在应用生命周期中产生性能问题。系统设计人员和应用开发人员必须了解Oracle的查询处理机制以便写出高效的SQL语句。“第2章 有效的应用设计”讨论了你的系统中各种可用的配置,以及每种配置更适合哪种类型的应用。“第5章 优化器”讨论了Oracle的查询优化器,以及如何写语句以获取最快的结果。ITPUB个人空间 R0y3m9c1dp
ITPUB个人空间&Tu\6D6K4vk g&`
当设计你的系统时,使用下列优化性能的准则:ITPUB个人空间[*xuC2i+?0l\ n
l        消除客户机/服务器应用中不必要的网络传输。-- 使用存储过程。ITPUB个人空间+h4G Z)u O`~1~@
l        使用适合你系统的相应Oracle服务器选件(例如,并行查询或分布式数据库)。
5xi ZA}p ~701141l        除非你的应用有特殊的需要,否则使用缺省的Oracle锁。
eN:U*` ] a1Q&oA2o701141l        利用数据库记住应用模块,以便你能以每个模块为基础来追踪性能。ITPUB个人空间mO0[8b2W*j
l        选择你的数据块的最佳大小。  -- 原则上来说大一些的性能较好。ITPUB个人空间.t1{4[ O.Rd
l        分布你的数据,使得一个节点使用的数据本地存贮在该节点中。ITPUB个人空间;Uo$z&G&Tx8b\p4^

eJ.@`QM M-l F701141调整产品系统ITPUB个人空间-MyC't`#a X4L
     本节描述对应用系统快速、容易地找出性能瓶颈,并决定纠正动作的方法。这种方法依赖于对Oracle服务器体系结构和特性的了解程度。在试图调整你的系统前,你应熟悉Oracle调整的内容。ITPUB个人空间:`'_&j[G"_ ?p"S

h0o&T W-E E701141为调整你已有的系统,遵从下列步骤:ITPUB个人空间3di8kD D.|%J
l        调整操作系统的硬件和软件
h${~/^xG9EDk701141l        通过查询V $SESSION_WAIT视图,识别性能的瓶颈,这个动态性能视图列出了造成会话(session)等待的事件。ITPUB个人空间:Y/@#w1j&@N
l        通过分析V $SESSION_WAIT中的数据,决定瓶颈的原因。
VT)d`5p701141l        纠正存在的问题。ITPUB个人空间,oZ0^)X5B~$T3X ?]

[^!~;X*g!J701141监控应用系统ITPUB个人空间 l2Jc_ A.k`Q
这主要是通过监控oracle的动态视图来完成。ITPUB个人空间k~Q7D"u/u Z
各种有用的动态视图:如v$session_wait, v$session_event等。
` {$~zF5b701141


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2008-11-24  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

数据统计

  • 访问量: 4786
  • 日志数: 92
  • 建立时间: 2007-12-18
  • 更新时间: 2008-11-23

RSS订阅

Open Toolbar