Postgresql
清空表時插入和更新會等待嗎?
我想在 PostgreSQL 9.1 版中清理一個表,這需要 10 到 12 分鐘。這需要在生產使用中實時完成。
我只想知道,如果有任何
INSERT
或UPDATE
查詢來了,他們會等待解除鎖定,還是會超時?注意:將觸發查詢的 Java 程式碼沒有指定任何超時。
該文件說明了以下內容:
排獨家
與 SHARE、SHARE ROW EXCLUSIVE、EXCLUSIVE 和 ACCESS EXCLUSIVE 鎖模式衝突。
命令UPDATE、 DELETE 和 INSERT 在目標表上獲取此鎖定模式(除了任何其他引用表上的 ACCESS SHARE 鎖定)。一般來說,任何修改表中數據的命令都會獲取這種鎖定模式。
共享更新獨家
與 SHARE UPDATE EXCLUSIVE、SHARE、SHARE ROW EXCLUSIVE、EXCLUSIVE 和 ACCESS EXCLUSIVE 鎖模式衝突。此模式保護表免受並發模式更改和 VACUUM 執行。
由VACUUM(無 FULL)、ANALYZE、CREATE INDEX CONCURRENTLY 和某些形式的 ALTER TABLE 獲取。
所涉及的兩種鎖類型之間沒有衝突。這意味著既不
INSERT
/UPDATE
塊VACUUM
,也不相反。這意味著您的查詢應該成功而不會超時。很可能吸塵的 I/O 活動不會對您造成任何傷害。