从某种意义上说, Latch 是内存中的资源锁,数据库对象(表,索引等)的锁叫Lock。
Latch 和 Lock 的区别:
- ( 1)Latch 是对内存数据结构提供互斥访问的一种机制,而 Lock 是以不同的模式来套取共享资源对象,各个模式间存在着兼容或排斥,从这点看出, Latch的访问,包括查询也是互斥的,任何时候,只能有一个进程能 spin 住内存的某一块,幸好这个过程是相当的短暂,否则系统性能将没的保障,从 9I 开始,允许多个进程同时查询相同的内存块。
- ( 2)Latch 只作用于内存中,他只能被当前实例访问,而 Lock 作用于数据库对象,在 RAC 体系中实例间允许 Lock 检测与访问。
- ( 3)Latch 是瞬间的占用释放, Lock 的释放需要等到事务正确的结束,他占用的时间长短由事务大小决定
- ( 4)Latch 是非入队的,而 Lock 是入队的
- ( 5)Latch 不存在死锁,而 Lock 中存在。