对oracle 的 lock 和latch 概念和区别不是很了解 ?希望能简单的说说 (书上翻译过来的比较生涩。希望能简单说说 )

解决方案 »

  1.   

    要简单的哈?latch是锁内存里的东西
    lock就是一般学的表啊行啊什么的锁呵呵 
      

  2.   

    2个都是并发控制机制想知道如楼上所言 latch一般不用管  是内存自动处理产生的俄dba只需要分析就可以拉 对吗?
      

  3.   

    入门 深入的讲讲好吗 
    以前参加过oracle的培训  
    知道 但是当时理解不够深入
      

  4.   

    http://lzfhope.blog.163.com/blog/static/6363992200951041532317/先看看吧
      

  5.   

    没有办法
    对只是的渴求是无止境的 
    在csdn帮助下 突飞猛进
    现在自发的研究疑难  ----------------自槽,苦衷求乐 
      

  6.   

    Oracle中有关Latch的介绍
      Latch是Oracle提供的轻量级锁资源,用于快速,短时间的锁定资源,防止多个并发进程同时修改访问某个共享资源,他只工作在内存中,我们可以不大准确的说,内存中资源的锁叫latch,数据库对象(表,索引等)的锁叫Lock。
    "); 
      本文向各位阐述Oracle的Latch机制,Latch,用金山词霸翻译是门插栓,闭锁,专业术语叫锁存器,我开始接触时就不大明白为什么不写Lock,不都是锁吗?只是翻译不同而以?研究过后才知道两者有很大的区别。
      Latch是Oracle提供的轻量级锁资源,他用于快速,短时间的锁定资源,防止多个并发进程同时修改访问某个共享资源,他只工作在内存中, 我们可以不大准确的说,内存中资源的锁叫latch,数据库对象(表,索引等)的锁叫Lock。比如数据缓存中的某个块要被读取,我们会获得这个块的 latch,这个过程叫做pin,另外一个进程恰好要修改这个块,他也要pin这个块,此时他必须等待,当前一个进程释放latch后才能pin住,然后 修改,如果多个进程同时请求的话,他们之间将出现竞争,没有一个入队机制,一旦前面进程释放所定,后面的进程就蜂拥而上,没有先来后到的概念,这个和 Lock是有本质区别的,这一切都发生的非常快,因为Latch的特点是快而短暂,当然这个只是大致过程,细节部分在后面讨论
      先来看下Latch和Lock的区别,
      1. Latch是对内存数据结构提供互斥访问的一种机制,而Lock是以不同的模式来套取共享资源对象,各个模式间存在着兼容或排斥,从这点看出,Latch 的访问,包括查询也是互斥的,任何时候,只能有一个进程能pin住内存的某一块,幸好这个过程是相当的短暂,否则系统性能将没的保障,现在从9I开始,允 许多个进程同时查询相同的内存块,但性能并没有想象中的好。
      2. Latch只作用于内存中,他只能被当前实例访问,而L ock作用于数据库对象,在RAC体系中实例间允许Lock检测与访问
      3. Latch是瞬间的占用,释放,Lock的释放需要等到事务正确的结束,他占用的时间长短由事务大小决定
      4. Latch是非入队的,而Lock是入队的
      5. Latch不存在死锁,而Lock中存在(死锁在Oracle中是非常少见的)
      

  7.   

    lock就是一般学的表啊行啊什么的锁呵呵 
      

  8.   

    lock就是一般学的表啊行啊什么的锁呵呵