暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 闩锁和互斥锁

askTom 2017-02-20
293

问题描述

亲爱的团队,

您能否让我知道一些闩锁和互斥锁类型的演示。

还有一件事,我们可以采取任何初步行动来避免将来发生闩锁和互斥。

想知道这背后的确切逻辑。

谢谢
普拉迪普

专家解答

锁存器和互斥体都是旨在提供对公共资源的序列化访问的内存结构。

这是一个可怕的比喻,但它确实解释了这个概念 :-)

为什么我们在厕所的门上有一个 (真正的物理) 闩锁?这是为了避免有人走进别人的尴尬局面。

在那里的人是什么都不做 (例如 “阅读”) 还是实际使用设施 (例如 “书写”) 并不重要-在任何一种情况下,他们都希望得到一些保证,没有人会突然出现在他们身上。

所以他们使用闩锁。

与Oracle相同-我可能只是在读取内存,但我需要保护我正在阅读的内容,因为有人可能会 “闯入” 并希望在阅读时更改该内存。

(oracle) 锁存器通常是几百个字节的结构,可以原子设置,因此本身不需要保护。单个锁存器可能会保护多个内存结构。互斥体是相似的,但通常是一个较小,不太复杂的结构-这意味着它们可以更快,你可以有更多的,这反过来应该给结构更粒度的访问,从而产生更多的并发性。

可能在数据库中看到的最常见的锁存/互斥锁问题是围绕共享池和库缓存,最常见的原因是解析或调用频率过高 (例如,在循环中紧密调用plsql函数)。

如果您想了解内部,Tanel上面有一组不错的幻灯片

http://blog.tanelpoder.com/files/Oracle_Latch_And_Mutex_Contention_Troubleshooting.pdf

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论