在事务支持方面,虽然MySQL自己的存储引擎并没有提供,但是已经通过第三方插件式存储引擎Innodb实现了SQL92标准所定义的四个事务隔离级别的全部
比如,大家所熟知的大名鼎鼎的Oracle数据库就仅仅实现了其中的两种(Serializable和ReadCommited),而PostGreSQL,同样支持四种隔离级别。
而PostGreSQL,同样支持四种隔离级别。
不过在可编程支持方面,MySQL和其他数据库相比还有一定的差距,虽然最新版的MySQL已经开始提供一些简单的可编程支持,如开始支持Procedure,Function,Trigger等,
但是所支持的功能还比较有限,和其他几大商用数据库管理系统相比,还存在较大的不足。
易用性比较
从安装方面来说,MySQL安装包大小仅仅只有100MB左右,这几大商业数据库完全不在一个数量级。
安装难易程度也要比Oracle等商业数据库简单很多,不论是通过已经编译好的二进制分发包还是源码编译安装,都非常简单。
再从数据库创建来比较,MySQL仅仅只需要一个简单的CREATEDATABASE命令,即可在瞬间完成建库的动作,
而Oracle数据库与之相比,创建一个数据库简直就是一个非常庞大的工程。当然,二者数据库的概念存在一定差别也不可否认。
性能比较
性能方面,一直是MySQL引以为自豪的一个特点。
在权威的第三方评测机构多次测试较量各种数据库TPCC值的过程中,MySQL一直都有非常优异的表现,而且在其他所有商用的通用数据库管理系统中,仅仅只有Oracle数据库能够与其一较高下。
MySQL希望自己是一个在满足客户99%的功能需求的前提下,花掉剩下的大部分精力来性能努力,
可靠性
关于可靠性的比较,并没有太多详细的评测比较数据,但是从目前业界的交流中可以了解到,几大商业厂商的数据库的可靠性肯定是没有太多值得怀疑的。
但是做为开源数据库管理系统的代表,MySQL也有非常优异的表现,而并不是像有些人心中所怀疑的那样,因为不是商业厂商所提供,就会不够稳定不够健壮。
从当前最火的Facebook这样大型的网站都是使用MySQL数据库,就可以看出,MySQL在稳定可靠性方面,并不会比我们的商业厂商的产品有太多逊色。
而且排在全球前10位的大型网站里面,大部分都有部分业务是运行在MySQL数据库环境上,如Yahoo,Google等。
总的来说,MySQL数据库在发展过程中一直有自己的三个原则:简单、高效、可靠。从上面的简单比较中,我们也可以看出,在MySQL自己的所有三个原则上面,没有哪一项是做得不好的。
而且,虽然功能并不是MySQL自身所追求的三个原则之一,但是考虑到当前用户量的急剧增长,用户需求越来越越多样化,MySQL也不得不在功能方面做出大量的努力,来
不断满足客户的新需求。比如最近版本中出现的EentScheduler(类似于Oracle的Job功能),Partition功能,自主研发的Maria存储引擎在功能方面的扩展,
Falcon存储引擎对事务的支持等等,都证明了MySQL在功能方面也开始了不懈的努力。 任何一种产品,都不可能是完美的,也不可能适用于所有用户。
我们只有衡量了每一种产品的各种特性之后,从中选择出一种最适合于自身的产品。
MySQL 的主要适用场景
那么MySQL到底在什么场景下适用什么场景下不适用呢?
1、Web网站系统 Web站点,是MySQL最大的客户群,也是MySQL发展史上最为重要的支撑力量,这一点在最开始的MySQLServer简介部分就已经说明过。 MySQL之所以能成为Web站点开发者们最青睐的数据库管理系统,是因为MySQL数据库的安装配置都非常简单,
使用过程中的维护也不像很多大型商业数据库管理系统那么复杂,
而且性能出色。还有一个非常重要的原因就是MySQL是开放源代码的,完全可以免费使用。
2、日志记录系统 MySQL数据库的插入和查询性能都非常的高效,如果设计地较好,在使用MyISAM存储引擎的时候,两者可以做到互不锁定,达到很高的并发性能。所以,对需要大量的插入和查询日志记录的系统来说,MySQL是非常不错的选择。比如处理用户的登录日志,操作日志等,都是非常适合的应用场景。
3、数据仓库系统 随着现在数据仓库数据量的飞速增长,我们需要的存储空间越来越大。数据量的不断增长,使数据的统计分析变得越来越低效,也越来越困难。怎么办?
这里有几个主要的解决思路,一个是采用昂贵的高性能主机以提高计算性能,用高端存储设备提高I/O性能,效果理想,但是成本非常高;
第二个就是通过将数据复制到多台使用大容量硬盘的廉价pcserver上,以提高整体计算性能和I/O能力,效果尚可,存储空间有一定限制,成本低廉;
第三个,通过将数据水平拆分,使用多台廉价的pcserver和本地磁盘来存放数据,每台机器上面都只有所有数据的一部分,解决了数据量的问题,所有pcserver一起并行计算,也解决了计算能力问题,通过中间代理程序调配各台机器的运算任务,既可以解决计算性能问题又可以解决I/O性能问题,成本也很低廉
在上面的三个方案中,第二和第三个的实现,MySQL都有较大的优势。通过MySQL的简单复制功能,可以很好的将数据从一台主机复制到另外一台,不仅仅在局域网内可以复制,在广域网同样可以。当然,很多人可能会说,其他的数据库同样也可以做到,不是只有MySQL有这样的功能。
确实,很多数据库同样能做到,但是MySQL是免费的,其他数据库大多都是按照主机数量或者cpu数量来收费,
当我们使用大量的pcserver的时候,license费用相当惊人。第一个方案,基本上所有数据库系统都能够实现,
但是其高昂的成本并不是每一个公司都能够承担的。
4、嵌入式系统 嵌入式环境对软件系统最大的限制是硬件资源非常有限,在嵌入式环境下运行的软件系统,必须是轻量级低消耗的软件。
MySQL在资源的使用方面的伸缩性非常大,可以在资源非常充裕的环境下运行,也可以在资源非常少的环境下正常运行。
它对于嵌入式环境来说,是一种非常合适的数据库系统,而且MySQL有专门针对于嵌入式环境的版本。