讨论:数据库内部的众多内存参数如何设置比较合理

如果对数据库的自动内存管理效果不满意,如何调整数据库的参数,比如Oracle的SGA/PGA/Data buffer/shared pool/java pool/large pool.

参与9

2同行回答

hufeng719hufeng719联盟成员系统工程师某钢铁企业
一般我们会把oracle实例的内存用到系统物理内存的80%-60%(4G以上内存用到80%以上,2G内存用到60%-70%)s=pga+sga_max_size=80%memory(对于OLTP系统pga是sga的4分之1,如果是DSS,则可以各占一半)db_cache_size=60%sgashared_pool_size=sga_max_size-db_cache_size-160m也可以设...显示全部

一般我们会把oracle实例的内存用到系统物理内存的80%-60%(4G以上内存用到80%以上,2G内存用到60%-70%)

s=pga+sga_max_size=80%memory(对于OLTP系统pga是sga的4分之1,如果是DSS,则可以各占一半)

db_cache_size=60%sga

shared_pool_size=sga_max_size-db_cache_size-160m也可以设置为35%sga左右

java_pool_size=64m

large_pool_size=16m

log_buffer=2m

当然如果您的物理内存比较大的话 下面几项都可以适当增加

收起
能源采矿 · 2017-03-09
浏览1906
yangjianxvyangjianxv部门总经理成方金融科技有限公司
我的经验是这样,1)论证:是否需要保障某个关键场景的性能,要求这个关键场景的性能指标(比如事务的响应时间)到什么程度。如果需要保障,则进行调优(人为干预内存分配策略)2)试跑:对于oracle内部的这些内存参数,首先采用自动内存管理的方式,跑一跑“关键”场景、峰值的压力,持续比较长的一...显示全部

我的经验是这样,

1)论证:是否需要保障某个关键场景的性能,要求这个关键场景的性能指标(比如事务的响应时间)到什么程度。如果需要保障,则进行调优(人为干预内存分配策略)

2)试跑:对于oracle内部的这些内存参数,首先采用自动内存管理的方式,跑一跑“关键”场景、峰值的压力,持续比较长的一段时间。在此过程中,打一份awr报告。看看awr报告中各个内存区域的大小是否有变化。

3)猜测:如果某一项的值(比如data buffer)从开始到结束,有明显的增加,说明可能是这一项大一些有助于提高这个关键场景的性能。

4)验证:把这一项的值,人工调大,测试验证是否有效果。

需要注意的是,如果数据库上支撑多个业务场景,这些场景并没有某个关键场景需要保障,则最好不做人为的内存分配。除非碰到了oracle的自动内存管理的bug。

收起
银行 · 2017-03-10
浏览1739

提问者

yangjianxv
部门总经理成方金融科技有限公司
擅长领域: 服务器中间件数据库

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2017-03-09
  • 关注会员:3 人
  • 问题浏览:6150
  • 最近回答:2017-03-10
  • X社区推广