テーブルロック

LOCK TABLE ... IN EXCLUSIVE MODE

 | 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

pgsql-table-lock.png
  • 別セッションからはSELECTもブロックされる

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2021-06-19 (土) 20:24:38