转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> ORACLE >> 正文
Oracle Tuning (Oracle 性能调整)的一些总结         ★★★★

Oracle Tuning (Oracle 性能调整)的一些总结

作者:闵涛 文章来源:闵涛的学习笔记 点击数:5116 更新时间:2009/4/22 22:02:49
3  2     HASH JOIN (OUTER)
4  3      TABLE ACCESS (FULL) OF ''''BOOK'''' (Cost=1 Card=20 Bytes=1280)
5  3      TABLE ACCESS (FULL) OF ''''SALES'''' (Cost=1 Card=100 Bytes=1800)


-- 使用了三个正确的子查询
select
  book_title
from
  book
where
  book_title not in (
                select
                distinct
                  book_title
                from
                  book,
                  sales
                where
                  book.book_key = sales.book_key
                and
                  quantity > 0);

Execution Plan
----------------------------------------------------------
0   SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=59)
1  0  FILTER
2  1   TABLE ACCESS (FULL) OF ''''BOOK'''' (Cost=1 Card=1 Bytes=59)
3  1   FILTER
4  3     NESTED LOOPS (Cost=6 Card=1 Bytes=82)
5  4       TABLE ACCESS (FULL) OF ''''SALES'''' (Cost=1 Card=5 Bytes=90)
6  4       TABLE ACCESS (BY INDEX ROWID) OF ''''BOOK'''' (Cost=1 Card=1)
7  6         INDEX (UNIQUE SCAN) OF ''''PK_BOOK'''' (UNIQUE)

我们看到,正确的SQL语句写法产生的执行计划是如此的不同。明智的开发人员知道如何去编写能够产生最好执行计划的SQL语句,明智的Oracle应用系统也会主动训练开发人员去编写最有效的SQL语句。

下面是一些帮助开发人员优化SQL语句的技巧:
1、 使用 autotrace 和 TKPROF 功能去分析SQL语句的执行计划;
2、 保证所有生产环境中的SQL语句都是在测试环境中经过优化的;
3、 制定一个性能优化的标准,而不是只要求开发人员编写出最快的SQL语句。根据这种标准,好的开发人员应该能够写出最有效的SQL语句。

●谨慎管理CBO统计数据
成功的Oracle系统会谨慎管理他们的CBO统计数据,以保证CBO在测试环境和生产环境中以同样的方式工作。一个聪明的DBA会在得到高质量的CBO统计数据以后,把这些统计数据移植到测试环境中,这样SQL语句的执行计划在测试环境和生产环境中就是一样的了。

对DBA来说,一个重要的工作就是收集和发布CBO统计数据,并随时保持一套当前运行环境的最精确的统计数据。在一些情况下,可能会有不止一套的优化统计数据。比如,对OLTP运行的最好的统计数据可能对数据仓库运行却不是最好的,在这种情况下,DBA就需要保持两套统计数据,并根据不同的运行条件导入系统。

可以使用 dbms_stats 包中的 export_system_stats 存储过程来完成CBO统计数据的导出。下面的例子中,我们把当前CBO统计数据导出到一张名叫 stats_table_oltp的表中。
dbms_stats.export_system_stats(‘stats_table_oltp’)

导出以后,我们就可以把这张表拷贝到别的实例中,当系统的运行模式改变以后,使用 dbms_stats 包中的 import_system_stats 存储过程来完成CBO统计数据的导入。
dbms_stats.import_system_stats(‘stats_table_oltp’)

●千万不要随便改动CBO参数的值
改动CBO相关参数的值是非常危险的,因为一个小小的改动可能就会对整个系统的执行性能带来极大的负面影响,只有在经过严格的系统测试以后才能改动这些参数的值。可能带来极大影响的参数值包括:optimizer_mode, optimizer_index_cost_adj, and optimizer_index_caching。而其他参数,比如 hash_area_size , sort_area_size,参数值的改变就不是那么危险了,可以在会话级进行改变以帮助CBO优化查询。

●保证静态的执行计划
成功的CBO应用会通过谨慎管理统计数据来锁定SQL执行计划,同时保证存储的优化计划的稳定性,或者在具体的SQL语句中加入一些细节上的提示。
记住:重新分析一个系统的统计数据,可能会导致成千上万的SQL语句改变其执行计划。许多Oracle应用系统要求所有的SQL语句在测试环境中经过验证,保证在功能上和生产环境是一致的。


2.4.4  CBO的思考
尽管我们已经对CBO的不少细节有了了解,但是由于随着Oracle新版本的不断推出,CBO变得越来越强大,同时也越来越复杂,我们仍然有许多关于CBO的知识需要学习。
下面是一些关于CBO调整的提纲性的建议,供准备进行CBO调整的DBA们思考。

●DBA可以提供一些Oracle参数的配置对CBO进行控制,但是只能在有限的环境下谨慎的改变这些参数;

●CBO依靠统计数据来产生SQL语句的优化的执行计划,可以通过 dbms_stats 包来分析、产生统计数据;

●DBA们的一项重要任务就是收集、管理CBO统计数据,这些数据可以被收集、存储,也可以在相关的实例中进行移植,以保证执行计划的连贯性。

●在没有使用 export_system_stats 存储过程导出原来的统计数据以前,重新对系统的统计数据进行分析是十分危险的,因为成千上万的SQL语句的执行计划将可能全部改变,而你却不能恢复原来的 SQL性能。只有在系统的数据发生巨大变化时,才可能需要对整个系统的统计数据进行重新分析。


本小节是关于CBO的一些技术讨论,原文来自 Donald K. Burleson 在OTN上的一篇文章,具体URL路径是:
http://otn.oracle.com/oramag/webcolumns/2003/techarticles/burleson_cbo_pt1.html

注:以上内容来源http://www.cnblogs.com/binary/archive/2005/04/02/131033.html 葛宏宾的专栏

上一页  [1] [2] [3] [4] [5] [6] [7] 


[系统软件]EXP-00008: ORACLE error 904 encountered的解决方…  [常用软件]PB7 连接 Oracle 的配置方法
[Web开发]oracle Export and Import 简介  [Web开发]ADO访问Oracle结果集的心得
[JAVA开发]JDBC+Hibernate将Blob数据写入Oracle  [JAVA开发]J2EE应用中与Oracle数据库的连接
[JAVA开发]Oracle Application Serve_  [其他]HP-UXrx2600B.11.22Uia64安装oracle9i9.2foria64手…
[其他]在RedhatEnterpriseserver3上安装oracle9iR2的注意…  [其他]PROC++批量导入导出ORACLE数据库表
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台