Enviar por e-mail
Imprimir
MySQL Vs PostgreSQL
Comparação das versões novas, estáveis e de produção do PostgreSQL e MySQL.
| PostgreSQL 8.0 | MySQL 4.1 | MySQL 5.0 (beta) | |
| Sistema Operacional | Windows, mais que 2 dezenas de sistemas operacionais baseados em UNIX (Linux, todos BSD, HP-UX, AIX, OS X, Unixware, Netware,...) | Linux, Windows, FreeBSD, Mac OS X, Solaris, HP-UX, AIX e outros | Linux, Windows, FreeBSD, Mac OS X, Solaris, HP-UX, AIX e outros |
| ANSI SQL compliance | ANSI-SQL 92/99 | Segue alguns padrões de ANSI SQL | Segue alguns padrões de ANSI SQL |
| Desempenho | Lento | Rápido | não foi testado |
| Sub-selects | Sim | Sim | Sim |
| Transações | Sim | Sim Somente em tabelas InnoDB | Sim |
| Replicação do banco de dados | Sim | Sim | Sim |
| Suporte a chave estrangeira Foreign Key | Sim | Sim Somente em tabelas InnoDB | Sim |
| Views | Sim | Não | Sim |
| Stored procedures | Sim | Não | Sim |
| Triggers | Sim | Não | Sim |
| Unions | Sim | Sim Desde 4.0 | Sim |
| Full joins | Sim | Não | Não Planejado para a versão 5.1 |
| Constraints | Sim | Não | Não Planejado para a versão 5.1 |
| Cursors | Sim | Não | Parcial (Somente em modo de leitura - Ready only) |
| Procedural languages (PLs) | Sim PL/pgSQL, PL/Tcl, PL/Perl, PL/Python, PL/PHP, PL/Java ou uso indefinido | Não | Sim Suporta stored procedures (modulos persistentes) e linguagens que são definidas por ANSI/SQL 2003 |
| Vacuum (cleanup) | Sim | Sim por otimização de tabelas (OPTIMIZE TABLE) | Sim por otimização de tabelas (OPTIMIZE TABLE) |
| Different table types | Não (PostgreSQL tem somente seu próprio tipo e não usa outros alternativos) | Sim MyISAM, InnoDB, MEMORY, BerkeleyDB, MERGE, Archive and NDB (Cluster) (InnoDB tem funcionalidade adicional) | Sim MyISAM, InnoDB, MEMORY, BerkeleyDB, MERGE, Archive and NDB (Cluster) (InnoDB tem funcionalidade adicional) |
| ODBC | Sim | Sim | Sim |
| JDBC | Sim | Sim | Sim |
| Outras APIs | Maioria das linguagens (i.e. Perl, C/C++, .NET, OLE-DB, Tcl/Tk, Python, PHP, ...) | Maioria das linguagens | Maioria das linguagens |
| Suporte IPv6 | Sim | Não "Até o momento não, mas pode trabalhar em ambiente IPv6." | Não Planejado para a versão 5.1 |
Em geral
MySQL
- MySQL é relativamente mais rápido que o PostgreSQL.
- Handlers de conexões MySQL são muito rápidos, tornando-o adequado para utilizar na Web.
- Modelagem simples de banco de dados.
- Replicação do MySQL foi exaustivamente testado.
- Não há necessidade de limpezas no MySQL.
PostgreSQL
- Modelagem complexa de banco de dados.
- Configuração de regras complexas (regras de negócio).
- Uso de linguagens procedurais no servidor.
- Transações
- Uso de stored procedures
- Uso de dados geográficos
- R-Trees (Usado como índices)
Referências
Comentar
RSS
RSS
Olá, sobre a comparação de velocidades, acho que o MySQL estava com uma vantagem injusta.
Por usar o MyIsam por padrão (tipo sem integridade relacional), ela sempre vai ser mais rápida. Esse é o objetivo da MyIsam.
Um detalhe, eu utilizo o MySQL sempre que posso, então não estou defendendo o PostgreSQL por achar melhor.
É só um parâmetro que deve ser levado em consideração ao fazer comparações de desempenho.
E parabéns pelo site, muito bom.
Abraços
Muito obrigado pelo comentário Rafael!
A comparação pode parecer um tanto injusta, mas não é. Não sou adepto ao MySQL ou PostgreSQL. Eu acredito que temos que conhecer todas as alternativas possíveis e saber onde utilizar cada uma.
Como você disse, o objeto do MyISAM é ser extremamente rápido e conseguiu. Os comandos SELECT são muito rápidos quando comparados com PostgreSQL e Oracle. Porém, o custo é muito alto - tabelas sem consistência de dados.
A pouco tempo o MySQL implementou a integridade referencial, conhecido por InnoDB. Esse padrão também não deixa a desejar, é bem rápido. Conseguimos mais desempenho ao separar servidores somente para consulta e outros para INSERT, UPDATE, etc.
Vale lembrar que o MySQL é pessímo para grande quantidades de acessos, se torna instável facilmente. O Oracle e PostgreSQL são lentos para poucos acessos, mas aguentam muito mais acessos.
Agora é preciso analisar. Um site pode usar e abusar de cache. Cache em memória e cache em pagína fria são duas opções, mas existem outras. O cache descarta a grande quantidade de acessos no banco, então não é necessário ter um banco que aguente todos esses acesso, e sim que seja rápido.
Precisamos analisar bem cada situação é optar pela melhor solução.
Abraços
Bom antes de perder meu post comentava do por que dessa absurda comparação entre 2 versões obsoletas o MySQL 4.1 e PgSQL 8.
A 4.1 acabou nesta virada de ano a lincesa extendida, lembrando extendida: http://www.mysql.com/support/eol-notice.html
A versão do MySQL 5.1 já se encontra disponível há muito tempo, além das ótimas versões 8.3 e 8.4 do PgSQL. Acredito não haver necessidade de comparar versões obsoletas para projetos novos, ou meu TI está enganado?