Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2802694
  • 博文数量: 389
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 4773
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-16 23:29
文章分类

全部博文(389)

分类: Oracle

2010-08-25 11:10:35

                               lock与latch的认识
        latch和lock一样都是用来在并发环境下保护共享资源被破坏的一种机制。在作用上两者都是一样的,但是在实现方式上,两者又有区别
1,范围:latch是在一个instance级别,而lock是在database级别,比如RAC;
2, 时间:latch一个对像时,通常较短,lock则时间相对长;
3,模式:latch只有一种execlusive模式,9i以后有read only latch,不能性能似乎并不怎么好,,lock则为了提高并发性,有多种模式,如s(4),x(6),ssx(5),sx(3),ss(2),(注:括号中代表是v$lock的锁编号)等;
4,对像:latch主要是内存中的对像,比如buffer cache lru,library cache.shared pool之类的,lock主要是磁盘上的对像,如table,row;
5,获取方式:当多个session请求一个对像的latch时,一个session得到这个对像的latch以后,其他的会话还是会试图去请求latch这个过程称之为spin,当会话请求的次数达到_spin_count定义的次数以后,会话就进入sleep状态。lock则使用排队机制来请求锁。当一个session请求一个对像上的lock时,检查该对像上的锁,根据锁兼容矩阵获得相应模式的锁,进入对像的锁队列。
6,持有时间:当一个会话对一个对像的的操作完成时,会立即释放latch;lock会在请求该lock的事务在commit或rollback时才会释放;
7,实现层次,latch是由oracle的gernic layer实现,而lock则是由transcation management layer实现。
阅读(3070) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-08-28 14:51:23

Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com