C# - MySQL 与 Microsoft SQL Server

标签 c# mysql sql-server

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




9年前关闭。










锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或互动。








长期以来,我一直在使用 MySQL 服务器来处理数据(在 JAVA 和 C# 中)。但是最近,我听到了有关 LINQ 和 SQL Server 的好消息。我一直在考虑转换,但我对 SQL Server 了解不多。

之前使用过 SQL Server 的任何人都可以定义它在性能和可用性方面与 MySQL 服务器相比有多好。

我还听说 SQL Server 更适合 C#,因为它基本上是内置的。

最佳答案

我已经在大大小小的 C# 项目中使用 SQL Server 多年,但去年在已经使用 MySQL 的各种 C#(但与开源相关和启动相关)项目中主要使用 MySQL。

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

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

  • 也就是说,有一些明显的缺点,对你来说可能会或可能不会破坏交易:
  • 您被困在使用 Windows 服务器,所有优点和缺点都需要
  • SQL Server,尤其是高端版本,是expensive !不过,对于小型数据库(我认为 <4GB),SQL Server Express 是免费的,并且功能几乎与常规 SQL Server 一样全——如果你知道你的数据会很小并且你知道你的老板是个吝啬鬼, express 是要走的路。此外,还有一个新的 SQL Server 2008 Web Edition,对于面向 Internet 的 Web 应用程序,理论上应该提供廉价的托管,因为托管商的成本仅为每个处理器每月 15 美元。
  • 它不是开源的。一些公司和开发团队对此非常热情,理由很充分(调试、成本、理念等)!
  • 与上述相关:如果您想修复MySQL中的错误,并且您有技能,则可以自己修复。对于 SQL Server,在查询处理、优化等方面存在持续多年的令人痛苦的错误——我已经花费了大量时间来解决其中的一些问题。
  • 对于非常简单的只读(或非事务性)工作负载(例如从 Web 应用程序访问基于 DB 的缓存),您可以使用 MyISAM 而不是 InnoDB,我听说 MySQL 可以明显更快。

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

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

    总之,让我明确一点,对于许多数据库工作负载,MySQL 已经足够好了——它有效、稳定、速度快、有相当好的工具等等。而且它是负担得起的! :-) 我绝不会仅仅因为他们使用 MySQL 就拒绝一个项目。但这种比较就像驾驶本田和宝马……本田带你去你想去的地方,但如果你的钱包可以承受,你会更享受 Bimmer 的骑行。 :-)

    关于C# - MySQL 与 Microsoft SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1757820/

    相关文章:

    c# - 当窗体最大化时,如何使窗体上的所有控件展开并按比例增加大小?

    c# - Entity Framework 代码优先将类型保存为字符串

    c# - 如何在 C# 中的 foreach 之后返回列表以查看

    c# - 有趣的 LinqToSql 行为

    sql-server - 如何获取 Windows 批处理文件中的日期格式为 'yyyymmdd' ?

    c# - 将结构添加到列表的 foreach 循环中的异常

    mysql - 文件大小为 0 字节(使用 Struts2 和 MySQL 下载文件应用程序)

    php - MySQL 中得到错误的输出

    mysql查询-选择底部n条记录

    sql - @table变量或#temp表: Performance