热门标签 | 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正以日益壮大之势稳步迈向王者宝座。

推荐阅读
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • mysql 分库分表策略_【数据库】分库分表策略
    关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多, ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 本文档详细介绍了2017年8月31日关于MySQL数据库备份与恢复的教学内容,包括MySQL日志功能、备份策略、备份工具及实战演练。 ... [详细]
  • 本文详细介绍了如何解决在使用本地SQlyog客户端尝试连接阿里云上的MariaDB数据库时遇到的2003错误,即无法连接到MySQL服务器的问题。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • MySQL 'Too Many Connections' 错误处理及优化方案
    本文详细介绍了如何诊断和解决MySQL数据库中出现的‘Too Many Connections’错误,包括查看当前连接状态、调整配置文件以及优化应用代码等方法。 ... [详细]
  • 近期,谷歌公司的一名安全工程师Eduardo Vela在jQuery Mobile框架中发现了一项可能引发跨站脚本攻击(XSS)的安全漏洞。此漏洞使得使用jQuery Mobile的所有网站面临潜在的安全威胁。 ... [详细]
  • 2023年5月20日凌晨5:20(北京时间),由区块链技术和去中心化应用平台ArcBlock(区块基石)研发的ABT钱包移动应用程序,在苹果App Store和Google Play同步上线,标志着用户在数字世界中首次能够完全掌控自己的身份。 ... [详细]
  • 华为云openEuler环境下的Web应用部署实践
    本文详细记录了在华为云openEuler系统上进行Web应用部署的具体步骤,包括配置yum源、安装Apache、MariaDB、PHP及其相关组件,并完成WordPress的安装与配置过程。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • 在重新安装Ubuntu并配置Django和PyCharm后,忘记测试MySQL连接,导致在后续配置过程中遇到错误:ERROR 2003 (HY000) - 无法连接到本地服务器 ‘127.0.0.1’ (111)。本文将详细介绍该错误的原因及解决步骤,帮助用户快速恢复MySQL服务的正常运行。我们将从检查网络配置、验证MySQL服务状态、配置防火墙规则等方面入手,提供全面的故障排除指南。 ... [详细]
  • 提升开发技能的八大策略与方法
    许多前端开发人员和客户都在寻求具备创新和技术能力的专业人才,但往往由于缺乏足够的曝光度和声誉,这些人才难以被潜在客户发现。本文将介绍八种有效策略和方法,帮助开发者提升技能并增强市场竞争力。 ... [详细]
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社区 版权所有