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