锁存器是oracle为了读取存放在库高速缓存或者其他内存结构中的信息事必须获得的一种锁。它可以用来保护库高速缓存避免被两个同时进行的会话修改,或者一个会话正要读取的信息被另一个会话修改而导致的损坏。在读取库高速缓存中的信息之前,oracle都会获得一个锁存器,其他所有会话都必须等待,知道该锁存器被释放它们才能获得锁存器以完成工作。
如果锁存器已经被使用了,这时oracle会做一件叫自旋的事情(spinning)。oracle基本上将会迭代查询,看锁是否可用。
一段自旋之后如果锁存器还不能用(直到_sping_count指定的次数达到2000次),该请求就会暂时停止,你的会话将排到别的需要使用cpu的会话后面去。直到下次轮到使用cpu的时候来继续检查锁存器是否可用。这个迭代过程将不断重复直到锁存器可用。期间锁存器还可能被另外一个会话获得。
如果多个会话同时都需要获得锁存器的话,就会很耗费时间。这对性能和可扩展性影响是巨大。
如果锁存器已经被使用了,这时oracle会做一件叫自旋的事情(spinning)。oracle基本上将会迭代查询,看锁是否可用。
一段自旋之后如果锁存器还不能用(直到_sping_count指定的次数达到2000次),该请求就会暂时停止,你的会话将排到别的需要使用cpu的会话后面去。直到下次轮到使用cpu的时候来继续检查锁存器是否可用。这个迭代过程将不断重复直到锁存器可用。期间锁存器还可能被另外一个会话获得。
如果多个会话同时都需要获得锁存器的话,就会很耗费时间。这对性能和可扩展性影响是巨大。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26844646/viewspace-750189/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26844646/viewspace-750189/