【发布时间】: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 能否找到一种更快的方法来索引我的数据?我要疯了吗?
谢谢。
【问题讨论】:
标签: node.js phpmyadmin mariadb query-optimization