山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

Oracleのロック

Oracleのロックは一般的なテーブルロック、

行ロック以外にもロックするケースがある

ようです。


その1つにラッチがあります。

これはSGAのメモリを確保する瞬間にかかる

ロックです。

ほんの一瞬だと思いますがこれによる

待ちで待機セッションがたまるような

場合もあります。

V$ACTIVE_SESSION_HISTORYを見ると

1秒ごとにサンプリングされたアクティブ

セッションを見ることができます。

ここのevent列を見るとラッチしている

様子がわかります。

latch: library cache lock

latch: cache buffers chains

latch: library cache

といったものがあります。


ラッチによるロックを回避するには

SQLをバインド変数を使って共有化する、

SGAをクリアする(SQLでできる)といった

方法があります。