各位可能非常关心MariaDB 与MySQL 的性能比较,选择其他解决方案时也会用类似的标准,但几乎没有人能够轻松说出MariaDB 与MySQL 哪个更快。要回答这个问题需要考虑很多方面(如下所示),所以本书将不会对此进行讨论。
测试方案在MariaDB 与MySQL 中是否都能以最佳方式运行?最佳标准是如何应用的?
MariaDB 与MySQL 服务器是否都调整为最佳状态?
是否充分考虑了MariaDB 和MySQL 的执行性能最优部分?
在相当长的时间内表现出稳定性能的性能测试结果是收集的?
在网上输入“MariaDB MySQL Performance Comparision”关键字搜索时,会看到许多测试结果。如果时间允许,可以进入这些网站查看MariaDB 与MySQL 的性能比较结果。图1-3 和图1-4 这两个曲线图分别来自MariaDB(https://mariadb.com/blog/sysbench-oltp-mysql-56-vsmariadb-100)与Planet MySQL(http://planet.mysql.com/entry/?id=36221)的基础测试图。
各位可以从上图了解我的意图。从图可以看出,测试结果会根据测试人以及所用测试方案的不同而不同。即便如此,我们也不能怀疑测试人员进行这种测试的能力。可以肯定的是,它们都是由MySQL 顶级专家所做的测试。其实,如果让我进行测试,我也很难比专家更精确、严密。
如何从上述测试结果判断MariaDB 和MySQL 哪个的性能更好呢?我认为,可以亲自用自己公司的服务模型测试MariaDB 与MySQL 并比较测试结果。但这就要求所选数据库的服务器选项与测试方案都是最合适的。事实上,从如此类似的RDBMS 中选择一个是相当困难的。从图1-3 与图1-4 的测试结果中可以明显看到,有一项指标至关重要。两个测试结果表明MariaDB与MySQL 性能差别不大,不足以对选择MariaDB 还是MySQL 产生决定性的影响。那么来想一想,我们提供的所有服务中,是否有服务带有“每秒事务处理量不能为3000,必须达到3500”这种强约束条件呢?其实,几乎不存在这种情形。对于廉价设备中运行的MySQL 服务器而言,其性能通常由硬件性能决定,所以不必太纠结于这些小的性能差异,也没有必要比较MariaDB 与MySQL 的性能。
如果有DBMS 的实际运营经验或长期使用经验,那么你必定对一个项目有切肤之痛,那就是“稳定性”。上面两个测试只比较了两个数据库系统在单位时间内的业务最大处理量(事务数或查询数),但对于向外提供服务的数据库服务器而言,保持其性能的稳定性是最重要的。因为我们往往需要其长时间运行——短则几个月,长则几年——且在运行期间内保持稳定性能。
图1-5 不是实际的测试结果,而是我为了说明DBMS 的稳定性而绘制的性能曲线图。图中曲线表示DBMS-1 与DBMS-2 两个DBMS 服务器每秒的事务处理量,在11:00~11:10 这个时间段内,两个DBMS 的总事务处理量(Throughput,吞吐量)是一样的。但是从某个时间点看,有时DBMS-2 要比DBMS-1 性能高,有时又比DBMS-1 的性能低。此时可以做出如下判断:DBMS-1 每秒能够持续处理100 个左右的事务,而DBMS-2 每秒只能处理60 个(曲线谷值)左右的事务。因为在一般的服务环境中,一定级别的事务请求会持续到来。
图1-5 中的DBMS-1 与DBMS-2 并非对应于MariaDB 与MySQL 服务器。根据各种服务特点,MariaDB 与MySQL 服务器有时表现出DBMS-2 上下波动的行为特征,有时又表现出DBMS-1 稳定的行为特征。数据库服务器表现出DBMS-2 不稳定的行为特征时,就要查找是否存在可以改善的选项。找到这些重要选项并进行调优,最终使数据库系统能够高效、稳定地运行。