我想加速将数据加载到PostgreSQL。我开始使用pgloaderhttps://github.com/dimitri/pgloader并希望使用并行加载。我在修改不同的参数,但我不能激活超过两个核心在我的机器上(其中有32个)。我找到了https://github.com/dimitri/pgloader/blob/master/pgloader.1.md文档,并尝试设置此处描述的批处理选项。目前,我有以下设置:
LOAD CSV
FROM '/home/data1_1.csv'
--FROM 'data/data.csv'
INTO postgresql://:postgres@localhost:5432/test?test
WITH truncate,
skip header = 0,
fields optionally enclosed by '"',
fields escaped by double-quote,
fields terminated by ',',
batch rows = 100,
batch size = 1MB,
batch concurrency = 64
SET client_encoding to 'utf-8',
work_mem to '10000MB',
maintenance_work_mem to '20000 MB'
最佳答案
我还谈到了这个问题,似乎pgloader还不支持使用您提到的batch
选项进行并行加载。这有点令人困惑,但official documentation解释了这些设置是关于内存管理的,而不是并行性:
批处理并发
以数值作为参数,默认为10。这是pgloader允许在内存中生成的批数,即使一次只能向PostgreSQL发送一个批。
pgloader的TODO列表中包含一次发送多个批处理的支持,但尚未实现。此选项用于控制pgloader的内存需求,以权衡性能特性,而不是pgloader的并行活动。
关于postgresql - pgloader-PostgreSQL的快速数据加载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27937842/