Buffer deadlock

buffer busy waitsが大量に発生した場合に時折発生することがある問題です。 つまり、Oracleで述べたようにbuffer pinを獲得する過程で発生する可能性があるデッドロックです。

このような問題が生じる理由は、Oracleでbuffer pinをキャッチすると、同じクラスについては、単一のブロックずつpinを獲得する作業で見つけることができます。 たとえば、AのプロセスがB1、B2ブロックのpinが必要な場合にB1にpin&release後、B2についてpin&releaseをするようにPinのオペレーションをします。

これを行う中で、同じブロックに対して大量の競合が発生した場合、非常に短く、デッドロック現象が発生する可能性がありますが、一般的に非常に短く発生するので、大きな問題はありません。もしbuffer deadlockが長い時間、維持されるならばbugと推定してみることが適切である。