SELECT ~ FOR UPDATE SKIP LOCKED その3 Tweet
skip lockedのつづきです。
skip lockedの特徴を確認しておきますか!
skip lockedはロックの獲得ができた行だけをロック待機なしで返してくれる :)
IDが'0001', '0002', '0003', '0005'の行をロックしておく。
SESSION1@pdborcl> select id from q where id in ('0001', '0002', '0003', '0005') for update skip locked;
ID
----
0001
0002
0003
0005
IDが '0001','0002','0003'の行は先行のトランザクションで既にロックされているため、ロックできた行だけがロック待機なしで返される。
SESSION2@pdborcl> select id from q where id in ('0001', '0002', '0003', '0004', '0005', '0006') for update skip locked;
ID
----
0004
0006
もちろん、ロックできる行が1行もなければロックを待機せず空振!
SESSION3@pdborcl> select id from q where id in ('0001', '0002', '0003') for update skip locked;
レコードが選択されませんでした。
つづく。
| 固定リンク | 0
コメント