- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2021-06-19T04:55:11+09:00","default:ryuichi","ryuichi")
#author("2021-06-19T20:24:38+09:00","default:ryuichi","ryuichi")
* テーブルロック [#lcb17034]
** LOCK TABLE ... IN EXCLUSIVE MODE [#a0a5f08a]
| Session A | Session B |
=======================================================================================================================
| => BEGIN ; LOCK TABLE t1 IN EXCLUSIVE MODE; | | 1. LOCK TABLEする
| BEGIN | |
| LOCK TABLE | |
| | |
| | => SELECT * FROM t1; | 2. SELECTは可能
| | id | n |
| | ----+----- |
| | 1 | 100 |
| | 2 | 100 |
| | (2 rows) |
| | |
| | => INSERT INTO t1 VALUES ( 3, 100 ); | 3. INSERTはブロックされる
| | |
| | | 4. COMMITされると、ブロック解除されて
| =*> COMMIT ; | | 上のINSERTが実行される
|
| =*> COMMIT ; | | 4. COMMITされると、ブロック解除されて
| | | 上のINSERTが実行される
- '''SELECT'''は可能
- '''INSERT/UPDATE'''はブロック
** LOCK TABLE ... IN ACCESS EXCLUSIVE MODE [#d76378e0]
#ref(pgsql-table-lock.png)
- 別セッションからは'''SELECT'''もブロックされる