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
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 |