

# 排除 Amazon Aurora MySQL 数据库性能故障
<a name="aurora-mysql-troubleshooting"></a>

本主题重点介绍一些常见的 Aurora MySQL 数据库性能问题，以及如何进行故障排除或收集信息来快速修复这些问题。我们将数据库性能分为两类：
+ 服务器性能 - 整个数据库服务器的运行速度较慢。
+ 查询性能 - 一个或多个查询的运行时间较长。

## AWS 监控选项
<a name="aurora-mysql-troubleshooting.monitoring"></a>

我们建议您使用以下 AWS 监控选项来协助进行故障排除：
+ Amazon CloudWatch – Amazon CloudWatch 实时监控 AWS 资源以及在 AWS 上运行的应用程序。您可以使用 CloudWatch 收集和跟踪指标，这些指标是您可以针对资源和应用程序衡量的变量。有关更多信息，请参阅 [What is Amazon CloudWatch?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)

  您可以在 AWS 管理控制台上查看数据库实例的所有系统指标和过程信息。您可以配置 Aurora MySQL 数据库集群以将一般、慢速、审核和错误日志数据发布到 Amazon CloudWatch Logs 中的日志组。这样，您就可以查看趋势，在主机受到影响时维护日志，并创建“正常”性能的基准来轻松地识别异常或变化。有关更多信息，请参阅 [将 Amazon Aurora MySQL 日志发布到 Amazon CloudWatch Logs](AuroraMySQL.Integrating.CloudWatch.md)。
+ 增强监控 – 要为 Aurora MySQL 数据库启用其它 Amazon CloudWatch 指标，请开启增强监控。创建或修改 Aurora 数据库集群时，请选择**启用增强监控**。这样，Aurora 就可以向 CloudWatch 发布性能指标。可用的一些关键指标包括 CPU 使用率、数据库连接、存储使用情况和查询延迟。这些指标有助于确定性能瓶颈。

  为数据库实例传输的信息量与为增强监控功能定义的粒度成正比。监控间隔越短，操作系统指标报告频率越高，监控成本也就越高。要管理成本，请为您的 AWS 账户中的不同实例设置不同的粒度。创建实例时的默认粒度为 60 秒。有关更多信息，请参阅 [增强监测的成本](USER_Monitoring.OS.md#USER_Monitoring.OS.cost)。
+ Performance Insights – 您可以查看所有数据库调用指标。这包括数据库锁定、等待和已处理的行数，所有这些都可用于进行故障排除。创建或修改 Aurora 数据库集群时，请选择**开启 Performance Insights**。默认情况下，Performance Insights 的数据留存期为 7 天，但可以对其进行自定义来分析长期性能趋势。如果留存期超过 7 天，则需要升级到付费套餐。有关更多信息，请参阅 [Performance Insights 定价](https://aws.amazon.com/rds/performance-insights/pricing/)。您可以分别为每个 Aurora 数据库实例设置数据留存期。有关更多信息，请参阅 [在 Amazon Aurora 上使用性能详情监控数据库负载](USER_PerfInsights.md)。

## 出现 Aurora MySQL 数据库性能问题的最常见原因
<a name="aurora-mysql-troubleshooting-common"></a>

您可以使用以下步骤来解决 Aurora MySQL 数据库中的性能问题。我们按调查的逻辑顺序列出了这些步骤，但它们并不是线性的。一项发现可能跨越多个步骤，从而形成一系列调查路径。

1. [工作负载](aurora-mysql-troubleshooting-workload.md) – 了解您的数据库工作负载。

1. [日志记录](aurora-mysql-troubleshooting-logging.md) – 查看所有数据库日志。

1. [数据库连接](mysql-troubleshooting-dbconn.md) – 确保应用程序与数据库之间的连接可靠。

1. [查询性能](aurora-mysql-troubleshooting-query.md) – 检查您的查询执行计划，查看它们是否已更改。代码更改可能会导致计划发生变化。