pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
初次填充数据库时,可能需要做大量的表插入。本节给出一些让这一过程尽可能高效的建议和技巧。
关闭 auto-commit,只在最后提交一次。否则Postgres就必须为每条记录的加入执行大量工作。一般来说,在做批量插入时,你会希望关掉一些数据库特性来换取速度。
使用COPY FROM STDIN在一条命令中装载所有记录,而不是使用一系列 INSERT 命令。这会大幅减少解析、规划等方面的开销。采用这种方法时不必为自动提交操心,因为反正它只是一条命令。
如果正在装载一个新创建的表,最快的方法是先创建表,用 COPY 批量装载数据,然后再创建该表所需的索引。在已有数据的表上创建索引,要比在每行装载时对索引做增量更新更快。
如果正在向现有表加入大量数据,可以DROP INDEX、装载数据、再重建索引。当然,在索引缺失期间,其他数据库用户的性能可能会受到不利影响。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。