Em 28 de abril de 2017 06:00, Fabrízio de Royes Mello <
fabri...@timbira.com.br> escreveu:

>
>
> Em 27 de abril de 2017 03:55, Flavio Henrique Araque Gurgel <
> fha...@gmail.com> escreveu:
> >>
> >>
> >>  É um sistema online com 30 mil usuários, ou seja, não tem como eu ter
> downtime. Eu entendo que não há como fazer isso sem ter um downtime, pois
> qualquer coisa que eu faça eu irei precisar de um exclusive lock naquela
> tabela e, o usuário, não consegue nem logar se não tiver acesso à ela.
> >>
> >> Mas de qualquer forma eu provavelmente irei escolher a opção do
> pg_dump. Pois para eu fazer tanto o vacuum full quanto o CREATE TABLE AS,
> irei precisar ter mais espaço em disco e pra isso vou ter que por o sistema
> 2x offline, uma para incluir mais espaço e outra para rodar os comandos.
> >>
> >> A tabela tem 4TB, complicando ainda mais minha vida.
> >
> >
> > Sim, mas isso é contando sua coluna bytea que vai desaparecer.
> > Portanto,  a solução de criar uma tabela como disse o Euler pode ser
> vantajosa, pois a nova tabela não terá o tamanho da original e será bem
> menor.
> >
> > Você pode fazer isso "a quente" e ter um corte de serviço bem rápido só
> pra inserir as novas linhas desde a criação e remover a antiga tabela
> gigante, o que provavelmente levará poucos minutos e,  dependendo do
> sistema,  poderá até trabalhar sem as linhas ausentes até que você as
> insira, ou seja, você pode fazer tudo com um downtime bem bem pequeno.
> >
>
> Outra opção pra esse cenário seria rodar aquele UPDATE e após isso um
> pg_repack [1] para eliminar o inchaço *sem* o downtime de um vacuum full ou
> de algum script para recriar a tabela.
>
> Att,
>
>
> [1] http://reorg.github.io/pg_repack/
>
>
>
Interessante o pg_repack - Não conhecia!

O problema do 'CREATE TABLE foo AS ...' é que não tenho tudo migrado
ainda.. está sendo aos poucos.... devo ter 40% da tabela migrada. O que
dificulta em criar a nova tabela pois  *NULL as campobytea FROM bar *irá
por todas as rows com o campobytea = null.

Eu tenho uma coluna migrado boolean. Talvez eu pudesse utilizar uma WHERE
migrado = true junto... O que acham?

Patrick.
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a