首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制分配给慢速MySQL查询的资源

问限制分配给慢速MySQL查询的资源
EN

Stack Overflow用户
提问于 2017-10-14 22:40:56
回答 1查看 399关注 0票数 1

我有一个需要每X分钟运行一次的进程来更新某些信息。查询耗时10秒、20秒甚至1分钟都无关紧要。但重要的是,例如,信息至少每10分钟更新一次。

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

我会对运行查询的任何进程执行cpulimit,但是占用所有资源的进程是MySQL服务器本身,因此似乎我需要一些特定于MySQL的设置。

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

EN

回答 1

Stack Overflow用户

发布于 2017-10-14 23:02:07

MySQL无法告知mysqld服务器对某些查询使用较低优先级或较少的资源。相反,你需要专注于这些事情:

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

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

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

  • 使其对其他查询的干扰更少。

您没有向我们展示查询,所以这个答案的其余部分都是基于猜测的。

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

1b:阅读有关使用EXPLAIN和使用索引提高查询速度的信息。让你的大查询更快。索引可以大大加快WHERE子句的执行速度。

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

代码语言:javascript
复制
 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

在您发出其他查询之前。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46745749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档