历史版本。 PostgreSQL 7.1 已结束支持。 请参阅 当前版本手册.
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、装载数据、再重建索引。当然,在索引缺失期间,其他数据库用户的性能可能会受到不利影响。