当前位置:七道奇文章资讯数据防范Oracle防范
日期:2011-01-25 22:55:00  来源:本站整理

<b>优化数据库大幅度提高Oracle的性能-性能调优</b>[Oracle防范]

赞助商链接



  本文“<b>优化数据库大幅度提高Oracle的性能-性能调优</b>[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

几个简单的步骤大幅提高Oracle性能--我优化数据库的三板斧.

数据库优化的谈论可以说是一个永久的主题.资深的Oracle优化人员普通会要求提出性能问题的人对数据库做一个statspack,贴出数据库配置等等.还有的人认为要抓出履行最慢的语句来举行优化.但实际情形是,提出疑问的人极大概根本不懂履行筹划,更不要说statspack了.而我认为,数据库优化,应当首先从大的方面考虑:网络服务器硬件配置、操作系统配置、Oracle服务器配置、数据构造组织、然后才是具体的调整.实际上网络、硬件等常常无法决意改换,利用程序普通也无法改正,因此应当侧重从数据库配置、数据构造上来下手,首先让数据库有一个杰出的配置,然后再考虑具体优化某些过慢的语句.我在给我的用户系统举行优化的历程中,总结了一些基本的,简单易行的办法来优化数据库,算是我的三板斧,呵呵.不过请注意,这些不一定广泛利用,乃至有的会有副作用,但是对OLTP系统、基于本钱的数据库常常行之有效,无妨试试.(注:附件是Burleson写的用来报告数据库性能等信息的脚本,本文用到)

一.设置符合的SGA

常常有人抱怨服务器硬件很好,但是Oracle就是很慢.极大概是内存分配不公道造成的.(1)假定内存有512M,这普通是小型利用.倡议Oracle的SGA大约240M,此中:同享池(SHARED_POOL_SIZE)可以设置60M到80M,按照实际的用户数、查询等来定.数据块缓冲区可以大致分配120M-150M,8i下需求设置DB_BLOCK_BUFFERS,DB_BLOCK_BUFFER*DB_BLOCK_SIZE等于数据块缓冲区大小.9i 下的数据缓冲区可以用db_cache_size来直接分配.

(2)假定内存有1G,Oracle 的SGA可以考虑分配500M:同享池分配100M到150M,数据缓冲辨别配300M到400M.

(3)内存2G,SGA可以考虑分配1.2G,同享池300M到500M,剩下的给数据块缓冲区.

(4)内存2G以上:同享池300M到500M就充足啦,再多也没有太大帮忙;(Biti_rainy有专述)数据缓冲区是尽大概的大,但是一定要注意两个问题:一是要给操作系统和其他利用留够内存,二是关于32位的操作系统,Oracle的SGA有1.75G的限制.有的32位操作系统上可以冲破这个限制,办法还请看Biti的大作吧.

二.解析表和索引,更改优化情势

Oracle默许优化情势是CHOOSE,在这种情形下,假如表没有经过解析,常常招致查询利用全表扫描,而不利用索引.这普通招致磁盘I/O太多,而招致查询很慢.假如没有利用履行筹划安定性,则应当把表和索引都解析一下,这样大概直接会使查询速度大幅晋升.解析表号令可以用ANALYZE TABLE 解析索引可以用ANALYZE INDEX号令.关于少于100万的表,可以考虑解析整个表,关于很大的表,可以按百分比来解析,但是百分比不能太低,不然生成的统计信息大概不精确.可以通过DBA_TABLES的LAST_ANALYZED列来查看表能否经过解析或解析时间,索引可以通过DBA_INDEXES的LAST_ANALYZED列.

下面通过例子来阐明解析前后的速度比较.(表CASE_GA_AJZLZ大约有35万数据,有主键)首先在SQLPLUS中翻开自动查询履行筹划功效.(第一次要履行\RDBMS\ADMIN\utlxplan.sql来成立PLAN_TABLE这个表)

  
  SQL> SET AUTOTRACE ON
  SQL>SET TIMING ON
  

通过SET AUTOTRACE ON 来查看语句的履行筹划,通过SET TIMING ON 来查看语句运行时间.

  
  SQL> select count(*) from CASE_GA_AJZLZ;
  COUNT(*)
  ----------
  346639
  
  已用时间: 00: 00: 21.38
  
  Execution Plan
    0 SELECT STATEMENT Optimizer=CHOOSE
  1 0 SORT (AGGREGATE)
  2 1 TABLE ACCESS (FULL) OF 'CASE_GA_AJZLZ'
  ……………………
  

请注意上面解析中的TABLE ACCESS(FULL),这阐明该语句履行了全表扫描.并且查询利用了21.38秒.这时表还没有经过解析.下面我们来对该表举行解析:

  
  SQL> analyze table CASE_GA_AJZLZ compute statistics;
  

表已解析.已用时间: 00: 05: 357.63.然后再来查询:

  
  SQL> select count(*) from CASE_GA_AJZLZ;
  COUNT(*)
  ----------
  346639
  
  已用时间: 00: 00: 00.71
  
  Execution Plan
 
  0 SELECT STATEMENT Optimizer=FIRST_ROWS (Cost=351 Card=1)
  1 0 SORT (AGGREGATE)
  2 1 INDEX (FAST FULL SCAN) OF 'PK_AJZLZ' (UNIQUE) (Cost=351
  Card=346351)
  …………………………
  

请注意,这次时间仅仅用了0.71秒!这要归功于INDEX(FAST FULL SCAN).通过解析表,查询利用了PK_AJZLZ索引,磁盘I/O大幅削减,速度也大幅晋升!下面的实用语句可以


  以上是“<b>优化数据库大幅度提高Oracle的性能-性能调优</b>[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .