C# - MySQL与Microsoft SQL Server

The*_*eAJ 15 c# mysql sql-server

在最长的时间里,我一直在使用MySQL服务器处理数据(在JAVA和C#中).但最近,我一直听到有关LINQ和SQL Server的好消息.我一直在考虑转换,但我对SQL Server知之甚少.

任何以前使用过SQL Server的人都可以在性能和可用性方面定义它与MySQL服务器的对比情况.

我也听说SQL Server对C#更好,因为它基本上是内置的.

Jus*_*ant 54

我已经在大型和小型C#项目上使用了SQL Server多年,但去年在各种C#(但与开源相关和启动相关的)项目中使用了大部分MySQL,这些项目已经在使用MySQL.

我想念SQL Server!根据我的经验,SQL Server在很多方面都更好:

  • SQL Server中的查询优化器更智能,这意味着您可以经常构建查询,并且它们将生成最佳查询计划.使用MySQL,我发现自己花费更多时间手动调整甚至相对简单的查询,以便产生良好的查询计划.
  • SQL Server中的底层数据库引擎可以执行更多操作来提高性能.例如,MySQL中的所有连接都是嵌套循环连接,而SQL Server可以执行散列连接或合并连接,这有时可以提高查询性能10x +.SQL Server还可以并行化查询,对于大型数据仓库工作负载尤其可以显着提高性能.
  • GUI工具领先一步.SQL Server的图形计划查询优化器使查询优化变得轻而易举 - 您永远不会想要回到EXPLAIN EXTENDED.SQL Server 2008的图形监控工具比通过慢速查询日志找出问题容易得多.等等.
  • 正如您所提到的,SQL Server中的.NET集成故事(C#,Linq,Entity Framework等)更好.我也使用C#,实体框架和LINQ与MySQL,所以它不是一个或两件事,尽管在.NET环境中SQL Server的性能可能更好,因为团队协同工作以提高性能并使集成更好地工作.
  • SQL Server的SQL语言支持比MySQL的丰富,其中包括一些非常酷的功能(2008年为SQL尤其是)一样ROW_NUMBER(),GROUPING_SETS,OPTIMIZE FOR,计算列等.
  • 备份速度要快很多倍,特别是在带有压缩备份的SQL 2008中
  • SQL Server的未来没有任何Oracle收购云.
  • SQL Server(特别是昂贵的版本)附带其他好东西,如OLAP数据仓库(SSAS),报告解决方案(SSRS),ETL工具(SSIS),调度程序(SQL代理)等.您可以获得类似的开放-source工具,免费(例如Pentaho,BIRT等),但SQL Server的集成往往更好.

也就是说,存在重大缺陷,可能会或可能不会成为您的交易破坏者:

  • 你被困在使用Windows服务器,这需要所有的优点和缺点
  • SQL Server,尤其是高端版本,价格昂贵!对于小型数据库(我认为<4GB),SQL Server Express是免费的,并且几乎与常规SQL Server一样功能齐全 - 如果你知道你的数据很小而且你知道你的老板是个小偷,快递是要走的路.此外,还有一个新的SQL Server 2008网络版,对于面向互联网的网络应用程序,理论上应该提供便宜的托管,因为托管服务商的成本每个处理器只需15美元/月.
  • 它不是开源的.一些公司和开发团队对此充满热情,原因很充分(调试,成本,理念等)!
  • 与上述相关:如果你想在MySQL中修复一个bug,并且你已经掌握了这些技能,你可以自己修复它.使用SQL Server,在查询处理,优化等方面存在着痛苦的错误,这些错误持续多年 - 我花了很多时间来解决其中的一些问题.
  • 对于非常简单的只读(或非事务)工作负载(例如,来自Web应用程序的基于数据库的缓存访问),您可以使用MyISAM而不是InnoDB,我听说MySQL的速度要快得多.

警告:我听说MySQL 6.0应该解决上面的许多差距和差异,但我承认自己没有跟上Oracle事物等将如何影响日程安排和/或功能集的速度.

re:你的"C#是内置的"注意:是的,你可以使用.NET语言开发存储过程,函数,聚合等,但是在大多数情况下恕我直言这比它的价值更麻烦,包括因为部署更难和DBA对其服务器上的.NET代码不太满意.对于C#+ .NET + Visual Studio + SQL Server组合,恕我直言,真正的胜利是它们在过去十年中并行设计,可以很好地协同工作,因此您将获得易用性和协同作用.可能无法使用MySQL.也就是说,正如我上面提到的,这不是一个交易破坏者或交易制定者......使用SQL Server与其他Microsoft堆栈相比更加顺畅.

总而言之,让我明确一点,对于许多数据库工作负载,MySQL足够好 - 它可以工作,它很稳定,速度很快,有相当好的工具等等.而且价格实惠!:-)我永远不会因为他们使用MySQL而拒绝一个项目.但这种比较就像驾驶本田而不是宝马......本田可以让你到达你想去的地方,但如果你的钱包可以拿走它,那么你可以通过Bimmer享受更多的乐趣.:-)

  • 是的.我最近一直在使用Postgres.DBMS很好,但我的主要抱怨是鸡蛋和鸡蛋:Postgres的用户群较小,因此其他产品(例如SubSonic)比其他DBMS更晚地与Postgres集成.如果我想在Postgres中使用Entity Framework,我可能需要为dotConnect支付100美元.等等.但特别是考虑到甲骨文的担忧,如果我今天选择一个开源数据库,Postgres可能是一个更安全的长期赌注. (2认同)