`

关于Latch与Spin

阅读更多

latch 是一种轻量级用于保护oracle共享内存结构,用户并发操作一致性的串行化锁定机制,如SGA中,各种数据被反复从磁盘读取到内存中,如果有并发用户做相同的实情,oracle必须使用一种机制来保证数据在读取的时候只能由一个会话来完成,这就是latch,latch不会造成阻塞,只会导致等待,与每个latch相联系的还有一个清楚的过程,当持有latch进程成为死进程时,系统清楚过程就会被调用;系统lock导致用户等待,需要考虑系统的逻辑设计是否有问题,如多用户对主键的删除或者修改,是否有用户使用select...for update这样的语法,外键是否创建索引。 latch争用多半要考虑系统及数据库自身的设计问题,如绑定变量、热块及参数设置是否合理。

 

spin 比如数据缓存中某个块要被读取,我们会获得这个块的latch,这个过程就叫spin;另外一个进程恰好要修改这个块,它也要spin这个块,此时它必须等待。当前一个进程释放latch才能spin住,然后修改。如果多个进程同时请求的话,他们之间出现竞争,没有一个入队机制,一旦前面进程释放锁定,后面的进程就蜂拥而上,没有一个先来后到的概念。并且这一切都发生非常快,因为latch的特点是快而短暂!

分享到:
评论

相关推荐

    latch相关内容讲解

    Latch SPIN_COUNT 参数(在Oracle 7中称为_LATCH_SPIN_COUNT)用于控制进程在等待Latch时的自旋次数。合理设置该参数可以帮助减少上下文切换开销,提高系统性能。根据系统的具体需求调整该参数是非常重要的。 总之...

    学习动态性能表(11)--v$latch$v$latch_children

    【学习动态性能表(11)--v$latch$v$latch_children】主要关注Oracle数据库中的动态性能视图,尤其是关于latch这一关键概念的监控和分析。latch是一种轻量级的锁定机制,用于保护SGA(System Global Area)中的共享...

    Oracle性能诊断之——Latch free

    在Oracle监控视图`V$LATCH`和`V$SESSION_WAIT`中,可以找到与Latch Free相关的详细统计信息,包括但不限于`immediate_misses`、`spin_gets`、`misses`和`sleep`等字段,它们分别记录了会话在获取Latch过程中的不同...

    latch Contention

    #### `spin_count`、锁竞争与吞吐量的关系 `spin_count`值的调整对锁竞争和系统的整体吞吐量有着重要的影响。如果设置得过低,可能导致更多的上下文切换和更高的CPU使用率;如果设置得过高,则可能增加锁等待的时间...

    Oracle数据库性能优化实务闩锁及闩锁优化.pptx

    Oracle数据库性能优化实务中,闩锁(Latch)与闩锁优化是关键的议题。闩锁是一种轻量级的锁机制,用于保护Oracle数据库内部的数据结构,确保并发访问时的一致性和完整性。它们主要分为三类:应用级锁、数据字典锁和...

    oracle数据库闩锁锁定与并发专题.doc

    这种类型的 latch 采用test-and-set的方式获取,如果当前进程无法立即获得 latch,它会在CPU上执行空循环,即SPIN CPU,而不是放弃CPU。这样做是因为上下文切换的开销较大,而 latch 的获取通常非常迅速。如果经过...

    Oracle数据库性能优化实务_闩锁及闩锁优化.pptx

    LATCH的申请并不通过队列机制,而是通过类似以下的简单流程:尝试获取LATCH,若无法立即获取,则进行自旋等待(SPIN)或睡眠(SLEEP)。 对于大型内存区域,Oracle使用多路复用LATCH(MULTI-LATCH)策略,将大内存...

    Lec08_索引并发1

    2. Test-and-Set Spin Latch:这是一种简单的自旋锁,通过单条指令获取或释放,但不适合高并发,并且对缓存和操作系统性能有负面影响。 3. Reader-Writer Latches:读写锁,基于自旋锁实现,设有限制以防止写锁饥饿...

    闩锁锁定和并发性实用教案.pptx

    - SQL语句未使用绑定变量,导致频繁解析,进而加剧了与解析SQL相关的latch争用。 - SQL语句执行效率低,扫描大量数据块,增加了对数据块访问的latch竞争。 因此,优化SQL语句、使用绑定变量以及合理设计索引,都...

    Oracle 10g 所有的隐含参数及相关参数含义说明_PDF版

    控制是否使用向量发布机制,这是一个与消息传递相关的参数,当设置为TRUE时,可以提高多线程环境下的通信效率。此参数对高性能并行处理场景特别重要。 ### _latch_class_* 和 _latch_classes 这一系列参数用于定义...

    ORACLE Bug 17588480

    该Bug是关于数据库中的死锁问题,特别是发生在库缓存(library cache)互斥锁和共享池锁(shared pool latch)之间。这种情况可能导致数据库操作停滞,因为多个数据库会话(session)因等待被占用的资源而无法继续...

    Tuning Database Locks & Latches[调优数据库锁和锁存器](PPT-61).ppt

    在实际操作中,可能需要使用各种工具和技术来监控锁和锁存器的状态,例如Oracle的动态性能视图(V$ views),如V$LOCK和V$LATCH,以识别哪些资源存在频繁的等待,从而进行针对性的优化。此外,还可以通过调整SQL语句...

    可重复使用的并行数据结构和算法.doc

    接下来,可重用旋转等待(Spin Wait)是一种简单的同步原语,它让线程在一个循环中不断检查条件,直到条件满足才停止等待。虽然它可能会导致CPU资源的浪费,但在某些短暂的同步场景下,旋转等待可以避免上下文切换的...

    可重复使用的并行数据结构和算法.pdf

    1. 倒计数锁存(Countdown Latch): 倒计数锁存是一种用于同步多个线程的机制,特别是在主线程需要等待一组并发执行的子任务完成后继续执行的场景。它不同于二进制的Mutex和Monitor,因为它允许一个初始计数值,然后...

    ORACLE数据库的优化

    在Oracle数据库内部,DBA可以通过查询`v$sysstat`视图中与CPU相关的统计项来了解数据库对CPU的使用情况,例如“CPU used by this session”,“OS Userlevel CPU time”和“OS Systemcall CPU time”。如果Oracle...

    微软内部资料-SQL性能优化3

    Contents Overview 1 Lesson 1: Concepts – Locks and Lock Manager 3 Lesson 2: Concepts – Batch and Transaction 31 Lesson 3: Concepts – Locks and Applications 51 Lesson 4: Information Collection and ...

Global site tag (gtag.js) - Google Analytics