Re: Adicionando nuevas columnas en production

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: "Carlos T(dot) Groero Carmona" <ctonetg(at)gmail(dot)com>
Cc: Lista PostgreSql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Adicionando nuevas columnas en production
Date: 2019-04-05 14:53:08
Message-ID: 20190405145308.GA2375@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Carlos T. Groero Carmona escribió:
> Alvaro hice la function a partir de la idea que me distes, quizas no lo
> entendi bien, solo que use 50 en lugar de 37.
> esto es lo que me estas proponiendo?
>
> UPDATE table_1
> set colum_1 = false,
> colum_2 = false,
> colum_3 = false
> WHERE (id % 37) > 0 and (id % 37)<=36

No. Quizás fui demasiado escueto.

Lo que estaba proponiendo era un update con id % 37 = 0, luego otro (en
otra transacción) con id % 37 = 1, luego id % 37 = 2, etc. Lo hice así
con la esperanza de que las filas a actualizar se distribuyan
uniformemente en la tabla, de manera que no todos los registros
actualizados sean en las mismas páginas; así el siguiente update tiene
más chances de hacer "hot update" para otros registros en las mismas
páginas, reduciendo el trabajo que tendrá que hacer vacuum al final. Si
haces "where id > foo and id < bar" entonces es muy probable que los
registros actualizados estén todos juntos. Por eso el tiempo de espera
entre un update y el siguiente también es importante; si el segundo
update empieza inmediatamente después, es posible que no alcance a ser
HOT debido a las transacciones concurrentes.

No dijiste, creo, de qué tamaño era la tabla, ni los índices que tenía.

> No he creado indices en esas columnas

OK, eso permite que los update sean HOT.

> tampoco seran llaves foraneas.

Ya, pero acá la pregunta iba porque el UPDATE podría necesitar revisar
las filas que referencian a las que sufren el update. Pero pensándolo
bien, como las llaves UNIQUE/PK de tu tabla no cambian, esto no debería
afectar.

--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Carlos T. Groero Carmona 2019-04-05 18:13:01 Re: Adicionando nuevas columnas en production
Previous Message Carlos T. Groero Carmona 2019-04-05 14:43:58 Re: Adicionando nuevas columnas en production