PostgreSQL ou MySQL: qual banco de dados escolher para o seu projeto
PostgreSQL ou MySQL é uma dúvida comum porque são os dois bancos de dados relacionais de código aberto mais usados do mundo. Ambos são maduros, confiáveis, gratuitos e suportados por todas as grandes nuvens e hospedagens. Para a maioria dos projetos, qualquer um dos dois atende muito bem. Ainda assim, há diferenças que podem pesar na escolha, principalmente em recursos avançados, tipos de dados e no ecossistema ao redor do projeto.
Em resumo
- PostgreSQL: conhecido pelo conjunto rico de recursos, pela aderência ao padrão SQL, por tipos de dados avançados e pela extensibilidade.
- MySQL: conhecido pela simplicidade, pela enorme base instalada em hospedagens e pela integração histórica com PHP e WordPress. O MariaDB é um derivado compatível muito usado.
PostgreSQL ou MySQL: comparação prática
| Critério | PostgreSQL | MySQL |
|---|---|---|
| Aderência ao SQL padrão | Alta | Boa, com algumas particularidades |
| JSON | Tipo JSONB com índices e operadores avançados | Tipo JSON com funções, bom suporte |
| Tipos de dados | Muitos: arrays, intervalos, UUID nativo, tipos geográficos com PostGIS, tipos personalizados | Os essenciais, com menos variedade |
| Extensões | Ecossistema forte (PostGIS, pgvector, full-text) | Menos extensível |
| Consultas analíticas complexas | Muito forte (CTEs, funções de janela, planejador robusto) | Bom nas versões atuais |
| Simplicidade de administração | Boa | Muito boa |
| Hospedagem compartilhada barata | Menos comum | Praticamente universal |
| WordPress e muitos CMS em PHP | Não suportado oficialmente pelo WordPress | Padrão |
Quando escolher PostgreSQL
- Sistemas com regras de negócio complexas, relatórios e consultas analíticas.
- Dados semiestruturados junto com dados relacionais: o JSONB permite guardar e consultar documentos JSON com índices.
- Dados geográficos: o PostGIS é referência em sistemas de mapas, rotas e logística.
- Busca vetorial para IA: a extensão pgvector permite guardar e buscar embeddings no próprio banco.
- Projetos novos de back-end com Java/Spring, Python/Django, Node.js e Ruby on Rails, onde ele é muito popular.
Quando escolher MySQL
- WordPress, WooCommerce e outros sistemas em PHP que exigem MySQL ou MariaDB.
- Hospedagens compartilhadas que oferecem apenas MySQL.
- Equipes que já conhecem MySQL e não precisam de recursos específicos do PostgreSQL.
- Aplicações simples de leitura intensa, nas quais ele é muito eficiente e simples de operar.
Diferenças que costumam surpreender
- Aspas e nomes: no PostgreSQL, identificadores sem aspas são convertidos para minúsculas; com aspas duplas, diferenciam maiúsculas. No MySQL, a sensibilidade a maiúsculas em nomes de tabelas depende do sistema operacional e da configuração.
- Auto incremento: MySQL usa
AUTO_INCREMENT; PostgreSQL usaGENERATED ... AS IDENTITY(ou o antigoSERIAL). - Comparação de texto: o comportamento padrão de maiúsculas e acentos depende da collation configurada. Teste buscas como "joão" e "JOAO" no seu banco.
- Upsert: MySQL usa
INSERT ... ON DUPLICATE KEY UPDATE; PostgreSQL usaINSERT ... ON CONFLICT ... DO UPDATE.
Exemplo de upsert no PostgreSQL:
INSERT INTO clientes (email, nome)
VALUES ('ana@exemplo.com', 'Ana Silva')
ON CONFLICT (email)
DO UPDATE SET nome = EXCLUDED.nome;
Se você usa um ORM, como JPA/Hibernate, Django ORM ou Prisma, boa parte dessas diferenças fica escondida, mas elas aparecem em consultas manuais e migrações.
Desempenho
Comparações de desempenho genéricas costumam ser enganosas. Os dois são rápidos quando bem configurados e com os índices certos. Na prática, a maioria dos problemas de lentidão vem de consultas mal escritas e índices ausentes, não da escolha do banco. Veja otimização de consultas lentas no MySQL e PostgreSQL.
Hospedagem e custo
Os dois são gratuitos e de código aberto. O custo vem da hospedagem:
- Hospedagens compartilhadas de sites costumam oferecer apenas MySQL ou MariaDB.
- Provedores de nuvem oferecem os dois como serviço gerenciado, com backup automático e atualizações, cobrando pelo tamanho da instância e do armazenamento.
- Plataformas para desenvolvedores costumam ter planos gratuitos ou de baixo custo com PostgreSQL, úteis para projetos pessoais e portfólio.
Antes de decidir, verifique o que o seu provedor oferece e quanto custa o backup automático, que não deve ser opcional em produção.
Para quem está aprendendo
Qualquer um serve para aprender SQL. Os comandos básicos de consulta, inserção, atualização e junção de tabelas são praticamente os mesmos. Veja SQL básico: consultas essenciais. Para praticar sem instalar nada no sistema, suba o banco com Docker; o artigo Docker para iniciantes mostra um exemplo com PostgreSQL.
Nossa recomendação
Para um projeto novo de sistema ou API, sem restrição de hospedagem, o PostgreSQL costuma ser a escolha mais versátil, pela riqueza de recursos que você pode precisar no futuro. Para sites em WordPress ou projetos em hospedagens que só oferecem MySQL, use MySQL ou MariaDB sem medo. Mais importante do que o banco escolhido é modelar bem as tabelas, criar índices adequados e ter backups testados.
Na prática da PruPru
A escolha do banco é só o começo; o desenho da leitura costuma pesar mais. Num projeto da PruPru, uma API interna precisava ler dados de um ERP em SQL Server com cerca de 200 GB, que já atendia o faturamento o dia todo. Em vez de consultar a produção, montamos replicação transacional para um servidor clone somente leitura, com índices próprios para a API. PostgreSQL e MySQL têm recursos equivalentes de réplica de leitura, e vale planejá-los desde o início se relatórios e integrações vão crescer. O caso completo está em replicação transacional no SQL Server.
Sistemas sob medida
A PruPru desenvolve APIs, sistemas web e integrações com as mesmas práticas descritas neste guia. Se a sua empresa precisa de software bem construído, conheça os serviços.
Ver serviços →Perguntas frequentes
PostgreSQL é mais rápido que MySQL?
Depende da carga de trabalho e da configuração. Os dois são rápidos quando bem configurados e com índices adequados. A maioria dos problemas de desempenho vem de consultas e modelagem, não da escolha do banco.
Posso migrar de MySQL para PostgreSQL depois?
Pode, mas exige trabalho: diferenças de tipos, funções, sintaxe e comportamento precisam ser ajustadas e testadas. Ferramentas de migração ajudam, mas não fazem tudo sozinhas.
Qual é melhor para aprender SQL?
Qualquer um dos dois. Os comandos básicos são praticamente iguais. Escolha o que for mais fácil de instalar ou o que é usado nas vagas e cursos que você pretende seguir.
MariaDB é a mesma coisa que MySQL?
O MariaDB nasceu como um derivado do MySQL e mantém alta compatibilidade para a maioria dos usos, mas os dois evoluíram de forma independente e têm diferenças em recursos mais recentes.