• 追加された行はこの色です。
  • 削除された行はこの色です。
#author("2021-06-19T05:06:33+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する
 |                                             |                                      |
 |                                             | => SELECT * FROM t1;                 | 2. SELECTは可能
 |                                             | id | n                               |
 |                                             | ----+-----                           |
 |                                             | 1 | 100                              |
 |                                             | 2 | 100                              |
 |                                             | (2 rows)                             |
 |                                             |                                      |
 |                                             | => INSERT INTO t1 VALUES ( 3, 100 ); | 3. INSERTはブロックされる
 |                                             |                                      |
 | =*> COMMIT ;                                |                                      | 4. COMMITされると、ブロック解除されて
 |                                             |                                      | 上のINSERTが実行される

- '''SELECT'''は可能
- '''INSERT/UPDATE'''はブロック

** LOCK TABLE ... IN ACCESS EXCLUSIVE MODE [#d76378e0]

#ref(pgsql-table-lock.png)

- 別セッションからは'''SELECT'''もブロックされる


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS