gpt4 book ai didi

mysql - mariadb 性能差 vs mysql

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:40 24 4
gpt4 key购买 nike

听说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 可能是一个贡献者。

也许 InnoDB 缓冲池在 MySQL 实例上比在 Mariadb 实例上大得多。 (这不是明确的诊断。这只是我会考虑的事情。

我会查看 InnoDB 缓冲区缓存的大小和存储架构,并验证它们在两台服务器上是否相同。

在比较性能时,我会在每个实例上多次运行相同的查询,舍弃第一次执行的时间,并对剩余的时间进行平均。

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

关于mysql - mariadb 性能差 vs mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50745143/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com