Latch是oracle使用的另一种并发控制机制,Latch是一种“低级”锁,这种锁主要用于保护数据结构。
oracle的内存使用都是以GB为单位的,在这么大的空间中寻找一个数据,必须要以高效的方式组织内存才能保证效率。oracle采用的哈希算法来组织内存的。
在遍历链表的过程中,链表这个数据结构本身也可能被其他进程并发修改,因此对链表数据结构也需要进行并发控制,这中控制就是使用的Latch。
latch和lock对比:
Latch和Lock的作用是相同的,都是为了保护资源,防止并发访问造成的破坏。但是Latch的实现机制和Lock有很大差异:
1、Latch请求、获得、释放等操作是原子操作,使用时间非常短;
2、进程请求Latch却不能得到时,进程不会释放cpu资源,而是不断尝试请求,只有尝试一定次数之后还不能获得时,才释放cpu,这就是Latch的Spin机制。这时的表现就是cpu利用率非常高,但是吞吐量却很低。
3、Latch使用的是抢占机制,Lock使用的是排队机制。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25323853/viewspace-694415/
,如需转载,请注明出处,否则将追究法律责任。