• 1. Oracle数据库性能优化实务 第9讲:数据文件IO主讲人:白鳝华章培训网、[www.hztraining.com]华章培训网版权所有
  • 2. Oracle数据文件IO相关的因素存储系统 OS的相关配置 数据文件 REDO LOG 临时文件与排序控制文件 前台进程 DBWR LGWR TOP SQL 注意:本节所说的Oracle数据文件包含裸设备、ASM、普通文件、CFS文件系统的文件等,是泛指的数据文件
  • 3. Oracle数据文件IO相关的参数DB_FILES db_file_multiblock_read_count filesystemio_options { none | setall | directIO | asynch } dbwr_io_slaves db_writer_processes
  • 4. 操作系统direct I/OSolaris可用,取决于filesystemio_optionsWindows NT/2000可用,自动使用Tru64 Unix可用,8.1.6.3以后自动启用(5.1 with PK4以上版本)5.1A with PK1 or later; 能使用_tru64_directio_disabled 参数关闭,或者9.2以后使用 filesystemio_options 关闭AIX可用,Oracle缺省使用异步IOIrix可用,缺省不使用Linux2.4后可用,未使用HP-UX不可用Reliant Unix不可用文件系统下使用DIRECTIO
  • 5. Oracle访问数据文件的特征前台进程一般来说只从数据文件读取数据 脏数据的写入由DBWR完成,以批处理方式进行批量写入 对于临时表空间的访问一般采用直接路径读写 LOB字段的访问缺省情况采用直接路径访问,可通过缓冲访问
  • 6. 存储子系统对数据文件IO性能的影响数据文件IO的性能依赖于底层存储的性能 存储子系统的一些配置影响存储的总体性能 存储中磁盘的速度及数量 RAID组技术的采用 底层条带的配置 存储控制器的数量及处理容量 CACHE的设置 HBA卡的吞吐能力
  • 7. 各个组件的容量
  • 8. RAID种类和IO特性RAID 1+0/RAID 0+1 较好的读写性能 适合IO较为频繁的数据 需要更多的磁盘,价格较贵 适合存储REDO LOG,写IO较为频繁的数据 RAID 5及类似RAID技术 能够提供较大的存储空间 写IO性能较差 适合存放写IO较少的数据
  • 9. 磁盘转速和数量对IO总体性能的影响传统存储系统的最终瓶颈在于磁盘的物理寻道和读写操作 磁盘数量越多,总体IO性能越好 磁盘转速越快,总体IO性能越好 容量大、廉价的SATA盘并不能提供高性能 闪存盘是解决磁盘性能瓶颈的重要技术
  • 10. 操作系统对文件IO的影响操作系统对Oracle的文件读IO性能帮助不大 异步IO和预读机制可以减少Oracle数据文件IO的等待 Oracle的写IO不需要使用操作系统写缓冲
  • 11. 异步IO和同步IO
  • 12. 异步IO和WIO
  • 13. 异步IO和吞吐量
  • 14. 关于异步IO的一些结论异步IO可以在并发量较大的环境下有效减少WIO 使用异步IO不能提升总体IO吞吐能力,但是能提高IO操作的总体性能 存储的IO响应时间不会由于使用异步IO而明显提升 使用异步IO可以提高Oracle数据库读取数据文件的效率
  • 15. 分析文件IO性能(1)Top 5 Timed Events ~~~~~~~~~~~~~~~~~~ % Total Event Waits Time (s) Ela Time -------------------------------------------- ------------ ----------- -------- CPU time 14,664 33.44 db file sequential read 871,899 12,679 28.91 db file scattered read 583,412 7,708 17.58 SQL*Net message from dblink 524,756 7,198 16.41 buffer busy waits 38,021 432 .98 -------------------------------------------------------------
  • 16. 分析IO性能(2)
  • 17. 分析文件IO性能(3) Avg Total Wait wait Waits Event Waits Timeouts Time (s) (ms) /txn ---------------------------- ------------ ---------- ---------- ------ -------- db file sequential read 871,899 0 12,679 15 68.8 db file scattered read 583,412 0 7,708 13 46.0 buffer busy waits 38,021 0 432 11 3.0 db file parallel write 28,879 0 368 13 2.3 log file sync 17,007 0 236 14 1.3
  • 18. 分析文件IO性能(4)(11G)
  • 19. 分析文件IO性能(5)(11G)
  • 20. 分析文件IO性能(6)(11G)
  • 21. 分析文件IO性能(7)(11G)
  • 22. 分析文件IO性能(8)File IO Stats for DB: OBS9I Instance: obs9i Snaps: 186 -187 ->ordered by Tablespace, File Tablespace Filename ------------------------ ---------------------------------------------------- Av Av Av Av Buffer Av Buf Reads Reads/s Rd(ms) Blks/Rd Writes Writes/s Waits Wt(ms) -------------- ------- ------ ------- ------------ -------- ---------- ------ 3,085 1 20.1 8.8 58 0 85 20.6 DATAHIST_860 /dev/vg07xp/rlv4g14 3,172 1 20.5 8.6 78 0 90 11.1 /dev/vg07xp/rlv4g15 3,003 1 20.4 9.0 65 0 109 13.3 /dev/vg07xp/rlv4g17 2,312 1 21.8 1.0 129 0 59 12.2 /dev/vg07xp/rlv4g18 2,429 1 22.0 1.0 129 0 78 11.5 /dev/vg07xp/rlv4g19 2,103 1 22.1 1.0 246 0 15 11.3 /dev/vg07xp/rlv4g20 1,533 1 22.9 1.0 208 0 2 55.0 /dev/vg07xp/rlv4g7 3,097 1 21.7 8.8 76 0 88 17.7 /dev/vg07xp/rlv4g8 3,131 1 21.3 8.4 78 0 101 13.4
  • 23. 分析文件IO性能(9)FILE Wait time Waitcount Pct_rt E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATA01..DBF 1.00 2407 091.91 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATA01..DBF 2.00 21 092.71 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATA01..DBF 4.00 20 093.47 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATA01..DBF 8.00 47 095.27 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATA01..DBF 16.00 74 098.09 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATA01..DBF 32.00 26 099.08 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATA01..DBF 64.00 22 099.92 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATA01..DBF 128.00 2 100.00select rpad(substr(b.file_name,1,60),62,' ') file_nm, lpad(to_char(SINGLEBLKRDTIM_MILLI,'99999.99'),9,' ') wtm, lpad(to_char(SINGLEBLKRDS,'99999999.99'),9,' ') wct, to_char(100*(sum(a.SINGLEBLKRDS) over (order by b.file_name,a.SINGLEBLKRDTIM_MILLI))/vTotalWaitCount,'099.99') pct_rt from v$file_histogram a,dba_data_files b where a.file#=b.file_id order by 1,2
  • 24. 分析文件IO性能(10)
  • 25. 分析文件IO性能(11) CPU Elapsd Physical Reads Executions Reads per Exec %Total Time (s) Time (s) Hash Value --------------- ------------ -------------- ------ -------- --------- ---------- 5,120,872 18 284,492.9 54.4 547.65 4127.15 1321087522 Module: C:\Documents and Settings\Administrator\桌面\综 select /*+index(TAB_ACCTPREDEPSTDTAL_HISTORY IDX_PREDPDLHISTORY _ACCTID1)*/ count(*) recount from tab_acc tpredepstdtal_history where predeposittypeid=:"SYS_B_0" and acctid=:"SYS_B_1" and areaid=:"SYS_B_2" 1,224,097 1 1,224,097.0 13.0 134.76 1133.48 2152598041 Module: C:\Documents and Settings\Administrator\桌面\综 select /*+index(tab_acctpredepstdtal_history IDX_PREDPDLHISTORY _ACCTID1)*/ count(*) recount from tab_acc tpredepstdtal_history where predeposittypeid=:"SYS_B_0" and acctid=:"SYS_B_1" and areaid=:"SYS_B_2"
  • 26. 数据文件IO性能问题产生的原因应用软件产生了大量的大表扫描 DB CACHE配置不合理 存储子系统容量(性能方面)不足 底层条带化设计不合理 存在访问热点 BUG
  • 27. 数据文件IO性能优化的主要方法优化应用 优化DB CACHE 加大DB CACHE 使用多缓冲 减少硬盘排序 业务高峰期减少额外的IO操作 分离热点 数据迁移 REDO LOG文件与数据文件分离 访问量较大的索引和表分离 扩容 增加磁盘的数量 增加IO通道容量 增加存储的处理能力 EXADATA是一种新的存储解决方案
  • 28. 下节预告-Oracle诊断事件概述Oracle诊断事件的基本原理 和优化相关的诊断事件综述
  • 29. 感谢您对华章培训网的支持!http://www. hztraining.com