查询时间:1.293323 锁定时间:0.001307 发送行数:1 检查行数:1063076

查询时间:1.293323 锁定时间:0.001307 发送行数:1 检查行数:1063076

我发现 MariaDB 和 MySQL 服务器之间的性能差异很奇怪

我有两台服务器:

1° 在第一个服务器上,我运行的是随 Debian 9.1 分发的标准 MariaDB 包 (10.1.26-0+deb9u1) 2° 在第二个服务器上,我运行的是随 CentOS 7.1.1503 分发的标准 MySQL 包 (mysql-community-server-5.6.26-2.el7.x86_64)

两台服务器的硬件和工作负载完全相同(实际上没有)。在两台服务器上,我都从第三台服务器导入了 1.5 GB 的数据库(根据转储,表使用的是 InnoDB)。

对于基本查询,性能相同。不幸的是,对于更复杂的查询(使用正确索引表的多个连接),我遇到了巨大的差异。

例如查询:MariaDB 1,293 秒 <> 0.389 秒 MySQL

在 MariaDB 上

查询时间:1.293323 锁定时间:0.001307 发送行数:1 检查行数:1063076

我已经尝试在两台服务器上使用默认设置...MySQL 总是能获得更好的结果。

我也尝试过调整 MariaDB 上的一些缓存设置……但 MySQL 的默认设置仍然更好

在这个查询中,我看到使用的索引是不同的

MySQL 索引类型:“index_merge”<> MariaDB 索引类型“range”,并且 MariaDB 上仅使用一个索引

我确信这只是一个缺少设置的问题...但我不知道在哪里搜索。

我正在寻找一些建议或想法来研究。有人能帮助我吗?

此致

蒂博

答案1

我最终发现我的问题与优化方法的差异有关。这在https://mariadb.com/kb/en/library/fair-choice-between-range-and-index_merge-optimizations/

对于有问题的查询,可以使用 2 个索引,但优化引擎只选择了一个

我首先通过删除已使用的索引(强制使用其他索引)来提高性能。然后,我使用所需字段的组合创建了一个新索引

相关内容