如果我运行pg_dump将一个表转储到SQL文件中,它是否获取表中最后一行的快照,并转储到该行为止的所有行?或者,它会继续转储所有行,甚至是那些在运行pg_dump之后插入的行?第二个问题是:在运行pg_dump之前停止所有插入查询是否是个好主意?
pg_dump
p4tfgftt1#
当你运行pg_dump时,它将获得你的表的共享锁,任何在你运行转储之后**完成的事务都不会被包含,所以当转储完成时,如果有当前事务 * 正在处理 *,还没有提交,它们就不会被包含在转储中。还有另一个pg_dump option可以运行它:--lock-wait-timeout=timeout不要在转储开始时一直等待获取共享表锁。相反,如果无法在指定的超时内锁定表,则会失败。可以使用SET语句_timeout接受的任何格式指定超时。(允许的格式因要从中转储的服务器版本而异,但所有版本都接受整数毫秒。)
--lock-wait-timeout=timeout
1条答案
按热度按时间p4tfgftt1#
当你运行
pg_dump
时,它将获得你的表的共享锁,任何在你运行转储之后**完成的事务都不会被包含,所以当转储完成时,如果有当前事务 * 正在处理 *,还没有提交,它们就不会被包含在转储中。还有另一个
pg_dump
option可以运行它:--lock-wait-timeout=timeout
不要在转储开始时一直等待获取共享表锁。相反,如果无法在指定的超时内锁定表,则会失败。可以使用SET语句_timeout接受的任何格式指定超时。(允许的格式因要从中转储的服务器版本而异,但所有版本都接受整数毫秒。)