Pergunta

Eu sou um ASP.NET desenvolvedor que usou Microsoft SQL Server para todas as minhas necessidades de banco de dados (tanto no trabalho quanto em projetos pessoais).

Estou pensando em experimentar o LÂMPADA pilha para alguns dos meus projetos pessoais.

Quais são algumas das principais diferenças entre MySQL e SQL Server?Está usando procedimentos armazenados uma prática comum em MySQL?

Algum conselho ou recurso que você recomendaria para me ajudar com a mudança?

Para aqueles que têm experiência com ambos, há algum recurso faltando no MySQL?

Foi útil?

Solução

Uma coisa que você deve observar são as diferenças bastante graves na maneira como o SQL Server e o MySQL implementam a sintaxe SQL.

Aqui está um bom Comparação de diferentes implementações SQL.

Por exemplo, dê uma olhada na seção top-n.No MySQL:

SELECT age
FROM person
ORDER BY age ASC
LIMIT 1 OFFSET 2

No SQL Server (T-SQL):

SELECT TOP 3 WITH TIES *
FROM person
ORDER BY age ASC

Outras dicas

Muitos comentários aqui parecem mais argumentos religiosos do que declarações da vida real.Trabalhei durante anos com MySQL e MSSQL e ambos são bons produtos.Eu escolheria o MySQL principalmente com base no ambiente em que você está trabalhando.A maioria dos projetos de código aberto usa MySQL, então se você for nessa direção, o MySQL é sua escolha.Se você desenvolver algo com .Net eu escolheria MSSQL, não porque seja muito melhor, mas apenas porque é o que a maioria das pessoas usa.Na verdade, estou atualmente em um projeto que usa ASP.NET com MySQL e C#.Funciona perfeitamente bem.

Não acredito que ninguém tenha mencionado que o MySQL não suporta declarações Common Table Expressions (CTE)/"with".É uma diferença bastante irritante.

É mais provável que o MySQL tenha problemas de corrupção de banco de dados e não os corrige automaticamente quando eles acontecem.Trabalho com MSSQL desde a versão 6.5 e não me lembro de um problema de corrupção de banco de dados que deixou o banco de dados offline.Nas poucas vezes em que trabalhei com MySQL em um ambiente de produção, um problema de corrupção de banco de dados deixou todo o banco de dados off-line até executarmos a mágica "por favor, conserte meu índice corrompido" na linha de comando.

O sistema de transações e registro em diário do MSSQL, na minha experiência, lida com praticamente qualquer coisa - incluindo um ciclo de energia ou falha de hardware - sem corrupção do banco de dados, e se algo der errado, ele o corrige automaticamente.

Esta tem sido minha experiência e ficaria feliz em saber que isso foi corrigido ou que estávamos fazendo algo errado.

http://dev.mysql.com/doc/refman/6.0/en/corrupted-myisam-tables.html

http://www.google.com/search?q=site%3Abugs.mysql.com+index+corruption

Francamente, não consigo encontrar um único motivo para usar o MySQL em vez do MSSQL.O problema antes costumava ser caro, mas o SQL Server 2005 Express é gratuito e há muitas empresas de hospedagem na web que oferecem hospedagem completa com sql server por menos de US$ 5,00 por mês.

MSSQL é mais fácil de usar e possui muitos recursos que não existem no MySQL.

Tudo no MySQL parece ser feito mais próximo do metal do que no MSSQL, e a documentação trata dessa forma.Especialmente para otimização, você precisará entender como os índices, a configuração do sistema e o otimizador interagem em diversas circunstâncias.

O "otimizador" é mais um analisador.No MSSQL, seu plano de consulta costuma ser uma surpresa (geralmente bom, às vezes não).No MySQL, ele faz praticamente o que você pediu, da maneira que você esperava.O que significa que você mesmo precisa ter um conhecimento profundo das várias maneiras como isso pode ser feito.

Não construído em torno de um bom modelo TRANSACTION (mecanismo MyISAM padrão).

A configuração do sistema de arquivos é o seu problema.

Toda a configuração do banco de dados é problema seu - especialmente vários tamanhos de cache.

Às vezes parece melhor pensar nisso como um isam glorificado e ad hoc.Codd e Date não têm muito peso aqui.Eles diriam isso sem constrangimento.

Acho que uma das principais coisas a observar é que as versões anteriores ao MySQL 5.0 não tinham visualizações, gatilhos e procedimentos armazenados.

Mais sobre isso é explicado no Página de download do MySQL 5.0.

@abdu

A principal coisa que descobri que o MySQL tem sobre o MSSQL é o suporte ao fuso horário - a capacidade de alterar perfeitamente entre os fusos horários, respeitando o horário de verão, é fantástica.

Compare isso:

mysql> SELECT CONVERT_TZ('2008-04-01 12:00:00', 'UTC', 'America/Los_Angeles');
+-----------------------------------------------------------------+
| CONVERT_TZ('2008-04-01 12:00:00', 'UTC', 'America/Los_Angeles') |
+-----------------------------------------------------------------+
| 2008-04-01 05:00:00                                             |
+-----------------------------------------------------------------+

às contorções envolvidas em esta resposta.

Quanto ao comentário 'mais fácil de usar', eu diria que a questão é que eles são diferentes e, se você conhecer um, haverá uma sobrecarga no aprendizado do outro.

Ambos são produtos do DBMS. O servidor SQL é um aplicativo comercial, enquanto o MySql é um aplicativo de código aberto. Ambos os produtos incluem recursos semelhantes, no entanto, o servidor sql deve ser usado para uma solução corporativa, enquanto o mysql pode ser adequado para uma implementação menor. replicação, segurança granal e significativa, você precisa de sql server

MySql ocupa menos espaço em disco e usa menos memória e CPU do que o SQL Server

Alguém tem uma boa experiência com uma "porta" de um banco de dados do SQL Server para o MySQL?

Isso deve ser bastante doloroso!Troquei as versões do MySQL de 4.x para 5.xe várias instruções não funcionavam mais como antes.O analisador de consultas foi "melhorado" para que as declarações que anteriormente eram ajustadas para desempenho não funcionassem mais conforme o esperado.

A lição aprendida ao trabalhar com um banco de dados MySQL de 500 GB:É um assunto sutil e tudo menos trivial!

@Cebjyre.O IDE, seja Enterprise Manager ou Management Studio, é melhor do que qualquer coisa que vi até agora para MySQL.Digo 'mais fácil de usar' porque posso fazer muitas coisas no MSSQL onde o MySQL não tem equivalentes.No MySQL, não tenho ideia de como ajustar as consultas simplesmente observando o plano de consulta ou as estatísticas.O assistente de ajuste de índice no MSSQL realiza a maior parte do trabalho de adivinhação sobre quais índices estão faltando ou foram colocados no lugar errado.

Uma deficiência do MySQL é que não há tamanho máximo para um banco de dados.O banco de dados apenas aumentaria de tamanho até preencher o disco.Imagine se este disco estivesse compartilhando bancos de dados com outros usuários e de repente todas as suas consultas falhassem porque seus bancos de dados não podem crescer.Eu relatei esse problema ao MySQL há muito tempo.Acho que ainda não está consertado.

Passando algum tempo trabalhando com MySQL do ponto de vista da sintaxe MSSQL para MySQL, continuei me sentindo limitado no que podia fazer.

Existem limites bizarros para atualizar uma tabela e ao mesmo tempo referenciar a mesma tabela durante uma atualização.

Além disso, UPDATE FROM não funciona e da última vez que verifiquei, eles também não suportam a sintaxe Oracle MERGE INTO.Isso foi um obstáculo para mim e parei de pensar que chegaria a algum lugar com o MySQL depois disso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top