MariaDB与MySQL的比较

Mariadb是Mysql源代码的一个分支,在意识到oracle会对mysql可做出分离出来(mysql先后被sun,oracle收购)。

现在继续使用mysql或者抛弃它切换到mariadb有足够的理由。

Mariadb博客上的性能测试。

2015072201

在介绍这些新特性之前,首先说下mariadb的版本编号模式,mariadb版本与mysql版本相匹配,比如:mariadb5.1,与mysql5.1使用相同的代码,由于更新和修复是针对mysql源码树的,这样mariabd可以采纳这些补丁(理论上mariadb每月都会和mysql源码合并),但是如果新的独特特性定期添加的话,代码校验肯定是一个噩梦。

如果依旧完全兼容mysql的话,他们不能继续添加新特性。

至于新特征,让我们看下其中几个:

Cassandra引擎:

Mariadb的一个独特特性是它的连接到cassandra后端的引擎,引擎本身只是一个加入到cassandra服务器中单独运行中介(cassandra是一个nosql类型的键值存储,由于facebook创建后成为了apache的项目,它可以用于集群并且没有单点故障,它同样不是完全的ACID的。原子性,一致性,个理性,持久性。)通常,如果使用了cassandra引擎的话就无法获得innodb或者extradb相近的速度或者性能。

但是可以用过mysql访问数据,通过运行select,inserts,updates,deletes甚至拓展的join就想使用sql感觉一样,但是mariadb团队表示cassandra引擎不适合大量数据的分析类查询。

如果在写一个需要访问cassandra数据应用软件,那么最好直接使用cassandra的原生API而不是通过mysql,如果注意力在mysql命令行,且需要抓取一些数据,这种情况cassandra引擎可以派上用场。

Oqgraph引擎:

该引擎是图计算引擎的开放查询接口,这对一些特定的应用可能有用,尽管表面上看讲图像结构映射到sql格式有点古怪。

mariadb的一个重要的增强力量是xtradb作为innodb的向下替代,而且xtradb增加了现代软件所需要的可扩展能力--这是核心不同点,oracle声称mysql现在的扩展性比以前好,可能得确如此,但是引擎还是那个引擎,如果引擎不能真正具备扩展性,那么mysql也同样不具备。

原子写:

选择关系型数据库而不是nosql的主要原因是前者对ACID的完全支持,简单的说,如果有失败,不想丢失数据,尽管故障可能并不经常在我们的开发环境上发生,但是在很多的IT中心却很常见,目前,默默人的innodb/xtradb引擎采用双缓冲的方法来写入数据以确保崩溃时候数据能写入成功,然而,当使用告诉的SSD设备时候,双缓存对性能有负面影响,会减小SSD在访问方面的优势,解决的办法是什么?首先关掉双缓冲打开所谓的原子写,先在磁盘上验证再到应用到生产环境。

Mysql和Mariadb的性能比较:

现在把目光转移到benchmark上,其实也是由mariadb团队开发的,并加了一下额外的说明,,这篇博客提到了一个有趣的地方:把mysql5.6的线程数一直增加到16,性能都很好,但是超过16的话,尽管性能也有提升一点,但比较发现,远不如其他版本。在单核计算机里试图达到多核多线程的效果的并行程序时,都会有此类的通病,如果算法设计得当,随着CPU的核心数增加,性能也会跟提升,当然问题是,必须在并行程序中处理好2个方面:1)跨多核的线程问题2)矢量化。这也是前面向多核变成的两个方向。

我不知道在测试中怎么样才能很好的根据不同的机器指定不同的编译器来与之匹配,当你为intel编译代码时,需要为目标机器编译生成合适的SIMD代码,如果不匹配,将不回得到你所期望执行的矢量代码,为了能正确的处理,需要在代码中插入正确的编译指示代码,然后写下正确的矢量算法,最后在选择合适的编译器,很明显mysql代码在多核和矢量化中的优化没有mariadb好。

应该转移吗?

很明显,mariadb的新特性并不是都这么好,可以需要连接cassandra来获取一些数据。

mariadb的性能看起来在多核环境下表现不错,但是mysql应该通过调优也可以做到。

所一现在应该转移到mariadb吗?

首先考虑潜在的风险,如果迁移到mariadb,可能会使用特定于mariadb的特性,然后发现很难再用很小的资源切换mysql.

考虑到oracle以及oracle对mysql的授权问题,免费以及开源的mysql要与oracle极具竞争力的专用软件竞争,那么oracle会做什么事情阻止mysql的开发呢?

那么mysql和mariadb的兼容性如何呢?mariadb团队已经尽力去保持对mysql的全面兼容,他们将继续向源码中提交bug修复,但是那些新的特性以及版本方案表名。尽管尽了最大的努力,这两个平台还是会继续分裂。

如果oracle向mysql添加mariadb不采纳的新特性,这些新特性明显不会对你可用,如果你正在使用mysql而不是mariadb特性,你将不能轻易的切换到mysql。mariadb表示这样的情况很可能存在一段事件,然而你也不能说相同的情况不会在mysql中出现吧,也就是说,即使mariadb的新特性并不那么有用,但是我觉得已经有足够的理由从mysql迁移到mariadb.

原文连接:http://insights.dice.com/2013/05/22/mariadb-vs-mysql-a-comparison-2/


发表评论

登录 后发表评论.