基础设施

MariaDB与MySQL与PostgreSQL: 选择最佳数据库的流程图

我应该使用哪个RDB,MariaDB,MySQL或PostgreSQL?

我们经常遇到文章列出了什么是好的和什么是坏的,但是对于读者您没有结论应该使用哪一种。
因此,我提供了流程图,通过它您可以为您选择合适的RDB(关系数据库)。
在本文中,我比较了3个主要的OSS RDB(MariaDB,MySQL和PostgreSQL)

除基准测试结果外,我还将向您展示流程图的背景。

为您选择合适的RDB的流程图

问题1 您的服务将基于WordPress创建
是=> MariaDB
否=> 问题2

问题2 您是否要开发移动应用程序或使用GIS的应用程序?
是=> PostgreSQL
否=> 问题3

问题3 1个表中是否需要64个以上带有索引的列?
是=> PostgreSQL
否=> MariaDB

流程图的背景

总是选择MariaDB而不是MySQL的原因

– Oracle购买了MySQL,这引起了人们的关注,大多数Linux发行商现在都在采用MariaDB。
– MySQL的原始开发人员正在开发MariaDB。 Oracle有其自己的RDB Oracle,因此就Oracle而言,很难完全致力于MySQL的成功。结果,与MySQL相比,MariaDB现在具有更多功能
– 与MySQL相比,MariaDB根据2020年5月的基准测试结果,在默认配置和AWS RDS设置中为您提供了更好的性能。

因此,如果您想选择采用MariaDB还是MySQL,MariaDB是您的更好选择。


选择MariaDB代替Postgre的原因

– WordPress仅支持MariaDB和MySQL,这意味着WordPress不适用于PostgreSQL
– WordPress作为网站的市场份额超过了36%,并且仍在增长。即使您不会仅通过WordPress构建系统,也始终需要WordPress的基础架构
– 如果您拥有适用于WordPress的MariaDB系统,维护PostgreSQL和MariaDB会使您花费更多的系统和人力资源
– 与PosgreSQL相比,MariaDB(MySQL)具有更好的数据库管理工具,如WorkBenchA5:SQL Mk-2
– MariaDB基本上与MySQL兼容,并且许多工程师都有使用MySQL的经验
– 与PostgreSQL相比,MariaDB根据2020年5月的基准测试结果,在默认配置和AWS RDS设置中为您提供了更好的性能


选择PostgreSQL而不是MariaDB的原因

– PostgreSQL支持本机JSON类型(jsonb),因此访问Json数据的速度远快于MariaDB(MySQL),尽管MariaDB提供的Virtual Column性能不足
– 提供REST API的第三方软件(Graphile)可帮助您开发使用JSON的软件,这意味着您可以开发移动应用程序和SPA (单页应用程序),工作量更少。
PostGIS可帮助您使用GIS开发应用程序
– PostgreSQL比MariaDB具有更多功能
– 错误条件比MariaDB严格,因此您可以避免由于意外缺少数据而导致的问题。
– MariaDB(MySQL)每个表只能有64个键索引。 PostgreSQL没有这样的限制。

通过基准测试来比较RDB的性能

使用默认版本的最新版本进行比较

已测试:2020年5月
机器:1个服务器= Linode 1CPU / 1GB RAM / SSD
测试条件:使用sysbench在60秒内进行8个并发访问。我使用了每个RDB的最新稳定版本以及它们的默认设置。

在这个基准测试中,结果是这样的
mariadb(版本10.4.12)> PostgreSQL(版本12.2)> mysql(版本8.0.2)

MariaDB
10.4.12
MySQL
8.0.20
PostgreSQL
12.2
每秒查询次数 7148 4757 5317
每秒交易次数 357 238 265
总查询 429040 285516 319284
读取查询 300328 199864 223552
写查询 85808 57101 63776
其他查询 42904 28551 31956
被忽略的错误 0 0 38

使用AWS RDS的最新版本进行比较

AWS RDS是托管数据库,因此通过使用它,您可以将RDB与调整后的状态进行比较。
AWS RDS的版本可能比官方最新版本稍旧。
机器:EC2(1CPU / 1GB)+ RDS(1CPU / 1GB)

在这个基准测试中,结果就是这样。
mariadb(ver10.4.8)> mysql(ver8.0.17)> postgresql(ver12.2)

MariaDB
10.4.8
MySQL
8.0.17
PostgreSQL
12.2
每秒查询次数 7540 6727 5732
每秒交易次数 377 336 286
总查询 452396 403757 344111
读取查询 316680 282632 240926
写查询 90477 80750 68750
其他查询 45239 40375 34435
被忽略的错误 1 1 34

摘要

功能对于选择RDB很重要,但是如果您没有发现任何吸引人的区别,那么在性能方面采用MariaDB看起来很有吸引力。

在实际业务中的使用状态

2020/05的职位数量
Indeed美国

MySQL 10110
PostgreSQL 4418
MariaDB 494

Indeed日本

MySQL 10308
PostgreSQL 6173
MariaDB 336

我知道性能和功能不是全部,但尽管MySQL性能和性能都不错,但与MySQL和PostgreSQL相比,MariaDB在使用方面却落后了很多,这令人有些惊讶。
无论如何,切换RDB都是有风险的,可能会花钱,因此,如果您没有遇到问题,切换就不容易了。