V$ROWCACHE 本视图显示数据字典缓存(也叫rowcache)的各项统计每一条记录包含不同类型的数据字典缓存数据统计注意数据字典缓存有层次差别因此同样的缓存名称可能不止一次出现 V$ROWCACHE常用列 PARAMETER缓存名 COUNT缓存项总数 USAGE包含有效数据的缓存项数 GETS请求总数 GETMISSES请求失败数 SCANS扫描请求数 SCANMISSES扫描请求失败次数 MODIFICATIONS添加修改删除操作数 DLM_REQUESTSDLM请求数 DLM_CONFLICTSDLM沖突数 DLM_RELEASESDLM释放数 使用V$ROWCACHE数据 >确认数据字典缓存是否拥有适当的大小如果shared pool过小那数据字典缓存就不足以拥有合适的大小以缓存请求信息 > 确认应用是否有效访问缓存如果应用设计未能有效使用数据字典缓存(比如大数据字典缓存并不有助于解决性能问题)例如DC_USERS缓存在过去某段时期内出现大量GETS看起来像是数据库中创建了大量的不同用户并且应用记录下用户频繁登陆和注销通过检查logon比率以及系统用户数可以验证上述数据同时解析比率也会很高如果这是一个大型的OLTP系统的中间层它可能在中间层更有效的管理个别帐户允许中间层以单用户登陆成为应用所有者通过保持活动连接来减少logon/logoff比率也同样有效 >确认是否发生动态空间分配DC_SEGMENTS DC_USED_EXTENTS 以及DC_FREE_EXTENTS大量的类似大小修改将指出存在大量动态空间分配可行的解决方案包括指定下一个区大小或者使用本地管理表空间如果发生空间分配的是临时的表空间则可以为其指定真正的临时表空间(If the space allocation is occurring on the temp tablespace then use a true temporary tablespace for the temp ) >dc_sequences值的变化指出是否大量sequence号正在产生 >搜集硬解析的证据硬解析常表现为大量向DC_COLUMNS DC_VIEWS 以及 DC_OBJECTS caches的gets 示例 分组统计数据字典统计项 SELECT parametersum(COUNT)sum(usage)sum(gets)sum(getmisses) sum(scans)sum(scanmisses)sum(modifications) sum(dlm_requests)sum(dlm_conflicts)sum(dlm_releases) FROM V$ROWCACHE GROUP BY parameter; 检查数据字典的命中率 select sum(getmisses) / sum(gets) data dictionary hitratio from v$rowcache; |