SQL Server与MySQL数据库对比

jopen 10年前

Microsoft SQL Server 2008作为一个数据库平台在所有重要商业领域都胜过MySQL。它提供了一个大型的资源网络、行业领先的性能和企业级的可扩展性、最高级的安全性、一个广泛的商业智能平台——以一个较低的总体拥有成本(TCO)提供所有这些。

  · 合作伙伴系统

  · 可扩展性

  · 安全性

  · 高有效性

  · 商业智能

  · 总体拥有成本(TCO)

  合作伙伴系统

  SQL Server以一个大型的资源网络和一个广泛的合作伙伴系统来支持你的业务。SQL Server是企业的首选数据库,目前有74.7%的企业使用SQL Server。

  · Microsoft具有世界上最多的开发人员和支持团队。MySQL有大约70个开发人员和50个支持人员。

  · 大约15,000个ISV支持SQL Server。而支持MySQL的ISV不到400个。.

  · 在全球Microsoft合作计划中数据管理资格认证的大约2,000个解决方案合作商是有能力为你的企业提供支持。而MySQL 的较小合作商系统只能提供有限的资源。

  可扩展性

  SQL Server支持行业领先的性能和企业级可扩展性。 SQL Server提供了一个基础构建,它可以与你的企业一起发展, 而且它还被证明可以处理大型的工作负载.

  · 由行业标准基准验证的性能,包括TPC和SAP。MySQL没有行业标准性能基准。MySQL性能要求一般是基于可能不适合你企业的配置。

  · 一个具有丰富特性、高性能和基于成本的查询优化器改进了复杂查询的效率。MySQL只有一个基本的查询优化器,而这个优化器没有优化以提供最好的性能,并因此只提供有限的可扩展性。

  · 分布式分区视图扩展了可扩展性。MySQL没有分布式分区视图。

  安全性

  SQL Server 提供了最高级的安全性。据国家漏洞数据库显示,SQL Server在过去三年里没有出现一个漏洞。而MySQL的用户在同一时期受到很多安全挑战。

  研究机构证实SQL Server的高安全性

  · Security Innovations发现在Windows 上的SQL Server比Linux上的MySQL更加安全,它的漏洞比其减少46%,而风险天数比其减少48%。

  · ESG报告指出,MySQL的漏洞比2004年、2005年和2006年的Microsoft SQL Server、Sybase和IBM DB2的漏洞要多。

  SQL Server提供了:

  · 可靠性:丰富的安全特性保护了数据和网络资源。

  · 第三方评估,安全确认所喜欢的方式: Microsoft服从共同准则(Common Criteria),将其作为一个证明和接受的验证过程。MySQL不包括共同准则证明或C2(NSA)。

  · 隐密性:SQL Server集群支持在一个虚拟机上的Kerberos验证和标准登录的Windows风格策略。这使得这个域内的所有帐户都可以使用一个一致的策略。

  · 完整性:SQL Server支持在数据库中加密的功能,并与密钥管理基础构建相集成。

  · 自动更新:SQL Server与用于安全更新的Microsoft Update集成在一起。MySQL没有自动的更新打补丁。

  高有效性

  SQL Server提供了最高的有效性。Always On(总是联机的)技术提供了全面的企业级选择,使得系统停机时间降低到最少,保护了你的数据免于高昂的人为错误,并将应用程序有效性维护在合适的等级。 MySQL不提供以下功能,而所有这些都是包括在SQL Server内的:数据库镜像、故障转移集群、数据库快照和快照隔离、日志传送和防止停机的联机操作。

  可靠的升级满足所需

  · Camstar发现SQL Server 2005企业版(64位)可以升级以满足大多数基础构建的需求。

  · Temenos,一个为全球金融机构提供核心银行解决方案的主要供应商,与Microsoft和Intel一起使用Microsoft SQL Server 2005企业版(64位)和Quad-Core Intel Xeon技术来测试Temenos T24银行模型的性能。

  商业智能

  SQL Server提供了一个全面的即开即用商业智能平台——不需要第三方供应商。SQL Server作为市场上排名第一的联机分析处理(OLAP)服务器,它包含分析服务、ETL和用于建立和管理打印和在线报表的报表服务。MySQL没有提供商业智能功能。

  总体拥有成本(TCO)

  SQL Server以很低的总体拥有成本提供了高质量,它为你的企业提供了一个全面的即开即用数据平台解决方案,而不需要昂贵的插件。

  · 一组世界级的工具和一个集成的调试环境帮助降低了开发成本。

  · SQL Server管理套件,旨在帮助创建自管理系统,帮助降低员工成本。

  · 降低的TCO和更快的开发时间,以及在Windows Server产品间执行的通用工程策略。而且,Microsoft 提供许多SQL Server许可证和价格选择,每一个都提供了强大的支持。

  MySQL免费提供它的Community Server。但是公司警告说,MySQL不提供支持和定期更新。如果你没有技术经验来靠你自己提供这些服务,那么购买这些服务是很昂贵的。

  · 产品支持要求MySQL企业订阅$599到$4,999每服务器每年(MySQL企业选择)。

  在MySQL上建立一个全面的解决方案需要额外的第三方工具,例如备份和商业智能,而其中许多是收费的。

  上面是转载的,讲一些个人的经验吧,我公司的虚拟主机管理系统是我开发的,采用了.Net 和SQL Server的方案,而由于是经营虚拟主机,所以对这两种常见的数据库接触非常多,遇到的问题也多。

  总体来说,性能上,数据量比较小,数据表结构比较简单的时候,比如10万数据,那么MySQL的效率在第一次检索的时候会比SQL Server快,注意,我提到了第一次检索,因为这两种数据库的承载平台是有区别的,Windows系统可能运行一年以后还会显示几个G的空余物理内存,而Linux/Unix启动后可能就会接管所有的物理内存,刚学Unix的时候还因为这个困惑过。所以在Linux/Unix下,进程要使用内存是会比 Windows下的进程少等待一个步骤,所以内存页交换的开销会比较小,而Windows要先看剩余物理内存,够用了就拿来,不够用再去写页面文件(实际上在内存管理和调度上两个系统的区别是很大的,这里只是讲个简单的例子),所以Windows的内存调度性能肯定没有Linux/Unix好。SQL Server的运行是很有意思的,做过服务器维护的朋友应该注意到了,需要给SQL Server指定可以调用的物理内存上限,否则在一段时间之后(具体多少时间,要看负载情况,可能几秒钟就上来了)SQL Server就会吃掉所有的物理内存,我公司曾经接手两个日访问量上千万的站点,都是SQL Server数据库,Dell的1950,两颗Xeon 3.0,4G内存跑起来比较吃力的,因为并发太多了。SQL Server是典型的内存换性能,细心的朋友会发现,一个500M的数据库,如果做一次count或者sum或者其他需要检索整个表的操作,那么SQL Server占用的物理内存立马就会蹿升到500多M,这里可以看出他性能来源,是把数据库缓冲在内存中了,内存操作的效率当然要比磁盘高,所以他性能高也就很正常的了,加上他是商业数据库,新版的SQL Server 2008性能已经很夸张了,后面会有详细数据。MySQL的内存占用是令人满意的,占用很小,而且不论我怎么调整,我见到MySQL占用内存的上限只有 1.1G,当时也是个很极端的情况,一个用户的站点被人攻击,3万多并发持续请求PHP页面,是个论坛来的,后面挂接MySQL,IIS程序池占用的 CPU已经导致一颗处理器核心满载了(四核,他用了25%),而MySQL却用掉了60%,超过两颗核心的负载,MySQL进程占用内存接近1.1G,因为他论坛的帖子较多,印象中是300多万还是800多万帖子,系统负载很高了,MySQL明显的反应迟缓,甚至检索超时。前边提到第一次检索的问题,也讲了原因,SQL Server第一次因为要缓冲到内存中,所以需要读取整个数据库物理文件,所以第一次检索的速度是被磁盘给拖住了,实际上Windows大多数程序第一次启动都会很慢,包括ASP.Net页面也是一样,但是过了第一次,速度就明显提升;而MySQL始终如一,中规中矩的,第一次和第十次速度一样。但是通过监控系统的IO操作可以得知,MySQL始终都要频繁的读写物理文件,所以速度自然没有SQL Server高。当然区别不止是这个,但是我们平时很少涉及到千万数据量以上的检索,能看到的也就这些。

  再谈谈安全性,上面也提到了官方以及第三方数据,说明MySQL没有SQL Server安全,其实包括操作系统也是如此,Windows系统出现高危漏洞的次数远远少于Linux/Unix,而IIS的漏洞能数的过来,Apache的洞却很多很多。所以总有人说Linux怎么安全,我不知道他这样的论点,依据是什么。我从事过信息安全工作,关注漏洞列表是一个习惯,近几年来,Linux/Apache/MySQL的漏洞数量绝对在Windows/IIS/SQL Server的两倍以上。再说一个上面没有提到的安全性问题,就是数据库的物理文件,大家都知道,物理文件的安全性决定一切的,SQL Server的文件操作是很安全的,起码这10多年来我还没遇到过SQL Server莫名其妙的物理文件损坏的情况,而MySQL则遇到很多次了,莫名其妙的索引就坏了,有时候能修复,有时候还不能修复,逼的我们开发了自动备份系统。。。

  最后讲一个自己的事情。因为一些原因,我抓取了sohu一个子站的所有文章,15万多还是16万多,文字数量在1.5G,当时突发奇想对比两种数据库的性能。全部正确插入数据库以后做模糊检索,对比速度(MySQL少了几篇文章,因为转义字符太多,懒得查了)。SQL Server上我先做了一次大规模的模糊检索,让他挂载内存,然后sum(Like)一个几乎每篇文章都有的关键字,运行了三次,最差的一次是49毫秒,也就是0.049秒。然后做MySQL,测试了5次,每次都出不来结果,等了几分钟没响应,杀掉进程重启,再来……最后一次直接进程崩溃了,我也就没心情去研究了。

  根据自己这些年来服务器管理的经验来讲,SQL Server的强壮性、性能以及稳定性都要远远高于MySQL的(还没提到,MySQL有几次莫名其妙崩溃的事情),如果你的应用比较复杂,数据量大,并且是“关键性”应用,那么选择一个商业数据库是没错的,但是如果你实力很强,有自己研发能力,能做到像yahoo和Google那样集群,甚至是自己改造数据库的能力,那么用MySQL是适合你的。如果你的应用比较简单,数据量也不大,并且数据表的结构比较简单,那么MySQL适合你用,但是请你做好备份措施,MySQL的强壮性实在不敢恭维。