关键词:批量数据导入,数据加载,批量插入,加速,加速
多元化选择的时代,生活中很多事情都是这样的,凡事都没有一成不变的方式方法。不管是白猫还是黑猫,能抓到老鼠就是好猫,适合自己的就是最好的。
改进批量数据导入的方法也是如此。没有什么方法是最优的。在应用任何方法之前,根据自己的实际情况权衡利弊,做出选择。
在批量导入数据之前,无论采取什么方法,都要做相应的备份。
导入完成后,分析相应的对象,以便查询优化器可以根据最新的统计信息生成正确的执行计划。
下面正式介绍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