Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

C# - MySQL vs Microsoft SQL Server


Eu usei o SQL Server por muitos anos em projetos C# grandes e pequenos, mas tenho usado principalmente MySQL no último ano em vários projetos C# (mas relacionados a código aberto e relacionados a inicialização) que já estavam usando MySQL.

saudades do SQL Server! Na minha experiência, o SQL Server é melhor de várias maneiras:
  • o otimizador de consultas no SQL Server é mais inteligente, o que significa que muitas vezes você pode criar consultas e elas produzirão planos de consulta ideais. Com o MySQL, passo mais tempo ajustando manualmente até mesmo consultas relativamente simples para produzir bons planos de consulta.
  • o mecanismo de banco de dados subjacente no SQL Server pode fazer uma variedade maior de coisas para aumentar o desempenho. por exemplo, todas as junções no MySQL são junções de Loop Aninhado, enquanto o SQL Server pode fazer junções de hash ou junções de mesclagem que às vezes podem aumentar o desempenho da consulta em 10x+. O SQL Server também pode paralelizar consultas que, especialmente para grandes cargas de trabalho de data warehouse, podem aumentar drasticamente o desempenho.
  • as ferramentas GUI estão muito à frente. O otimizador de consulta de plano gráfico do SQL Server facilita a otimização de consulta - você nunca mais vai querer voltar para EXPLAIN EXTENDED. As ferramentas de monitoramento gráfico do SQL Server 2008 são muito mais fáceis do que vasculhar o log de consulta lento para descobrir o que está errado. E assim por diante.
  • Como você mencionou, a história de integração .NET (C#, Linq, Entity Framework, etc.) no SQL Server é melhor. Eu uso C#, Entity Framework e LINQ com MySQL também, então não é uma coisa ou outra, embora o desempenho provavelmente seja melhor com SQL Server em um ambiente .NET porque as equipes trabalham juntas para aumentar o desempenho e fazer a integração funcionar melhor .
  • O suporte à linguagem SQL do SQL Server é mais rico que o do MySQL, incluindo alguns recursos muito interessantes (especialmente no SQL 2008) como ROW_NUMBER() , GROUPING_SETS , OPTIMIZE FOR , colunas computadas , etc.
  • O backup é muitas vezes mais rápido, especialmente no SQL 2008 com backups compactados
  • Não há nuvem de aquisição da Oracle pairando sobre o futuro do SQL Server.
  • O SQL Server (especialmente as edições caras) vem com outros recursos, como um data warehouse OLAP (SSAS), uma solução de relatórios (SSRS), uma ferramenta ETL (SSIS), um agendador (SQL Agent), etc. Você pode obtenha ferramentas semelhantes de código aberto gratuitamente (por exemplo, Pentaho , BIRT , etc.), mas a integração tende a ser melhor com o SQL Server.

Dito isto, existem desvantagens significativas, que podem ou não ser um fator decisivo para você:
  • você está preso usando Windows Servers, com todas as vantagens e desvantagens que isso implica
  • SQL Server, especialmente as edições mais avançadas, são caros ! Para bancos de dados pequenos (<4 GB, eu acho), o SQL Server Express é gratuito e é quase tão completo quanto o SQL Server comum - se você sabe que seus dados serão pequenos e sabe que seu chefe é um barato , Express é o caminho a percorrer. Além disso, há um novo SQL Server 2008 Web Edition que, para aplicativos da Web voltados para a Internet, teoricamente deveria oferecer hospedagem barata, já que o custo para um hoster é de apenas US$ 15/mês por processador.
  • Não é de código aberto. Algumas empresas e equipes de desenvolvimento são muito apaixonadas por isso, por boas razões (depuração, custo, filosofia etc.) !
  • relacionado ao acima:se você quiser corrigir um bug no MySQL e tiver as habilidades necessárias, poderá corrigi-lo você mesmo. Com o SQL Server, há bugs dolorosos no processamento de consultas, otimização, etc. que persistem por anos -- gastei uma quantidade absurda de tempo resolvendo alguns deles.
  • para cargas de trabalho muito simples, somente leitura (ou não transacionais) (por exemplo, um acesso ao cache baseado em banco de dados de um aplicativo da Web) onde você pode usar o MyISAM em vez do InnoDB, ouvi dizer que o MySQL pode ser significativamente mais rápido .

Advertência:Ouvi dizer que o MySQL 6.0 deve resolver muitas das lacunas e diferenças acima, mas admito que não me mantive atualizado sobre como o Oracle, etc., afetará o cronograma e/ou o conjunto de recursos.

re:seu "C# está embutido" nota:sim, você pode desenvolver procedimentos armazenados, funções, agregações, etc. usando linguagens .NET, mas IMHO na maioria dos cenários isso é mais problemático do que vale a pena, inclusive porque a implantação é mais difícil e Os DBAs se sentem menos confortáveis ​​com o código .NET em seus servidores. A verdadeira vitória para uma combinação de C# + .NET + Visual Studio + SQL Server, IMHO, é que eles foram projetados em paralelo nos últimos 10 anos para funcionar bem juntos, então você terá facilidade de uso e sinergia que você pode não conseguir usar o MySQL. Dito isso, como observei acima, isso não é um disjuntor ou negociador... é apenas mais suave usar o SQL Server com o restante da pilha da Microsoft.

Em resumo, deixe-me esclarecer que, para muitas cargas de trabalho de banco de dados, o MySQL é bom o suficiente -- funciona, é estável, rápido, possui ferramentas razoavelmente boas etc. E é acessível! :-) Eu nunca recusaria um projeto simplesmente porque eles estão usando MySQL. Mas a comparação é como dirigir uma Honda contra uma BMW... a Honda leva você aonde você quer ir, mas se sua carteira aguentar, você aproveitará muito mais o passeio com o Bimmer. :-)