使用keep_pool缓存表优化一例

查了挺久的问题了。

用户反应早上第一笔业务,查询缓慢,之后每笔业务均能1S内返回。

从现象上分析,应该是此业务所需的表数据不在SGA内,而采用物理读的方式进行第一次访问,造成效率比较低。由于此库上跑了好几套业务,无法从全局确定问题。但是从statspack还是能看到些迹象的。

首次响应缓慢时   Buffer  Hit   %:   98.36

之后时间段的查询  Buffer  Hit   %:  100.00

由于业务分布比较乱,statspack中,无法直接看到用户反应慢的语句,但是可以注意到在用户操作前,其他业务有一语句,物理读高达50W次以上,2G多的数据被读入SGA,造成核心应用需要的数据被挤出了SGA。

联系应用开发商,从应用端捕获了用户操作所触发的语句。将牵涉到的表全部缓存到sga的keep_pool中,使其不被其他大的数据操作刷出。

经测试,第二天第一笔交易1S内返回。

 

顺便做了个测试,如果放到keep pool的表,增长超过了keeppool的指定大小怎么办。

根据官方文档:

Note:

If an object grows in size, then it might no longer fit in the KEEP buffer pool. You will begin to lose blocks out of the cache.
 
发生这类情况,若表大于keep_pool_size的设置,会被留在buffer_pool中,根据lru法则进行清除。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7969839/viewspace-695827/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7969839/viewspace-695827/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值