



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.2 log buffer的等待事件3.2.1 log file sync等待事件当用户发出提交或回滚语句时会触发LGWR将重做记录写入联机日志文件,这种触发LGWR的方式叫做同步写(sync writes)触发,而其他剩下的触发LGWR的方式叫做后台写(background writes)。log file sync等待事件只与sync writes有关,而log file parallel write等待事件只与background writes有关。 举例来说,一个用户进程可能进行一个非常大的事务,该事务会产生非常多的重做记录,从而引起很多的background writes。不过,用户session所运行的事务永远不会等待这些background writes完成以后才继续进行。一旦用户进程提交或回滚了事务,那么用户进程将触发LGWR,并且等待log file sync等待事件,一直等到LGWR将当前的重做记录,包括提交或回滚标记全都写入联机日志文件里为止。在这个日志同步(log synchronization)的过程中(将日志缓冲区中的重做记录写入联机日志文件的过程通常也叫做日志同步过程),LGWR进程等待sync write结束,这时它的等待事件为:log file parallel write,而用户session也在等待sync write结束,而这时它等待的等待事件为:log file sync事件。一旦进程开始等待log file sync事件,用两种方式退出该等待:1) 当日志缓冲区里的重做记录都写入联机日志文件以后,由LGWR触发,告诉前台进程。2) 当等待事件超时(通常是1秒)时,前台进程检查当前的log SCN,来判断当前进程的提交是否已经将重做记录写到了联机日志文件里了。如果已经写好了,前台进程继续进行,否则前台进程继续等待log file sync事件。通常,log file sync等待事件是可以不用过多考虑的。但是如果很多session都在等待该事件的话,就会影响系统的整体响应时间了。我们来模拟一下这两个等待事件。SQL create table t1(id number,name varchar2(20)as select rownum as rid,abcdef2 from dba_objects where rownum connect / as sysdbaConnected.SQL startup force在运行测试脚本前,先看看统计信息和等待事件各是什么。SQL select name,value from v$sysstat where name in(redo entries,redo size,2 redo synch writes,redo wastage,redo write time,redo writes) order by name;NAME VALUE- -redo entries 375redo wastage 9552redo write time 131redo writes 41 SQL select SID,EVENT,TOTAL_WAITS WAIT_CLASS from v$session_event2 where sid in(159,166) and event in (log file sync,log file parallel write);no rows selectedSQL begin2 for x in(select rowid rid,t1.* from t1)3 loop4 update t1 set name=lower(name) where rowid=x.rid;5 commit;6 end loop;7 end;8 / 在运行测试脚本以后,再来看看统计信息和等待事件发生了哪些变化。SQL select name,value from v$sysstat where name in(redo entries,redo size,2 redo synch writes,redo wastage,redo write time,redo writes) order by name;NAME VALUE- -redo entries 49586 redo size 20031044redo synch writes 18 redo wastage 2382452 redo write time 996 redo writes 5986 SQL select distinct sid from v$mystat;SID-159 SQL select c.sid, from v$bgprocess a ,v$process b , v$session c2 where a.paddr=b.addr and b.addr = c.paddr and =LGWR;SID NAME- -166 LGWRSQL select SID,EVENT,TOTAL_WAITS WAIT_CLASS from v$session_event2 where sid in(159,166) and event in (log file sync,log file parallel write);SID EVENT TOTAL_WAITS WAIT_CLASS- - - -159 log file sync 3 Commit 166 log file parallel write 6007 System I/O 从上面的测试,我们可以明显看到,通过在循环中不断进行提交,出现了3次log file sync等待事件。而实际上,过于频繁的提交也正是log file sync等待事件出现的主要原因。而log file parallel write等待事件则总是会出现的,只要LGWR开始刷新日志缓冲区,该进程就会等待log file parallel write等待事件,是不可避免的,不用过多关注该等待事件。同时,我们可以看到,由于过多的提交,导致生成的重做记录的数量非常巨大,redo size为19845884(20031044-185160)字节,也就相当于将近19M。注意:10g以后在v$system_event和v$session_event中会由字段wait_class显示等待事件所属的类别。也就是该等待事件是由于什么原因引起的。上面我们可以看到log file sync是由于提交引起的,log file parallel write是由于进行物理I/O引起的。 我们来修改一下上面的脚本,将commit移出循环以后,再按照上面的测试步骤执行一遍。可以发现log file sync等待事件只会出现1次,也就是说减小了一半的log file sync的等待。同时,通过将commit移出循环,所产生的重做记录的数量也下降到大约10M,也就是说减少了将近一半的日志量。 由此,我们也就可以知道,要减小log file sync的主要方法就是减少提交或回滚的次数。同时,过于频繁的提交不光会引起log file sync等待事件,而且很有可能引起ora-01555:snapshot too old错误。我们可以使用下面的SQL语句来查找log file sync等待所占的总共等待时间的百分比,以及每个session平均每个小时提交多少次,进而可以找到该session执行了哪些SQL语句引起了过于频繁的提交。select a.sid,a.event,a.time_waited,a.time_waited / c.sum_time_waited * 100 pct_wait_time,d.value user_commits,round(sysdate - b.logon_time) * 24) hours_connectedfrom v$session_event a, v$session b, v$sesstat d,(select sid, sum(time_waited) sum_time_waitedfrom v$session_eventwhere event not in (Null event,client message,KXFX: Execution Message Dequeue - Slave,PX Deq: Execution Msg,KXFQ: kxfqdeq - normal deqeue,PX Deq: Table Q Normal,Wait for credit - send blocked,PX Deq Credit: send blkd,Wait for credit - need buffer to send,PX Deq Credit: need buffer,Wait for credit - free buffer,PX Deq Credit: free buffer,parallel query dequeue wait,PX Deque wait,Parallel Query Idle Wait - Slaves,PX Idle Wait,slave wait,dispatcher timer,virtual circuit status,pipe get,rdbms ipc message,rdbms ipc reply,pmon timer,smon timer,PL/SQL lock timer,SQL*Net message from client,WMON goes to sleep)having sum(time_waited) 0 group by sid) cwhere a.sid = b.sidand a.sid = c.sidand a.sid = d.sidand d.statistic# = (select statistic#from v$statnamewhere name = user commits)and a.time_waited 10000and a.event = log file syncorder by pct_wait_time, hours_connected; 如果应用程序已经确保了使用正确的频率进行提交,则还是发现很严重的log file sync等待事件,则比较常见的原因主要包括:1) 联机日志文件放在一个很慢的磁盘上。可以用前面我们提到的log file parallel write的平均等待时间应该小于等于10个毫秒来判断,磁盘速度是否过慢。2) 联机日志文件与其他随机写入的文件放在了同一个磁盘上。从前面已经知道,联机日志文件都是顺序写入的。不能够将其与其他随机写入的文件放在一起,需要存放在单个的磁盘上。3) 联机日志文件放在了RAID 5的磁盘组里。RAID 5适合频繁的读取,比如数据仓库类的应用等,但不适合频繁写入。 最好能够将每个联机日志文件都放在单独的小的、转速快的磁盘上,与数据文件所在的磁盘阵列分开。如果可以的话,最好不要使用文件系统来管理磁盘,直接使用RAW设备,直接交给oracle来管理磁盘。而且,oracle中最适合放在RAW设备上的文件就是联机日志文件。3.2.2 其他相关的等待事件当进程需要向日志缓冲区里拷贝重做记录时,发现没有足够的可用空间时,则必须等待log buffer space事件。如果一个进程花费了太多的时间在log buffer space等待事件上,这通常是由于下面两个原因:1) 日志缓冲区尺寸太小。对于一个繁忙的批处理数据库系统里,一个太小的日志缓冲区(小于512K)会导致进程等待log buffer space。2) LGWR进程太慢了,这也就是物理I/O速度过慢。可以通过检查log file parallel write等待事件的平均等待时间来判断,如果大于10毫秒,则说明LGWR过慢。可以通过增加日志缓冲区的尺寸或加快LGWR的进程来减少log buffer space等待事件。而较小尺寸的联机日志文件会引起log file switch completion和log file switch (checkpoint incomplete)这 两个等待事件。log file switch completion表示进程正在等待日志切换完成。而当应用程序产生很多重做,然后由LGWR进程非常快得写日志文件并进行日志切换时,这时DBWR进程还没有把脏数据块写入磁盘以通知checkpoint结束时,这个时候产生log file switch (checkpoint incomple
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-湖南-湖南印刷工五级(初级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-湖北-湖北汽车驾驶与维修员一级(高级技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北政务服务办事员二级(技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北客房服务员一级(高级技师)历年参考题库含答案解析
- 2025年教育行业质量评价与认证体系建设与创新发展案例研究
- 2025年事业单位工勤技能-海南-海南热力运行工五级(初级工)历年参考题库含答案解析
- 2025-2030中国精装书行业消费动态及竞争格局分析报告
- 2025年事业单位工勤技能-海南-海南保健按摩师二级(技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-浙江-浙江热处理工一级(高级技师)历年参考题库含答案解析(5套)
- 2025年废旧塑料回收利用技术革新与产业创新模式探索报告
- 2025新版企业员工劳动合同范本
- 口才与演讲训练教程(第四版)课件2-2普通话训练
- 新教师三年职业成长规划
- 理化检测员考试题及答案
- 2026届张家港市达标名校中考语文模试卷含解析
- 应急疏散培训课件
- 广东省深圳市福田片区2025届数学七上期末质量检测试题含解析
- 灵芝孢子油培训
- 公司适用法律法规标准清单2025年08月更新
- 国家中医药管理局《中医药事业发展“十五五”规划》全文
- 2025安徽医科大学辅导员考试试题及答案
评论
0/150
提交评论