如何在没有锁的情况下并行复制到一个 PostgreSQL 表中?

mnv*_*mnv 10 postgresql parallel-processing timescaledb postgresql-13

正如我在 中看到的,一次pg_stat_activiry只有一个命令执行。COPY正如我在专栏中看到的那样,其他查询处于锁定状态wait_event_type

一次只有一个活动查询

如何COPY mytable FROM STDIN在不锁定表的情况下并行运行多个?

附:mytable是TimescaleDB 2.5.0的超表。

UPD

CREATE TABLE "public"."mytable" (
    "q_time" timestamp,
    "symbol_id" int,
    "o" decimal(24,12),
    "c" decimal(24,12),
    "h" decimal(24,12),
    "l" decimal(24,12),
    "v" bigint,
    CONSTRAINT mytable_ts_pkey PRIMARY KEY (symbol_id, "q_time")
);

SELECT create_hypertable('mytable', 'q_time', 'symbol_id', 1,
  create_default_indexes => false, 
  chunk_time_interval => '7 days'::interval);

Run Code Online (Sandbox Code Playgroud)

UPD2

我并行运行下一个命令:

out, err := exec.Command("bash", "-c", "cat file01.gz | gunzip | psql -d db -U user -c "\copy mytable from stdin HEADER DELIMITER ';' CSV\"").Output()
Run Code Online (Sandbox Code Playgroud)

时间刻度DB 2.5.0

PostgreSQL 13

最大连接数 = 200

最大工作进程数 = 21

最大并行工作者数 = 10