引用:
Originally posted by ljd at 2004-6-29 03:15 PM:
各位前辈,看到此章,非常有感,,,
但有一事请各位帮忙,我们单位现在数据库老是有时快,有时慢,是不是跟这个有关系。我该从哪方面开始查!
谢谢!
不能肯定是他拉,你慢是指什么意思?是不是同一个语句有时慢有时快吗,如果是这样,那要结合你的statspack来分析,一般来说每个应用都有高峰期和低峰期,看你慢的时候,你的事务量是不是很高(可以在这段时间增加statspack的频率),load的情况如何,是不是有什么耗资源的应用定期在跑(找出这些语句,需要优化他),每秒的重做量是不是很高。io的使用情况,是不是有很多序列读等待还是序列写等待,来合理优化索引
你说的检查点是不是是一个可能的原因,当然有可能,如果没有合理的设置log_buffer大小,logfile放在读写比较差的磁盘上,检查点的频繁程度,合理设置fsfr_start_mttr_target,看看在statspack中存在下面的等待事件
1.log file switch(archiving needed)
日志切换的时候由于日志组循环使用了一圈但日志归档还没有完成,通常是io有严重问题,
可增大日志文件和增加日志组,调整log_archive_max_processes
(checkpoint incomplete)
当日志切换的时候由于日志组循环使用了一圈但将被使用的日志组中的checkpoint还没有完成造成,
通常是io有严重问题,可增大日志文件和增加日志组
2.log file sync(这个到可能是log_buffer太大的反作用)
当用户commit的时候通知lgwr写日志但lwgr正忙,造成的可能原因是commit太频繁或者lgwr一次写日志时间太长
(可能是因为一次log io size 太大),可调整 _log_io_size,
结合log_buffer,使得 (_log_io_size*db_block_size)*n =
log_buffer,这样可避免和增大log_buffer引起冲突;
放置日志文件于高速磁盘上
3.log file single write
指出写入到日志文件的标题块.可能表示检查点中等待
4.另外dbwr写是不是存在瓶径
cache buffers lru chain 是否需要增加
需要异步IO吗还是增加从dbwr
[ Last edited by fly115 on 2004-6-29 at 07:33 PM ]