↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本PostgreSQL 7.1 已于 2006 年 4 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

11.3. 填充一个数据库 #

初次填充数据库时,可能需要做大量的表插入。本节给出一些让这一过程尽可能高效的建议和技巧。

11.3.1. 禁用 Auto-commit #

关闭 auto-commit,只在最后提交一次。否则Postgres就必须为每条记录的加入执行大量工作。一般来说,在做批量插入时,你会希望关掉一些数据库特性来换取速度。

11.3.2. 使用 COPY FROM #

使用COPY FROM STDIN在一条命令中装载所有记录,而不是使用一系列 INSERT 命令。这会大幅减少解析、规划等方面的开销。采用这种方法时不必为自动提交操心,因为反正它只是一条命令。

11.3.3. 移除索引 #

如果正在装载一个新创建的表,最快的方法是先创建表,用 COPY 批量装载数据,然后再创建该表所需的索引。在已有数据的表上创建索引,要比在每行装载时对索引做增量更新更快。

如果正在向现有表加入大量数据,可以DROP INDEX、装载数据、再重建索引。当然,在索引缺失期间,其他数据库用户的性能可能会受到不利影响。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。