ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Latch 与 Lock 的区别

Latch 与 Lock 的区别

原创 Linux操作系统 作者:tolywang 时间:2011-06-08 08:46:33 0 删除 编辑

原文:oracle wait interface—a practical guide to performance diagnostics & tuning 

 

 

Latch

Lock

目的

只有一个目的:保证对内存结构的排他性访问(从oracle9i开始,cache buffers chain latch可以允许只读共享访问)

两个目的:如果锁模式是兼容的,允许多个进程共享相同的资源;如果锁模型是不兼容的,保证对共享资源的排它性访问。

适用场景

只能应用于sga中的数据结构,保护内存对象。Latch只影响单次操作,而和事务无关。

保护数据库对象,诸如表,数据块和状态对象等。由应用程序驱动,控制对数据库中数据和元数据的访问。

Lock是事务性的。

获取方式

两种模式:willing-to-waitno-wait

六种模式:null, row share, row exclusive, share, share row exclusiveexclusive

范围

信息都保存在内存中,并且只在本实例可见――latch是实例级别的

 信息保存在数据库中,并且该数据库的所有实例都可见――lock是数据库级的

复杂度

使用简单机器指令比如:test-and-set, compare-and-swap或其他简单的cpu指令实现。由于cpu指令平台相关,所以latch在不同的平台的具体实现不一样。

轻量级的。

需要上下文切换(context switch),使用一系列指令实现。

重量级的。

持续事件

非常短暂(通常是微秒级的)

通常在整个事务中都持有。

排队机制

当一个进程获取latch失败,转入睡眠状态时,他的请求不需要按顺序排队(一个例外情况:latch wait list latch需要排队)。

当一个进程获取lock失败,它的请求会进入一个队列,除非指定nowait

死锁

Latch的实现方式不会产生死锁(不排队)

Lock的排队机制可能导致死锁。死锁发生时会产生相应的跟踪文件。

 

http://www.itpub.net/viewthread.php?tid=531500&highlight=latch%2Bfree

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-697353/,如需转载,请注明出处,否则将追究法律责任。

上一篇: v$session_longops
下一篇: latch free等待事件
请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13470878