在插入查询仍在运行时运行 pg_dump?

Hen*_*hiu 9 sql postgresql pg-dump

如果我运行pg_dump将表转储到 SQL 文件中,它是否会拍摄表中最后一行的快照,并将所有行转储到该行?

或者它是否继续转储所有行,甚至是pg_dump运行后插入的行?

第二个问题是:在运行之前停止所有插入查询是个好主意吗pg_dump

Sco*_*tch 10

当您运行 时,它将获得表上的共享锁pg_dump运行转储后完成的任何事务都不会包含在内。因此,当转储完成时,如果当前正在进行的事务尚未提交,它们将不会包含在转储中。

还有另一个pg_dump选项可以运行它:

--lock-wait-timeout=timeout

不要永远等待在转储开始时获取共享表锁。如果无法在指定的超时时间内锁定表,则会失败。超时可以用 SET statements_timeout 接受的任何格式指定。(允许的格式根据您转储的服务器版本而有所不同,但所有版本都接受整数毫秒。)

  • 好的,谢谢 - 我只是澄清一下,因为你答案的第一段有点含糊。您可能想提到 pg_dump 对数据库快照进行操作,其中包括在 pg_dump 启动之前提交的所有事务或类似的内容 (4认同)
  • 如果事务在 pg_dump 启动之前启动并在 pg_dump 启动之后但完成之前完成怎么办? (2认同)