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

MariaDB got much faster, and I can't find the cause?

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

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

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

其他线索:

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

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

谢谢。

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

(珍惜这一刻,成绩往往会逆向而行。)

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

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

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

这需要一段时间,但它会命中 table 中的每一行。

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

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

第一个是 运行,当时 none 的数据被 缓存 在 RAM 中;第二个是所有缓存。

运行第三次了;又是1秒

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

长时间远离机器;不要碰 table。 可能回到 10 秒。为此,请查看 RAM 的大小和 innodb_buffer_pool_size。还要寻找大型 table 扫描,将所有内容都从缓存中删除。