您现在的位置是:首页 > 博客网站制作 > 心得笔记心得笔记
详解PostgreSQL提升批量数据导入性能的n种方法
杨青青2022-02-20【心得笔记】人已围观
简介关键字:批量数据导入,数据加载,大量插入,加快,提升速度多元化选择时代,人生里很多事物都是如此,凡事都没有一成不变的方式和方法。不管白猫黑猫,能抓老鼠的就是好猫,适合自己的就是最
关键字:批量数据导入,数据加载,大量插入,加快,提升速度
多元化选择时代,人生里很多事物都是如此,凡事都没有一成不变的方式和方法。不管白猫黑猫,能抓老鼠的就是好猫,适合自己的就是最好的。
提升批量数据导入的方法亦是如此,没有何种方法是最优的,应用任何方法前根据自己的实际情况权衡利弊,做出选择。
批量导入数据之前,无论采取何种方式,务必做好相应的备份。
导入完成后亦需对相应对象进行ANALYZE操作,这样查询优化器才会按照最新的统计信息生成正确的执行计划。
下面正式介绍提升批量数据导入性能的n种方法。
方法1:禁用自动提交。
psql
\setAUTOCOMMIToff
其他
BEGIN;
执行批量数据导入
COMMIT;
方法2:设置表为UNLOGGED。
导入数据之前先把表改成UNLOGGED模式,导入完成后改回LOGGED模式。
ALTERTABLEtablenameSETUNLOGGED;
执行批量数据导入
ALTERTABLEtablenameLOGGED;
优点:
导入信息不记录WAL日志,极大减少io,提升导入速度。
缺点:
1.在replication环境下,表无法设置为UNLOGGED模式。
2.导入过程一旦出现停电死机等会导致数据库不能干净关库的情况,数据库中所有UNLOGGED表的数据将丢失。
方法3:重建索引。
导入数据之前先删除相关表上的索引,导入完成后重新创建之。
DROPINDEXindexname;
执行批量数据导入
CREATEINDEX...;
查询表上索引定义的方法
1select*frompg_indexeswheretablename='tablename'andschemaname='schemaname';
方法4:重建外键。
导入数据之前先删除相关表上的外键,导入完成后重新创建之。
ALTERTABLE...
DROPCONSTRAINT...;
执行批量数据导入
ALTERTABLE...
ADDCONSTRAINT...
FOREIGNKEY...
REFERENCES...;
相关信息可查询pg_constraint。
方法5:停用触发器
导入数据之前先DISABLE掉相关表上的触发器,导入完成后重新ENABLE之。
ALTERTABLEtablenameDISABLETRIGGERALL;
执行批量数据导入
ALTERTABLEtablenameENABLETRIGGERALL;
相关信息可查询pg_trigger。
方法6:insert改copy
COPY针对批量数据加载进行了优化。
1COPY...FROM'xxx';
方法7:单值insert改多值insert
减少sql解析的时间。
方法8:insert改PREPARE
通过使用PREPARE预备语句,降低解析消耗。
PREPAREfooplan(int,text,bool,numeric)AS
INSERTINTOfooVALUES($1,$2,$3,$4);
EXECUTEfooplan(1,'HunterValley','t',200.00);
方法9:修改参数
增大maintenance_work_mem,增大max_wal_size。
方法10:关闭归档模式,降低wal日志级别。
修改archive_mode参数控制归档开启和关闭。降低wal_level值为minimal来减少日志信息记录。
此法需要重启数据库,需要规划停机时间。此外如有replication备库,还需考虑对其影响。
Tags:
很赞哦! ()
相关文章
随机图文
Web Color Design——设计师谈网页配色艺术
Web Color Design——设计师谈网页配色艺术。橙色 通常会给人一种朝气活泼的感觉,它通常可以是原本抑郁的心情豁然开朗。绿色也是在网页中使用最为广泛的颜色之一因为它本身具有一定的与健康相关的感觉,所以也经常用于与健康相关的站点。绿色还经常用于一些公司的公关站点或教育站点。....如何加入网址前面的小图标?
首先,您必须了解所谓的图标(Icon)是一种特殊的图形文件格式,它是以 .ico 作为扩展名。你可用在网上找一个制作图标软件,它具有特有的规格:图标的大小为 16 * 16(以像素为单位);颜色不得超过 16 色。网站变灰技巧 兼容IE,火狐,chrome浏览器
html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }使用方法:这段代码可以变网页为黑白,将代码加到CSS最顶端就可以实现素装。建议全国站长动起来。为在地震中遇难的同胞哀悼。杨青个人CSS常见的问题和技巧总结
忘记定义尺寸是css初学者新手普遍存在的问题。在html我们可以写width=”100”,但在css中应该给出一个准确的单位。如:width:100px;height:50px;font-size:9pt ,0值除外,因为不论对于任何单位。0值的大小都是相等的。注意:不要在数值和单位之间加空格。