gpt4 book ai didi

mysql - 由于 COUNT 查询导致的 Amazon RDS CPU 利用率

转载 作者:行者123 更新时间:2023-11-29 13:54:42 27 4
gpt4 key购买 nike

我已在 Amazon EC2(新加坡区域)上发布了我的网站,并在同一区域使用 MySQL RDS 介质实例进行数据存储。

就我而言,大多数选择查询都有一些 COUNT 功能。这些查询显示的结果非常慢。我已经在表上创建了适当的索引,并检查了 EXPLAIN 命令来分析这些查询。它告诉我,需要全表扫描才能获得结果。

在我的 RDS 介质实例上,我已使用以下设置配置了自定义参数组。

log_queries_not_using_index = true,
slow_query_log = true,
long_query_time = 2 sec,
max_connections = 303,
innodb_buffer_pool_size = {DBInstanceClassMemory*3/4}

昨天我的 CPU 利用率超过 95%,我的网站因此崩溃了。流量没有大幅增加。

此外,我将数据转储到本地系统上,并测试了 COUNT 个查询之一。虽然它在 RDS 上运行大约需要 1.5 秒,但在我的本地系统上运行只需要大约 400 毫秒。我的本地系统(4GB RAM,Intel core 2 duo 2.8GHz)上的配置是:

max_connections = 100,
slow_query_log = true,
long_query_time = 2 sec,
innodb_buffer_pool_size = 72351744

那么,CPU 利用率激增以及 RDS 和我的本地系统之间的性能时间差异的原因可能是什么?

谢谢

最佳答案

根据表大小 - RDS 实例使用 EBS 来存储数据 - 如果您正在进行表扫描,则必须从 EBS 而不是本地缓存的内存中 key 获取数据,然后进行扫描它。因此,您可能会看到 CPU 所在的 RDS 实例与 SAN 中的 EBS 数据之间的网络延迟增加。当您在本地计算机上执行相同的查询时,唯一的延迟是磁盘头寻道时间。

CPU 时间之间存在差异 - 根据 Amazon EC2 单元的定义,m1.medium 的 CPU 时间比 core2 duo 少(因此扫描结果的机会也少)。

HTH - 一般来说,我会尽量避免在查询中执行 COUNT(s) 操作,因为这是一个效率极低的查询(如您所见),当数据库处于运行状态时,它可能并将继续导致令人讨厌的不良结果在实时变化的负载水平下。

R

关于mysql - 由于 COUNT 查询导致的 Amazon RDS CPU 利用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16054453/

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