PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Número máximo (utilizável) de linhas em uma tabela Postgresql


Não é apenas "um monte de ajustes (índices etc.)". Isso é crucial e um deve fazer.

Você postou alguns detalhes, mas vamos tentar.

A regra é:Tente encontrar o conjunto de trabalho mais comum. Veja se cabe na RAM. Otimize hardware, configurações de buffer PG/OS e índices/clustering PG para ele. Caso contrário, procure por agregados ou, se não for aceitável e você precisar de acesso totalmente aleatório, pense em qual hardware pode verificar a tabela inteira em um tempo razoável.

Qual o tamanho da sua mesa (em gigabytes)? Como ele se compara à RAM total? Quais são suas configurações de PG, incluindo shared_buffers e Effective_cache_size? Este é um servidor dedicado? Se você tem uma mesa de 250 GB e cerca de 10 GB de RAM, isso significa que você só pode caber 4% da mesa.

Existem colunas que são comumente usadas para filtragem, como estado ou data? Você consegue identificar o conjunto de trabalho que é mais comumente usado (como apenas no mês passado)? Em caso afirmativo, considere particionar ou agrupar nessas colunas e indexá-las definitivamente. Basicamente, você está tentando garantir que o máximo possível do conjunto de trabalho caiba na RAM.

Evite digitalizar a mesa a todo custo se ela não couber na RAM. Se você realmente precisa de acesso absolutamente aleatório, a única maneira de usá-lo é um hardware realmente sofisticado. Você precisaria de uma configuração de armazenamento/RAM persistente que pudesse ler 250 GB em um tempo razoável.