Re: UPDATE de plus en plus long

From: Olivier Bernhard <olivier(dot)bernhard(at)smartfocus(dot)com>
To: Paul Poirel <poirelpa(at)gmail(dot)com>, "pgsql-fr-generale(at)postgresql(dot)org" <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: UPDATE de plus en plus long
Date: 2013-11-19 13:15:16
Message-ID: EA96F5231932334788D3B3112C67F8C30290BA@FREX-MBX-03.Emailvision.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Peut-être tout simplement parce qu'en update vous créez des dead tuples qui font grossir la table, entraînant un temps de balayage plus important à chaque update.
Si vous ajoutez un vaccum sur la table après chaque update, cela introduira un temp supplémentaire, mais peut être que cette fois les temps d'update seront identiques.
Olivier
From: pgsql-fr-generale-owner(at)postgresql(dot)org [mailto:pgsql-fr-generale-owner(at)postgresql(dot)org] On Behalf Of Paul Poirel
Sent: mardi 19 novembre 2013 14:09
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: [pgsql-fr-generale] UPDATE de plus en plus long

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 ?
Merci d'avance pour votre aide :)
Paul

In response to

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Michael Paquier 2013-11-19 13:16:37 Re: UPDATE de plus en plus long
Previous Message Paul Poirel 2013-11-19 13:08:56 UPDATE de plus en plus long