繁体   English   中英

MariaDB性能较MySQL差

[英]Poor mariadb performance vs mysql

我听说Mariadb的性能比mysql好,因此我克隆了一个网站与他的整个数据库以比较两者之间的差异。

确实,所有的缓存看起来都更快,但是当没有缓存时,在一些大请求上,我的输出非常奇怪。mariadb比mysql差得多:

MariaDB> select SQL_NO_CACHE [...] ORDER BY FIELD LIMIT 0, 200;
Empty set (10.13 sec)

mysql> select SQL_NO_CACHE [...] ORDER BY FIELD LIMIT 0, 200;
Empty set (0.76 sec)

这是巨大的差异,这怎么可能?

完整的查询如下所示:

SELECT 
    SQL_NO_CACHE [...] 
FROM 
    table1
WHERE
    field1 = 'val1' and
    field2 = 'val2' and
    (field3='val3' or INSTR(field3, 'val3'))
ORDER BY field4 DESC LIMIT 0, 200;

这是请求的说明:

+----+-------------+----------+------+--------------------------+---------+---------+-------+--------+-----------------------------+
| id | select_type | table    | type | possible_keys            | key     | key_len | ref   | rows   | Extra                       |
+----+-------------+----------+------+--------------------------+---------+---------+-------+--------+-----------------------------+
|  1 | SIMPLE      | table1   | ref  | field1,field3            | field1  | 123     | const | 125832 | Using where; Using filesort |
+----+-------------+----------+------+--------------------------+---------+---------+-------+--------+-----------------------------+

除了获取时间之外,还可以在两种环境中运行EXPLAIN并进行比较。 也许MariaDB正在使用其他索引,或者正在执行完整扫描。 也许InnoDB统计信息不是最新的……向MariaDB优化器表明该表为空,否则为空。

由于差异如此之大,我倾向于考虑I / O可能是一个贡献者。

在MySQL实例上,InnoDB缓冲池可能比在Mariadb实例上的缓冲池大得多。 (这不是确定的诊断。这只是我要考虑的问题。

我将研究InnoDB缓冲区高速缓存的大小以及存储体系结构,并验证它们在两个服务器上是否相同。

比较性能时,我将在每个实例上多次运行相同的查询,浪费掉第一次执行的时间,然后平均剩余时间。

说“克隆整个数据库”使我们相信数据库的所有内容都是相同的,相同的存储引擎,相同的索引,相同的字符集和字符列的排序规则,等效的数据库配置,等等。 但是,也许我们的信念没有根据。

很难说这是一个测试用例错误,还是分支之间的差异很大。 我将探讨许多可能性中的一些(除了Spencer的可能性):

请提供SHOW CREATE TABLE

两台服务器都需要

INDEX(field1, field2, field4)

1和2可以任意顺序排列; 最后需要有4个。

有子查询吗? 这是MySQL和MariaDB大相径庭的领域。

OR是性能杀手; 您想要使用UNION帮助吗?

我的经验法则之一是缓存的差异是10倍。 这两个时序大约相差10倍。 难道MySQL正在使用热缓存? 简单的测试是两次运行两次,然后进行第二次。

什么版本的MySQL和MariaDB? 他们的优化程序开始以5.6 / 10.0进行大量转移。 无论哪种方式,我都看到较大的时间差异。 (而且跟踪提供帮助的优化器功能并不总是那么容易。)

是否涉及虚拟或生成列? 这是另一个重大分歧的领域。 还是JSON? 我是否已经要求SHOW CREATE TABLE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM