buffercache实验10-buffercache优化指标
程序员文章站
2022-06-14 23:06:02
...
标题起的有点大,不同情况的解决内容其实在前面每一小篇里都有了,没重复粘贴了。 1.buffer cache的大小: 如16CPU,32G内存: 初步分配: SGA_TARGET=16G --内存一半 BUFFER CACHE=12G ---SGA的40%起,可设置到70%-80%--保守点也可以设置到10G,后期可以根据
标题起的有点大,不同情况的解决内容其实在前面每一小篇里都有了,没重复粘贴了。1.buffer cache的大小:
如16CPU,32G内存:初步分配:
SGA_TARGET=16G --内存一半
BUFFER CACHE=12G ---SGA的40%起,可设置到70%-80%--保守点也可以设置到10G,后期可以根据系统运行情况结合buffer pool advisory进行修改。
shared_pool=3G
当参数:statistics_level为typical 或者all;或者db_cache_advice参数设置为ON,ORACLE会根据系统负载,自动估算出当前实例的buffer cache最佳大小 --通过v$db_cache_advice;或者ASR报告中:buffer pool advisory一栏。之后可以根据建议大小结合当前系统内存使用情况设置一个合理值。
以下为我虚拟机中环境数据:--SIZE_FOR_ESTIMATE单位为M,系统当前BUFFER_CACHE大小为32M。
SYS@ bys3>select SIZE_FOR_ESTIMATE,BUFFERS_FOR_ESTIMATE,ESTD_PHYSICAL_READ_FACTOR,ESTD_PHYSICAL_READS from v$db_cache_advice;
SIZE_FOR_ESTIMATE BUFFERS_FOR_ESTIMATE ESTD_PHYSICAL_READ_FACTOR ESTD_PHYSICAL_READS
----------------- -------------------- ------------------------- -------------------
4 496 2.4576 527548
8 992 2.3653 507728
12 1488 2.2055 473442
16 1984 1.887 405072
20 2480 1.3526 290349
24 2976 1.1332 243258
28 3472 1.0613 227818
32 3968 1 214661
36 4464 .9342 200530
40 4960 .8871 190428
44 5456 .7987 171447
48 5952 .7203 154614
52 6448 .66 141675
56 6944 .6248 134123
60 7440 .5859 125766
64 7936 .5529 118684
从此视图可以看到:系统当前BUFFER_CACHE大小为32M,ESTD_PHYSICAL_READS字段是物理读的块数,ESTD_PHYSICAL_READ_FACTOR字段是物理读/逻辑读的比值,越小越好。
可以看到,BUFFER_CACHE越大,物理读块数越少,物理读/逻辑读的比值越小,所以我这实验环境是要增大BUFFER_CACHE的。可以先增加到64M,然后运行一段时间,再继续结合v$db_cache_advice视图,最终设置一个最优值。
2.buffer cache的命中率
命中率高意味着服务器进程基本上都是从 buffer cache中获取数据块。但是有的情况下命中率并不能说明性能问题,
如大表全表扫描时buffer cache命中率会下降;
热块问题严重时,虽然buffer cache命中率是100%,性能却不佳;
执行计划出错,所涉及的数据块都在buffer cache中,命中率100%,性能不佳;
3.buffer cache的争用
主要指标是:free buffer waits/buffer busy waits原因主要也就是:
free buffer waits-找不到空闲 buffer--buffer cache空间不足
buffer busy waits--热块争用
其实在前面的等待事件的博文中,也已经提到过详细解决思路,这里不重新贴了。
上一篇: 用PHP实现将GB编码转换为UTF8
下一篇: 自动生成实体类