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-04 18:41:02
Message-ID: 20190404184102.GA5549@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Carlos T. Groero Carmona escribió:

> Una vez adicionada las tres columnas, estuve probando varias ideas y
> posibilidades en un servidor de prueba que tengo, como:
> 1. Correr un siemple update sin condiciones, es decir:
> update table set col_1=false, col_2=false, col_3=false;
> Resultados:
> a) la consulta duro 33 segundos, durante ese tiempo
> b) pude hacer select e incluso vacuum a la tabla, pero

¿no podrías hacer el gran update en varias partes, haciendo que cada una
dure un par de segundos o así? "update ... where PK % 37 = X" donde X
es cada valor entre 0 y 36. Así no bloqueas todos los updates, sino uno
de cada 37, y además el bloqueo debería durar muy poco. (Escogí 37 sólo
por ser el primer número primo mayor a 33, pero podrías escoger
cualquier otro). Repite en una transacción separada por cada número.
Sugerencia: espera entre cada update el tiempo suficiente para que la
transacción más antigua haya terminado .. idealmente unos pocos
segundos. Así el espacio producido por el update anterior puede
reutilizarse para el siguiente (asume que no has creado índices en las
columnas nuevas).

--
Á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 13:41:07 Re: Adicionando nuevas columnas en production
Previous Message gilberto.castillo 2019-04-04 18:40:39 Re: [MASSMAIL]Adicionando nuevas columnas en production