Buffer deadlock

EXEM Knowledge Base

Jump to: navigation, 찾기

buffer busy waits이 심하게 발생하는 경우에 간혹 나타날 수 있는 문제입니다. 즉, 오라클에서 말한것처럼 buffer에 대한 pin을 획득하는 과정에서 발생가능한 데드락인데요.

이러한 문제가 생기는 이유는 오라클에서 buffer pin을 잡을 때 동일한 클래스에 대해서는 하나의 블록씩 pin을 걸고 푸는 작업에서 찾을 수 있습니다. 예를 들어 A 프로세스가 B1, B2블록에 대한 pin이 필요할 경우에 B1에 pin & release 후에 B2에 대해 pin & release를 하는 식으로 Pin에 대한 오퍼레이션을 합니다.

이러는 와중에 동일 블록들에 대해 심하게 경합이 발생할 경우 아주 짧게 데드락 현상이 발생할 가능성이 있습니다만, 일반적으로 아주 짧게 발생되기 때문에 큰 문제는 없습니다. 만일 buffer deadlock이 긴 시간동안 유지된다면 bug로 추정해보는 것이 적절하다.