admin 管理员组

文章数量: 887018


2024年1月19日发(作者:continue语句的作用是重新开始一次)

对比项目 MySQLMS SQL SERVER

版权软件,收费

SQL Server2005官方报价5999美元/处理器或2799美元/Server

软件费用

开源软件, 大部分版本免费

Windows 任何 200美元

Unix或Linux 自行安装 免费

Unix或Linux 第三方安装

200美元

平台支持

数据类型

管理方式

开发软件

各种平台,比较适合unix平台 只能在Windows平台

字段类型多, 字符串最大支持多,字符串最大支持8000

65536

较容易 非常容易

C,C++,JAVA(JDBC),Perl,C,C++,JAVA(JDBC),aspPython,PHP and TCL 的API等

接口等

INNODB存储引擎下支持,速支持,速度比较快

度比较慢

较容易,不支持某些扩展SQL容易,支持扩展SQL语法

语法

支持中文

但开发和转移数据时容易出现全中文环境

中文字符问题

较难,速度快的是字符操作界容易,全是图形操作界面

比较难

比较高

较简单

容易

比较低

简单

更多

事务操作

SQL语法

中文支持

导入导出

维护监控

用户安全

备份恢复

第三方软件 多

染病毒风险 低

开发难度

存储过程

较高

INNODB存储引擎下支持,速支持,图形化查看编辑界面

度较慢

容易使用

不容易使用

支持,设置很容易 链接服务器 不支持

小型数据库主要处理的数据量比较小,几千、几万、几十万等,如access、mysql等。

大型数据库主要处理的数据量比较大,几百万,几千万或者上亿,主要有oracle、DB2、sqlserver等。

“可用最大存储量”MSSQL运行时可使用的内存最大值

“数据库最大规模”应该是一个MSSQL数据库能使用的最大磁盘空间.

速度对比:

1.大量事务操作的SQL(insert,update,delete)MS SQL Server比MySQL要快很多。

2.大表(600M物理文件)的查询SQLserver按索引的查询比MySQL快一些。

3.测试结果让我痛心。本来一直还以为mysql是最快的数据库....

结果如下:(单位为秒)

比较项目 mysql耗时 sqlserver耗时

连结时间 0.01364 0.28493

插入一万条纪录 2.80973 12.94204

更新一万条纪录 812.48759 50.34521

删除一万条纪录 184.05414 31.28243

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大多数程序第一次启动都会很慢,包括页面也是一样,但是过了第一次,速度就明显提升;而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的强壮性实在不敢恭维。


本文标签: 内存 物理 数据库