我担心我的MariaDB 10.4.12数据库查询执行时间,在不对数据库模式或数据进行任何更新的情况下,执行时间会变得更快。虽然加速总是受欢迎的,但我担心这种加速的根本原因,特别是因为我在过去24小时内没有推出任何更改。这个特定的查询在一夜之间加速了60倍。
我有一个NodeJS web应用程序,它将大型数据集过滤成“报告”页面,通常需要10-12秒才能加载。我的主表有350万行,基本查询涉及许多
、日期比较和文本比较。查询还有微调的空间,但它的效果与它的设计目标相符,我可以忍受10秒的加载时间。不过,今天早上我注意到,我的查询在不到1秒的时间内执行完毕
最近
我的改变。
对应用程序的最新更改是在五天前推出的,这影响了拉入此数据库的数据量。同一服务器上的单独应用程序每隔10分钟访问一个数据集,并将这些行复制到“报告”应用程序与之通信的同一数据库中。在此更新之前,查询平均收集和插入约80,000行,大约需要8-10秒才能将数据完全复制到此数据库中。我在五天前所做的更改将插入的行数平均减少到大约20,000行。
其他线索:
PHPMyAdmin仍然需要10-12秒来运行查询,而MySQL命令行工具只需不到1秒
MariaDB临时目录在7天前更改为更大的分区
24小时前,查询被测试为很慢(10-12秒
在运行相同应用程序且运行相同MySQL实例(相同模式和数据)的预生产服务器上,查询仍然很慢
我目前运行的理论是,大约80,000个插入没有在NodeJS报告的时间范围内执行(插入需要8-10秒),而是在MariaDB临时目录中等待,直到它们完全写入数据库。这表明数据库经常被这些写操作阻塞,将数量减少到约20k可以让数据库插入得更快,从而允许select查询在今天早上运行得更快。
我应该担心这个速度吗?MariaDB能找到一种更快的方法来索引我的数据吗?我是不是疯了?
谢谢你。
发布于 2021-02-15 07:44:02
别担心。这种事情可能是由争用(多个数据库客户端并发地使用数据库)和各种其他事情引起的。
)珍视这一刻。性能通常与之相反。)
你可以通过测试正确性来提高你的置信度。检查一些较旧的记录和一些较新的记录,看看它们是否仍然包含良好的数据。
或全表扫描查询,如下所示
SELECT COUNT(*), AVG(some_number_column), MIN(some_text_column) FROM mytable这将需要一段时间,但它将命中表中的每一行。
你可能不需要这样做,但这是一种双重检查的方法(并告诉你的老板,“我仔细检查了一下。)”
发布于 2021-03-02 01:28:25
10秒,然后1秒。这是“正常的”。
第一个是在没有数据的情况下运行的
已缓存
在RAM中;第二个是所有缓存的。
第三次运行它;它将再次运行1秒。
重新启动MariaDB并再次运行它;这将再次需要10秒。
离开机器很长一段时间,不要碰桌子。它
威力
回到10秒。为此,请查看RAM的大小和
..。也要寻找大型表扫描,它会将所有内容都从缓存中剔除。
https://stackoverflow.com/questions/66180391
复制相似问题