mysql - 等待事件“io/table/sql/handler” - cpu 峰值

问题描述 投票:0回答:1

我在 AWS Aurora MySQL (8.0.mysql_aurora.3.04.0) 中看到很多此类等待事件,并且文档显示“此事件表明工作负载活动增加。活动增加意味着 I/O 增加”,这会导致 I/O 增加” CPU 使用率。

注意,底层查询只是针对读取器运行的选择语句。我们是一个基于 api 的天气应用程序,“IN”子句下的参数范围可以从 1000 到 5000 [max_allowed_packets = 1GB] 。查询扫描相应的表(250GB)并使用适当的索引来检索记录并在几秒(有时是几毫秒)内完成。我是 mysql 新手,正在寻求一些有关如何通过调整任何配置参数来避免/减少 cpu 峰值的帮助。

PS:我看到数据库集群上的以下 CloudWatch 指标出现峰值

AuroraSlowConnectionHandleCount Aurora副本延迟 DB负载非CPU 读取IOPS 读取延迟 读取吞吐量 选择延迟

感谢您的时间!

为底层查询生成查询计划并确认其不进行表扫描。

mysql amazon-web-services query-optimization database-performance amazon-aurora
1个回答
0
投票

看来您主要担心的是资源消耗激增,响应时间不是问题。

我不是 Mysql 专家,但下面的一些一般性内容可能值得检查(基于我的 Oracle 数据库背景,更多的是为了降低成本而不是确定峰值的原因)

  1. 即使不进行表扫描,数据库索引通常最适合从大表中返回几行,而不是扫描(并返回)其中的大块。

  2. 查询返回的行数占表中总行数的百分比?如果它返回大部分行,那么使用索引的好处就会减少。

  3. 查询是否选择它甚至不使用的列?

  4. 表是否分区?它的结构是否适合分区,也许它有一个日期时间列,该列也在 SQL 中使用,在这种情况下分区修剪可以减少总体 IO 和资源消耗量?

  5. 表格是否需要一些优化或重新组织?

  6. 是否有频繁的密集dml针对呢? 希望对事情有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.