我们第一次填充数据库时可能需要做大量的表插入。 下面是一些知识和技巧,可以尽可能高效地处理这些事情。
关闭自动提交,并且只在每次(数据拷贝)结束的时候做一次提交。 否则 Postgres 会为每次增加的新行做大量的工作。 通常,当你进行海量插入时,你会希望关闭一些数据库的特性以赢取速度。
使用 COPY FROM STDIN 以便在一条命令里装载所有记录, 而不是一连串的 INSERT 命令。这样大大减少了分析,规划等的过荷。 如果你这样做了,那么就没有必要糊弄自动提交了。
如果你正在装载一个新创建的表,最快的方法是创建表, 用 COPY 批量装载,然后创建表需要的任何索引。 在已存在数据的表上创建索引要比递增地更新所装载的每一行记录要快。
如果你对现有表进行操作,你可以 DROP INDEX, 装载表,然后重新创建索引。 当然,在缺少索引的期间,其他数据库用户的数据库性能将有负面的影响。