• 售前

  • 售后

热门帖子
入门百科

详解PostgreSQL提升批量数据导入性能的n种方法

[复制链接]
冀苍鸾 显示全部楼层 发表于 2021-8-14 15:03:22 |阅读模式 打印 上一主题 下一主题
关键字:批量数据导入,数据加载,大量插入,加快,提升速率
多元化选择时代,人生里许多事物都是如此,凡事都没有一成稳定的方式和方法。不管白猫黑猫,能抓老鼠的就是好猫,得当本身的就是最好的。
提升批量数据导入的方法亦是如此,没有何种方法是最优的,应用任何方法前根据本身的现真相况权衡利弊,做出选择。
批量导入数据之前,无论接纳何种方式,务必做好相应的备份。
导入完成后亦需对相应对象进行ANALYZE操纵,这样查询优化器才会按照最新的统计信息天生精确的实行筹划。
下面正式介绍提升批量数据导入性能的n种方法。
方法1:禁用主动提交。
  1. psql
  2. \set AUTOCOMMIT off
  3. 其他
  4. BEGIN;
  5. 执行批量数据导入
  6. COMMIT;
复制代码
方法2:设置表为UNLOGGED。
导入数据之前先把表改成UNLOGGED模式,导入完成后改回LOGGED模式。
  1. ALTER TABLE tablename SET UNLOGGED;
  2. 执行批量数据导入
  3. ALTER TABLE tablename LOGGED;
复制代码
优点:
导入信息不记录WAL日记,极大镌汰io,提升导入速率。
缺点:
1.在replication环境下,表无法设置为UNLOGGED模式。
2.导入过程一旦出现停电死机等会导致数据库不能干净关库的情况,数据库中所有UNLOGGED表的数据将丢失。
方法3:重修索引。
导入数据之前先删除相干表上的索引,导入完成后重新创建之。
  1. DROP INDEX indexname;
  2. 执行批量数据导入
  3. CREATE INDEX ...;
复制代码
查询表上索引定义的方法
  1. select * from pg_indexes where tablename ='tablename' and schemaname = 'schemaname';
复制代码
方法4:重修外键。
导入数据之前先删除相干表上的外键,导入完成后重新创建之。
  1. ALTER TABLE ...
  2. DROP CONSTRAINT ... ;
  3. 执行批量数据导入
  4. ALTER TABLE ...
  5. ADD CONSTRAINT ...
  6. FOREIGN KEY ...
  7. REFERENCES ...;
复制代码
相干信息可查询pg_constraint。
方法5:停用触发器
导入数据之前先DISABLE掉相干表上的触发器,导入完成后重新ENABLE之。
  1. ALTER TABLE tablename DISABLE TRIGGER ALL;
  2. 执行批量数据导入
  3. ALTER TABLE tablename ENABLE TRIGGER ALL;
复制代码
相干信息可查询pg_trigger。
方法6:insert改copy
COPY针对批量数据加载进行了优化。
  1. COPY ... FROM 'xxx';
复制代码
方法7:单值insert改多值insert
镌汰sql剖析的时间。
方法8:insert改PREPARE
通过使用PREPARE准备语句,降低剖析消耗。
  1. PREPARE fooplan (int, text, bool, numeric) AS
  2. INSERT INTO foo VALUES($1, $2, $3, $4);
  3. EXECUTE fooplan(1, 'Hunter Valley', 't', 200.00);
复制代码
方法9:修改参数
增大maintenance_work_mem,增大max_wal_size。
方法10:关闭归档模式,降低wal日记级别。
修改archive_mode参数控制归档开启和关闭。降低wal_level值为minimal来镌汰日记信息记录。
此法需要重启数据库,需要规划停机时间。别的如有replication备库,还需考虑对其影响。
到此这篇关于PostgreSQL提升批量数据导入性能的n种方法的文章就介绍到这了,更多相干PostgreSQL批量数据导入内容请搜索草根技术分享从前的文章或继承欣赏下面的相干文章渴望各人以后多多支持草根技术分享!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作