Re: incidence update neutre.

From: Olivier Gautherot <ogautherot(at)gautherot(dot)net>
To: Thomas Reiss <thomas(dot)reiss(at)sector1(dot)fr>
Cc: pgsql-fr-generale(at)lists(dot)postgresql(dot)org
Subject: Re: incidence update neutre.
Date: 2020-03-27 11:53:09
Message-ID: CAJ7S9TVJXw7-TTXfuc7Ux9ZEBtrA3H9UodBdrZQH-R-hpW_HLg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Bonjour Alain,

Comme le dit Thomas, l'opération se fait de toutes façons, c'est-à-dire tu
vas voir, au niveau du moteur, un INSERT suivi d'un DELETE (qui est
l'opération normale d'un UPDATE). J'ai eu l'occasion de faire ce genre
d'opération sur des tables ayant quelques dizaines de millions de files.

Si ton update est massif et qu'une portion significative de la table
contient déjà la valeur, je te suggère de faire un:

update matable set monchamp=6 where monchamp <> 6

Si tu as un indice sur "monchamp", le gain de temps sera encore plus
significatif.

J'espère que ça t'aidera
--
Olivier Gautherot
Tel: +33 6 02 71 92 23
https://www.linkedin.com/in/ogautherot/

On Fri, Mar 27, 2020 at 10:59 AM Thomas Reiss <thomas(dot)reiss(at)sector1(dot)fr>
wrote:

> Bonjour Alain,
>
> Pour vous en rendre compte :
>
> SELECT xmin, * FROM matable;
>
> UPDATE matable SET monchamp=6;
>
> SELECT xmin, * FROM matable;
>
> Si xmin bouge après l'UPDATE, c'est que PostgreSQL a créé une nouvelle
> version de ligne et vous aurez votre réponse. Si tel est le cas, la ligne
> sera également verrouillée tant que la transaction qui réalise l'UPDATE
> n'aura pas fait de COMMIT ou de ROLLBACK.
>
> Et pour répondre plus directement, PostgreSQL réalise bien la modification.
>
> Cordialement
>
>
> Le 27/03/2020 à 10:32, Alain Benard a écrit :
>
> Bonjour,
>
> Je voudrai savoir quelle est l’incidence d’un update qui ne change rien
> comme ‘update matable set monchamp=6’ alors que le champ comporte déjà la
> valeur 6. Ma question ne porte pas sur le résultat attendu mais sur le
> fonctionnement du cœur de postgres (verrouillage, copie de l’enregistrement
> pendant la transaction …). En gros est-ce que postgres détecte qu’il n’y a
> pas de changement (ce qui pourrait être très couteux) ou bien se comporte
> comme s’il y avait une véritable modification de l’enregistrement …
>
> Merci par avance.
>
> Alain.
>
>
>
> [image: INRA] <http://www.inra.fr/>
>
>
>
> *Alain BENARD*
>
> *Administrateur Systèmes d’Information*
>
> *alain(dot)benard(at)inra(dot)fr <alain(dot)benard(at)inra(dot)fr>*
>
> *Unité SILVA*
>
> Tél. : +33 3 83 39 40 84
>
> Route d’amance
>
> 54 280 Champenoux
>
> inra.fr <http://www.inra.fr>
>
>
>
> [image: INRA] <https://youtu.be/xUHmi6JxDI4>
>
>
>
>
>
> --
> Thomas Reiss
>
>

In response to

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Alain Benard 2020-03-27 13:55:19 RE: incidence update neutre.
Previous Message Thomas Reiss 2020-03-27 09:59:42 Re: incidence update neutre.