0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MariaDB有哪些比MySQL厉害的地方?

Linux爱好者 来源:CSDN 作者:swanmy 2021-03-11 16:21 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

近年来,不少程序员在吹捧 MariaDB,抛弃 MySQL。本文总结了一些 MariaDB 强过 MySQL 的地方,分享给大家!

11861ccc-7e2d-11eb-8b86-12bb97331649.jpg

MySQL 的发展史

MySQL 的历史可以追溯到 1979 年,它的创始人叫作 Michael Widenius,他在开发一个报表工具的时候,设计了一套 API

后来他的客户要求他的 API 支持 sql 语句,他直接借助于 mSQL(当时比较牛)的代码,将它集成到自己的存储引擎中。但是他总是感觉不满意,萌生了要自己做一套数据库的想法。

一到 1996 年,MySQL 1.0 发布,仅仅过了几个月的时间,1996 年 10 月 MySQL 3.11.1 当时发布了 Solaris 的版本,一个月后,Linux 的版本诞生,从那时候开始,MySQL 慢慢的被人所接受。

1999 年,Michael Widenius 成立了 MySQL AB 公司,MySQL 由个人开发转变为团队开发,2000 年使用 GPL 协议开源。

2001 年,MySQL 生命中的大事发生了,那就是存储引擎 InnoDB 的诞生!直到现在,MySQL 可以选择的存储引擎,InnoDB 依然是 No.1。

2008 年 1 月,MySQL AB 公司被 Sun 公司以 10 亿美金收购,MySQL 数据库进入 Sun 时代。

Sun 为 MySQL 的发展提供了绝佳的环境,2008 年 11 月,MySQL 5.1 发布,MySQL 成为了最受欢迎的小型数据库。

在此之前,Oracle 在 2005 年就收购了 InnoDB,因此,InnoDB 一直以来都只能作为第三方插件供用户选择。

2009 年 4 月,Oracle 公司以 74 亿美元收购 Sun 公司,MySQL 也随之进入 Oracle 时代。

2010 年 12 月,MySQL 5.5 发布,Oracle 终于把 InnoDB 做成了 MySQL 默认的存储引擎,MySQL 从此进入了辉煌时代。

然而,从那之后,Oracle 对 MySQL 的态度渐渐发生了变化,Oracle 虽然宣称 MySQL 依然遵守 GPL 协议,但却暗地里把开发人员全部换成了 Oracle 自己人。

开源社区再也影响不了 MySQL 发展的脚步,真正有心做贡献的人也被拒之门外,MySQL 随时都有闭源的可能……

横空出世的 MariaDB 是什么鬼

先提一下 MySQL 名字的由来吧,Michael Widenius 的女儿的简称就是 MY,Michael Widenius大 概也是把 MySQL 当成自己的女儿吧。

看着自己辛苦养大的 MySQL 被 Oracle 搞成这样,Michael Widenius 非常失望,决定在 MySQL 走向闭源前,将 MySQL 进行分支化,依然是使用了自己女儿的名字 MariaDB(玛莉亚 DB)。

MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可 MariaDB 的目的是完全兼容 MySQL,包括 API 和命令行,使之能轻松成为 MySQL 的代替品。

在存储引擎方面,使用 XtraDB 来代替 MySQL 的 InnoDB。MariaDB 由 MySQL 的创始人 Michael Widenius 主导,由开源社区的大神们进行开发。

因此,大家都认为,MariaDB 拥有比 MySQL 更纯正的 MySQL 血脉。最初的版本更新与 MySQL 同步,相对 MySQL5 以后的版本,MariaDB 也有相应的 5.1~5.5 的版本。

后来 MariaDB 终于摆脱了 MySQL,它的版本号直接从 10.0 开始,以自己的步伐进行开发,当然,还是可以对 MySQL 完全兼容。现在,MariaDB 的数据特性、性能等都超越了 MySQL。

测试环境

本性能测试环境如下:

CPU:I7

内存:8G

OS:Windows 10 64位

硬盘类型:SSD

MySQL:8.0.19

MariaDB:10.4.12

分别在 MySQl 和 MariaDB 中创建名为 performance 的数据库,并创建 log 表,都使用 innodb 作为数据库引擎:

CREATE TABLE `performance`。`log`( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `time` DATETIME NOT NULL, `level` ENUM(‘info’,‘debug’,‘error’) NOT NULL, `message` TEXT NOT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB CHARSET=utf8;

插入性能

单条插入

单条插入的测试结果如下表所示:

128aedb4-7e2d-11eb-8b86-12bb97331649.png

MariaDB 单条数据插入的性能比 MySQL 强 1 倍左右。

批量插入

批量插入的测试结果如下表所示:

12d40562-7e2d-11eb-8b86-12bb97331649.png

上面的测试结果,MariaDB 并没有绝对优势,甚至有时还比 MySQL 慢,但平均水平还是高于 MySQL。

查询性能

经过了多次插入测试,我两个数据库里插入了很多数据,此时用下面的 sql 查询表中的数据量:

SELECT COUNT(0) FROM LOG

结果两个表都是 6785000 条,MariaDB 用时 3.065 秒,MySQL 用时 6.404 秒。

此时我机器的内存用了 6 个 G,MariaDB 用了 474284 K,MySQL 只用了 66848 K。看来 MariaDB 快是牺牲了空间换取的。

无索引

先查询一下 time 字段的最大值和最小值:

SELECT MAX(TIME), MIN(TIME) FROM LOG

MariaDB 用时 6.333 秒,MySQL 用时 8.159 秒。接下来测试过滤 time 字段在 0 点到 1 点之间的数据,并对 time 字段排序:

SELECT * FROM LOG WHERE TIME 》 ‘2020-02-04 0000’ AND TIME 《 ‘2020-02-04 0100’ ORDER BY TIME

MariaDB 用时 6.996 秒,MySQL 用时 10.193 秒。然后测试查询 level 字符是 info 的数据:

SELECT * FROM LOG WHERE LEVEL = ‘info’

MariaDB 用时 0.006 秒,MySQL 用时 0.049 秒。最后测试查询 message 字段值为 debug 的数据:

SELECT * FROM LOG WHERE MESSAGE = ‘debug’ MariaDB 用时 0.003 秒,MySQL 用时 0.004 秒。

索引

分别对两个数据库的字段创建索引:

ALTER TABLE `performance`。`log` ADD INDEX `time` (`time`), ADD INDEX `level` (`level`), ADD FULLTEXT INDEX `message` (`message`);

MariaDB 用时 2 分 47 秒,MySQL 用时 3 分 48 秒。再用上面的测试项目进行测试,结果如下表所示:

130cedb4-7e2d-11eb-8b86-12bb97331649.png

有些结果添加了索引后还不如不加索引时理想,说明实际使用时并不是每个字段都需要添加索引的。

总结

在上面的测试中 MariaDB 的性能的确优于 MySQL,看来各大厂商放弃 MySQL 拥抱 MariaDB 还是非常有道理的。

原文标题:吊打MySQL,MariaDB到底强在哪?

文章出处:【微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • MySQL
    +关注

    关注

    1

    文章

    897

    浏览量

    29208

原文标题:吊打MySQL,MariaDB到底强在哪?

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MySQL 8.0性能优化实战指南

    作为一名运维工程师,MySQL数据库优化是我们日常工作中最具挑战性的任务之一。MySQL 8.0作为当前主流版本,在性能、安全性和功能上都有了显著提升,但如何充分发挥其潜力,仍需要我们掌握正确的优化策略。
    的头像 发表于 07-24 11:48 533次阅读

    MySQL数据备份与恢复策略

    数据是企业的核心资产,MySQL作为主流的关系型数据库管理系统,其数据的安全性和可靠性至关重要。本文将深入探讨MySQL的数据备份策略、常用备份工具以及数据恢复的最佳实践,帮助运维工程师构建完善的数据保护体系。
    的头像 发表于 07-14 11:11 462次阅读

    企业级MySQL数据库管理指南

    在当今数字化时代,MySQL作为全球最受欢迎的开源关系型数据库,承载着企业核心业务数据的存储与处理。作为数据库管理员(DBA),掌握MySQL的企业级部署、优化、维护技能至关重要。本文将从实战角度出发,系统阐述MySQL在企业环
    的头像 发表于 07-09 09:50 504次阅读

    MySQL数据库采集网关是什么?什么功能?

    MySQL数据库采集网关是一种用于连接、采集、处理并传输数据到MySQL数据库的中间设备或软件系统,通常部署在数据源与MySQL数据库之间,作为数据交互的桥梁。它在工业物联网、智能楼宇、能源管理等
    的头像 发表于 05-26 15:20 457次阅读

    除了增删改查你对MySQL还了解多少

    我们都知道MySQL服务器的默认端口为3306,之后就在这个端口号上等待客户端进程进行连接(MySQL服务器会默认监听3306端口)。
    的头像 发表于 04-14 17:20 513次阅读

    使用 sysbench 对华为云 Flexus 服务器 X 做 Mysql 应用加速测评

    目前的厂商服务器中是特有独一份的,应用加速包括 MySQL,Redis,NGINX 三种选择。并且服务器性能较同类产品了大量优化,今天咱们针对 MySQL 应用加速测评一下。                         ❀
    的头像 发表于 01-23 17:26 652次阅读
    使用 sysbench 对华为云 Flexus 服务器 X 做 <b class='flag-5'>Mysql</b> 应用加速测评

    从Delphi、C++ Builder和Lazarus连接到MySQL数据库

    (包括社区版)以及 Windows、Linux、macOS、iOS 和 Android 上的 Lazarus(和 Pascal),对 MySQLMariaDB 的直接访问,适用于 32 和 64 位
    的头像 发表于 01-20 13:47 1314次阅读
    从Delphi、C++ Builder和Lazarus连接到<b class='flag-5'>MySQL</b>数据库

    使用插件将Excel连接到MySQL/MariaDB

    使用插件将 Excel 连接到 MySQL/MariaDB 适用于 MySQL 的 Devart Excel 插件允许您将 Microsoft Excel 连接到 MySQL
    的头像 发表于 01-20 12:38 1129次阅读
    使用插件将Excel连接到<b class='flag-5'>MySQL</b>/<b class='flag-5'>MariaDB</b>

    适用于MySQLMariaDB的Python连接器:可靠的MySQL数据连接器和数据库

    适用于 MySQLMariaDB 的 Python 连接器 Python Connector for MySQL 是一种可靠的连接解决方案,用于从 Python 应用程序访问 MySQL
    的头像 发表于 01-17 12:18 843次阅读
    适用于<b class='flag-5'>MySQL</b>和<b class='flag-5'>MariaDB</b>的Python连接器:可靠的<b class='flag-5'>MySQL</b>数据连接器和数据库

    适用于MySQLMariaDB的.NET连接器

    支持 ORM 的适用于 MySQLMariaDB 的 .NET 连接器 dotConnect for MySQL 是一种高性能 ADO.NET 数据提供程序,可在开发 MySQL
    的头像 发表于 01-16 14:17 791次阅读
    适用于<b class='flag-5'>MySQL</b>和<b class='flag-5'>MariaDB</b>的.NET连接器

    适用于MySQL的ODBC驱动程序:可与多个第三方工具兼容的数据连接器

    MariaDB、Amazon RDS for MySQL 和 Amazon Aurora 数据库。Devart ODBC 驱动程序完全支持标准 ODBC API 函数和数据类型,并支持从任何地方实时访问
    的头像 发表于 01-16 10:12 1008次阅读

    MySQL数据库的安装

    MySQL数据库的安装 【一】各种数据库的端口 MySQL :3306 Redis :6379 MongoDB :27017 Django :8000 flask :5000 【二】MySQL 介绍
    的头像 发表于 01-14 11:25 856次阅读
    <b class='flag-5'>MySQL</b>数据库的安装

    windows服务器备份mysql脚本

    一、linux备份 使用python脚本,要求python3和mysqldump #! /usr/bin/python36# -*- coding: utf-8 -*-import
    的头像 发表于 01-02 09:14 667次阅读

    华为云 Flexus X 实例评测使用体验——MySQL 安装全过程 +MySQL 读写速度测试

     前言 我这里我使用的默认公共镜像 Huawei Cloud EulerOS,因为这里个标识说是可以对数据库添加加速功能,例如 Redis 和 MySQL 数据库都可以加速,我这里先测
    的头像 发表于 12-31 10:38 805次阅读
    华为云 Flexus X 实例评测使用体验——<b class='flag-5'>MySQL</b> 安装全过程 +<b class='flag-5'>MySQL</b> 读写速度测试

    云服务器 Flexus X 实例 MySQL 应用加速测试

    企业节,Flexus X 实例的优惠活动正火热进行,对于算力性能需求及自建 MySQL、Redis、Nginx 等性能要求的用户
    的头像 发表于 12-24 12:19 795次阅读
    云服务器 Flexus X 实例 <b class='flag-5'>MySQL</b> 应用加速测试