MySQL分支选择参考:Percona还是MariaDB

在MySQL被Oracle收购以后,越来越多的人对于MySQL的前景表示了担忧,对于开源的MySQL,或多或少对于Oracle自家的数据库产品产生冲击,这个开源免费的MySQL 对于Oracle更多的是包袱而不是资产。比如淘宝就从Oracle转成了MySQL,一些大型互联网公司也在推行去IOE(I:IBM,O:Oracle,E:EMC),甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

Percona

在介绍 Percona 之前,首要要介绍的是XtraDB存储引擎,在MYSQL中接触比较多的是MyISAM和InnoDB这两个存储引擎,先前的文章:《MySQL MyISAM和InnoDB的区别》也进行了详细的介绍。

MySQL 4和5使用默认的MyISAM存储引擎安装每个表。从5.5开始,MySQL已将默认存储引擎从MyISAM更改为InnoDB。MyISAM没有提供事务支持,而InnoDB提供了事务支持。与MyISAM相比,InnoDB提供了许多细微的性能改进,并且在处理潜在的数据丢失时提供了更高的可靠性和安全性。

Percona XtraDB 是 InnoDB 存储引擎的增强版,被设计用来更好的使用更新计算机硬件系统的性能,同时还包含有一些在高性能环境下的新特性。XtraDB 存储引擎是完全的向下兼容,在 MariaDB 中,XtraDB 存储引擎被标识为”ENGINE=InnoDB”,这个与 InnoDB 是一样的,所以你可以直接用XtraDB 替换掉 InnoDB 而不会产生任何问题。Percona XtraDB 包含有所有 InnoDB's 健壮性,可依赖的 ACID 兼容设计和高级 MVCC 架构。XtraDB 在 InnoDB 的坚实基础上构建,使 XtraDB 具有更多的特性,更好调用,更多的参数指标和更多的扩展。从实践的角度来看,XtraDB 被设计用来在多核心的条件下更有效的使用内存和更加方便,更加可用。新的特性被用来降低 InnoDB 的局限性。性能层面,XtraDB与内置的MySQL 5.1 InnoDB 引擎相比,它每分钟可处理2.7倍的事务。

Percona Server由领先的MySQL咨询公司Percona发布。Percona Server是一款独立的数据库产品,其可以完全与MySQL兼容,可以在不更改代码的情况了下将存储引擎更换成XtraDB 。

Percona团队的最终声明是“Percona Server是由Oracle发布的最接近官方MySQL Enterprise发行版的版本”,因此与其他更改了大量基本核心MySQL代码的分支有所区别。Percona Server的一个缺点是他们自己管理代码,不接受外部开发人员的贡献,以这种方式确保他们对产品中所包含功能的控制。

官网地址:http://www.percona.com/

MariaDB

MariaDB由MySQL的创始人麦克尔·维德纽斯主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自麦克尔·维德纽斯的女儿玛丽亚(英语:Maria)的名字。

MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,10.0.9版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB。

版本方面,MariaDB直到5.5版本,均依照MySQL的版本。因此,使用MariaDB5.5的人会从MySQL 5.5中了解到MariaDB的所有功能。从2012年11月12日起发布的10.0.0版开始,不再依照MySQL的版号。10.0.x版以5.5版为基础,加上移植自MySQL 5.6版的功能和自行开发的新功能。

相对于最新的MySQL5.6,MariaDB在性能、功能、管理、NoSQL扩展方面包含了更丰富的特性。比如微秒的支持、线程池、子查询优化、组提交、进度报告等。
官网地址:https://mariadb.org/

Percona OR MariaDB

选择是已经痛苦的事情,对于上面的两个数据库,就是大公司也存在分歧,就像淘宝目前使用的是Percona 5.5.18,而Google\Wikipedia则站在了MariaDB这边。具体哪一个会走的更远,我们就拭目以待吧。

(0)

相关推荐

  • 项目从MYSQL迁移至MARIADB教程

    准备数据库(MySQL),若已有MySQL,可忽略. build MySQL table; 连接MySQL; mysql -u root -p 创建数据表; mysql> create database demo; mysql> use demo; mysql> create table pet(name varchar(30), owner varchar(30), species varchar(20), sex char(1)); 添加数据表内容; mysql> insert

  • Centos7 下mysql重新启动MariaDB篇

    前言 MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险.[3] MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品.在存储引擎方面,10.0.9版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB # yum install mysql -y # mysql ERRO

  • 从MySQL 5.5迁移到Mariadb 10.1.14所遇到的问题

    迁移计划如下: 1.备份MySQL 5.5的数据库,对指定库进行备份. 2.还原到Mariadb,然后建立复制. 3.然后就可以愿意啥时候切换就啥时候切换. 遇到的问题: 因为一般都是innodb,所以我想用xtrabackup工具备份.备份后发现还原需要依赖innodb的表空间切换. 1.表空间切换,必须要打开innodb_file_per_table.也就是说所有的表都要有独立的文件.有一些表虽然是innodb但是存在ibdata下面. 幸好可以申请维护窗口,简单粗暴的重建了. 2.从MyS

  • Mysql的基础使用之MariaDB安装方法详解

    我首次用mysql是在ubuntu上,现在用的是linux 中的Red Hat 分支的centOS 7 ,安装时发现通常用的都是MariaDB 来代替mysql,通过资料查询发现Mariadb是mysql的其中的一种分支,由mysql的创始人带领的团队所开发的mysql分支的一种版本,因为mysql受到被Oracle收购后的日渐封闭与缓慢的更新,众多Linux发行版逐渐抛弃了这个人气开源数据库,使MySQL在各大Linux发行版中的失势由于不满MySQL被Oracle收购后的日渐封闭与缓慢的更新

  • Linux下将数据库从MySQL迁移到MariaDB的基础操作教程

    自从2012年来,维基百科已经开始从MySQL迁移到MariaDB的过程,是维基媒体数据库架构变革的一个重大里程碑,将英文和德文版的维基百科数据库Wikidata移植到了MariaDB 5.5版本上. 在过去几年中,维基百科一直使用 Facebook 的 MySQL 5.1 衍生版本 作为我们的产品数据库,构建版本号是r3753.我们很高兴该产品的性能表现,Facebook 有着全世界最棒的数据库工程师,他们为 MySQL 生态系统带去了很多改进. 现在 MariaDB 的优化器的增强.Perc

  • 浅谈MySQL和mariadb区别

    MariaDB是MySQL源代码的一个分支,在意识到Oracle会对MySQL许可做什么后分离了出来(MySQL先后被Sun.Oracle收购).除了作为一个Mysql的"向下替代品",MariaDB包括的一些新特性使它优于MySQL. 这两个数据库究竟有什么本质的区别,我看mariadb文件夹BIN中还是mysql*.exe,除了MySQL会被ORACLE闭源外,而mariadb则开源,他俩之间到底还有什么本质区别没有? 区别一: MariaDB不仅仅是Mysql的一个替代品,它的主

  • MySQL分支选择参考:Percona还是MariaDB

    在MySQL被Oracle收购以后,越来越多的人对于MySQL的前景表示了担忧,对于开源的MySQL,或多或少对于Oracle自家的数据库产品产生冲击,这个开源免费的MySQL 对于Oracle更多的是包袱而不是资产.比如淘宝就从Oracle转成了MySQL,一些大型互联网公司也在推行去IOE(I:IBM,O:Oracle,E:EMC),甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险. Percona 在介绍 Percona 之前,首要要介绍的是

  • MySQL优化方案参考

    优化可能带来的问题 优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统. 优化手段本来就有很大的风险,只不过你没能力意识到和预见到! 任何的技术可以解决一个问题,但必然存在带来一个问题的风险! 对于优化来说解决问题而带来的问题,控制在可接受的范围内才是有成果. 保持现状或出现更差的情况都是失败! 本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨在帮助那些没有专职MySQL DBA的企业做好基本的优化工作,至于具体的SQL优化,大部分通过加适当的索引即可达到效果,更复杂

  • MySQL如何选择合适的索引

    先来看一个栗子 EXPLAIN select * from employees where name > 'a'; 如果用name索引查找数据需要遍历name字段联合索引树,然后根据遍历出来的主键值去主键索引树里再去查出最终数据,成本比全表扫描还高. 可以用覆盖索引优化,这样只需要遍历name字段的联合索引树就可以拿到所有的结果. EXPLAIN select name,age,position from employees where name > 'a'; 可以看到通过select出的字段

  • Mysql索引选择以及优化详解

    索引模型 哈希表 适用于只有等值查询的场景,Memory引擎默认索引 InnoDB支持自适应哈希索引,不可干预,由引擎自行决定是否创建 有序数组:在等值查询和范围查询场景中的性能都非常优秀,但插入和删除数据需要进行数据移动,成本太高.因此,只适用于静态存储引擎 二叉平衡树:每个节点的左儿子小于父节点,父节点又小于右儿子,时间复杂度是 O(log(N)) 多叉平衡树:索引不止存在内存中,还要写到磁盘上.为了让一个查询尽量少地读磁盘,就必须让查询过程访问尽量少的数据块.因此,要使用"N 叉"

  • MariaDB(Mysql分支)my.cnf配置文件中文注释版

    复制代码 代码如下: # /usr/share/mysql/my-huge.cnf # MariaDB 配置文件 示例模板(huge,巨型).## 本文件适用于专用数据库服务器, 内存为 1G-2G# 机器上主要只运行 MariaDB的大型系统 ,## MariaDB 程序会根据运行的操作系统平台查找一系列的配置文件,# 你可以将此模板配置文件拷贝到对应的位置(并重命名),# 要查看有哪些配置文件会被读取到,执行:# 'my_print_defaults --help' 并查看# Default

  • C#连接mariadb(MYSQL分支)代码示例分享

    首先配置好你的MariaDb,创建test数据库,在test里创建MyTable表,脚本如下(通过HeidiSQL导出的脚本): 复制代码 代码如下: -- ---------------------------------------------------------- 主机:                           172.16.40.153-- 服务器版本:                        5.5.5-10.0.4-MariaDB-1~wheezy-log -

  • MySQL 请选择合适的列

    思维导图 点击图片,可查看大图. 介绍 情况:如果你的表结构设计不良或你的索引设计不佳,那么请你优化你的表结构设计和给予合适的索引,这样你的查询性能就能提高几个数量级.--数据越大,索引的价值越能体现出来. 我们要提高性能,需要考虑的因素: 1.设计架构 2.设计索引 3.评估查询性能 今天要讲的是表列的设计,暂不谈索引设计.我会在下一章讲索引设计. 选择数据类型 选择正确的数据类型,对于提高性能至关重要. 下面给出几种原则,有利于帮助你选择何种类型. 1.更小通常更好. 使用最小的数据类型.-

  • MySQL 数据类型选择原则

    小而美 通常来说,尽可能使用占用存储空间小的数据类型来存储数据.这类数据类型通常也会更快,并且占用的磁盘空间.内存乃至缓存都更小,而且占用的 CPU 处理周期也少. 但是,务必准确估计要存储的数据值的范围.因为在数据表结构的多个地方扩充数据范围会是一个痛苦且耗时的过程.如果在犹豫哪种数据类型合适,那就选择你认为不会超出范围的最小空间的类型(在系统早期或者数据表 数据不多的情况下也可以进行调整). 简单至上 数据类型越简单意味着处理数据的 CPU 周期越少.例如,整型相比字符型而言,处理起来更容易

  • MySQL SQL 语法参考

    一.资料定义 ddl(data definition language)  资料定语言是指对资料的格式和形态下定义的语言,他是每个资料库要建立时候时首先要面对的,举凡资料分哪些表格关系.表格内的有什麽栏位主键.表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的. 1.建表格:  create table table_name(  column1 datatype [not null] [not null primary key],  column2 datatype [not nu

  • 一个php Mysql类 可以参考学习熟悉下

    复制代码 代码如下: <?php class Mysql { private $conn; private $host; private $username; private $password; private $dbname; private $pconnect; private $charset; public function __construct(array $params = null) { if (!empty($params)) { foreach ($params as $k

随机推荐