sql >> Base de Datos >  >> RDS >> Mysql

C# - MySQL frente a Microsoft SQL Server

He usado SQL Server durante muchos años en proyectos de C# grandes y pequeños, pero he estado usando principalmente MySQL durante el último año en varios proyectos de C# (pero relacionados con código abierto y relacionados con el inicio) que ya usaban MySQL.

¡Echo de menos SQL Server! Según mi experiencia, SQL Server es mejor en muchos aspectos:

  • el optimizador de consultas en SQL Server es más inteligente, lo que significa que a menudo puede crear consultas y producirán planes de consulta óptimos. Con MySQL, paso más tiempo ajustando a mano incluso consultas relativamente simples para producir buenos planes de consulta.
  • el motor de base de datos subyacente en SQL Server puede hacer una variedad más amplia de cosas para mejorar el rendimiento. por ejemplo, todas las uniones en MySQL son uniones de bucle anidado, mientras que SQL Server puede hacer uniones hash o uniones de combinación, lo que a veces puede aumentar el rendimiento de las consultas 10 veces más. SQL Server también puede paralelizar consultas que, especialmente para grandes cargas de trabajo de almacenamiento de datos, pueden aumentar drásticamente el rendimiento.
  • las herramientas GUI están muy por delante. El optimizador de consultas de plan gráfico de SQL Server hace que la optimización de consultas sea muy sencilla:nunca querrá volver a EXPLAIN EXTENDED. Las herramientas gráficas de monitoreo de SQL Server 2008 son mucho más fáciles que buscar en el lento registro de consultas para averiguar qué es lo que está fallando. Y así sucesivamente.
  • Como mencionó, la historia de integración de .NET (C#, Linq, Entity Framework, etc.) en SQL Server es mejor. También uso C#, Entity Framework y LINQ con MySQL, por lo que no es una cosa o la otra, aunque es probable que el rendimiento sea mejor con SQL Server en un entorno .NET porque los equipos trabajan juntos para aumentar el rendimiento y hacer que la integración funcione mejor. .
  • La compatibilidad con el lenguaje SQL de SQL Server es más rica que la de MySQL, e incluye algunas funciones muy interesantes (especialmente en SQL 2008) como ROW_NUMBER() , GROUPING_SETS , OPTIMIZE FOR , columnas calculadas , etc.
  • La copia de seguridad es mucho más rápida, especialmente en SQL 2008 con copias de seguridad comprimidas
  • No existe una nube de adquisición de Oracle que se cierne sobre el futuro de SQL Server.
  • SQL Server (especialmente las ediciones caras) vienen con otras ventajas, como un almacén de datos OLAP (SSAS), una solución de generación de informes (SSRS), una herramienta ETL (SSIS), un programador (Agente SQL), etc. Puede obtener herramientas de código abierto similares, de forma gratuita (por ejemplo, Pentaho , BIRT , etc.) pero la integración tiende a ser mejor con SQL Server.

Dicho esto, existen importantes inconvenientes, que pueden o no ser un factor decisivo para usted:

  • está atascado usando servidores Windows, con todas las ventajas y desventajas que esto implica
  • SQL Server, especialmente las ediciones de gama alta, son costosas ! Sin embargo, para bases de datos pequeñas (menos de 4 GB, creo), SQL Server Express es gratuito y tiene casi las mismas funciones que el servidor SQL normal, si sabe que sus datos van a ser pequeños y sabe que su jefe es un tacaño. , Express es el camino a seguir. Además, hay una nueva edición web de SQL Server 2008 que, para las aplicaciones web orientadas a Internet, teóricamente debería ofrecer alojamiento económico, ya que el costo para un proveedor de alojamiento es de solo $15 al mes por procesador.
  • No es de código abierto. ¡Algunas empresas y equipos de desarrollo son muy apasionados por esto, por buenas razones (depuración, costo, filosofía, etc.)!
  • relacionado con lo anterior:si desea corregir un error en MySQL y tiene las habilidades, puede solucionarlo usted mismo. Con SQL Server, hay errores dolorosos en el procesamiento de consultas, la optimización, etc. que persisten durante años; he pasado una cantidad absurda de tiempo solucionando algunos de ellos.
  • para cargas de trabajo muy simples, de solo lectura (o no transaccionales) (por ejemplo, un acceso a caché basado en base de datos desde una aplicación web) en las que puede salirse con la suya usando MyISAM en lugar de InnoDB, escuché que MySQL puede ser significativamente más rápido .

Advertencia:Escuché que se supone que MySQL 6.0 aborda muchas de las brechas y diferencias anteriores, pero admito que no me he mantenido al tanto de cómo Oracle, etc. afectará el cronograma y/o el conjunto de características.

re:su "C # está integrado" nota:sí, puede desarrollar procedimientos almacenados, funciones, agregados, etc. utilizando lenguajes .NET, pero en mi humilde opinión, en la mayoría de los escenarios, esto es más problemático de lo que vale, incluso porque la implementación es más difícil y Los DBA se sienten menos cómodos con el código .NET en sus servidores. La verdadera ventaja de una combinación de C# + .NET + Visual Studio + SQL Server, en mi humilde opinión, es que se han diseñado en paralelo durante los últimos 10 años para que funcionen bien juntos, por lo que obtendrá la facilidad de uso y la sinergia que necesita. puede que no utilice MySQL. Dicho esto, como señalé anteriormente, esto no es un factor decisivo o un factor decisivo... simplemente es más sencillo usar SQL Server con el resto de la pila de Microsoft.

En resumen, déjeme aclarar que, para muchas cargas de trabajo de base de datos, MySQL es lo suficientemente bueno:funciona, es estable, es rápido, tiene herramientas razonablemente buenas, etc. ¡Y es asequible! :-) Nunca rechazaría un proyecto simplemente porque están usando MySQL. Pero la comparación es como conducir un Honda frente a un BMW... el Honda te lleva a donde quieres ir, pero si tu billetera puede soportarlo, disfrutarás mucho más del viaje con el Bimmer. :-)