1.问题描述:
收到客户的邮件,原来客户在进行X86和小机的性能对比测试时出现以下问题:一个高端pc server,内存32G,cpu是32核
pc server上测试8个语句并行,小机下降不明显,但在此pc server上却下降明显。
执行时间由1分多,降到7分钟。小机上始终是2分钟。
附件是AWR报告,请分析原因。
2.分析过程:Per Second Per Transaction Per Exec Per Call
DB Time(s): 6.3 233.0 3.93 16.49
DB CPU(s): 0.6 23.0 0.39 1.62
Redo size: 2,475.8 91,824.5
Logical reads: 30,695.3 1,138,476.7
Block changes: 5.4 201.9
Physical reads: 30,680.6 1,137,931.2
8个并行测试的情况下,逻辑读=物理读,
逻辑读表示操作内存中的BLOCK的个数,通过物理读(IO)读进内存后必然发生逻辑读。
这说明ORACLE根本没能把数据缓存到共享内存buffer cache,以便供其他进程复用。
从AWR报告中的等待事件可以看到,排在第一位的是direct path read,这是一个IO事件
即上面说的,绕开BUFFERCACHE,直接读到PGA私有内存(非共享内存)中时,单次IO的时间达到了42毫秒,太大,说明磁盘IO竞争严重,性能不佳。
但这个是