如果对数据库的自动内存管理效果不满意,如何调整数据库的参数,比如Oracle的SGA/PGA/Data buffer/shared pool/java pool/large pool.
收起我的经验是这样,
1)论证:是否需要保障某个关键场景的性能,要求这个关键场景的性能指标(比如事务的响应时间)到什么程度。如果需要保障,则进行调优(人为干预内存分配策略)
2)试跑:对于oracle内部的这些内存参数,首先采用自动内存管理的方式,跑一跑“关键”场景、峰值的压力,持续比较长的一段时间。在此过程中,打一份awr报告。看看awr报告中各个内存区域的大小是否有变化。
3)猜测:如果某一项的值(比如data buffer)从开始到结束,有明显的增加,说明可能是这一项大一些有助于提高这个关键场景的性能。
4)验证:把这一项的值,人工调大,测试验证是否有效果。
需要注意的是,如果数据库上支撑多个业务场景,这些场景并没有某个关键场景需要保障,则最好不做人为的内存分配。除非碰到了oracle的自动内存管理的bug。