gpt4 book ai didi

mysql - 限制分配给慢速 MySQL 查询的资源

转载 作者:行者123 更新时间:2023-11-29 18:19:10 25 4
gpt4 key购买 nike

我有一个进程需要每 X 分钟运行一次以更新某些信息。查询是否需要 10 秒、20 秒甚至一分钟都没关系。但重要的是,信息至少每 10 分钟更新一次。

由于查询速度很慢,并且服务器正在用于其他查询,因此会影响其他用户。这就是我正在努力解决的情况。

我会cpulimit哪个进程运行查询,但是占用所有资源的进程是MySQL服务器本身,所以看起来我需要一些MySQL特定的设置。

这是一个单一的 MySQL 查询导致服务器卡住。我想限制分配给该特定查询的资源。

最佳答案

MySQL 无法告诉 mysqld 服务器对某些查询使用较低优先级或较少资源。您需要关注这些事情:

  1. 使有问题的查询花费更少的时间。这可以通过其中一种或两种方式来完成。

    a.将其分解为更小的查询

    b.创建适当的索引以使其更快

  2. 减少对其他查询的干扰。

您没有向我们展示查询,因此该答案的其余部分基于猜测。

1a:以数百或数千条记录为单位进行更新。重复这些(较短的)更新,直到任务完成。一旦每个段运行,它将退出并让其他查询完成。

1b:了解如何使用 EXPLAIN 以及使用索引来加快查询速度。让您的大查询更快。索引可以大大加速您的 WHERE 子句。

2:可以设置isolation level用于系统上的查询,这样它们就不会相互依赖。这可能会让他们更优雅地共享服务器。发出query to set the isolation level to READ UNCOMMITTED在您发出被更新作业阻止的查询之前。这将使他们完成,并使用更新作业完成之前存在的数据,而不是等待作业。

 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

在您发出其他查询之前。

如果您控制整个服务器,将 READ UNCOMMITTED 设置为默认隔离级别可能会更容易。

关于mysql - 限制分配给慢速 MySQL 查询的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46745749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com