什么是LATCH 什么又导致LATCH 竞争?

问题描述:

什么是LATCH 什么又导致LATCH 竞争?
1个回答 分类:综合 2014-10-02

问题解答:

我来补答
产生:在data buffer 有block 被access的时候产生; 解决: 减少这个latch 竞争就是要减少sql 的逻辑IO
Cache buffers LRU chain latch:
产生: 1、当一个新的block 被读到data buffer 的时候 2、data 从databuffer 写到disk 3、对Data buffer 进行scan 以获得那些block是dirty 时候; 解决: 1、加大data buffer,但是这对于FTS 比较多的系统并不中用 2、设置Multiple buffer pools 3、加大DB_BLOCK_LRU_LATCHES 参数的值 4、always ensure DB_BLOCK_LRU_STATISTICS is set to FALSE
Redo allocation latch:
产生:在log buffer中分配空间的时候获得,一个instance 只有一个Redo allocation latch; 解决:1、加大log buffer 2、设置 nologging 选项
Redo copy latch:
产生:当系统将redo records 写到log buffer 的时候产生;
Library cache latch:
产生:The library cache latches 保护cached 的sql 语句,以及cached 的object 的定义,它是当将新的解析的sql 语句 插入到library cache 的时候产生,该值过大,表示hard parse 过多; 解决: 1、绑定变量 2、适当加大shared pool 3、加大_KGL_LATCH_COUNT 参数
Library cache pin latch:
产生: 当cached sql 语句再次被执行的时候产生,这个latch 的严重丢失表明sql 被严重的多次执行; 解决: 几乎没有办法来解决该问题,一个效果不大的办法是书写:a.b 类似的sql
 
 
展开全文阅读
剩余:2000