Eu tenho uma tabela com 1b linhas e ela continua crescendo. Atualmente, uso o pg_partman para particionamento por mês. Existem muitas consultas selecionadas apenas para os meses atuais ou anteriores. É possível mover partições "antigas" para outro servidor? Então, idealmente, quero ter 1 servidor (poderoso com discos rápidos) apenas com partições recentes e um segundo servidor (barato) com outras partições. Devo usar a extensão postgres_fdw para vincular partições? Quais são as boas práticas para alcançar este tipo de esquema?
relate perguntas
-
Posso ativar o PITR depois que o banco de dados foi usado
-
Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo
-
Os procedimentos armazenados impedem a injeção de SQL?
-
Sequências Biológicas do UniProt no PostgreSQL
-
Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?
Se for apenas um disco rápido (caro) e você tiver a liberdade de conectar vários discos ao seu sistema, adicione um disco grande e barato e crie um
TABLESPACE
lá. Em seguida, realoque as partições antigas com umaALTER TABLE
declaração simples:Os índices na tabela, se houver, deverão ser movidos separadamente.
Os objetos são movidos fisicamente. Isso adquire um
ACCESS EXCLUSIVE
bloqueio durante a duração. Se isso não for uma opção (e você sabe que não há gravações simultâneas na partição!), você pode, alternativamente, copiar a tabela em segundo plano e recriar índices - se ainda os desejar para partições antigas? (Você pode definir o índiceFILLFACTOR
como 100 durante a recriação.) EntãoALTER TABLE DETACH PARTITION
/ALTER TABLE ATTACH PARTITION
. Leia as letras miúdas do manual para agilizar esse processo. Mais lento, mas sem bloqueios exclusivos na partição ativa. E todo o inchaço é removido da tabela e dos índices quando reescrito dessa maneira.Ainda sendo um único servidor, a tabela particionada permanece completa, apenas as partições de sua escolha obtêm o disco rápido.
É possível anexar tabelas estrangeiras como partições. Mas isso é muito mais frágil do que adicionar um arquivo
TABLESPACE
.