MariaDB变快了,我找不到原因?

Posted

技术标签:

【中文标题】MariaDB变快了,我找不到原因?【英文标题】:MariaDB got much faster, and I can't find the cause? 【发布时间】:2021-05-16 17:00:02 【问题描述】:

我担心我的 MariaDB 10.4.12 数据库查询执行时间会变得更快,而无需对我的数据库架构或数据进行任何更新。虽然总是欢迎加速,但我担心这种加速的根本原因,特别是因为我在过去 24 小时内没有推出任何更改。这个特定的查询在一夜之间加速了 60 倍。

我有一个 NodeJS Web 应用程序,可以将大型数据集过滤成“报告”页面,加载通常需要 10-12 秒。我的主表有 350 万行,基本查询涉及许多 joins、日期比较和文本比较。有微调查询的空间,但它适用于它的设计目的,我可以忍受 10 秒的加载时间。不过,今天早上我注意到,我的查询在不到 1 秒的时间内就被执行了,而我没有任何最近更改。

应用程序的最新更改是在五天前推出的,这影响了被拉入此数据库的数据量。同一台服务器上的一个单独的应用程序每 10 分钟访问一个数据集,并将这些行复制到“报告”应用程序与之通信的同一个数据库中。直到这次更新,查询平均收集和插入约 80,000 行,大约需要 8-10 秒才能将数据完全复制到这个数据库中。我五天前的更改将插入的行数减少到平均约 20,000 行。

其他线索:

phpMyAdmin 仍然需要 10-12 秒来运行查询,而 mysql 命令行工具需要不到 1 秒 MariaDB 临时目录在 7 天前更改为更大的分区 在 24 小时前测试查询速度很慢(10-12 秒) 在运行相同应用程序且运行相同 MySQL 实例(相同架构和数据)的预生产服务器上查询仍然很慢

我目前的运行理论是,在 NodeJS 报告的时间范围内(插入 8-10 秒)没有执行约 80,000 次插入,而是在 MariaDB 临时目录中等待,直到它们可以完全执行写入数据库。这表明数据库经常因这些写入而陷入困境,将数量减少到约 20k 可以让数据库更快地插入,从而让选择查询在今天早上运行得更快。

我应该担心这种加速吗? MariaDB 能否找到一种更快的方法来索引我的数据?我要疯了吗?

谢谢。

【问题讨论】:

【参考方案1】:

别担心。这种事情可能是由争用(多个数据库客户端同时使用数据库)和各种其他事情引起的。

(珍惜这一刻。表现通常是相反的方向。)

您可以测试正确性以提高您的信心水平。检查一些较旧的和一些较新的记录,看看它们是否仍然包含良好的数据。

或者全表扫描查询,类似这样的

    SELECT COUNT(*), AVG(some_number_column), MIN(some_text_column) FROM mytable

这需要一段时间,但它会影响表格中的每一行。

您可能不需要这样做,但这是一种仔细检查的方式(并告诉您的老板,“我仔细检查了。)

【讨论】:

【参考方案2】:

10 秒,然后是 1 秒。那是“正常的”。

第一个在没有数据缓存在 RAM 中时运行;第二个是所有缓存。

第三次运行它;又是 1 秒。

重启 MariaDB 并再次运行;这将再次需要 10 秒。

长时间远离机器;不要碰桌子。 可能回到 10 秒。为此,请查看 RAM 的大小和innodb_buffer_pool_size。还要寻找将所有内容都超出缓存的大表扫描。

【讨论】:

以上是关于MariaDB变快了,我找不到原因?的主要内容,如果未能解决你的问题,请参考以下文章

iOS:在地图上绘制 MKTileOverlay 导致 CPU 使用率和内存高。我找不到原因。?

swiftUI 2.0列表滚动很慢,我找不到原因..即使是保罗哈德森的伎俩也不起作用

MacBook Pro 耗电变快是啥原因?应该怎么解决

MacBook Pro 耗电变快是啥原因?应该怎么解决

Java 1.8.0_60、MariaDB v10.0 和 mariadb-java-client 1.2.2,“找不到合适的驱动程序”

MonoDevelop + NAudio + Ubuntu Linux 告诉我找不到 Winmm.dll?