【问题标题】:Slow psql importpsql 导入慢
【发布时间】:2021-03-21 01:43:28
【问题描述】:

我的数据库中有一组备份,它们采用sql 格式。我正在使用以下命令导入它们

Restore: $ psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql}

它工作得很好,但我注意到如果打印出日志并且它似乎是逐行导入它们,对于 200Mb 的数据库,导入需要很长时间,而且我有几个数据库,它们大约 20GB。有没有更快的方法来导入它们?这种方法似乎根本不实用。

【问题讨论】:

  • pg_dump 不会生成单行插入,因此恢复它也不会“逐行”导入它。但它确实会导入一张又一张的表。如果您认为日志输出会减慢进程,您可以使用 psql 的 --quiet 选项禁用它
  • @a_horse_with_no_name pg_dump 的 --inserts 选项强制它使用 insert into t(a,b,c) values(x,y,z); [repeatedly] 格式,这可能非常庞大。 (幸运的是,没有理智的人会经常使用它)

标签: postgresql psql pg-dump


【解决方案1】:

它们以 sql 文件中编码的任何方式导入。这通常使用 COPY,但如果您告诉 pg_dump 这样做,您可以使用单独的 INSERT 来完成。

【讨论】:

    【解决方案2】:

    您应该使用自定义格式 (-F c) 或目录格式 (-F d) 来转储您的数据。然后您可以使用pg_restore-j 选项并行还原。

    这将加载数据的COPY 语句和CREATE INDEX 语句并行化。如果您的数据库由单个大表组成,那将无济于事,否则您应该会看到性能提升。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多