Postgresql

清空表時插入和更新會等待嗎?

  • July 10, 2015

我想在 PostgreSQL 9.1 版中清理一個表,這需要 10 到 12 分鐘。這需要在生產使用中實時完成。

我只想知道,如果有任何INSERTUPDATE查詢來了,他們會等待解除鎖定,還是會超時?

注意:將觸發查詢的 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/UPDATEVACUUM,也不相反。這意味著您的查詢應該成功而不會超時。很可能吸塵的 I/O 活動不會對您造成任何傷害。

引用自:https://dba.stackexchange.com/questions/72132