Enqueue&Lock and Latch
Enqueue 和Latch的层次是不一样的,它们不是类似物,不具可比性。而latch 同lock是一个层面的。而enqueue是oracle系统内一个队列,
一个等待某个锁的队列,保证对这个锁请求的有序性,FIFO。
所以主要讲一下Latch 和Lock
1.保护对象不同,一个保护内存结构,一个保护对象结构。
2.保护方法不同,一个无序竞争,一个是有序竞争。
3.请求模式不同,前者只有二种,后者多达6种。
4.可见范围不同,latch保护的是SGA里面的东东,所以当然与实例有密不可分的关系。某个实例里的latch跟其它的实例不搭界的。而lock
就不同了,所有要访问数据库里某个对象或某一数据行的实例都会看到相关lock.
5.lock会有死锁现象,而latch没有类似现象。
6.lock持有周期跟事务密切相关的,lock holder只有在事务结束时才释放相关资源如锁。所以事务周期很不确定,可长可短,有长有短。
而latch在大多数情况下持有者的持有时间是很短的,是以微秒为单位,也正是因为如此,对latch的竞争是无序的,没有先来后到之说。[@more@]
Enqueue 和Latch的层次是不一样的,它们不是类似物,不具可比性。而latch 同lock是一个层面的。而enqueue是oracle系统内一个队列,
一个等待某个锁的队列,保证对这个锁请求的有序性,FIFO。
所以主要讲一下Latch 和Lock
1.保护对象不同,一个保护内存结构,一个保护对象结构。
2.保护方法不同,一个无序竞争,一个是有序竞争。
3.请求模式不同,前者只有二种,后者多达6种。
4.可见范围不同,latch保护的是SGA里面的东东,所以当然与实例有密不可分的关系。某个实例里的latch跟其它的实例不搭界的。而lock
就不同了,所有要访问数据库里某个对象或某一数据行的实例都会看到相关lock.
5.lock会有死锁现象,而latch没有类似现象。
6.lock持有周期跟事务密切相关的,lock holder只有在事务结束时才释放相关资源如锁。所以事务周期很不确定,可长可短,有长有短。
而latch在大多数情况下持有者的持有时间是很短的,是以微秒为单位,也正是因为如此,对latch的竞争是无序的,没有先来后到之说。[@more@]
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7248175/viewspace-916605/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7248175/viewspace-916605/
本文详细对比了Latch与Lock的不同之处,包括它们所保护的对象、保护方法、请求模式、可见范围等,并阐述了两者在竞争机制及持有周期上的区别。
1587

被折叠的 条评论
为什么被折叠?



