Muito provavelmente, não é PostgreSQL, é o seu design. Sapatas em mudança provavelmente não vai torná-lo um melhor dançarina.
Você sabe o que está causando lentidão? É contenção, tempo para atualizar índices, os tempos de busca? São todos os 5.000 usuários tentando escrever a tabela de usuário, ao mesmo tempo exato que você está tentando inserir usuário 5001? Isso, eu posso acreditar que pode causar um problema. Você pode ter que ir com algo apropriado para suportar extrema concorrência, como Oracle.
MySQL (me disseram) pode ser otimizado para fazer mais rápido do que lê PostgreSQL, mas ambos são muito ridiculamente rápido em termos de transacções # / seg eles apóiam, e não soa como esse é o seu problema.
PS Nós estávamos tendo uma pequena discussão nos comentários a uma resposta diferente - note que alguns dos maiores, armazenamento-wise, bases de dados no mundo são implementados usando Postgres (embora eles tendem a ajustar as partes internas do motor). Postgres escalas de tamanho de dados extremamente bem, por concorrência melhor que a maioria, e é muito flexível em termos do que você pode fazer com ele.
Eu gostaria que houvesse uma resposta melhor para você, 30 anos depois que a tecnologia foi inventada, devemos ser capazes de fazer os usuários têm menos conhecimento detalhado do sistema, a fim de tê-lo funcionar sem problemas. Mas, infelizmente, o pensamento extensa e ajustes é necessário para todos os produtos Eu sou ciente. Pergunto-me se os criadores de StackOverflow poderia compartilhar como eles lidaram com a simultaneidade db e escalabilidade? Eles estão usando SQLServer, eu sei que muito.
PPS Assim como teria chance que eu bati de cabeça em um problema de concorrência no Oracle ontem. Eu não estou totalmente certo de que tem direito, não sendo um DBA, mas o que os caras explicada foi algo como isto: Tivemos um grande número de processos que ligam para o DB e examinar o dicionário do sistema, que, aparentemente, obriga a um curto bloqueio sobre ele , apesar do fato de que é apenas uma leitura. Analisando consultas faz a mesma coisa .. então tivemos (em um sistema multi-tera com 1000s de objetos) um monte de tempo de espera forçada porque os processos foram bloqueio uns aos outros para fora do sistema. Nosso dicionário sistema também era excessivamente grande, pois contém uma cópia separada de todas as informações para cada partição, dos quais não pode haver milhares por mesa. Isto não é realmente relacionado com PostgreSQL, mas o takeaway é - além de verificar o seu design,