From: | Michael Paquier <michael(dot)paquier(at)gmail(dot)com> |
---|---|
To: | Paul Poirel <poirelpa(at)gmail(dot)com> |
Cc: | PostgreSQL mailing lists <pgsql-fr-generale(at)postgresql(dot)org> |
Subject: | Re: UPDATE de plus en plus long |
Date: | 2013-11-19 13:16:37 |
Message-ID: | CAB7nPqShQUs5_5NWsfBN8zcUbY-vk18C3iHYYDqCF0nHPur9Ug@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
2013/11/19 Paul Poirel <poirelpa(at)gmail(dot)com>:
> Bonjour,
>
> Je rencontre un problème : dans une boucle, une requête UPDATE sur une seule
> ligne prend de plus en plus de temps.
>
> J'ai essayé de simplifier le problème au mieux :
>
> CREATE OR REPLACE FUNCTION test() RETURNS VOID AS
> $BODY$
> DECLARE
> t timestamp;
> BEGIN
> CREATE TABLE TBL_TEST (N INTEGER NOT NULL);
> INSERT INTO TBL_TEST (N) VALUES (0);
> for i IN 0..10000 LOOP
> t = clock_timestamp();
> UPDATE TBL_TEST SET N = 0;
> raise notice 't %',EXTRACT(MILLISECONDS FROM(clock_timestamp() -
> t));
> END LOOP;
> DROP TABLE TBL_TEST;
> END;
> $BODY$
> LANGUAGE plpgsql;
>
> Sur ma machine, la première itération prend 0.371ms. Les suivantes sont
> autour de 0.07 ms, puis le temps augmente graduellement.
> Au bout de 10 000 itérations, la requête prend environ 0.4ms.
>
> Voyez-vous une raison à cette augmentation du temps d'exécution de la
> requête ?
Je tente ma chance: bloat de pg_catalog.pg_class dû au nombre de
tables manipulées par cette fonction.
Cordialement,
--
Michael
--
Envoi via la liste pgsql-fr-generale (pgsql-fr-generale(at)postgresql(dot)org)
From | Date | Subject | |
---|---|---|---|
Next Message | Michel Payan | 2013-11-19 13:29:34 | Re: UPDATE de plus en plus long |
Previous Message | Olivier Bernhard | 2013-11-19 13:15:16 | Re: UPDATE de plus en plus long |