Re: UPDATE de plus en plus long

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)

In response to

Browse pgsql-fr-generale by date

  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