我行数据库给索引单独指定了一个表空间,这个索引所在的表空间单独指定了缓冲池。但是这个缓冲池的命中率特别低。请问如何提高命中率?另外命中率低下,是不是因为索引效率低的原因?如何定位哪些索引效率低下?
谢谢!
索引缓冲池命中率低是不是只是从缓冲池这个维度去查看的结果?如果是这样的话不太准确,因为我们最终想看的是哪个表的哪个索引命中率低,这样才知道是不是有问题。这个可以从表空间的缓冲池命中率和相关sql的缓冲池命中率去确定。如果最终确定了是表的索引命中率低,有两个方向去调整。一个是增加buffer的大小。这种在buffer原先设置过小的情况下是很有效的。第二个是查还有谁占用了缓冲池,例如全表扫的大表,临时表等,把这些占buffer的东西都弄到其他表空间去占用单独的bufferpool。这样就能减少影响。
收起先确认所有索引是不是都建在这个表空间了,很多时候开发写的建表语句不指定索引表空间的,没有经过DBA审核就上线了。
如果确认就得具体问题具体分析了,可以先从TBSCAN入手。
以上各位专家回答的都正确,补充下,如果索引使用频率低,也会导致命中率低,请查看该索引对应bufferpool上physical IO和logical IO确定问题
收起