首页 | IT科技 | 外语学习 | 论文大全 | 设计学院 | 管理营销 | 健康频道 | 美食天下 | 财经股市 | 资讯下载 | 论坛 | 博客
IT首页 | 前沿 | 基础 | 接入 | 交换 | 路由 | 安全 | 存储 | 传输 | 数据库 | 网管 | 方案 | 建站 | 编程 | 技巧 | RFC |
 
您现在的位置: 中华学习网 >> IT >> 数据库 >> Oracle >> 文章正文
转贴 oracle的调优
it.no1edu.net 佚名 不详 2006-12-15【字体:


过它们占SQL调优任务的100%,并且它们也无需完全懂得Oracle SQL的内部运作。以下我们来简单概览以下Oracle SQL的优化。
  我们首先简要查看Oracle的排序,并且看一看排序操作是如何影响性能的。

  调整Oracle的排序操作
  排序是SQL语法中一个小的方面,但很重要,在Oracle的调整中,它常常被忽略。当使用create index、ORDER BY或者GROUP BY的语句时,Oracle数据库将会自动执行排序的操作。通常,在以下的情况下Oracle会进行排序的操作:
  使用Order by的SQL语句
  使用Group by的SQL语句
  在创建索引的时候
  进行table join时,由于现有索引的不足而导致SQL优化器调用MERGE SORT
  当与Oracle建立起一个session时,在内存中就会为该session分配一个私有的排序区域。如果该连接是一个专用的连接(dedicated connection),那么就会根据init.ora中sort_area_size参数的大小在内存中分配一个Program Global Area (PGA) 。如果连接是通过多线程服务器建立的,那么排序的空间就在large_pool中分配。不幸的是,对于所有的session,用做排序的内存量都必须是一样的,我们不能为需要更大排序的操作分配额外的排序区域。因此,设计者必须作出一个平衡,在分配足够的排序区域以避免发生大的排序任务时出现磁盘排序(disk sorts)的同时,对于那些并不需要进行很大排序的任务,就会出现一些浪费。当然,当排序的空间需求超出了sort_area_size的大小时,这时将会在TEMP表空间中分页进行磁盘排序。磁盘排序要比内存排序大概慢14,000倍。
  上面我们已经提到,私有排序区域的大小是有init.ora中的sort_area_size参数决定的。每个排序所占用的大小由init.ora中的sort_area_retained_size参数决定。当排序不能在分配的空间中完成时,就会使用磁盘排序的方式,即在Oracle实例中的临时表空间中进行。
  磁盘排序的开销是很大的,有几个方面的原因。首先,和内存排序相比较,它们特别慢;而且磁盘排序会消耗临时表空间中的资源。Oracle还必须分配缓冲池块来保持临时表空间中的块。无论什么时候,内存排序都比磁盘排序好,磁盘排序将会令任务变慢,并且会影响Oracle实例的当前任务的执行。还有,过多的磁盘排序将会令free buffer waits的值变高,从而令其它任务的数据块由缓冲中移走。
  接着,让我们看一下Oracle的竞争,并且看一下表的存储参数的设置是如何影响SQL UPDATE和INSERT语句的性能的。

调整Oracle的竞争
  Oracle的其中一个优点时它可以管理每个表空间中的自由空间。Oracle负责处理表和索引的空间管理,这样就可以让我们无需懂得Oracle的表和索引的内部运作。不过,对于有经验的Oracle调优专家来说,他需要懂得Oracle是如何管理表的extent和空闲的数据块。对于调整拥有高的insert或者update的系统来说,这是非常重要的。
  要精通对象的调整,你需要懂得freelists和freelist组的行为,它们和pctfree及pctused参数的值有关。这些知识对于企业资源计划(ERP)的应用是特别重要的,因为在这些应用中,不正确的表设置通常是DML语句执行慢的原因。
  对于初学者来说,最常见的错误是认为默认的Oracle参数对于所有的对象都是最佳的。除非磁盘的消耗不是一个问题,否则在设置表的pctfree和pctused参数时,就必须考虑平均的行长和数据库的块大小,这样空的块才会被有效地放到freelists中。当这些设置不正确时,那些得到的freelists也是"dead"块,因为它们没有足够的空间来存储一行,这样将会导致明显的处理延迟。
  Freelists对于有效地重新使用Oracle表空间中的空间是很重要的,它和pctfree及pctused这两个存储参数的设置直接相关。通过将pctused设置为一个高的值,这时数据库就会尽快地重新使用块。

上一页  [1] [2] [3] [4] [5] 下一页


 

文章录入:anycall    责任编辑:anycall 

  • 上一篇文章:

  • 下一篇文章:
  • 赞助商链接



    娱乐资讯推荐
    搜索您感兴趣的内容
    Google
     
    普通文章[组图]下一代思科服务器负载均衡(SLB)架构
    推荐文章logminer使用步骤二(分析DML操作)
    推荐文章如何消除Oracle数据库的安全隐患(1)
    推荐文章Oracle数据库的备份及恢复策略研究
    推荐文章Oracle 连接常见错误及解决方法
    推荐文章Oracle 存储过程返回结果集
    推荐文章Oracle 9.2.0.1在hpux下的安装过程
    推荐文章Oracle导出备份和导入恢复自动产生sql源代码
    推荐文章Oracle Pro*C/C++游标和存储过程性能测试报告
    推荐文章安装文档ORACLE9i for sun solaris
     
    (只显示最新10条。评论内容只代表网友观点,与本站立场无关!)