热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

MySQL与MariaDB的对决

也许你对MySQL数据库新秀MariaDB有所耳闻,作为MySQL的又一分支,MariaDB诞生于甲骨文收购Sun公司之后。MariaDB拥有诸多值得认真体味的优秀特性,这不仅是由于MariaDB项目由MySQL最初创始人MontyWidenius所创建,更因为它与MySQL始终保持着紧密联系。先从相
也许你对MySQL数据库新秀MariaDB有所耳闻,作为MySQL的又一分支,MariaDB诞生于甲骨文收购Sun公司之后。MariaDB拥有诸多值得认真体味的优秀特性,这不仅是由于MariaDB项目由MySQL最初创始人Monty Widenius所创建,更因为它与MySQL始终保持着紧密联系。

  先从相关技术社区所能提供的支持与调试积极性入手,考虑利用MariaDB替代MySQL的可行性。举例来说,如果要付费签订一套技术支持协议,并且把甲骨文方案作为理想的支持交付机制,那么MySQL无疑是最合理的选择。然而,如果能把高高在上的MySQL集群CGE(即运营商级版本)的姿态放低一些,那么甲骨文提供的社区版本显然更为合适。

  如何做出具体取舍要看各企业技术团队的实际情况以及他们对开源文化的熟悉程度。如果他们更喜欢从甲骨文的咨询服务中心获取支持信息以及官方解答,那么MySQL将成为理想的选择。

  与MySQL相近的使用感受
  对于那些打算尽早摆脱甲骨文控制的MySQL用户来说,兼容性无疑是需要关注的首要问题。这也是MariaDB向下兼容特性如此重要的关键所在。向下兼容意味着什么?
  尽管两款软件包的名称有所区别,但检查其资源库时,一定会发现二者之间存在着千丝万缕的联系与高度一致的相似之处。命令行工具的二进制名称,例如mysqladmin、mysqldump、mysql shell以及后台程序都保持着名称上的统一。更进一步,二者的数据文件彼此之间也完全兼容。MariaDB能够直接与现有MySQL实例中的数据文件及表定义顺利协作。

  持续不断的改进步伐
  向下兼容的可贵之处在于不需要对应用程序做出任何形式或程度上的改动。利用MariaDB取代MySQL之后,大家能够立即享受由此带来的性能提升。来自Facebook、Twitter、谷歌以及Percona等媒体平台的社区支持将抢先一步入驻MariaDB,而后才逐步在MySQL中铺开。
  MariaDB还通过数据检索信息模式给用户带来更令人满意的处理手段,其中包括微秒支持。如果大家正在使用TIME或者DATETIME数据类型,则可以为其指定特殊精度,例如TIME(4),括号中的数字代表小数点后显示多少位。MariaDB最高支持到小数点后六位—也就是0.000001秒或者称之为1微秒。这已经是小得不能再小的时间单位了。而对于那些没有特别指定精度的用例,MariaDB会默认忽略小数点后的余数以简化读取难度。
  你们一定有过在MySQL中执行运行时间超长的ALTER TABLE,一直等到满腔怒火的经历。MariaDB会为这类操作提供一套命令行进程指示器,这样大家就可以预先估计运行所需要的时间。这确实是一项令人拍手叫好的创新。
  查询执行对于面向Web的应用程序来说往往算是一项重大挑战。MySQL查询执行背后的实际大脑其实是查询优化器,MariaDB在这方面也做出了一系列显著改进,包括更好的子查询优化效果、更快的执行速度、更高的执行效率以及更具一致性的连接、导出表以及视图等。另外,MariaDB为用户提供额外的控制选择,用于设定优化器如何做出决定、如何显示更多内部处理流程以及如何通过服务器参数完成配置工作。
  MariaDB还提供一系列经过合并的内核强化机制,移除了对性能影响极大的互斥器。所谓互斥器,是一种在内核中连续访问资源的锁定机制。如果资源目前正处于占用状态,进程就必须保持等待直到资源再次可用。MySQL内核中的现有互斥器始终在现代硬件当中也会造成非常严重的拖慢现象。将其取消帮助MariaDB顺利与如今愈发常见的大型SMP设备相对接。
  最后,如果大家希望向基于单元的复制机制转移但却受制于单元复制日志中的SQL声明问题,MariaDB也拿出了很好的解决方案。
  基于单元的复制机制并非始终可读,因为用户一直在发送原始数据块,也就是数据在发送之前与之后的“镜像”而非实际执行的SQL声明。数据块被交付至从数据库当中并直接写入文件,而不再由SQL进行重复执行。由于这个原因,SQL声明无法成为MySQL日志内容的一部分。
  而在MariaDB当中,SQL声明被记录在专门针对单元复制流程的库日志里,其处理方式与基于声明的复制完全相同。这部分SQL声明能够有效帮助管理人员进行故障排查并在特定情况下实现时间点恢复目标。MariaDB的此项改进堪称雪中送炭。

  进一步挑战极限
  对于那些希望进一步挑战极限的使用者来说,MariaDB所具备的功能足以打破固有MySQL功能的束缚。
  初学者可以在两套高性能存储引擎当中做出选择:Aria与XtraDB。尽管二者都不具备对现有MySQL部署的向下兼容能力,但我们仍然可以通过一条简单的ALTER命令在这些引擎中重新建立表。
  即将迎接的是一种名为Galera的全新集群化技术。这种技术与NDB Cluster及其它知名方案完全不同。Galera允许主动-主动多体更新,这一点在NDB Cluster中由于JOIN的局限而无法完成。现在大家可能真正对云服务器进行规模化写入,更令人欣喜的是,我们甚至能够使用并行及同步复制功能。
  想要获得NoSQL般的理想速度?HandlerSocket插件是个不错的选择,它可以在不经过优化器的情况下直接访问存储引擎,从而一举将速度提升到原先的十倍以上。大家现在还可以利用MariaDB中的动态列机制获取大量JSON格式的返回数据—这同样是MySQL所无法企及的。
  MariaDB中还包含另一套全新存储引擎,这就是Cassandra SE。它允许用户向一套Cassandra数据存储体系内写入或者读取数据。SQL与NoSQL之间的融合终于不再令人头痛。
  想要合并来自不同主数据库内的数据?多源复制功能正是满足大家需求的最佳方案。假设我们的源数据被保存在多个实例当中,MariaDB能够将它们同时引导到同一个下游实例当中—这样的效果在MySQL中仍然无法实现。
  如果前面提到的这些新特性还不足以吸引你,MariaDB还拥有一套杀手锏—它其实是一个完全遵循GPL许可的MySQL版本。所有相关插件及功能组件都是开源方案,这相当于帮助使用者在安全性及调试识别透明度等各个方面都享受到了开源带来的便利。MySQL则适用于GPL或者由甲骨文提供的商业许可,这就导致一部分组件开源、另一部分闭源。

  在苹果和桔子之间做出选择
  如果大家正着手评估各类MySQL替代发行版,肯定需要认真权衡它们各自的优势与弱项。
  就以Percona为例,它足以成为甲骨文MySQL社区版本的另一种替代方案。Percona往往在引入新功能方面表现得更为保守,这相当于在稳定性方面做出一丁点提升、但却在获得最新最优秀的功能方面畏首畏尾。Percona相对于MySQL也算得上是很大的进步,不过也许仍然无法像MariaDB那样为我们带来业界顶尖的解决方案。
  Drizzle也是MySQL替代者大家庭中的另一位成员,只不过它的特色在于通过重新编写适应云部署环境。它确实属于开源项目没错,但却并没能提供面向MySQL的向下兼容能力。大家需要舍弃原有数据并重新载入新数据,甚至对应用程序做出调整,只有这样它才能顺畅地运行下去。
  虽然MariaDB在普及程度上与Percona尚存在一定差距,但它的人气增长速度却不容小觑。举例来说,红帽公司就已经在自己的企业发行版中利用MariaDB取代MySQL;谷歌公司最近也针对MariaDB项目组织了一次工程师投票。在欣欣向荣的MySQL替代方案领域,MariaDB正以日益壮大之势稳步迈向王者宝座。

推荐阅读
  • 在Ubuntu中安装MongoDB
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • hackingTeam是如何被黑的
    hackingTeam是如何被黑的 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • OAuth2.0指南
    引言OAuth2.0是一种应用之间彼此访问数据的开源授权协议。比如,一个游戏应用可以访问Facebook的用户数据,或者一个基于地理的应用可以访问Foursquare的用户数据等。 ... [详细]
  • 前面刚有AWS开战MongoDB,双方“隔空互呛”,这厢又曝出2亿+简历信息泄露——MongoDB的这场开年似乎“充实”得过分了些。长期以来,作为“最受欢迎的NoSQL数据库”,M ... [详细]
  • 数据库基本介绍
    1、数据库基本知识概念:数据库:database(DB),是一种存储数据的仓库数据库是根据数据结构组织、存储和 ... [详细]
  • 架构师必读:日均500万数据,如何进行数据存储选型?
    点击上方关注我,选择“置顶或者星标”作者:麦田里的老农来源:https:zhuanlan.zhihu.comp37964096小编公司有一 ... [详细]
  • 目录摘要SQL的现在NoSQL,NotOnlySQL要分布式,也要SQL总结引用摘要毫不夸张的说,关系数据库是企业软件系统的核心,企业形形色色信息行为的背后,都有关系数据库的支撑。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • MybatisPlus入门系列(13) MybatisPlus之自定义ID生成器
    数据库ID生成策略在数据库表设计时,主键ID是必不可少的字段,如何优雅的设计数据库ID,适应当前业务场景,需要根据需求选取 ... [详细]
  • 这也太简单了!轻松操作Feign 服务调用使用 Zipkin 链路追踪!
    0、介绍分布式微服务时代,方便了业务的快速增长和服务的稳定,但是系统出现问题后,面对同业务多服务排查起来令人头大。这时候领导就想着集成分布式追踪系统。Zipkin是T ... [详细]
  • 为元宇宙提供动力的 5 项重要技术
    元宇宙是你肯定听说过的东西。在过去的一年里,每个人都在谈论它。这是技术领域的下一件大事。Bloomberg情报高级行业分析师马修·坎特曼(MatthewKanterman)的分析显 ... [详细]
  • php网站_十周后,62%的PHP网站将运行在一个不受支持的PHP版本上
    本文由编程笔记#小编为大家整理,主要介绍了十周后,62%的PHP网站将运行在一个不受支持的PHP版本上相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 《Python3 网络爬虫开发实战》:高效实用的 MongoDB 文档存储
    NoSQL,全称NotOnlySQL,意为不仅仅是SQL,泛指非关系型数据库。NoSQL是基于键值对的,而且不需要经过SQL ... [详细]
  • Django1.5新功能预告
    转自:http:www.web4py.comblog%E8%AF%91-django-15-%E6%96%B0%E5%8A%9F%E8%83%BD%E9%A2%84% ... [详细]
author-avatar
宝林
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有