能优化简要培训手册.doc_第1页
能优化简要培训手册.doc_第2页
能优化简要培训手册.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQL优化简要培训手册1 性能优化的目的和必要性在一个数据库应用当中,SQL调整是整个数据库调整当中最花费时间并且最优挑战性的操作。每一个SQL语句都必须进行单独的调整,并且这些调整必须使用提示。另外,SQL调整对ORACLE性能有着直接的正面影响。优化过的SQL通常可以使查询速度翻3倍以上。网管系统目前运行速度较慢,无论是前端界面查询还是数据处理。这里面很大部分是因为SQL编写的不规范,导致数据库操作速度偏慢。实际上网管系统如今可以稳定运行,已经经过那几次大的SQL优化,一次是指标组优化,一次是NOKIA性能预处理优化,一次是原始数据处理。这几次优化的效果都非常显著。以指标组优化为例,原先全省GSM报表生成要将近半个小时时间,目前不到3分钟即可。正如前面提到的,SQL优化是一个繁琐的工作,需要每一个人都参与到其中来,否则数据库的运行效率将越来越慢;同时,如果大家都注意对SQL进行优化,那么这又是一种提升系统运行效率的最有效快捷的途径。今天编写这份文档,简要的介绍一下SQL优化,更加详细的优化方法请参见杨辉凤的ORACLE高性能SQL调整.2 SQL优化简介ORACLE本身自带有两种SQL优化器,一种是基于规则的,这也是缺省的;另外一种是基于成本的,也就是我们要掌握的。通常情况下,基于规则的优化器可以很好的稳定的工作,但是基于成本的优化器可以更有效率的工作。2.1 成本优化器简介基于成本的优化器简单的说就是通过一系列的提示来告知数据库如何执行SQL。常用的提示如下:all_rows:这是一个基于成本的方法,它用来提供最佳的总体吞吐量和最少的资源消耗。and_equal:这个提示将引发25个单独字段索引的合并扫描。cluster(table_name):这个提示要求一个table_name的簇扫描。first_rows:这是一个基于成本的方法,它用来提供最快的反应时间。full:提个提示要求忽略索引并执行一个全表扫描。hash(table_name):这个提示将引发对table_name的散列扫描。hash_aj:这个提示放置于not in子查询中,并执行散列反连接(antijoin)。index(table_name index_name) :这个提示要求对表使用指定的索引。如果没有指定索引,oracle将选择最佳的索引。当多表关联有别名时,一定要用别名。index_asc(table_name index_name):这个提示要求在范围扫描操作中使用升序索引。index_combine(table_name index_name):这个提示要求使用指定的位图索引。index_desc(table_name index_name):这个提示要求在范围扫描操作中使用降序索引。merge_aj:这个提示放置于not in子查询中,并执行反连接。no_expand:。no_merge:这个提示在一个视图中使用,它用于阻止该视图合并到一个父查询。nocache:这个查询将导致忽略table cache选项。noparallel:这个提示将关闭并行查询选项。ordered:这个提示将要求表按照指定的顺序(从左到右)进行连接。parallel(table_name degree) :对于全表扫描来说,这个提示将要求以带有服务于表访问的degree过程的并行模式执行查询。push_subq:这个提示将导致查询区中所有的子查询在尽可能早的时间内执行。rowid:这个提示将对指定的表执行ROWID扫描。rule:这个提示将指定调用基于规则的优化器。star:这个提示将使用星型连接查询。use_concat:这个提示将要求所有的OR条件使用UNION ALL操作。use_hash(table_name1 talbe_name2):这个提示将对指定的表执行散列连接。use_merge:这个提示将要求排序合并操作。use_nl(table_name) :这个提示将对指定的做为驱动表的表执行嵌套循环操作。2.2 优化经验 对于大表,最好要建索引,索引的建立与你所使用的SQL语句有关;可以通过指定index(table_name,index_name)强行使用索引 当大表与小表进行关联时,最好将小表作为基本表,将大表与小表进行关联,具体做法可以这样:(1)指定ordered;(2)将小表排在from后面的最前面,大表放最后面 小表与小表之间的关联可以指定use_hash(a,b)或use_merge(a,b),与大表关联时最好指定use_nl(a)。注:a,b代表表的别名 如果要进行全表扫描,可以指定full(tabe_name)以及parallel(table_name,devel) 建cluster 对大表按照关键字段做分区,对已经做分区的表查询时,尽量使用关键字段做为查询条件,并且避免对关键字段做函数操作。 时间查询尽量使用to_date函数而不是使用to_char函数。 缺省情况下,可以多使用first_rows提示,以获得最快响应。2.3 优化工具2.3.1 SQL分析工具通常的SQL分析工具可以使用PLSQL的Explain Plan Window。2.3.2 ORACLE分析工具可以使用TADO软件。TADO软件可以在190的soft inst目录下的QUEST.TOAD.XPERT.EDITION.V7.4.0.3获得。可以使用oracle的企业管理套件。安装软件在192.120.101.169shareto_h_clinstallA91662-01下。可以通过查询相关视图获得SQL的执行情况,SQL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论