在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
关键字:批量数据导入,数据加载,大量插入,加快,提升速度 下面正式介绍提升批量数据导入性能的n种方法。 方法1:禁用自动提交。 psql \set AUTOCOMMIT off 其他 BEGIN; 执行批量数据导入 COMMIT; 方法2:设置表为UNLOGGED。 导入数据之前先把表改成UNLOGGED模式,导入完成后改回LOGGED模式。 ALTER TABLE tablename SET UNLOGGED; 执行批量数据导入 ALTER TABLE tablename LOGGED; 优点: 方法3:重建索引。 导入数据之前先删除相关表上的索引,导入完成后重新创建之。 DROP INDEX indexname; 执行批量数据导入 CREATE INDEX ...; 查询表上索引定义的方法 select * from pg_indexes where tablename ='tablename' and schemaname = 'schemaname'; 方法4:重建外键。 导入数据之前先删除相关表上的外键,导入完成后重新创建之。 ALTER TABLE ... DROP CONSTRAINT ... ; 执行批量数据导入 ALTER TABLE ... ADD CONSTRAINT ... FOREIGN KEY ... REFERENCES ...; 相关信息可查询pg_constraint。 方法5:停用触发器 导入数据之前先DISABLE掉相关表上的触发器,导入完成后重新ENABLE之。 ALTER TABLE tablename DISABLE TRIGGER ALL; 执行批量数据导入 ALTER TABLE tablename ENABLE TRIGGER ALL; 相关信息可查询pg_trigger。 方法6:insert改copy COPY针对批量数据加载进行了优化。 COPY ... FROM 'xxx'; 方法7:单值insert改多值insert 减少sql解析的时间。 方法8:insert改PREPARE 通过使用PREPARE预备语句,降低解析消耗。 PREPARE fooplan (int, text, bool, numeric) AS INSERT INTO foo VALUES($1, $2, $3, $4); EXECUTE fooplan(1, 'Hunter Valley', 't', 200.00); 方法9:修改参数 增大maintenance_work_mem,增大max_wal_size。 方法10:关闭归档模式,降低wal日志级别。 修改archive_mode参数控制归档开启和关闭。降低wal_level值为minimal来减少日志信息记录。 到此这篇关于PostgreSQL提升批量数据导入性能的n种方法的文章就介绍到这了,更多相关PostgreSQL批量数据导入内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论