脚本之查询库缓存上的PIN命中率
2014-11-21 09:46
106 查看
v$librarycache
这个视图包含了关于librarycache的性能统计信息,对于共享池的性能调优很有帮助。它是按照命名空间分组统计的,结构如下:
注释:
gets字段是针对找句柄(librarycacheobjecthandle),而pins字段是针对找librarycacheobject。
librarycacheobjecthandle和librarycacheobject两个部分组成了一个完整的库对象。
其中,librarycacheobject这个部分可以被刷出到磁盘上,需要时再重载(
只有状态为recreatable的chunk才是可以被刷出的对象(位于sharedpool的LRU链表上)。
其中PIN的命中率(或未命中率)是我们系统调优的一个重要依据:
当命中率小于99%或未命中率大于1%时,说明系统中硬解析过多(重载(
cacheobject这个部分从磁盘读取到库缓存中?而是通过重新解析SQL语句来重建(recreate)[b]library
cacheobject这个部分[/b]?[/b]),要做系统优化(增加SharedPool、使用绑定变量、修改cursor_sharing等措施,性能优化不是本文重点,不再赘述)。
这个视图包含了关于librarycache的性能统计信息,对于共享池的性能调优很有帮助。它是按照命名空间分组统计的,结构如下:
字段 | 数据类型 | 说明 |
NAMESPACE | VARCHAR2(15) | librarycache的命名空间 |
GETS | NUMBER | 请求GET该命名空间中对象的次数。 |
GETHITS | NUMBER | 请求GET并在内存中找到了对象句柄的次数(锁定命中,latch命中)。 |
GETHITRATIO | NUMBER | 请求GET的命中率。 |
PINS | NUMBER | 请求pin住该命名中对象的次数。 |
PINHITS | NUMBER | 库对象的所有元数据在内存中被找到的次数(pin命中)。 |
PINHITRATIO | NUMBER | Pin命中率。 |
RELOADS | NUMBER | Pin请求需要从磁盘中载入对象的次数。 |
INVALIDATIONS | NUMBER | 命名空间中的非法对象(由于依赖的对象被修改所导致)数。 |
DLM_LOCK_REQUESTS | NUMBER | GET请求导致的实例锁的数量。 |
DLM_PIN_REQUESTS | NUMBER | PIN请求导致的实例锁的数量. |
DLM_PIN_RELEASES | NUMBER | 请求释放PIN锁的次数。 |
DLM_INVALIDATION_REQUESTS | NUMBER | GET请求非法实例锁的次数。 |
DLM_INVALIDATIONS | NUMBER | 从其他实例那的得到的非法pin数。 |
gets字段是针对找句柄(librarycacheobjecthandle),而pins字段是针对找librarycacheobject。
librarycacheobjecthandle和librarycacheobject两个部分组成了一个完整的库对象。
其中,librarycacheobject这个部分可以被刷出到磁盘上,需要时再重载(
reload)到库缓存中。
只有状态为recreatable的chunk才是可以被刷出的对象(位于sharedpool的LRU链表上)。
其中PIN的命中率(或未命中率)是我们系统调优的一个重要依据:
SQL>selectsum(pins)"hits",
2sum(reloads)"misses",
3sum(pins)/(sum(pins)+sum(reloads))"HitsRatio"
4fromv$librarycache;
hitsmissesHitsRatio
------------------------------
849628032880.99999661
SQL>
SQL>selectsum(pins)"hits",
2sum(reloads)"misses",
3((sum(reloads)/sum(pins))*100)"Reload%"
4fromv$librarycache;
hitsmissesReload%
------------------------------
849638082880.00033896
SQL>
当命中率小于99%或未命中率大于1%时,说明系统中硬解析过多(重载(
reload)不是意味着将[b]library
cacheobject这个部分从磁盘读取到库缓存中?而是通过重新解析SQL语句来重建(recreate)[b]library
cacheobject这个部分[/b]?[/b]),要做系统优化(增加SharedPool、使用绑定变量、修改cursor_sharing等措施,性能优化不是本文重点,不再赘述)。
相关文章推荐
- sql语句脚本之查询PGA,sga等命中率
- 脚本之查询自实例启动至今的buffer命中率
- Oracle查询数据缓存区命中率的查询语句
- Scripts:查询每个session命中率的脚本perf_hit_ratio_by_session.sql
- 用于查询当前数据库中所有表格的记录条数的脚本
- MySql Query Cache 查询缓存介绍(1)
- [MySQL优化案例]系列 -- 无法使用查询缓存
- 巧用Hibernate的查询缓存
- 常用工具之 vb转化C# 数据连接串 正则表达式查询 源码世界 脚本字典
- 用于查询当前数据库中所有表格的记录条数的脚本
- 浅谈MySQL查询缓存机制
- 用于查询当前数据库中所有表格的记录条数的脚本
- Squid缓存命中率调整惨痛教训
- 清除指定squid缓存文件的脚本[原创]
- 4.1.0中文参考手册---6.9MySQL查询缓存
- 基于SQL2005查询通知的数据缓存
- js脚本弹出模式查询页面
- MySQL 查询缓存
- 清除指定squid缓存文件的脚本[原创]
- 用于查询当前中所有表格的记录条数的脚本