我想加速将数据加载到PostgreSQL。我开始使用pgloader https://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'
答案 0 :(得分:2)
我也遇到了这个问题,似乎pgloader不支持使用你提到的batch
选项进行并行加载。这有点令人困惑,但official documentation解释说这些设置是关于内存管理,而不是并行:
批量并发
将数值作为参数,默认为10.即使一次只有一个批次可能发送到PostgreSQL,pgloader允许在内存中构建的批次数。支持一次发送多个批次,这是在pgloader的TODO列表中,但尚未实现。这个选项是关于控制pgloader的内存需求作为性能特征的权衡,而不是关于pgloader的并行活动。