记一次内存换IO的优化方法

来源:这里教程网 时间:2026-03-03 18:12:52 作者:

存储性能问题

 

 

某客户数据库从P595物理迁移至P780新服务器并更换存储之后,发现应用性能反而下降。

 

客户服务器IBM P780配置了32颗4核CPU(主频为3920 MHz),710G内存。如下所示:

System Model: IBM,9179-MHC

Machine Serial Number: 06DA0CR

Processor Type: PowerPC_POWER7

Processor Implementation Mode: POWER 7

Processor Version: PV_7_Compat

Number Of Processors: 32

Processor Clock Speed: 3920 MHz

CPU Type: 64-bit

Kernel Type: 64-bit

LPAR Info: 1 SN06DA0CR

Memory Size: 727040 MB

Good Memory Size: 727040 MB

Platform Firmware level: AM740_088

Firmware Version: IBM,AM740_088

Console Login: enable

Auto Restart: true

Full Core: false

P595  配置了32颗双线程CPU(主频为2302 MHz),186G内存。如下所示:

System Model: IBM,9119-595

Machine Serial Number: 83E37E3

Processor Type: PowerPC_POWER5

Processor Implementation Mode: POWER 5

Processor Version: PV_5_3

Number Of Processors: 32

Processor Clock Speed: 2302 MHz

CPU Type: 64-bit

Kernel Type: 64-bit

LPAR Info: 1 83-E37E3

Memory Size: 190976 MB

Good Memory Size: 190976 MB

Platform Firmware level: SF240_358

Firmware Version: IBM,SF240_358

Console Login: enable

Auto Restart: true

Full Core: false

可以看到服务器在硬件配置层面提高了很多,在排除了执行计划变坏的可能性之后,数据库性能下降是极不正常的。

在排除了服务器配置因素之后,进一步检查存储的I/O性能。通过查看AWR报告发现数据库性能下降期间,存储I/O的响应时间下降厉害,单块顺序读(db file sequential read)需要24ms,多块离散读(db file scattered read)需要33ms,日志文件同步(log file sync)竟然高达68ms,如下所示:

几乎可以确认,存储I/O下降是引起数据库性能下降的主要原因。经过和客户沟通之后,由于种种原因,该库和另外一套数据库需要共用一套存储,而且短期内还不能更改这种架构模式。

前面提到p780服务器的内存为710G,比原来的p595服务器足足多出524G内存。在目前的硬件条件下,要快速提高数据库性能,只能采取内存换I/O的优化手段。数据库SGA参数修改之前,BUFFER CACHE为40G,SHARED POOL为14G,如下所示:

经过和客户商量,决定扩大数据库的BUFFER CACHE至256G,并设置db_keep_cache_size至200G,并将最“热”的表和索引KEEP进KEEP POOL中,KEEP语法如下所示:

可以通过DBA_SEGMENTS.BUFFER_POOL字段查看对象是否已经KEEP进KEEP池中。如下所示:

 

修改之后的BUFFER CACHE和KEEP POOL大小如下所示:

 

设置相关参数并重启数据库,过一段时间,数据库性能得到了极大的提升。尽管单块读的时间依然很高(响应时间为19ms),如下所示:

但是,查看AWR报告发现数据库每秒的物理读次数下降明显,每秒读数据块个数为1,925个,如下所示:

而修改参数之前,每秒的物理读高达6624个,如下所示:

可见,增大数据库的BUFFER CACHE效果还是很明显的,增大BUFFER CACHE使得更多的数据块可以被缓冲到内存中,从而有效地减少了物理读。但需要注意的是,增大BUFFER CACHE会在一定程度上增加CPU的使用率,所幸的是,增大BUFFER CACHE之后CPU空闲率维持在80%左右,系统内存使用率在78%左右,如下所示:

在CPU资源充足的前提下,适当增加BUFFER CACHE内存可以缓减存储I/O资源紧张。

相关推荐