一、MySQL标志说明
MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。
二、MySQL 发展历史
毫无疑问,目前MySQL已经成为最为流行的开源关系数据库系统,并且一步一步地占领了原有商业数据库的市场。可以看到Google、Facebook、Yahoo、网易、久游等大公司都在使用MySQL数据库,甚至将其作为核心应用的数据库系统。而MySQL数据库也不再仅仅应用于Web项目,其扮演的角色更为丰富。在网络游戏领域中,大部分的后台数据库都采用MySQL数据库,如大家比较熟悉的劲舞团、魔兽世界、Second Life等。很少能看到有哪个网络游戏数据库不是采用MySQL数据库的。此外,MySQL数据库已成功应用于中国外汇交易中心、中国移动、国家电网等许多项目中。
越来越多的企业级项目应用“见证”了MySQL数据库的飞速发展,并预示着MySQL数据库本身正在逐渐完善并走向成熟。以前会有人诟病MySQL为什么没有视图,没有存储过程,没有触发器,没有事件调度器。而现在,MySQL还没有什么呢?经历了MySQL 5.0和5.1的发展,如今MySQL数据库迎来了重要的5.5版本。在了解MySQL 5.5带给我们的新特性之前,我们先来看看MySQL的发展历程。简单来说,
MySQL数据库的发展可以概括为三个阶段:
初期开源数据库阶段
Sun MySQL阶段
Oracle MySQL阶段
很多人以为MySQL是最近15年内才出现的数据库,其实MySQL数据库的历史可以追溯到1979年,那时Bill Gates退学没多久,微软公司也才刚刚起步,而Larry的Oracle公司也才成立不久。那时有一个天才程序员Monty Widenius为一个名为TcX的小公司打工,并且用BASIC设计了一个报表工具,使其可以在4MHz主频和16KB内存的计算机上运行。没过多久,Monty又将此工具用C语言进行了重写并移植到了UNIX平台。当时,这只是一个很底层的且仅面向报表的存储引擎,名叫Unireg。
虽然TcX这个小公司资源有限,但Monty天赋极高,面对资源有限的不利条件,反而更能发挥他的潜能。Monty总是力图写出最高效的代码,并因此养成了习惯。与Monty在一起的还有一些别的同事,很少有人能坚持把那些代码持续写到20年后,而Monty却做到了。
1990年,TcX公司的客户中开始有人要求为他的API提供SQL支持。当时有人提议直接使用商用数据库,但是Monty觉得商用数据库的速度难以令人满意。于是,他直接借助于mSQL的代码,将它集成到自己的存储引擎中。令人失望的是,效果并不太令人满意,于是,Monty雄心大起,决心自己重写一个SQL支持。
1996年,MySQL 1.0发布,它只面向一小拨人,相当于内部发布。到了1996年10月,MySQL 3.11.1发布(MySQL没有2.x版本),最开始只提供Solaris下的二进制版本。一个月后,Linux版本出现了。
在接下来的两年里,MySQL被依次移植到各个平台。在发布时,MySQL数据库采用的许可策略有些与众不同:允许免费使用,但是不能将MySQL与自己的产品绑定在一起发布。如果想一起发布,就必须使用特殊许可,意味着要花“银子”。当然,商业支持也是需要花“银子”的。其他方面,随用户怎么用都可以。这种特殊许可为MySQL带来了一些收入,从而为它的持续发展打下了良好的基础。
MySQL关系型数据库于1998年1月发行第一个版本。它使用系统核心的多线程机制提供完全的多线程运行模式,并提供了面向C、C++、Eiffel、Java、Perl、PHP、Python及Tcl等编程语言的编程接口(API),支持多种字段类型,并且提供了完整的操作符支持。
1999~2000年,MySQL AB公司在瑞典成立。Monty雇了几个人与Sleepycat合作,开发出了Berkeley DB引擎, 因为BDB支持事务处理,所以MySQL从此开始支持事务处理了。
2000年4月,MySQL对旧的存储引擎ISAM进行了整理,将其命名为MyISAM。2001年,Heikki Tuuri向MySQL提出建议,希望能集成他的存储引擎InnoDB,这个引擎同样支持事务处理,还支持行级锁。该引擎之后被证明是最为成功的MySQL事务存储引擎。
2003年12月,MySQL 5.0版本发布,提供了视图、存储过程等功能。
2008年1月,MySQL AB公司被Sun公司以10亿美金收购,MySQL数据库进入Sun时代。在Sun时代,Sun公司对其进行了大量的推广、优化、Bug修复等工作。
2008年11月,MySQL 5.1发布,它提供了分区、事件管理,以及基于行的复制和基于磁盘的NDB集群系统,同时修复了大量的Bug。
2009年4月,Oracle公司以74亿美元收购Sun公司,自此MySQL数据库进入Oracle时代,而其第三方的存储引擎InnoDB早在2005年就被Oracle公司收购。
2010年12月,MySQL 5.5发布,其主要新特性包括半同步的复制及对SIGNAL/RESIGNAL的异常处理功能的支持,最重要的是InnoDB存储引擎终于变为当前MySQL的默认存储引擎。MySQL 5.5不是时隔两年后的一次简单的版本更新,而是加强了MySQL各个方面在企业级的特性。Oracle公司同时也承诺MySQL 5.5和未来版本仍是采用GPL授权的开源产品。
随着MySQL的不断成熟及开放式的插件存储引擎架构的形成,越来越多的开发人员加入到MySQL存储引擎的开发中。而随着InnoDB存储引擎的不断完善,同时伴随着LAMP架构的崛起,在未来的数年中,MySQL数据库仍将继续飞速发展。
MySQL数据库的分支版本
MySQL是开源的数据库,这意味着任何人都可以在其源码的基础上分支出自己的MySQL版本,并且可以在原MySQL数据库的基础上进行一定的修改,这是开源赋予用户的权力。
MariaDB是由MySQL创始人之一Monty分支的一个版本。在MySQL数据库被Oracle公司收购后,Monty担心MySQL数据库发展的未来,从而分支出一个版本。这个版本和其他分支有很大的不同,其默认使用崭新的Maria存储引擎,是原MyISAM存储引擎的升级版本。此外,其增加了对Hash Join的支持和对Semi Join的优化,使MariaDB在复杂的分析型SQL语句中较原版本的MySQL性能提高很多。另外,除了包含原有的一些存储引擎,如InnoDB、Memory,还整合了PBXT、FederatedX存储引擎。不得不承认,MariaDB数据库是目前MySQL分支版本中非常值得使用的一个版本,尤其是在OLAP的应用中,对Hash Join的支持和对Semi Join的优化可以大大提高MySQL数据库在这方面的查询性能。MariaDB的官方网站为http://mariadb.org/。
关于MariaDB、MySQL、MaxDB名字的由来,这里有个不得不说的小插曲。Monty有一个女儿,名叫My,因此他将自己开发的数据库命名为MySQL。Monty还有一个儿子,名为Max,因此在2003年,SAP公司与MySQL公司建立合作伙伴关系后,Monty又将与SAP合作开发的数据库命名为MaxDB。而现在的MariaDB中的Maria是Monty小孙女的名字。
Drizzle是基于原MySQL 6.0代码分支出的一个版本,官方网站为http://www.drizzle.org/。Drizzle有个很明显的区别于MySQL的地方就是,它的核心代码很有限,目前也致力于继续保持微小内核的方式。Drizzle支持一系列的接口,其他模块能很好地以插件方式加载进来,这样用户可以按照自己的需要进行扩展。同时,对于用户来说使用了什么模块更加一目了然,更加个性化。
Drizzle的特点为:
・一个更适合云计算组件和Web应用的数据库。
・专为多CPU/多核CPU服务器在高并发情况下而设计。
・高效的内存使用。
・开放源代码、开源社区,开放型设计。
Percona Server是Percona公司分支的一个MySQL数据库版本。该版本对高负载情况下的InnoDB存储引擎进行了一定的优化,为DBA提供一些非常有用的性能诊断工具,另外有更多的参数和命令可以用来控制服务器行为。Percona公司最大的贡献是发布了免费开源的XtraBackup工具,可实现对InnoDB存储引擎表的在线热备份操作。
InnoSQL是笔者分支的一个MySQL版本,其目标是提供更好的数据库性能,以及将一些富有创意的想法用于数据库的生产环境。InnoSQL完全兼容于Oracle MySQL版本,所有添加的补丁、插件、存储引擎都是动态的。如果不开启这些功能,那么它和原版本是完全一致的。目前其独有的功能有:
・InnoDB Flash Cache
・InnoDB Share Memory
・IO Statistics
InnoDB Flash Cache 将SSD作为Flash Cache(之前版本的实现为Secondary Buffer Pool)。目前一些解决方案如Facebook Flash Cache是通用的解决方案,Oracle的Flash Cache性能较为一般。InnoSQL的解决方案针对MySQL数据库的特性对SSD进行了大幅的优化,性能较直接将SSD作为持久存储性能可有1倍多的提升。
InnoDB Share Memory 将Share Memory作为InnoDB的共享内存,以此提高数据库的预热速度。预热对数据库的benchmark并没有多大的帮助,而对于生产环境中的使用却有着非常大的帮助。InnoDB Share Memory可将InnoDB缓冲池迅速恢复到数据关闭时的状态,以此来保证应用的连续性。
O Statistics扩展了MySQL原有Slow Log的内容,现在可记录某SQL语句的逻辑读取和物理读取的IO。这有助于DBA和开发人员更好地了解SQL语句的工作,同时帮助他们更好地进行SQL语句的调优。
三、MySQL 下载
Mysql 的官网下载地址: http://dev.mysql.com/downloads/mysql/
MariaDB 的官网下载地址:https://downloads.mariadb.org/
现在官网可以下到的MySQL 版本是:5.7.9 Oracle 对MySQL版本重新进行了划分,分成了社区版和企业版,企业版是需要收费的,当然收费的就会提供更多的功能。
1. MySQL Community Server
社区版本,免费,但是Mysql不提供官方技术支持。
MySQLCommunity Server is a freely downloadable version of the world's most popularopen source database that is supported by an active community of open sourcedevelopers and enthusiasts.
2. MySQL Enterprise Edition
MySQLEnterprise Edition includes the following and is available for 30 day trialfrom the Oracle E-Delivery Web site.
该版本是收费版本,可以试用30天,包含以下组件:
(1)MySQL Database
(2)MySQL Enterprise Backup
(3)MySQL Enterprise Monitor
(4)MySQL Workbench Standard Edition
四、MySQL的安装方式
MySQL的安装方式常见的有三种:
rpm包形式
通用二进制形式
源码编译