详细说明PostgreSQL提高批量数据导入性能的n种方法
  • 作者:admin
  • 发表时间:2021-04-22 07:51
  • 来源:未知

关键词:批量数据导入,数据加载,批量插入,加速,加速

多元化选择的时代,生活中很多事情都是这样的,凡事都没有一成不变的方式方法。不管是白猫还是黑猫,能抓到老鼠就是好猫,适合自己的就是最好的。

改进批量数据导入的方法也是如此。没有什么方法是最优的。在应用任何方法之前,根据自己的实际情况权衡利弊,做出选择。

在批量导入数据之前,无论采取什么方法,都要做相应的备份。

导入完成后,分析相应的对象,以便查询优化器可以根据最新的统计信息生成正确的执行计划。

下面正式介绍n种提高批量数据导入性能的方法。

方法1:禁用自动提交。

指数

\关闭自动提交

其他的

BEGIN

执行批量数据导入

COMMIT

唐山网络公司方法二:设置表为UNLOGGED。

在导入数据之前,将表更改为logged模式,并在导入后将其更改回LOGGED模式。

更改未标记的表名集;

执行批量数据导入

ALTER TABLE tablename LOGGED

优点:

导入信息不记录WAL日志,大大降低io,提高导入速度。

缺点:

1.在复制环境中,不能将表设置为未标记模式。

2.在导入过程中,一旦断电崩溃,数据库就不能干净地关闭,数据库中未标记表的所有数据都将丢失。

方法3:重建索引。

在导入数据之前删除相关表上的索引,并在导入后重新创建索引。

DROP INDEX indexname

执行批量数据导入

创建索引.

在表上查询索引定义的方法

1从pg_indexes中选择*其中tablename='tablename '和schemaname=' schemaname

方法4:重建外键。

在导入数据之前删除相关表上的外键,并在导入后重新创建它们。

改变表格.

DROP CONSTRAINT.

执行批量数据导入

改变表格.

添加约束.

外键.

引用.

有关相关信息,请参见pg_constraint。

方法5:停用触发器

在导入数据之前禁用相关表上的触发器,并在导入后再次启用它们。

更改表名禁用全部触发;

执行批量数据导入

更改表名启用全部触发;

相关信息参见pg_trigger。

方法6:变更6:插入复制

COPY针对批量数据加载进行了优化。

1副本.FROM ' xxx

方法7:将单值插入改为多值插入

减少sql解析时间。

方法8:将8:insert改为PREPARE

通过使用PREPARE语句减少解析消耗。

准备fooplan(整数、文本、布尔值、数字)AS