parallelisme insert/update unnest constraint

From: CRUMEYROLLE Pierre <pierre(dot)crumeyrolle(at)c-s(dot)fr>
To: pgsql-fr-generale(at)lists(dot)postgresql(dot)org
Subject: parallelisme insert/update unnest constraint
Date: 2019-09-02 12:18:07
Message-ID: 20190902141807.Horde.1R28T-VHgCNwIRSmounH5g1@messagerie.c-s.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale


bonjour

je tente de faire un update massif par unnest sur un table de 20
millions de ligne,
j'ai l'impression que le parallélisme n'est pas vraiment pris en
compte dans ce cas
les cpu sont à 100% mais pas par alternance , pas de répartition
homogène de la charge cpu.

les perf en insertion sont bonnes ( 10 millions de ligne en 6 minutes)
par contre en update ça rame .

malgré un postgresl.conf adapté à une cible multi cpu (12)
max_worker_processes = 12
max_parallel_workers_per_gather = 6
max_parallel_workers = 12
version => postgresl 11.4

ma question : peut t'on faire du parallélisme sur de l'insert ou de
l'update avec ou sans contraintes defferées ?
(j'ai cru comprendre que parallélisation => multi transaction => pas
de constraintes )

ce que je fais dans une proc stock tentative update massif par unnest
( mais c'est peut être pas la bonne piste ? )

-- pk defferable
SET CONSTRAINTS t_test_pkey DEFERRED;

UPDATE T_test SET data = jsonb_set(T.datanew::jsonb, '{id}',to_jsonb(
'provider ' || (T.id::text))) , created_at = T.created_at::timestamp
FROM (select * from
unnest(tabi) as id,
unnest(tabp) as provider,
unnest(tabdate) as created_at,
unnest(tab) as datanew) T
where T_test.id=cast(T.id as int);
COMMIT;

cordialement

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Guillaume Lelarge 2019-09-02 13:17:00 Re: parallelisme insert/update unnest constraint
Previous Message Tumasgiu Rossini 2019-08-29 10:30:22 Re: surprenant résultat : rollback sur update après pg_dump