使用pg_restore恢复数据库数据时的提交操作频率是多少
pg_restore 提交频率规则
pg_restore的提交行为没有固定的全局频率,完全由你执行恢复时传入的参数、以及归档文件生成时的参数决定,具体可分为以下几类场景:
- 默认无特殊参数的恢复场景
未添加任何特殊配置时,pg_restore会将所有恢复操作包裹在单个事务中执行,全程只会在所有操作全部执行成功后提交1次,中途出错会触发全量回滚。如果显式传入--single-transaction参数,会强制启用该单事务逻辑,优先级高于其他参数。 - 并行恢复场景(使用
-j/--jobs参数)
并行恢复模式不支持单事务,pg_restore会为每个工作进程分配独立的对象恢复任务(包括表、索引、约束等独立数据库对象),每个工作进程完成自身全部任务后单独提交,总提交次数等于本次恢复的独立任务总数量。 - 使用INSERT语句导出的归档恢复场景
如果你的归档是pg_dump时添加了--inserts或--column-inserts参数生成的,且恢复时未启用单事务模式,pg_restore会默认每执行1000条INSERT语句提交一次,该批次大小为PostgreSQL内部硬编码的默认值,不支持通过运行参数修改。
如果你需要自定义提交频次,可先将pg_restore的输出转为SQL文件,自行调整事务拆分逻辑后再通过
psql执行,适合需要避免长事务占用过多系统资源的场景。
内容的提问来源于stack exchange,提问作者Fabrice Chapuis
相关产品推荐
相关产品推荐

