O MySQL é melhor que o PostgreSQL em alguma coisa?


8

Eu sei que a pergunta parece provocativa, mas realmente não é. Ultimamente, estou achando o MySQL limitando em muitas áreas e gostando mais do PostgreSQL. Escala muito melhor e respeita muito mais os padrões SQL do que o MySQL.

Ainda sou novo no mundo do PostgreSQL e, como estou disposto a me afastar do MySQL para todos os meus projetos futuros, o que eu quero saber é: existe algum recurso específico do MySQL que ele seja feito melhor (como em mais de alto desempenho ou mais amigável, etc.) do que no PostgreSQL?

Eu estou querendo saber o que vou sentir falta do MySQL. Eu já achei que os campos AUTO_INCREMENT no MySQL são mais úteis do que SEQUENCES no PostgreSQL e a implantação no Windows era problemática no passado (não é mais um problema. Nunca é um problema para mim).

O quê mais?


Aqui está uma espécie de curiosidade: stackoverflow.com/questions/2221787/…
Paul


Eu odeio mysql, mas faz MERGE / UPSERT mais facilmente do que PG, e acho campos case-sensitive irritante
Neil McGuigan

Respostas:


3

Você está claramente abordando isso da perspectiva do desenvolvedor, para encontrar respostas mais úteis no SO.

Do ponto de vista administrativo:
- Replicação (HA)
- Replicação (dimensionamento *)
- Replicação (backups)
- Suporte a aplicativos
- Tamanho e profundidade da comunidade (documentação, suporte)
- Base de instalação existente / trabalhos disponíveis

* Observe que você mencionou a postgresescala melhor. dimensionar significa algo diferente para todos, mas, como regra geral, as coisas que têm um caminho para distribuir a carga por vários servidores são dimensionadas melhor do que as que não têm.


Também estou interessado nos aspectos administrativos. Eu não tinha certeza de onde postar isso. BTW, você está certo sobre o dimensionamento. Por escalas melhores, eu realmente quis dizer, em uma única máquina, não em clusters. O MySQL tem muito pouco ganho de desempenho em sistemas multicore e atualmente os multicore são a norma. Também vi o MySQL passar de bom desempenho para quase inútil quando a carga de trabalho aumentou, e a impressão era de que o postgresql lidaria melhor com a carga, mas entendo que isso é discutível e deve ser melhor investigado. BTW, vale a pena considerar os argumentos de replicação.
Massimiliano Torromeo

11
O MySQL costumava ter muito pouco ganho de desempenho em multicore, mas se você está executando uma versão 5.0 bem corrigida, quase qualquer versão 5.1, uma versão do innodb-plugin (/ xtradb) ou uma versão 5.4 que não é mais verdadeira. Não tentando ser de confronto, mas sua desaceleração anedótica do mysql quase certamente poderia ter sido abordada, e sua "impressão" do postgres teria lidado melhor com isso é uma suposição nua. O ponto principal aqui é que o postgres vs. o mysql é algo que você pode tagarelar muito do ponto de vista do sofisma do desenvolvimento, mas do ponto de vista operacional / comercial, o caso foi encerrado anos atrás.
cagenut

É claro que especifiquei que era apenas uma impressão, porque se eu realmente não tentar fornecer os mesmos dados sob a mesma carga, não tenho certeza e sei que não estou realmente provando nada. Obrigado por esclarecer os mais recentes ganhos de desempenho do MySQL.
Massimiliano Torromeo

Eu apenas sempre uso o tipo "serial" no postgres, acho mais útil que "número inteiro auto_increment". Ou você quis dizer outra coisa?
ptman 29/09/10

3

COUNT (*) também é muito mais lento com o PSQL. Você deve criar gatilhos para esse tipo de funcionalidade.


11
Interessante, mas até onde eu entendi, isso se aplica apenas a COUNT (*) consultas SEM a cláusula where no mecanismo MyISAM. Fora isso, ele executa de maneira semelhante. Ou o postgresql ainda é mais lento, mesmo se comparado ao InnoDB e MyISAM com uma cláusula where?
Massimiliano Torromeo

O que você quer dizer com isso ? selecione count ( ) de foo; não funciona no pgsql? Embora seja verdade que count ( ) é mais lento no postgres em comparação com o mysql, há uma razão para isso e uma solução alternativa. Uma boa visão geral pode ser encontrada em wikivs.com/wiki/MySQL_vs_PostgreSQL
Sibster

11
É mais lento pelo mesmo motivo que o InnoDB do MySQL, leia mais aqui: wikivs.com/wiki/MySQL_vs_PostgreSQL#COUNT.28.2A.29
EarthMind

3
COUNT (*) é mais lento devido à implementação do MVCC. Você ganha em termos de desempenho de leitura / gravação, mas como as transações podem estar em vários estados, fica difícil determinar qual é a contagem "verdadeira".
Avery Payne

2

Como o Postgres efetivamente faz uma cópia na gravação para cada atualização (para que ele possa lidar com transações), se você não precisa de transações e faz muitas gravações em relação às leituras, o MySQL não terá a sobrecarga que o PostgreS vai. (todo registro atualizado precisa escrever mais, atualizar índices etc.)


11
Eu acho que você deve qualificar isso um pouquinho. Sim, será mais rápido, mas não haverá garantia de consistência nos seus dados. Isso é perfeitamente adequado para algumas situações (gravações de comentários de usuários de um site), mas pode causar problemas em outras (solicitar um "carrinho de compras" on-line).
Avery Payne

1

Eu posso pensar em uma coisa que falta no PostgreSQL:

Eu acho que havia algo também com bloqueio, inserção ou atualização. Mas não consigo me lembrar o que realmente era. : S


1

O campo auto_increment sendo 'útil' não é muito relevante, é? A Oracle possui sequências e é sem dúvida o banco de dados comercial mais utilizado no mundo.

Existe uma enorme quantidade de informações sobre como o PostgreSQL se mais seguro contra falhas e assim por diante. Vou apenas apontar para esta página no wiki do PostgreSQL (sem dúvida, uma opinião colorida, mas é isso que você está procurando de qualquer maneira).

Muitas pessoas estão mencionando nesta página que o MySQL é mais amigável para iniciantes. Assim? Explique-me como isso importa em um ambiente de missão crítica.


Sendo sequências, a abordagem mais usada não torna os campos de incremento automático menos 'úteis', e isso é relevante para mim porque estou pedindo diferenças entre os 2 dbms em questão. Mas isso não está me impedindo de mudar para o pgsql, por isso concordo que não é um problema real.
Massimiliano Torromeo

1

O MySQL é freqüentemente chamado de gre'ed SQL . Quanto a mim (agora no momento da redação), parece muito com o PHP - bastante estranho, mas popular.

Eu estou querendo saber o que vou sentir falta do MySQL.

Tente renomear um banco de dados desde o início. ;) Em seguida, adicione índices condicionais (ausentes).

PS: Posso apontar pelo menos um bom recurso não discutível que o MySQL possui - ele suporta tipos de dados que economizam espaço, tão pequenos quanto bytes (não assinados), por exemplo. Isso poderia economizar muita RAM e espaço em disco quando usado de acordo. Mas há muito poucos itens a serem mencionados, infelizmente. E a comparação no link que você recebeu é realmente bacana.


0

auto_increment é útil até que você perceba que elas sugam tabelas com simultaneidade de inserção extremamente alta; nesse momento elas se tornam um gargalo e você é forçado a implementar uma sequência usando uma tabela MyISAM.

De qualquer forma, para responder sua pergunta, a maior coisa que o MySQL já fez foi a facilidade de configurar a replicação que permite encadear a replicação e ler escravos. No entanto, o Postgres terá isso no próximo lançamento, 9.0 (que já está no status alfa).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.