li
  当前位置:主页 > 性能优化 > 文章内容
li
Oracle优化经典文章--磁盘I/O和碎片篇
来源: www.ixdba.net  作者: Oracle+Linux专业技术门户    时间:2008-01-08   阅读:79  



 

不平衡的磁盘I/O和撤消会妨碍性能。这里讨论如何正确定位和配置一些与Oracle数据库相关的物理数据文件。 主要讨论以下内容:


[1]
使用磁盘阵列
   
选择合理的RAID方式。

[2]
在可用的硬盘之间分布关键数据文件
   
要特别注意的文件:system表空间、TEMPORARY表空间、回滚段或UNDO表空间、联机重做日志文件(最好放在最快的磁盘上)、放在ORACLE_HOME文件夹下的关键Oracle文件、经常被访问的表的数据文件、经常被访问的索引的数据文件。
IXDBA.NET技术社区

经验总结: 把上面提到的数据文件分布在各个可用的磁盘上
              
把数据文件和索引文件分开放置
              
对于经常连接的表,把他们的数据和索引表空间分开
              
把控制文件的多个备份存储到不同的磁盘和控制器上

   
避免I/O磁盘争用,用下面的查询确定文件的I/O问题
         select name,phyrds,phywrts,readtim,writetim
         from v$filestat a,v$dbfile b
         where a.file# = b.file#
         order by readtim desc
说明:在磁盘上的物理写入和读取次数上如果出现很大的差别,就表明肯定有哪个磁盘负载过多!
   
如果出现磁盘负载不平衡,可以通过移动数据文件来均衡文件I/O
         alter tablespace tablespace_name offline;
         $cp /disk1/a.dbf /disk2/a.dbf;
         alter tablespace tablespace_name rename datafile '/disk1/a.dbf' to '/disk2/a.dbf';
         alter tablespace tablespace online;
         $rm /disk1/a.dbf

[3]
使用本地托管的表空间


[4]
在大型表上使用表分区

[5]
使用索引分区
   
索引分区与分区表拥有同样的优点。如果正确执行,则通过访问索引的小片段而不是整个表上的索引可以提高性能。

[6]
了解碎片的概念以及如何消除碎片
   
经验总结:使用本地托管的统一扩展表空间
               
在字典托管的表空间中使用统一的扩展大小(除了SYSTEM表空间外)
              
使扩展尺寸是数据库块尺寸的倍数
              
不要在字典托管的表空间上设定除0以外的任何PCTINCRREASE
              
把表放在有合适扩展大小的表空间中
              
正确设定PCTINCREASE
              
避免使用跨越多个不连续的数据文件的位图索引

[7]
使用撤消管理
   
如果想使大量的INSERTUPDATEDELETE操作速度更快,可以增大日志文件大小(可以增加用于介质恢复的时间),并确保这些文件在最快的磁盘上。

[8]
使用回滚段
   
下面查询显示回滚信息:
       select a.name,b.extents,b.rssize,b.xacts,b.waits,b.gets,optsize,stauts
        from v$rollname a,v$rollstat b
        where a.usn = b.usn;
    
说明:如果xacts(活动事务)经常超出1,就需要增加回滚段的数目,以避免可能出现的争用。
   
把大的事务隔离到它们自己的回滚段上,用下面的语句:
        commit;
        set transation use rollback segment roll_segment_name;
        delete from big_table;
        commit;

[9]
使用更简单的方法:undo表空间
    Oracle 9i
新引入的功能。

[10]
通过内存排序来减少磁盘I/O

[11]
在不同的磁盘和控制器上存放多个控制文件

[12]
使用裸设备改善有写操作频繁的数据的I/O




  上一篇: 案例分析:ORA-25153: Temporary...   下一篇: oracle问题小结一:ORACLE常见错...
li
 §相关评论  
 热点文章

·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 编辑推荐
·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 相关篇章
·案例分析:ORA-25153: Temporary...
·案例分析:ORA-12500错误案例
·案例分析:ORA-01461错误
·案例分析:ORA-01178错误释疑
·案例分析:ORA-01000: maximum o...
·案例分析:ora-04031与ora-04030...
·oracle大师谈:OS与oracle异同探...
·问题释疑:如何配置才能使客户端...
·32bit oracle 扩展SGA原理
·强烈推荐:oracle10g+rac配置sta...
·oracle问题小结一:ORACLE常见错...
·Java用OCI驱连Oracle数据库的实现...
·Oracle数据库ASM功能详解
·阿里巴巴公司DBA笔试题
·案例解决:一次oracle掉电的处理...
·我的oracle笔记,欢迎收看!
·如何确定导致刷新组刷新失败的物...
·添加字段对SQL的影响
·使用当前用户的数据库链的实现
·如何确定导致刷新组刷新失败的物...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接