`
jetway
  • 浏览: 473434 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论
阅读更多

  在MySQL经历了2008年Sun的收购和2009年Oracle收购Sun的过程中,基本处于停滞发展的情况,在可以预见的未来,MySQL是肯定会被Oracle搁置并且逐步雪藏消灭掉的。MySQL随着相应的各主创和内部开发人员的离去,缔造了各个不同的引擎和分支,让MySQL有希望继续发扬光大起来。

本文大致讲解一下MySQL目前除了主要的 MyISAM、InnoDB、Heap(Memory)、NDB等引擎之外的其他引擎的发展和现状,以及MySQL主干以外的分支的状况,为了我们未来更好的使用MySQL或者其他分支建立一个了解基础。

MySQL存储引擎介绍

Falcon存储引擎

Falcon存储引擎是MySQL当时寄以厚望的存储引擎,主要是为了面对当时Oracle收购了InnoBase公司的情况,用来取代InnoDB的一个存储引擎。Falcon引擎的主导人员是数据库大师Jim Starkey,从2006年开始开发,到2008年发布Beta版本,至今为止也没有走入主流。2008年中旬,Falcon的主架构师Jim Starkey宣布从MySQL公司辞职,加入了一家创业公司NimbusDB担任CEO,去设计和开发运行在云计算上面的关系/语义数据库,按照2010年目前NoSQL市场的发展来看,他的选择是正确的,但是带来的结果是Falcon陷入一个没有主导人员的地步,导致了至今都属于性能糟糕,半死不活的状态。

Falcon引擎是MySQL AB公司基于Netfrastrucure公司的产品开发的(Netfrastrucure公司被MySQL AB收购),Falcon当初的目标是嵌入到MySQL 6.0中用来取代InnoDB引擎,基本很多功能设计都是按照InnoDB的目标去设计的。

Falcon是面向多CPU、拥有大量内存的当代硬件环境和典型Web应用的数据库操作特点而开发的,主要功能包括多版本并发控制、完善的ACID支持、支持前缀压缩的B+树索引、数据页压缩(在磁盘上以压缩形式存储,在内存中以非压缩形式存储)、成组提交等。从功能方面来说没有什么新鲜事,大体也就实现了一个事务型存储引擎必须要有的功能(很多高级的功能如多表空间、分区等都还没有),但其架构上却有很多独特之处。

通过网上的一些测试结果Falcon的性能还是很糟糕的,写入速度是MyISAM的1/10~1/20,Select的优化也有问题,添加了索引感觉还会进行全表扫描。所以,我终究感觉Falcon是个杯具的引擎。

Falcon特性:http://dev.mysql.com/doc/falcon/en/se-falcon-features.html

Falcon测试:http://blog.gslin.org/archives/2008/02/12/1425/

Falcon手册:http://dev.mysql.com/doc/falcon/en/

SolidDB存储引擎

solidDB存储引擎是由Solid Information Technology(http://www.soliddb.com)开发的,这是一款利用MVCC来实现的事务型存储引擎。它既同时支持悲观和乐观并发控制,这一点其他的存储引擎目前都不支持。solibDB的MySQL版本包括对外键的完全支持。它在许多方面与InnoDB很相似,比如它使用了簇索引。solidDB还包括一个没有额外开销的在线备份功能。

solidDB公司已经由2008年被IBM收购,主要是用于整合为IBM数据库整合方案的一部分,目前是作为一个前端数据缓存的这么一个角色存在。IBM收购solidDB公司,主要是因为甲骨文在2005年6月收购了Solid Information Technology主要竞争对手TimesTen,为了在内存数据库这块市场上有所依托,所以收购了solidDB公司。

solidDB产品是一个完整的打包程序,包括solidDB存储引擎、MyISAM存储引擎以及MySQL服务器。solidDB与MySQL之间的结合出现于2006年的晚些时候。但是底层的技术以及代码却是经过了该公司15年的完善。Solid公司保证和支持了整个产品。它是基于GPL协议的,并且提供了一个类似于MySQL服务器形式的商业版本。

性能上来说,SolidDB for MySQL开源数据库再次被证明能够完全满足高吞吐量、关键任务级应用对系统性能和可扩展性的要求。

但是就solidDB被IBM收购,MySQL对Oracle收购的情况来看,基本上solidDB for MySQL是一个没法继续被MySQL使用的引擎,所以也是一个杯具的MySQL引擎。

官方网站:http://www.ibm.com/software/data/soliddb/ 

XtraDB存储引擎

XtraDB存储引擎是percona公司对于innodb存储引擎进行改进加强后的产品,第一个版本发布于2008年底。XtraDB兼容innodb的所有特性,并且在IO性能,锁性能,内存管理等多个方面进行了增强。

Percona是一个MySQL技术咨询公司,他们有一个在MySQL领域很有名的技术博客叫做Mysql Performance Blog,同时他们编写了一本很有名的MySQL书叫做《High Performance MySQL》,目前也出版了中文版。他们公司还有一个很有名的MySQL备份工具叫做XtraBackup。

XtraDB的设计目标也是取代InnoDB作为目标,它是基于InnoDB来做的开发,XtraDB 100%的兼容InnoDB,通常可以认为XtraDB是InnoDB的升级或者替代版本。在性能上来说,目前XtraDB是非常高的,在大部分情况下也是比较稳定的,值得你尝试使用。同样XtraDB也是未来感觉很有前途的一个存储引擎,值得我们期待。

性能测试:

http://www.mysqlperformanceblog.com/2009/07/14/performance-improvements-in-percona-5-0-83-and-xtradb/      

使用情况:http://www.ningoo.net/html/2009/xtradb_storage_engine.html      

引擎介绍:http://www.percona.com/docs/wiki/percona-xtradb:start

引擎下载:http://www.percona.com/percona-builds/Percona-XtraDB/    

公司官网:http://www.percona.com      

性能博客:http://www.mysqlperformanceblog.com  

Maria存储引擎

Maria由MySQL的创始人,MyISAM的作者Monty(Michael Widenius)开发,命名为Maria是因为他的第三个小孩就叫Maria。Maria是Monty在MySQL公司的时候就开始开发的一个MySQL的分支引擎,Sun收购MySQL后,因为与Sun针对MySQL团队的一些问题不和,然后在2009年初离开了Sun,成立了Monty Program Ab公司,专门用于针对Maria引擎的开发,同时开发了一个MySQL的分支,叫做MariaDB。

Maria是一个MySQL的存储引擎,利用它来扩展MyISAM使之在异常退出时文件不至于损坏。Maria的主要目的是作为更好的MyISAM,提供崩溃后的故障恢复功能。更长远的目标是成为一个全功能的事务型存储引擎,支持ACID、回滚、多版本并发控制、行级锁、成组提交,同时也可以选择不支持事务,最终代替MyISAM成为MySQL的默认存储引擎。

目前Maria引擎有针对MySQL5.1的版本,基本上就是一个增加了崩溃恢复功能的MyISAM,使用表级锁,但可以做到读写不冲突,即在进行任何类型的更新操作的同时都可以进行读操作,但多个写操作不能并发。

Maria的特点:

1. 多版本并发控制,ACID支持

2. 通过拷贝日志就能进行增强备份

3. 高效的磁盘存储

Maria引擎开发之初就是用来取代MyISAM的存储引擎,并且目前按照我了解有些在使用公司的情况,运行情况挺不错,大家也可以尝试一下。Maria在目前有MySQL创始人带领的情况下,也是一个非常有前途的的存储引擎,值得期待。

Maria下载:http://askmonty.org/wiki/MariaDB:Download      

Maria手册:http://askmonty.org/wiki/Maria 

PrimeBase XT(PBXT)存储引擎

PBXT是PrimeBase公司推出的MySQL插件引擎,其功能和InnoDB类似,它是一款事务型存储引擎,并且它的设计是很独特的。它的一个很与众不同的特征就是如何来使用事务日志和数据文件来防止“write-ahead”日志,这可以极大的减少事务提交的开销。这个架构给了PBXT很大的提高写并发的空间,并且测试也表明它在某些特定的操作下比InnoDB要快。PBXT也使用了MVCC并且支持外键约束,但是它不使用簇索引。

主要特性如下:

MVCC的:多版本并发控制,使读操作没有锁定

事务性:支持启动开始,COMMIT和ROLLBACK和恢复上

ACID标准:原子性,一致性,隔离,持久(一次提交的更改不能丢失)

行级锁定:更新使用行级锁的并发允许最大并发量

死锁检测:立即通知如果客户端进程已陷入死锁

参照完整性:外键的支持。

写一次:PBXT避免的架构双写入使用日志。

BLOB的流:在结合的BLOB Streaming engine。

按照有人的测试结果来看,PBXT存储引擎版本的TPS随着线程数的增长,表现比较稳定,性能上与innodb差不多,长期来看,它的目标也是作为一个能够取代InnoDB的存储引擎。而且目前MariaDB这个分支已经把PBXT作为内置的存储引擎,所以也是可以尝试使用的一个引擎。

性能测试:http://imysql.cn/2008_07_25_innodb_vs_pbxt  

引擎下载:http://www.primebase.org/download/index.php  

官方网站:http://www.primebase.org     

MySQL分支介绍

MariaDB数据库

MariaDB 是一个采用Maria存储引擎的MySQL分支版本,是由原来MySQL的作者Michael Widenius(Monty)创办的Monty Program Ab公司所开发的免费开源的数据库服务器。基本上MariaDB的历史跟我上面讲的Maria存储引擎历史一样。MariaDB的设计目标就是用来取代MySQL Server。Monty是开源数据库联盟(Open Database Alliance)的发起者,所以MariaDB也是开源数据库联盟的成员。

MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的XtraDB引擎来替换InnoDB,MariaDB的存储引擎还包括了PrimeBase XT(PBXT)和FederatedX存储引擎,MariaDB基于GPL2.0发布。

Monty Widenius提供了MySQL的分支MariaDB候选版本。MariaDB 5.1完全兼容MySQL5.1,这个版本早在2008年11月就发布了,增加了很多新的功能和若干个新的补丁程序。开发者称这个候选版本非常稳定。基本上MySQL,MariaDB解决了很多问题,例如“pool of threads”功能提供解决多数据连接问题。目前MariaDB发布的Release版本是5.1.44,基本上应该是跟 MySQL5.1的版本兼容的。

MariaDB 基本上名门之后,加上MySQL创始人Monty的实力和号召力,是作为MySQL一个非常好的替代品,前途发展无限,值得我们尝试使用。

MariaDB中存储引擎介绍:

Maria:http://askmonty.org/wiki/Maria  

XtraDB:http://www.percona.com/docs/wiki/percona-xtradb:start   

PBXT:http://www.primebase.org/   

FederatedX:https://launchpad.net/federatedx      

MariaDB下载:http://askmonty.org/wiki/MariaDB:Download 

MariaDB网站:http://askmonty.org  

Drizzle数据库

Drizzle,是从MySQL衍生出来的一个数据库服务器,一个精简版的MySQL分支,Drizzle项目的宗旨是构建一个“更精练、更轻量、更快速”的MySQL版本,它的扩展性和易用性与MySQL相当,但为了提高性能和扩展性,它从原来的核心系统里移除了部分功能。Drizzle也是开源数据库联盟(Open Database Alliance)成员。

MySql的架构设计总监Brian Aker在O'Reilly开放源码大会(OSCON)上对Drizzle做了介绍。Drizzle是一个能为某些特定类别的应用提供支持的数据库项目("what if" project)。Drizzle的设计目标:

1. Web应用

2. 云计算组件

3. 没有业务逻辑的数据库(又名存储过程)

4. 多核架构

Drizzle,一个精简版的MySQL分支,在目前的MySQL代码基本之上,将存储过程、视图、触发器、查询缓存、PREPARE语句等等没什么必要的功能从代码中删掉,简化对数据类型和存储引擎的支持,并且进行大胆的重构。最终要实现的目的是将MySQL的代码大大简化,理顺MySQL的架构,改善 MySQL的代码质量,提高系统的稳定性和性能。将更适合Web应用、云计算组件、没有业务逻辑的数据库(又名存储过程)、多核架构等业务。

Drizzle的特征有:

¨ 基于MySQL6.0的源码树

¨ 无附加库

¨ 遵守POSIX

¨ 微内核设计

¨ 可插拔架构,适用于视图、存储过程、UDF、存储引擎等

¨ 跨多个节点的Sharding技术

¨ 智能代理

¨ 多CPU/多核CPU

¨ 优化的字段类型

¨ 高效的内存使用

¨ 没有内部ACL,使用LDAP/PAM

¨ 没有数据库数据格式化

¨ 整理有序的Make系统

¨ 缺省存储引擎为InnoDB

¨ 移除Windows兼容性

Drizzle缺省的存储引擎是InnoDB,支持的数据类型更少,基本上设计目标跟MariaDB完全不同。MariaDB的设计目标是一个取代MySQL的数据库,而Drizzle基本上是一个除了MySQL之外你可以选择的产品,并且基本上设计目标是针对未来的云计算和分布式Web存储的方向去的,目前可能不是太稳定,不适合在运营环境使用,但是相当的值得期待。

Drizzle使用:http://database.51cto.com/art/200907/137239.htm

Drizzle下载:https://launchpad.net/drizzle    

Drizzle网站:http://drizzle.org/    

总结语

基本上来说,目前MySQL还是主流(MyISAM/InnoDB),但是未来发展不可预测,并且有这些除了MySQL之外的选择,也许有一天Oracle把MySQL彻底消灭掉了,但是我们同样还有MariaDB、Drizzle可以选择,这就是开源的力量。


对比几个MySQL的存储引擎,Maria和XtraDB是值得大家目前投入逐步使用的行列的,多做一些测试,灰度放亮,获得一个合理结果然后再使用是比较合适的。MySQL的数据库分支来说,MariaDB也是比较值得尝试使用的,毕竟目前Drizzle还不是太成熟稳定,并且不一定适合你所做的业务。我所了解国内部分互联网公司也有在使用MariaDB的,并且效果不错,大家也都可以按照自己的情况来使用。

目前NoSQL运动如火如荼,有些业务更适合采用Key==>Value或这是BigTable类型的数据存储方式,也许MySQL不是最好的,当然选择最合适存储,也许未来大部分数据库市场会被NoSQL所占领,但是我觉得关系型数据库还是未来几年很重要的存储方式。

在MySQL被Sun收购,已经Sun被Oracle收购的过程中,整个开源世界都是在翻天覆地的变化,特别是MySQL的命运一直都是所有使用和热爱开源数据库的人们所关注的,在这些商业竞争中,那些开源斗士(比如Monty),都通过别的方式,继续发扬了MySQL这种开源数据库。我们长期来看,总会有一些东西会消失,比如Falcon存储引擎,有些东西会继续发展,比如MariaDB或Drizzle,但是这些都为开源技术做出了贡献,也为数据库领域增添了色彩。

分享到:
评论

相关推荐

    MYSQL

    4.12.1 在 Win32 上安装 MySQL 4.12.2 在 Win95 /Win98上启动 MySQL 4.12.3 在 NT 上启动 MySQL 4.12.4 在 Win32 上运行 MySQL 4.12.5 用 SSH 从 Win32 连接一个远程MySQL 4.12.6 MySQL-Win...

    MySQL中文参考手册.chm

    MySQL中文参考手册.chm 449kb <br/>0 译者序 1 MySQL的一般的信息 1.1 什么是MySQL? 1.2 关于本手册 1.2.1 本手册中使用的约定 1.3 MySQL的历史 1.4 MySQL的主要特征 1.5...

    MySql 5.1 参考手册.chm

    1.7.3. MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. ...

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    ├─新版MySQL DBA 课件ppt │ 第一课数据库介绍篇.pdf │ 第七课MySQL数据库设计.pdf │ 第三十一课percona-toolkits 的实战及自动化.pdf │ 第三课MySQL授权认证.pdf │ 第九课MySQL字符集.pdf │ 第二十一课MySQL...

    mysql数据库镜像安装包+教程(5.7版本)

    mysql5.7安装教程+mysql5.7镜像安装+mysql学习+mysql5.7镜像包 mysql5.7安装教程+mysql5.7镜像安装+mysql学习+mysql5.7镜像包 mysql5.7安装教程+mysql5.7镜像安装+mysql学习+mysql5.7镜像包 mysql5.7安装教程+mysql...

    mysql5.1中文手册

    MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的...

    MySQL 5.1官方简体中文参考手册

    1.7.3. MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. ...

    Mysql编译安装Mysql编译安装

    Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql编译安装Mysql...

    mysql安装教程(保姆级)-mysql-8.0.32-winx64

    mysql安装教程(保姆级)---mysql-8.0.32-winx64 mysql安装教程(保姆级)---mysql-8.0.32-winx64 mysql安装教程(保姆级)---mysql-8.0.32-winx64 mysql安装教程(保姆级)---mysql-8.0.32-winx64 mysql安装教程...

    MySQL学生成绩管理系统设计实验报告

    MySQL学生成绩管理系统设计实验报告MySQL学生成绩管理系统设计实验报告MySQL学生成绩管理系统设计实验报告MySQL学生成绩管理系统设计实验报告MySQL学生成绩管理系统设计实验报告MySQL学生成绩管理系统设计实验报告...

    MySQL最新稳定版本8.0.28

    资源包含:mysql-8.0.28-winx64.zip 和 mysql-8.0.28-winx64-debug-test.zip 官网(https://dev.mysql.com/)下载: MySQL Community Server ===> Windows (x86, 64-bit), ZIP Archive ===> mysql-8.0.28-winx64.zip...

    微信小程序php后台内嵌mysql

    微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台...

    linux下mysql的rpm安装包

    一、卸载原来的mysql: 卸载一: 输入: #rpm -qa | grep -i mysql 显示: mysql-libs-5.1.52-1.el6_0.1.i686 卸载方法: yum -y remove mysql-libs-5.1.52-1.el6_0.1.i686 卸载二: 输入: #rpm -qa | grep -i ...

    mysql-connector-java-5.1.49

    mysql57驱动jar包mysql-connector-java-5.1.49 mysql57驱动jar包mysql-connector-java-5.1.49 mysql57驱动jar包mysql-connector-java-5.1.49 mysql57驱动jar包mysql-connector-java-5.1.49 mysql57驱动jar包mysql-...

    MySQL5+MySQL8中文手册(chm文件)

    如果正在使用MySQL软件的较旧版本,请参阅MySQL 5.0参考手册,该手册涵盖了MySQL 5.0,或参阅MySQL 4.1参考手册,该手册涵盖了MySQL 4.1以及MySQL的所有早期版本。在手册的文本中,通过引用发布版本(5.1.x),注明...

    MySQL8中文参考手册 .chm

    MySQL参考手册。它的文件通过8.0.14 MySQL 8。它可以包括MySQL版本尚未发布功能的文档。关于哪个版本的信息已被释放,看到MySQL 8版本说明 MySQL集群是目前不在MySQL 8的支持。关于MySQL集群的信息,请参阅7.5、...

    MySQL Migration Toolkit 数据库转换工具

    MySQL Migration Toolkit 可以将任何数据源转换成mysql的数据,也可以将mysql的数据转换成其它类型的数据 MySQL Migration Toolkit 包括下列转换工具: Access-to-MySQL Access数据库转MySQL数据库 DBF-to-MySQL DBF...

    mysql-installer-community-5.7.31.0

    mysql-installer-community-5.7.31.0 mysql-installer-community-5.7.31.0 mysql-installer-community-5.7.31.0 mysql-installer-community-5.7.31.0 mysql-installer-community-5.7.31.0 mysql-installer-community...

    mysql8一键化安装脚本

    mysql8一键化安装脚本 1 可以自由安装在任何目录下(直接回车默认安装在/auto),而且所有的东西都在此目录下,不会出现在其他目录中 2 内置可以在存储过程中执行Linux命令插件 3 安装完成后,cd /auto/mysql/support-...

Global site tag (gtag.js) - Google Analytics