oracle一次latch free案例

来源:这里教程网 时间:2026-03-03 19:12:36 作者:

一、事情经过

XXX客户生产数据库,客户提供高峰期卡顿时间发生在月结。由于报告保存时间为7天,无法查找到月初的报告,通过增加业务模拟环境,发现业务产生时间段操作系统整体资源使用率较低,数据库latch争用较为严重。详见具体诊断过程如下:

概念介绍:result cache

Oracle 11G 之前的版本数据读写操作,都是将数据块(Data Block)缓存到Buffer Cache中。每次SQL语句执行,都是从Buffer Cache中检索数据块从而发生逻辑读。

在Oracle 11g之后,推出了Result Cache这种新特性用于缓存结果集,Result Cache的原理是将SQL结果集直接进行保存,每次SQL语句来了,就直接把结果集合返回,减少了逻辑读。

二、问题分析

数据库性能分析

latch free 锁:

 

三、结论

从性能报告指标中看出latch free 锁主要在result cache上消耗较为严重。

而result cache适用于数据变更较小的表格,对于并发量增加的情况下频繁的表格更新,result不断重构,导致latch锁的加剧,最终影响数据库整体性能。

 

四、建议

1. 对于latch free锁问题(已处理)

结合当前主机资源使用,高并发数据变更较为频繁,主机资源又充足的的情况下建议关闭result cache 缓存减少锁的争用。  

  SYS@orcl>show parameter result NAME        TYPE            VALUE ------------------------------------ ----------- ------------------------- _optimizer_ads_use_result_cache         boolean            FALSE client_result_cache_lag               big integer           3000 client_result_cache_size               big integer             0 result_cache_max_result                 integer               5 result_cache_max_size       big integer             48 result_cache_mode          string            MANUAL result_cache_remote_expiration          integer               0 alter system set result_cache_max_size=0 scope=both;

 

 

 

 

 

 

相关推荐