MariaDB数据库介绍MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区维护,使用GPL许可。开发这个分支的原因之一是:Oracle收购MySQL后,存在关闭MySQL的潜在风险,所以社区采用一个分支来规避这个风险。MariaDB的目的就是要完全兼容MySQL,包括API和命令行,这样很容易成为MySQL的替代品。MariaDB由MySQL的创始人MichaelWidnius开发。他早些时候以10亿美元的价格将他创建的公司MySQL卖给了SUN。此后,随着SUN被甲骨文收购,MySQL的所有权也落入甲骨文手中。MariaDB的名字来源于MichaelWidnius的女儿Maria(英文:Maria)的名字。MariaDB沿用MySQL版本直到5.5版本。因此,使用MariaDB5.5的人,从MySQL5.5开始,就会知道MariaDB的所有功能。从2012年11月12日发布的10.0.0版本开始,不再遵循MySQL的版本号。10.0.x版本是在5.5版本的基础上,加上从MySQL5.6版本移植过来的功能和自己开发的新功能。在存储引擎方面,从10.0.9版本开始使用XtraDB(代号Aria)替代MySQL的InnoDB。MariaDB的API和协议与MySQL兼容,并增加了一些特性来支持原生的非阻塞操作和进度报告。这意味着所有使用MySQL的连接器、库和应用程序也将与MariaDB一起工作。在此基础上,Fedora计划在Fedora19中将MySQL替换为MariaDB是出于对Oracle的MySQLMariaDB和MySQL综合比较的一个更封闭的软件项目的担忧谁在使用MySQL和MariaDB?MySQL和MariaDB都发布了自己的用户列表。Facebook、Github、YouTube、Twitter、PayPal、诺基亚、Spotify、Netflix等都使用MySQL。使用MariaDB的有Redhat、DBS、Suse、Ubuntu、1&1、Ingenico等。MariaDB和MySQL特性比较有一些令人兴奋的新特性(例如窗口函数、角色控制或通用表表达式(CTE))可能值得一提,但本文只是为了比较两个数据库,所以我们只讨论他们在这里专门提供了一个功能,可以更好的帮助读者选择适合自己的数据库。让我们来看看只有其中一个数据库专门提供的特性:1.JSON数据类型从5.7版本开始,MySQL支持RFC7159定义的原生JSON数据类型,可以高效地访问JSON文档中的数据。MariaDB不提供此增强功能,认为JSON数据类型不是SQL标准的一部分。但是为了支持从MySQL拷贝数据,MariaDB给JSON定义了一个别名,其实就是一个LONGTEXT列。MariaDB声称两者之间没有显着的性能差异,但他们没有提供基准数据来支持这一说法。值得注意的是,MySQL和MariaDB都提供了一些JSON相关的功能,以便更方便地访问、解析和检索JSON数据。2、默认认证在MySQL8.0中,默认的认证插件是caching_sha2_password,而不是mysql_native_password。此增强功能通过使用SHA-256算法提高了安全性。3.MySQLShellMySQLShell是MySQL的高级命令行客户端和代码编辑器。除了SQL,MySQLShell还提供JavaScript和Python脚本功能。但是,用户无法使用mysqlsh访问MariaDB服务器,因为MariaDB不支持MySQLX协议。4.加密MySQL对redo/undo日志进行加密(可配置),但不对临时表空间或二进制日志进行加密。相反,MariaDB支持二进制日志记录和临时表加密。5.密钥管理MariaDB提供了开箱即用的AWS密钥管理插件。MySQL也提供了一些用于密钥管理的插件,但它们只在企业版中可用。6.sys模式MySQL8.0提供了sys模式,它是一组对象,可以帮助数据库管理员和软件工程师更好地理解通过Performance模式收集的数据。sys模式对象可用于优化和诊断,尽管MariaDB不提供此增强功能。7.validate_password插件validate_password插件主要用于测试密码和提高安全性。MySQL默认启用此插件,而MariaDB则没有。8、超级只读MySQL通过提供超级??只读模式增强了read_only功能。如果启用了read_only,则服务器仅允许具有SUPER权限的用户执行客户端更新。如果同时开启super_read_only,服务器会禁止拥有SUPER权限的用户进行客户端更新。9、不可见列的功能在MariaDB上有,MySQL不支持此功能。该特性允许创建没有出现在SELECT*语句中的列,并且在插入时,如果它们的名字没有出现在INSERT语句中,则不需要为这些列提供值。10.线程池MariaDB支持连接线程池,这对于短查询和CPU密集型工作负载(OLTP)非常有用。在MySQL的社区版本中,线程数是固定的,因此限制了这种灵活性。MySQL计划在企业版中增加线程池功能。MySQL和MariaDB性能近年来,出现了很多MySQL和MariaDB引擎性能的基准测试。我们认为“MySQL和MariaDB哪个更快?”这个问题没有明确的答案。这在很大程度上取决于具体的使用场景、查询、用户数和连接数等。但是,如果你确实想知道,这里有一些我们发现的最新基准测试结果。请注意,这些测试是在一组特定的数据库+引擎(例如MySQL+InnoDB)组合上执行的,因此得出的结论仅与该特定组合相关。MySQL8.0(InnoDB)和MariaDB10.3.7(MyRocks)基准比较:https://minervadb.com/index.php/2018/06/01/benchmarking-innodb-and-myrocks-performance-using-sysbench/MariaDBPerformance商用硬件上10.1和MySQL5.7的比较:https://mariadb.org/maria-10-1-mysql-5-7-commodity-hardware/MySQL8.0和MariaDB10.3.5的性能比较和UTF8的影响:http://dimitrik.free.fr/blog/archives/2018/04/mysql-performance-80-and-utf8-impact.html复制特性两个数据库都提供了将数据从一台服务器复制到另一台服务器的功能。它们之间的主要区别是大多数MariaDB版本允许您从MySQL复制数据,这意味着您可以轻松地将MySQL迁移到MariaDB。但反过来并不容易,因为大多数MySQL版本不允许从MariaDB复制数据。此外,值得注意的是,MySQLGTID与MariaDBGTID不同,因此在将数据从MySQL复制到MariaDB后,GTID数据将相应调整。以下是两个数据库的复制配置的一些差异:MySQL默认的二进制日志格式是基于行的,而在MariaDB中默认的二进制日志格式是混合的。log_bin_compress-这个配置决定了二进制日志是否可以被压缩。此增强功能是MariaDB独有的,因此MySQL不支持。MySQL和MariaDB之间的不兼容性MariaDB的文档列出了MySQL和MariaDB之间的数百个不兼容性。因此,我们无法通过简单的方案在这两个数据库之间进行迁移。大多数数据库管理员希望MariaDB只是MySQL的一个分支,以便可以轻松完成两者之间的迁移。但从最新发布的消息来看,这个想法是不现实的。MariaDB实际上是MySQL的一个分支,这意味着在它们之间迁移时需要考虑很多事情。MySQL和MariaDB存储引擎MariaDB比MySQL支持更多的存储引擎类型。不过话又说回来,数据库能支持多少存储引擎并不重要,重要的是哪个数据库能支持适合你需求的存储引擎。MariaDB支持的存储引擎包括:XtraDB、InnoDB、MariaDBColumnStore、Aria、Archive、Blackhole、CassandraStorageEngine、Connect、CSV、FederatedX、Memory、Merge、Mroonga、MyISAM、MyRocks、QQGraph、SequenceStorageEngine、SphinxSE、Spider,TokuDBMySQL支持的存储引擎包括:InnoDB,MyISAM,Memory,CSV,Archive,Blackhole,Merge,Federated,ExampleInstallingonLinux当你在一些Linux发行版上安装MySQL时,你可能最终会安装MariaDB,因为它是默认的许多(不是全部)Linux发行版。RedHatEnterprise/CentOS/Fedora/Debian发行版默认安装MariaDB,而其他发行版(如Ubuntu)默认安装MySQL。云平台上的可用性MariaDB可作为在亚马逊网络服务(AWS)、微软Azure和RackspaceCloud上运行的服务提供。MySQL也可在上述三个平台上使用,并作为托管服务在谷歌云服务平台上运行。因此,如果您正在使用GoogleCloudPlatform并希望云提供商为您管理服务,请考虑使用MySQL,除非您想自己安装和管理MariaDB实例。MySQL和MariaDB许可MariaDB根据GPLv2获得许可,而MySQL提供两种许可选项——GPLv2(针对社区版)和企业许可。MySQL的两个许可证之间的主要区别在于可用的功能和支持服务。用户可以使用MariaDB的所有功能,但MySQL却不是这样。MySQLCommunityEdition不包括线程池等功能,这些功能会对数据库和查询性能产生重大影响。发布频率和更新通常,MariaDB的发布频率高于MySQL。发帖太频繁既有好处也有坏处。从好的方面来说,用户可以更及时地收到功能和错误修复。不利的一面是,要使MariaDB保持最新状态需要做更多的工作。技术支持MySQL的支持团队(包括MySQL开发人员和支持工程师)为客户提供24/7服务。Oracle提供多种支持选项,包括扩展支持、持续支持和高级支持,具体取决于客户要求。MariaDB支持团队的支持工程师包括MariaDB和MySQL数据库专家(因为许多功能最初是由MySQL团队开发的),他们为生产系统提供24/7的企业级支持。MySQL的持续开发主要由Oracle的MySQL团队完成,而MariaDB的开发则通过公众投票和邮件列表讨论进行。此外,任何人都可以向MariaDB提交补丁,MariaDB开发团队将考虑将其添加到主代码库中。因此,在某种程度上,MariaDB是由社区开发的,而MySQL主要是由Oracle开发的。结论好吧,我们不能为您做决定。我们能做的就是问你一些有针对性的问题,然后你可以自己决定:你是否分别针对这两个数据库测试了你的产品性能?哪个表现更好,为什么?您要使用其中一个数据库专门提供的功能吗?您要使用其中一个数据库专门提供的数据库引擎吗?能够对数据库开发过程产生影响对您来说有多重要?能够对下一个功能更改进行投票对您来说有多重要?您是要为企业版付费还是使用社区版?社区版的功能能否满足您的需求?默认情况下,您的操作系统是否支持您选择的数据库?部署它的工作量大吗?您使用的是哪个云提供商?他们是否提供托管服务,其中包括您选择的数据库?您打算将来从一种数据库类型迁移到另一种数据库类型吗?如果是这样,您是否考虑过兼容性和复制问题?更多MySQL与MariaDB的区别及性能对比,请参考以下相关链接:https://blog.csdn.net/cpongo2/article/details/89017040
