MariaDB 与 MySQL 的关系:从同源到分道扬镳

news2025/5/11 17:46:09

MariaDB 与 MySQL 的关系:从同源到分道扬镳

1. 起源:MySQL 的辉煌与危机
MySQL 是最流行的开源关系型数据库之一,由瑞典公司 MySQL AB 开发,并于 1995 年 首次发布。由于其高性能、易用性和开源特性,MySQL 迅速成为 LAMP(Linux + Apache + MySQL + PHP/Python/Perl) 架构的核心组件,广泛应用于 Web 开发、企业级数据库等领域。

然而,2008 年,MySQL AB 被 Sun Microsystems 收购,随后 2010 年 Sun 又被 Oracle(甲骨文) 收购。由于 Oracle 本身拥有 Oracle Database(商业数据库),许多开发者担心 MySQL 的未来可能会受到限制(如闭源、收费化或开发放缓)。

2. MariaDB 的诞生:MySQL 的“分支”
为了确保 MySQL 的开源自由,MySQL 的创始人 Michael “Monty” Widenius 带领部分核心开发者于 2009 年 创建了 MariaDB,并以他女儿 Maria 的名字命名。

MariaDB 最初是 MySQL 的一个 兼容分支(fork),目标是:
• 保持开源自由(采用 GPL 许可证,避免被 Oracle 控制)。

• 100% 兼容 MySQL,确保现有应用可以无缝迁移。

• 优化性能,并引入更多存储引擎(如 Aria、ColumnStore)。

3. MariaDB 与 MySQL 的关系演变
(1)早期:完全兼容,平滑替代
• MariaDB 5.1~5.5 版本几乎与 MySQL 完全一致,可以直接替换 MySQL,无需修改代码。

• 许多 Linux 发行版(如 Debian、Red Hat、Arch Linux)默认用 MariaDB 替代 MySQL。

(2)中期:功能分化
随着时间推移,MariaDB 和 MySQL 在功能上逐渐分化:

特性MySQL(Oracle 控制)MariaDB(社区驱动)
默认存储引擎InnoDB(事务支持强)XtraDB(InnoDB 优化版) + Aria(轻量级)
JSON 支持5.7+ 提供原生 JSON10.2+ 提供兼容实现
并行查询8.0+ 支持10.0+ 支持,但实现不同
GIS 地理数据企业版优化开源版支持更全面
版本号策略主版本号跳跃(5.7 → 8.0)延续 10.x 版本号

(3)现状:独立发展,部分兼容
• 语法兼容性:MariaDB 仍然保持 高度兼容 MySQL,大多数 SQL 语句、API(如 PHP 的 mysqli)可以直接使用。

• 功能差异:

• MariaDB 提供 更多存储引擎(如 ColumnStore 列式存储、Spider 分片引擎)。

• MySQL 8.0 在 事务性能、窗口函数 方面优化更激进。

• 云服务支持:

• AWS RDS、Google Cloud 默认提供 MariaDB 作为 MySQL 替代选项。

• 部分云厂商(如阿里云)仍以 MySQL 为主。

4. 如何选择:MariaDB 还是 MySQL?

场景推荐选择理由
个人学习/小型项目MariaDB完全免费,社区支持好
企业级高并发事务MySQL 8.0+Oracle 优化更成熟
需要分片/列存储MariaDB 10.5+内置 Spider/ColumnStore
云数据库服务查看云厂商推荐版本AWS RDS 默认 MariaDB

5. 总结
• MariaDB 是 MySQL 的“亲兄弟”,由原 MySQL 团队创建,旨在保持开源自由。

• 早期完全兼容,可无缝替代 MySQL,但后期功能逐渐分化。

• MariaDB 更注重开源生态,提供更多存储引擎和社区驱动优化。

• MySQL 8.0+ 在事务性能上更强,适合企业级应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2371996.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从零开始搭建你的个人博客:使用 GitHub Pages 免费部署静态网站

🌐 从零开始搭建你的个人博客:使用 GitHub Pages 免费部署静态网站 在互联网时代,拥有一个属于自己的网站不仅是一种展示方式,更是一种技术能力的体现。今天我们将一步步学习如何通过 GitHub Pages 搭建一个免费的个人博客或简历…

C#串口通信

在C#中使用串口通信比较方便,.Net 提供了现成的类, SerialPort类。 本文不对原理啥的进行介绍,只介绍SerialPort类的使用。 SerialProt类内部是调用了CreateFile,WriteFile等WinAPI函数来实现串口通信。 在后期的Windows编程系…

服务器配置llama-factory问题解决

在配置运行llama-factory,环境问题后显示环境问题。这边给大家附上连接,我们的是liunx环境但是还是一样的。大家也记得先配置虚拟环境。 LLaMA-Factory部署以及微调大模型_llamafactory微调大模型-CSDN博客 之后大家看看遇到的问题是不是我这样。 AI搜索…

Spring Boot + Vue 实现在线视频教育平台

一、项目技术选型 前端技术: HTML CSS JavaScript Vue.js 前端框架 后端技术: Spring Boot 轻量级后端框架 MyBatis 持久层框架 数据库: MySQL 5.x / 8.0 开发环境: IDE:Eclipse / IntelliJ IDEA JDK&…

使用Jmeter进行核心API压力测试

最近公司有发布会,需要对全链路比较核心的API的进行压测,今天正好分享下压测软件Jmeter的使用。 一、什么是Jmeter? JMeter 是 Apache 旗下的基于 Java 的开源性能测试工具。最初被设计用于 Web 应用测试,现已扩展到可测试多种不同的应用程…

JavaScript中数组和对象不同遍历方法的顺序规则

在JavaScript中,不同遍历方法的顺序规则和适用场景存在显著差异。以下是主要方法的遍历顺序总结: 一、数组遍历方法 for循环 • 严格按数组索引顺序遍历(0 → length-1) • 支持break和continue中断循环 • 性能最优,…

redis----通用命令

文章目录 前言一、运行redis二、help [command]三、通用命令 前言 提示:这里可以添加本文要记录的大概内容: 学习一些通用命令 以下操作在windows中演示 提示:以下是本篇文章正文内容,下面案例可供参考 一、运行redis 我们先c…

IntelliJ IDEA 保姆级使用教程

文章目录 一、创建项目二、创建模块三、创建包四、创建类五、编写代码六、运行代码注意 七、IDEA 常见设置1、主题2、字体3、背景色 八、IDEA 常用快捷键九、IDEA 常见操作9.1、类操作9.1.1、删除类文件9.1.2、修改类名称注意 9.2、模块操作9.2.1、修改模块名快速查看 9.2.2、导…

Comfyui 与 SDwebui

ComfyUI和SD WebUI是基于Stable Diffusion模型的两种不同用户界面工具,它们在功能、用户体验和适用场景上各有优劣。 1. 功能与灵活性 ComfyUI:ComfyUI以其节点式工作流设计为核心,强调用户自定义和灵活性。用户可以通过连接不同的模块&…

WiseAD:基于视觉-语言模型的知识增强型端到端自动驾驶——论文阅读

《WiseAD: Knowledge Augmented End-to-End Autonomous Driving with Vision-Language Model》2024年12月发表,来自新加坡国立和浙大的论文。 在快速发展的视觉语言模型(VLM)中,一般人类知识和令人印象深刻的逻辑推理能力的出现&a…

探索SQLMesh中的Jinja宏:提升SQL查询的灵活性与复用性

在数据工程和数据分析领域,SQL是不可或缺的工具。随着项目复杂度的增加,如何高效地管理和复用SQL代码成为了一个重要课题。SQLMesh作为一款强大的工具,不仅支持标准的SQL语法,还引入了Jinja模板引擎的宏功能,极大地提升…

对Redis组件的深入探讨

目录 1、磁盘和内存 1.1、概念 1.2、区别 1.3、联系 2、redis基本特性 2.1、数据结构 2.2、性能 2.3、事件驱动架构 2.4、原子性 3、redis模型 3.1、单线程 3.2、事件驱动模型 3.3、epoll多路复用 4、数据持久化 4.1、RDB快照 4.2、AOF(Append Only…

Uni-app 组件使用

在前端开发领域,能够高效地创建跨平台应用是开发者们一直追求的目标。Uni-app 凭借其 “一次开发,多端部署” 的特性,成为了众多开发者的首选框架。而组件作为 Uni-app 开发的基础单元,合理运用组件能够极大地提升开发效率和代码的…

嵌入式学习笔记 - STM32 SRAM控制器FSMC

一 SRAM控制器内部结构图: 以下以512K SRAM芯片为例 二 SRAM地址矩阵/寻址方式: SRAM的地址寻址方式通过行地址与列地址交互的方式存储数据 三 STM32 地址映射 从STM32的地址映射中可以看出,FSMC控制器支持扩展4块外部存储器区域&#xff0…

数据封装的过程

数据的封装过程 传输层 UDP 直接将数据封装为UDP数据报​,添加UDP头部(8B)。 要点: UDP首部简单,无连接不可靠、无重传、无拥塞控制,适用于实时性要求较高的通讯;不需要源端口或不想计算检…

Docker部署常见应用之Superset

文章目录 使用 Docker 部署使用 Docker Compose 部署参考文章 以下是使用 Docker 部署 Superset 并将存储配置为 MySQL 的详细步骤: 使用 Docker 部署 获取Superset镜像: 使用Docker从官方仓库拉取Superset镜像:docker pull apache/superset:4.0.0创建 …

住宅 IP 地址:数字时代的真实网络身份载体

在互联网的底层架构中,IP 地址是设备连接网络的 “数字身份证”。而住宅 IP 地址作为其中最贴近真实用户的类型,特指互联网服务提供商(ISP)分配给家庭或个人用户的 IP 地址,具有以下核心特征: 物理关联性 …

[SSM]-Spring介绍

框架是什么 框架 framework 建筑学: 用于承载一个系统必要功能的基础要素的集合计算机: 某特定领域系统的一组约定, 标准, 代码库以及工具的集合 框架vs工具 框架作为项目的骨架合基础结构, 提供了高层次的抽象和可复用性工具作为辅助手段, 帮助开发者完成特定任务并提高工作…

今天的python练习题

目录 一、每日一言 二、练习题 三、效果展示 四、下次题目 五、总结 一、每日一言 晚上8点到的,还是会被感动到,有一位列车员同志在检票期间,叫我到列车员专座位上去坐,我很感激他,温暖人心,所以人间填我…

Mysql进阶篇1_存储引擎、索引、SQL性能分析指令

文章目录 1.存储引擎InnoDBMyISAMMemory存储引擎选择和对比 2.索引索引结构索引分类索引语法索引使用(建议看完第3节后观看)!!!mysql如何使用索引查询数据(个人理解) 3.SQL性能分析SQL执行频率慢…