`
itspace
  • 浏览: 960784 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

记一次内存换取I/O的优化方法

 
阅读更多
某客户数据库从P595物理迁移至P780新服务器并更换存储之后,发现应用性能反而下降。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语法如下所示:
alter table xxx storage(buffer_pool keep);
alter index xxx storage(buffer_pool keep);
可以通过DBA_SEGMENTS.BUFFER_POOL字段查看对象是否已经KEEP进KEEP池中。如下所示:
SQL> select distinct BUFFER_POOL from dba_segments;

BUFFER_
-------
DEFAULT
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资源紧张。
分享到:
评论

相关推荐

    kafkaDonet用到的dll

    Kafka是分布式消息系统,需要处理海量的消息,Kafka的设计是把所有的消息都写入速度低容量大的硬盘,以此来换取更强的存储能力,但实际上,使用硬盘并没有带来过多的性能损失 kafka主要使用了以下几个方式实现了超高...

    微信小程序登录换取token的教程

    前言: 这次主要是介绍些业务逻辑,技术点倒是没有多少。...一:微信登录换取token的流程 多说无益,直接上图 小程序获取token.png 这里介绍的主要是后端开发的流程,前端的不是本文介绍的重点 二:如何将cod

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    · 使用线程池、任务、取消、计时器和异步I/O操作来设计响应性强、稳定性高和伸缩性大的解决方案 · 借助于异常处理来进行状态管理 · 使用CLR寄宿、AppDomain、程序集加载、反射和C#的dynamic类型来构造具有动态...

    从“环境换取增长”到“环境优化增长”——环境与经济关系的转.pptx

    从“环境换取增长”到“环境优化增长”——环境与经济关系的转.pptx

    网络游戏-游戏中角色进行任务以换取复活的方法.zip

    网络游戏-游戏中角色进行任务以换取复活的方法.zip

    vue使用微信扫一扫功能的实现代码

    第一步: 安装weixin-js-sdk 和 jquery 包 npm install weixin-js-sdk jquery 第二部: 配置wx.config (配置都是后端返回来的,菜鸟前端只需要按需传值过去就可) 代码如下 import wx from “weixin-js-sdk”; ...

    CLR.via.C#.(中文第3版)(自制详细书签)Part1

    · 使用线程池、任务、取消、计时器和异步I/O操作来设计响应性强、稳定性高和伸缩性大的解决方案 · 借助于异常处理来进行状态管理 · 使用CLR寄宿、AppDomain、程序集加载、反射和C#的dynamic类型来构造具有动态...

    CLR.via.C#.(中文第3版)(自制详细书签)

    27.8.2 总是调用EndXxx方法,而且只调用一次 27.8.3 调用EndXxx方法时总是使用相同的对象 27.8.4 为BeginXxx和EndXxx方法使用ref,out和params实参 27.8.5 不能取消异步I/O限制操作 27.8.6 内存消耗 27.8.7 有...

    CLR.via.C#.(中文第3版)(自制详细书签)Part3

    · 使用线程池、任务、取消、计时器和异步I/O操作来设计响应性强、稳定性高和伸缩性大的解决方案 · 借助于异常处理来进行状态管理 · 使用CLR寄宿、AppDomain、程序集加载、反射和C#的dynamic类型来构造具有动态...

    小程序通过Code换取OpenId(后台为Java)

    微信小程序的用户信息获取需要请求微信的服务器,通过小程序提供的API在小程序端...小程序端比较简单,从教程的API部分把代码拷贝到小程序里就好了,这里将提供一个javaweb服务器端换取session_key和openid的代码示例

    mysql优化(一)

    从架构层上做优化,可以做分布式:1.数据表设计层2.索引设计层(索引是一种空间换时间的策略, 在换取时间的同时也有一定的开销, 若索引失当, 可能开销大于收益)3.SQL应用层的优化

    Minos.zip 一个基于Tornado/mongodb/redis的社区系统

    一个基于Tornado/mongodb/redis的社区系统。特点 简单:去除传统社区中多数不常用到的功能,保留精华。(这里向 http://zone.wooyun.org 学习) 高效: mongodb:数据库设计合理,以空间换取时间,尽量减少数据库...

    用积分换取等级插件for leadbbs3.14

    用积分换取等级插件for leadbbs3.14 下载后,把两个asp文件上传到论坛user目录下即可 在 UserPromoton_Fun.asp中,修改金钱买文章数的比例。 在论坛目录inc/Board_Popfun.com中,找到 MN2(4,&...

    springboot+微信小程序用codeid换取openid.zip

    springboot+微信小程序用codeid换取openid。所用方法简单,单独进行封装,方便二次使用

    PsoPath:最短路径问题的粒子群优化算法-开源

    粒子群优化的基本思想是模拟例如一群鸟的社会行为,作为一种随机优化方法。 具体而言,粒子是表示搜索空间中解的实体。 几个粒子在算法流内协作以占据接近最佳解决方案的位置。 开发在...

    基于机会约束规划的家庭用电设备负荷优化调度方法

    为了解决家庭负荷优化调度中的不确定性参数问题,以非侵入负荷监测数据为基础,提出一种基于机会约束规划的家庭用电设备负荷优化调度方法。该方法采用机会约束规划方法构建了一个包含多种随机变量的优化调度模型,并...

    6.腾讯微博Android客户端开发——换取Access

    腾讯微博Android客户端开发——换取Access,课程下载地址:http://blog.csdn.net/coolszy

    关于Oracle数据库优化的几点总结

    个人理解,数据库性能关键的因素在于IO,因为操作内存是快速的,但是读写磁盘是速度很慢的,优化数据库关键的问题在于减少磁盘的IO,个人理解应该分为物理的和逻辑的优化, 物理的是指oracle产品本身的一些优化,...

    6.换取Access_Token.rar

    6.换取Access_Token.rar 6.换取Access_Token.rar 6.换取Access_Token.rar 腾讯微博Android客户端开发

    360°网站优化专家 v1.1.zip

    360°网站优化专家是为中小企业网站,中小电商网站,政府科研机构网站,培训教育类网站,量身打造的安全防护平台,主要针对 关键词、关键词密度、友链、是否有网站地图、是否有死链、百度权重、百度流量、百度快照、...

Global site tag (gtag.js) - Google Analytics