用户登录
用户注册

分享至

mariadb与mysql的区别

  • 作者: 段子吊丝
  • 来源: 51数据库
  • 2020-09-21
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字而MySQL[1] 是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。



  mysql和mariadb的性能比较
  现在把目光移到benchmark上面来,它其实也是由mariadb团队开发的,并加了一下额外的说明。这篇博客提到了一个有趣的地方:把mysql5.6的线程数一直增加到16,性能都很好,但是超过了16的话,尽管性能也有提升一点点,但比较发现,远不如其他版本(包括mairadb-5.5.28a和mairadb-10.0.1;参考文章顶部的性能测试图)。这在单核计算机里面试图达到多核多线程的效果的并行程序时,都会有此类的通病。如果算法设计得当,随着cpu核心数的增加,性能也会跟着提升。当然问题是,你必须在并行程序中处理好2个方面:(1)跨多核的多线程问题(2)矢量化。这也是当前面向多核编程的两个方向,你编写的必须能很好的控制这两个方面。

  如果没有正确的编写代码将会得到一个共同的结果,即在用8到16个线程的开始你就想看到好的结果,但在这些线程运行之后你不会看到你期望的结果。你将会看到这个问题,这意味这可能是算法问题。(这也不是超线程或是硬件线程造成的)这就是我们在这里看到mysql 基准的问题。对于我来说,这就是mysql规模化产生问题的迹象,这也是令人担心的原因之一。mariadb在同样的基准中也有一些小问题,但是比mysql要轻微的多,只能说是勉强吧;我推测这个问题在并行计算中可能不会出现。

  我也不知道在测试中怎样才能很好的根据不同机器指定不同的编译器来与之匹配。当你为intel编译代码时,你需要为目标机器编译生成合适的simd代码;如果不匹配,你将不会得到你所期望执行的矢量代码。为了能正确处理,你需要在代码中插入正确的编译指示代码,然后要写下正确的矢量算法,最后在选择合适的编译器。我知道这样看起来很愚笨,但我看过一个发行产品用错误的编译器所造成的结果是你无法想象的。好歹,很明显,mysql代码在多核和矢量化中的优化没有mariadb好。

  (我真正想看到的是,mysql或mariadb的一个分支为intel xeon phi处理器核心做一个特别的编译,使代码转移到61 核心协处理器,并且有人能尝试加速所有244个线程。可惜我没有接触过这样的机器。同样的,如果你想学习更多关于向量化和并行方式编写代码方面的知识,检索最近intel公司 james jeffers 与 james reinders写的文章“intel xeon phi 协处理器高性能编程”。)
  原文链接:http://www.oschina.net/translate/mariadb-vs-mysql-a-comparison
软件
前端设计
程序设计
Java相关