- 1、本文档共137页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
厦门开发中心技术培训
Oracle I/O 问题及性能调优
数据库的作用就是实现对数据的管理和查询。任何一个数据库系
统,必然存在对数据的大量读或者写或者两中操作都大量存在。IO
问题也往往是导致数据库性能问题的重要原因。在第三天的讲课中,
主要帮助大家在理解Oracle的读写操作机制的基础上,灵活解决遇
到的各种常见的IO问题。
1 Oracle 中IO 的产生
IO当然包括了读、写两部分,先介绍Oracle中写操作的产生。
1.1写
介绍写操作之前,先简单的看下 Oracle的物理结构:oracle的
物理文件包括以下三种文件:控制文件 (Control Files)、重做日志
文件 (Redo Log Files)、数据文件 (datafiles)。而数据文件中,
根据功能的不同,还可以分为系统数据文件、临时空间文件、回滚段
文件和用户数据文件。另外,如果数据库的Archive Log模式被激活,
还存在归档日志文件。Oracle的IO产生,就是对这些文件的数据读、
写操作。下面再详细看下几种主要写操作的产生及其过程。
1.1.1控制文件
牛新庄 1 5/17/2008
厦门开发中心技术培训
控制文件中记录了整个数据库的物理结构信息,如数据库名字、
数据文件及日志文件名字和位置、事件戳信息等等。任何数据库的结
构变化 (如果创建新的数据文件)都会引起Oracle修改控制文件。
同时控制文件还记录系统和各个数据文件的 SCN(
Number,以用于数据恢复,因此数据文件上的 SCN变化后,Oracle
也会相应修改控制文件上的SCN信息。
1.1.2用户数据修改
由于内存的读写效率比磁盘的读写效率高万倍,因此,为了降低
IO wait,oracle会将数据cache在内存中,对数据的读写尽量在内
存中完成。当Buffer Cache中的数据缓存块被修改过了,它就被标
记为 “脏”数据。根据 LRU(Least Recently Used)算法,如果一
个数据块最近很少被使用,它就称为 “冷”数据块。进程 DBWn(系
统中可以存在多个DBW进程,n为序号)负责将 “冷”的“脏”数据
写入数据文件中去。DBWn进程会在以下两种情况下将 “脏”数据写
入磁盘中去:
当服务进程扫描一定数量 (阀值)的Buffer Cache后还没有
找到干净、可重用的缓存块后,它会通知 DBWn进程将 “脏”
数据写入文件中去,以释放出空闲缓存;
当发生检查点 (Checkpoint)时。
1.1.3Redo Log
牛新庄 2 5/17/2008
厦门开发中心技术培训
在非直接写 (Direct Write)的情况下,事务中的写操作都会产
生 Redo Log,作为数据块异常关闭时的恢复记录。同样,和写用户
数据类似,Redo Log也不会被直接写入Redo Log文件,而是先写入
Log Buffer中。
Log Buffer是一个可以循环重用的缓存区。LGWR进程负责将Log
Buffer中的记录写入Redo Log File中去。一旦Log Buffer中的条
目被写入了Redo Log文件中,就可以被重用了。
为了保证事务尽快获得Log Buffer,LGWR进程一般会尽快将Log
Buffer中的数据写入Redo Log文件中去。在以下几种情况下,LGWR
回将一个连续的Log Buffer写入Redo Log文件中去:
当一个事务提交 (COMMIT)时;
每3秒钟写一次Log Buffer;
当Log Buffer到达1/3满时;
当有1M 的数据修改时
当DBWn进程将 “脏”数据写入磁盘时;
1.1.4Archive Log
当据库的Archive Log模式被激活后,所有Redo Log数据都会被
写入Archive Log文件中以便日后进行恢复。当发生日志组切换时,
ARCn(Arch
文档评论(0)