latch free,LATCH(锁存器或闩锁)提供了保护 SGA 中共享数据结构的低级序列化机制。闩锁是一种可以非常快速地获取和释放的锁。锁存器通常用于防止多个进程在给定时间执行同一段代码。当获取锁存器时,它会在特定级别获取以防止死锁。一旦进程获得了某个级别的锁存器,它就不能随后获得等于或低于该级别的锁存器(除非它获得 nowait)。与每个闩锁相关联的是一个清理过程,如果进程在持有闩锁时死亡,则将调用该过程。这种清理是使用 PMON 的服务完成的。锁存器的底层实现依赖于操作系统。闩锁的一些示例如下:
缓冲区高速缓存闩锁、库高速缓存闩锁、共享池闩锁、重做分配闩锁、复制闩锁、归档控制闩锁和重做日志缓冲区闩锁等。
本次LATCH对应的信息需要结合p2列的信息来区分:
在此版本数据库中338号latch指向的类型是simulator hash latch,这是用于评估如果增大buffer cache或shared pool大小将节省多少成本的一种机制,评估结果可以通过VDBCACHEADVICE、VDB_CACHE_ADVICE 、VDBCACHEADVICE、VSHARED_POOL_ADVICE、VMTTRTARGETADVICE、、VMTTR_TARGET_ADVICE、、VMTTRTARGETADVICE、、VSGA_TARGET_ADVICE等看到。根据官方资料介绍,出现此类型的latch争用并且引起性能问题,可以通过设置statistics_level = basic禁用了所有顾问和模拟器,或者单独禁用某个顾问,例如设置数据库参数DB_CACHE_ADVICE=OFF,来避免类似问题。
参考:
Understanding and Tuning Buffer Cache and DBWR (Doc ID 62172.1)

196

被折叠的 条评论
为什么被折叠?



