bufferpool命中率的问题

[复制链接]
查看11 | 回复9 | 2016-2-2 09:36:33 | 显示全部楼层 |阅读模式
最近bufferpool命中率一直徘徊在10%以下,线上因为过年了,所以活并不多,交易量很少,但是bufferpool就是上不去
有请过IBM的现场工程师,没有定论

现在发相应的log上来,请各位帮忙分析分析
如果还需要什么信息,我全都贴上来
[ 本帖最后由 dianzi011sh 于 2008-2-20 09:17 编辑 ]
回复

使用道具 举报

千问 | 2016-2-2 09:36:33 | 显示全部楼层
RESET MONITOR 后,再看看如何?
回复

使用道具 举报

千问 | 2016-2-2 09:36:33 | 显示全部楼层
snapshot之前一分钟左右除了timestamp,其它的monitor都是off的,应该不需要reset monitor吧
回复

使用道具 举报

千问 | 2016-2-2 09:36:33 | 显示全部楼层
本身是调优的问题,当然别人帮不上什么忙拉,只有自己对自己系统清楚嘛。
基本hit ratio低就是说明要么bp不够大,要么数据的flush in-out特别频繁(比如索引不好,什么都是tbscan,这样需要读的数据当然多),要不然就是数据的cluster ratio相当不好,prefetcher不能有效地把若干连续的extent读入之类的……反正不是一两句话能够搞定的,需要用排除法排除各种可能性然后找到根本原因
回复

使用道具 举报

千问 | 2016-2-2 09:36:33 | 显示全部楼层
哈哈,送我了93pub$!
回复

使用道具 举报

千问 | 2016-2-2 09:36:33 | 显示全部楼层
一直以来都是10%还是,突然变成10%??
我觉得造成类似的原因很多,但归根结底还是业务的变更,或者最近对数据库进行了什么操作!
如果都不是,那么应该优化优化sql或者增大buffer pool了
回复

使用道具 举报

千问 | 2016-2-2 09:36:33 | 显示全部楼层
话说回来,bp hit ratio只是一个指标,一般来说hit ratio低只是代表只有不多的数据能够直接从bp里面获取,这个并不是说,在所有情况中,bp hit ratio低就代表性能不好。
在某些情况下,hit ratio低是正常的,也是性能优秀的表现,比如在一个oltp系统里面,一个有几十亿数据的数据库,用户的查询走索引,每一次索引完毕后都能够很快地指向唯一的RID,这样的话一般来说这行数据都不可能在bp里面的,因为OLTP基本都是random access,这样的话自然hit ratio很低,而且也是索引优秀的表现……
回复

使用道具 举报

千问 | 2016-2-2 09:36:33 | 显示全部楼层
不过在你得这个系统里应该不是上面所说的那个情况:
Rows deleted
= 110952
Rows inserted
= 141454
Rows updated
= 109158
Rows selected
= 25592431
Rows read
= 7053508226
Binds/precompiles attempted
= 345
这个说明平均一个query和DIU需要读取271行,并且从
Buffer pool data logical reads
= 184436
Buffer pool data physical reads
= 132849
Buffer pool temporary data logical reads = 0
Buffer pool temporary data physical reads= 0
Asynchronous pool data page reads
= 126542
Buffer pool data writes
= 0
Asynchronous pool data page writes = 0
Buffer pool index logical reads
= 1441
Buffer pool index physical reads = 46
可以看出,如果是OLTP系统的话索引作的不大好,1441个索引读对应184436数据页读……
其中譬如说下面这个语句
Buffer pool data logical reads
= 313
Buffer pool data physical reads
= 305
Buffer pool temporary data logical reads = 0
Buffer pool temporary data physical reads= 0
Buffer pool index logical reads
= 3
Buffer pool index physical reads = 1
Buffer pool temporary index logical reads= 0
Buffer pool temporary index physical reads = 0
Blocking cursor
= YES
Dynamic SQL statement text:
SELECT TOTAL_ACTION FROM SPC.SPCGDAT WHERE DC_TYPE = 'Process' AND GNO = 1440 AND CNO = 10 AND CTYPE = 20 ORDER BY PROC_DATETIME DESC FETCH FIRST 1 ROWS ONLY
hit ratio就相当低,是不是可以考虑对PROC_DATETIME作reorg……你可以从这种方面入手看看
看到你有很多类似的查询语句,感觉是你有order by语句,所以就算是fetch first 1 row only,也需要把所有符合条件的语句找出来。这样的话如果你的数据分布不是按照order by的那个列走的,就需要根据rid在磁盘中找来找去,不能有效运用prefetcher……
还有,你得查询语句里面好像根本不用parameter marker……这样在分析的时候会很困难的,因为不能够把同样类型的查询集中在一起,所有的看起来都是完全不同的查询……
或许在列DC_TYPE, GNO, CNO, CTYPE和PROC_DATETIME DESC上作索引也可能会有帮助哦
[ 本帖最后由 wangzhonnew 于 2008-1-20 03:19 编辑 ]
回复

使用道具 举报

千问 | 2016-2-2 09:36:33 | 显示全部楼层
为800鸣不平。不是800搞不定,是调优的问题不是两三句话能说得清。
回复

使用道具 举报

千问 | 2016-2-2 09:36:33 | 显示全部楼层
原帖由 unixnewbie 于 2008-1-20 06:33 发表
为800鸣不平。不是800搞不定,是调优的问题不是两三句话能说得清。

是呀,调优问题原来都是cousult line管的,并不是技术支持部门的工作,技术支持部门主要负责defect support,而不是调优的说
而consult line是billable service,应该是要额外付钱的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行