- 最后登录
- 2023-8-16
- 在线时间
- 1686 小时
- 威望
- 2135
- 金钱
- 50532
- 注册时间
- 2011-10-12
- 阅读权限
- 200
- 帖子
- 5207
- 精华
- 39
- 积分
- 2135
- UID
- 2
|
2#
发表于 2013-1-29 14:26:15
在好多的资料上显示==> 哪些资料, 我只在中文的入门资料中看到过这些不靠谱的说法。
首先在10g中 log buffer一般是Oracle自动决定的 往往是 一个granule size - fixed area size,由于其他component 都是使用整数倍个granule size的,而log buffer不用这样。
3M这种说法 大概是从 lgwr 写redo的几个条件 包括1M 1/3等 “提炼出来的”。 实际并不是说大于3M就是浪费。
可以去了解一下 log buffer space这个等待事件
Waiting for space in the log buffer because we are writing stuff into the log buffer faster than lgwr can
write it out. Consider making the log buffer bigger if it is small, or moving the log files to faster disks such
as striped disks
Wait time
1 Second normally, but 5 seconds if waiting for a Switch Logfile to complete.
Parameters
No Parameters.
Advise
Consider making the log buffer bigger if it is small, or moving the log files to faster disks such as
striped disks. The logbuffer size should be 3 times the average redo I/O size.
假设redo write的IO 响应非常迅速 , 试想当process在处理一个大事务时 产生300MB的redo ,若redo buffer只有3M 那么就要求server process多次获得redo copy、redo allocation等latch 多次copy PGA中的redo到redo buffer中, lgwr 至少要做100次 redo write操作。 假如redo buffer大一些则可以优化这种情况, 所以 redo buffer>>3M 并不是浪费, 但是一般也不必设置过大, 10g、11g中自动设置得值往往已经是恰当的了。
|
|