CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  基础和管理

关于oracle与磁盘i/o的困惑,请高手解答。

楼主xyzhh(逍遥者寒号)2005-05-20 16:01:16 在 Oracle / 基础和管理 提问

DBWR,LGWR通常每3秒进行一次写入,那么说orale每3秒做一次i/o,在这期间,假如说我取了1万块钱,执行commit,那么数据应该还未写入硬盘,如果此时断电,重启,那么可以根据日志恢复数据的一致性,但是,我的1万元的取款记录还没写道硬盘里,是不是就白取了?  
  如果每commit一次,oracle就做一次磁盘i/o,那么效率是不是太低了? 问题点数:60、回复次数:11Top

1 楼waterye(Water Ye)回复于 2005-05-21 21:03:29 得分 0

生产数据库居然可以断电,   加ups了Top

2 楼xyzhh(逍遥者寒号)回复于 2005-05-23 08:36:48 得分 0

没人理我?Top

3 楼xyzhh(逍遥者寒号)回复于 2005-05-23 08:40:02 得分 0

当然,机房一般用的都是有ups的专用电,但是基于国情,也会有不用的。  
  另外,我是想知道理论上会不会有此种情况发生。Top

4 楼tomhuang(春城)回复于 2005-05-23 09:09:44 得分 0

commit后数据就写入磁盘了,不会丢失的。Top

5 楼tomhuang(春城)回复于 2005-05-23 09:11:51 得分 0

commit前数据在回滚段里,也是在磁盘上,commit是把回滚段的数据写入正式的表。Top

6 楼cccclb(磊冰Ben)回复于 2005-05-23 09:38:42 得分 0

Oracle应该不是你说的那样操作吧?Top

7 楼everydream(可口可乐)回复于 2005-05-23 10:13:59 得分 50

我所知道的(如果不对,大家可以拍砖):  
  DBW0和LGWR是两个相互独立的Oracle后台进程,  
  LGWR发生的条件:1)提交   2)重做日志缓冲区1/3满   3)重做日志超过1M   4)在DBW0之前  
  DBW0发生的条件:1)脏缓冲区多   2)空闲冲区少   3)超时(3秒)   4)发生检查点(CKPT)  
  楼主提到的情况,数据确实没有写到数据文件中(没有发生DBW0),但是已经发生了LGWR(已经执行commit),此时发生断电,当重新启动历程后,由SMON后台进程负责执行自动恢复:  
  首先系统回进行一个前滚(Roll   Forward),根据重做日志将已提交和未提交的数据全部写入。然后再执行一个回滚(Roll   Back),整个过程的执行要用到回退段(RollBack   Segment)的信息。经过这样的操作,1万元是不会白取的!!Top

8 楼nebulaly(极高明而道中庸)回复于 2005-05-23 13:05:13 得分 10

1.LGWR可能会进行I/O合并,最差情况下每次commit都有I/O操作  
  2.回滚段也受redo   log保护Top

9 楼xyzhh(逍遥者寒号)回复于 2005-05-23 13:37:06 得分 0

根据oracle的资料,I/O合并也应该是最通常3秒钟一次。不论是写入日志也好,回滚也好,数据空间也好,只要想不丢数据,作一次磁盘i/o是不可避免的。要想做到这一点,每次commit就得一次磁盘i/o,这点是很清楚的,然而这样做的效率不可避免大幅度降低,oracle会这样做么?Top

10 楼everydream(可口可乐)回复于 2005-05-23 18:08:17 得分 0

每次commit是要进行一次I/O,不过不是写数据文件(不是发生DBW0),而是写重做日志文件(发生LGWR),这一点是可以肯定的。这是因为写数据文件每次至少要写一个块的大小,而写重做日志文件只是写几个字节,二者在数量上有数量积的差别。这也是Oralce的精妙之处!  
  Top

11 楼nebulaly(极高明而道中庸)回复于 2005-05-24 09:05:10 得分 0

所以LGWR是顺序写入的Top

相关问题

  • 磁盘I/O和磁盘文件的关系?
  • ORACLE乱码问题,请高手解答。
  • 搜集并尽力解答大家关于Oracle的问题
  • 一个Oracle的小小问题,解答后即给分!
  • 连接Oracle时出现的问题,望解答!谢谢
  • 我现在用oracle,有个问题希望大家尽快给予解答
  • 个位Oracle老大们赏个脸,给小弟解答一个小问题。
  • Oracle多个监听服务的问题,哪位大哥帮忙解答?
  • oracle数据库装在c:盘,现在磁盘空间满了,该怎么办呢?
  • 菜鸟问题:这个语句什么意思,在Oracle中,解答后立刻给分!!

关键词

  • 数据
  • 执行
  • 文件
  • oracle
  • 磁盘
  • 日志
  • dbw0
  • 写入
  • lgwr
  • commit

得分解答快速导航

  • 帖主:xyzhh
  • everydream
  • nebulaly

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo