

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 資料庫執行個體監控
<a name="db-instance-monitoring"></a>

[https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.html)是 Amazon RDS 的基本建置區塊。它是在雲端中執行的隔離資料庫環境。對於 MySQL 和 MariaDB 資料庫，資料庫執行個體是 [mysqld](https://dev.mysql.com/doc/refman/8.0/en/mysqld.html) 程式，也稱為 MySQL 伺服器，其中包含多個執行緒和元件，例如 SQL 剖析器、查詢最佳化器、執行緒/連線處理常式、系統和狀態變數，以及一或多個可插入儲存引擎。每個儲存引擎都旨在支援特殊的使用案例。預設和建議的儲存引擎是 [InnoDB](https://dev.mysql.com/doc/refman/8.0/en/innodb-architecture.html)，這是一種交易、一般用途、關聯式資料庫引擎，符合原子性、一致性、隔離、耐久性 (ACID) 模型。InnoDB [具有記憶體內結構](https://dev.mysql.com/doc/refman/8.0/en/innodb-in-memory-structures.html) （緩衝集區、變更緩衝區、適應性雜湊索引、日誌緩衝區） 以及[磁碟上結構 ](https://dev.mysql.com/doc/refman/8.0/en/innodb-on-disk-structures.html)（資料表空間、資料表、索引、復原日誌、重做日誌、雙寫緩衝檔案）。為了確保您的資料庫緊密遵循 ACID 模型，[InnoDB 儲存引擎實作許多功能](https://dev.mysql.com/doc/refman/8.0/en/mysql-acid.html)來保護您的資料，包括交易、遞交、轉返、損毀復原、資料列層級鎖定和多版本並行控制 (MVCC)。

資料庫執行個體的所有這些內部元件會共同運作，以協助將資料的可用性、完整性和安全性維持在預期且令人滿意的效能層級。根據您的工作負載，每個元件和功能可能會對 CPU、記憶體、網路和儲存子系統施加資源需求。當特定資源的需求激增超過佈建容量或該資源的軟體限制時 （由組態參數或軟體設計施加），資料庫執行個體可能會遇到效能降低或完全無法使用和損毀。因此，測量和監控這些內部元件、將它們與定義的基準值進行比較，以及在監控的值偏離預期值時產生提醒至關重要。

如前所述，您可以使用不同的[工具](monitoring-tools.md)來監控 MySQL 和 MariaDB 執行個體。我們建議您使用 Amazon RDS Performance Insights 和 CloudWatch 工具進行監控和警示，因為這些工具已與 Amazon RDS 整合、收集高解析度指標、近乎即時地呈現最新的效能資訊，以及產生警示。

無論您偏好的監控工具為何，建議您在 MySQL 和 MariaDB 資料庫執行個體中[開啟效能結構描述](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.EnableMySQL.html)。[效能結構描述](https://dev.mysql.com/doc/refman/8.0/en/performance-schema.html)是監控 MySQL 伺服器 （資料庫執行個體） 在低層級操作的選用功能，旨在對整體資料庫效能產生最小的影響。您可以使用 `performance_schema` 參數來管理此功能。雖然此參數是選用的，但您必須使用它來收集 Amazon RDS Performance Insights 收集的高解析度 （一秒） 每個 SQL 指標、作用中工作階段指標、等待事件和其他詳細的低階監控資訊。

**章節**
+ [資料庫執行個體的績效詳情指標](db-instance-performance-insights.md)
+ [資料庫執行個體的 CloudWatch 指標](db-instance-cloudwatch-metrics.md)
+ [將績效詳情指標發佈至 CloudWatch](publishing-performance-insights-to-cloudwatch.md)

# 資料庫執行個體的績效詳情指標
<a name="db-instance-performance-insights"></a>

Performance Insights 會監控不同類型的指標，如下列各節所述。

## 資料庫負載
<a name="dbload"></a>

資料庫負載 (`DBLoad`) 是績效詳情中測量資料庫中活動層級的關鍵指標。它會每秒收集一次，並自動發佈到 Amazon CloudWatch。它代表資料庫執行個體在平均作用中工作階段 (AAS) 中的活動，這是同時執行 SQL 查詢的工作階段數目。`DBLoad` 指標與其他時間序列指標不同，因為它可以使用以下五個維度中的任何一個來解譯：等待、SQL、主機、使用者和資料庫。這些維度是`DBLoad`指標的子類別。您可以使用它們做為*依類別分割*，以代表資料庫載入的不同特性。如需如何計算資料庫負載的詳細說明，請參閱 Amazon RDS 文件中的[資料庫負載](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.ActiveSessions.html)。

下列畫面圖顯示績效詳情工具。

![\[Performance Insights 工具中的資料庫負載\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/database-load.png)


## 維度
<a name="dimensions"></a>
+ *等待事件*是資料庫工作階段等待資源或其他操作完成以繼續處理的條件。如果您執行 SQL 陳述式，例如 `SELECT * FROM big_table`，而且此資料表遠大於配置的 InnoDB 緩衝集區，則您的工作階段很可能會等待`wait/io/file/innodb/innodb_data_file`等待事件，這些事件是由資料檔案的實體 I/O 操作所造成。等待事件是資料庫監控的重要維度，因為它們表示可能的效能瓶頸。等待事件指出您在工作階段中執行的 SQL 陳述式花費最多時間等待的資源和操作。例如，當有大量交易的高資料庫活動時發生`wait/synch/mutex/innodb/trx_sys_mutex`事件，而執行緒已在 InnoDB 緩衝集區上取得鎖定以存取記憶體中的頁面時發生`wait/synch/mutex/innodb/buf_pool_mutex`事件。如需有關所有 MySQL 和 MariaDB 等待事件的資訊，請參閱 MySQL 文件中的[等待事件摘要資料表](https://dev.mysql.com/doc/refman/8.0/en/performance-schema-wait-summary-tables.html)。若要了解如何解譯檢測器名稱，請參閱 MySQL 文件中的[效能結構描述檢測器命名慣例](https://dev.mysql.com/doc/refman/8.0/en/performance-schema-instrument-naming.html)。
+ *SQL* 會顯示哪些 SQL 陳述式對總資料庫負載的貢獻最大。位於 Amazon RDS Performance Insights 中**資料庫負載**圖表下方的**最高維度**資料表是互動式的。您可以按一下「依等待**載入 (AAS)」欄中的列，以取得與 SQL 陳述式相關聯的等待**事件詳細清單。當您在清單中選取 SQL 陳述式時，績效詳情會在**資料庫負載**圖表中顯示相關聯的等待事件，並在 SQL 文字區段中顯示 **SQL 陳述式文字**。SQL 統計資料會顯示在**最高維度**資料表的右側。
+ *主機*會顯示連線用戶端的主機名稱。此維度可協助您識別哪些用戶端主機將大部分負載傳送至資料庫。
+ *使用者*依登入資料庫的使用者將資料庫負載分組。
+ *資料庫*會根據用戶端連線的資料庫名稱，將資料庫負載分組。

## 計數器指標
<a name="counter-metrics"></a>

計數器指標是累積指標，其值只能在資料庫執行個體重新啟動時增加或重設為零。計數器指標的值無法降至其先前的值。這些指標代表單一、單調增加的計數器。
+ [原生計數器](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights_Counters.html#USER_PerfInsights_Counters.MySQL.Native)是由資料庫引擎而非 Amazon RDS 定義的指標。例如：
  + `SQL.Innodb_rows_inserted` 代表插入 InnoDB 資料表的列數。
  + `SQL.Select_scan` 代表完成第一個資料表完整掃描的聯結數目。
  + `Cache.Innodb_buffer_pool_reads` 代表 InnoDB 引擎無法從緩衝集區擷取且必須直接從磁碟讀取的邏輯讀取數目。
  + `Cache.Innodb_buffer_pool_read_requests` 代表邏輯讀取請求的數量。

  如需所有原生指標的定義，請參閱 MySQL 文件中的[伺服器狀態變數](https://dev.mysql.com/doc/refman/8.0/en/server-status-variables.html)。
+ [非原生計數器](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights_Counters.html#USER_PerfInsights_Counters.MySQL.NonNative)由 Amazon RDS 定義。您可以使用特定查詢來取得這些指標，或在計算中使用兩個或多個原生指標來衍生這些指標。非原生計數器指標可以代表延遲、比率或命中率。例如：
  + `Cache.innoDB_buffer_pool_hits` 代表 InnoDB 可以在不使用磁碟的情況下從緩衝集區擷取的讀取操作數目。它根據原生計數器指標計算，如下所示：

    ```
    db.Cache.Innodb_buffer_pool_read_requests - db.Cache.Innodb_buffer_pool_reads
    ```
  + `IO.innoDB_datafile_writes_to_disk` 代表磁碟的 InnoDB 資料檔案寫入操作數目。它只會擷取資料檔案的操作，而不是重寫或重做記錄寫入操作。其計算方式如下：

    ```
    db.IO.Innodb_data_writes - db.IO.Innodb_log_writes - db.IO.Innodb_dblwr_writes
    ```

您可以直接在績效詳情儀表板中視覺化資料庫執行個體指標。選擇**管理指標**，選擇**資料庫指標**索引標籤，然後選取感興趣的指標，如下圖所示。

![\[在績效詳情中選取資料庫執行個體指標\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/selecting-metrics.png)


選擇**更新圖形**按鈕以顯示您選取的指標，如下圖所示。

![\[在績效詳情中檢視資料庫執行個體指標\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/selecting-metrics-results.png)


## SQL Statistics
<a name="sql-stats"></a>

Performance Insights 會針對查詢執行的每個秒和每個 SQL 呼叫，收集 SQL 查詢的效能相關指標。一般而言，績效詳情會在陳述式和摘要層級收集 [SQL 統計資料](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.html)。不過，對於 MariaDB 和 MySQL 資料庫執行個體，統計資料只會在摘要層級收集。
+ 摘要統計資料是具有相同模式但最終具有不同常值之所有查詢的複合指標。摘要會以變數取代特定常值；例如：

  ```
  SELECT department_id, department_name FROM departments WHERE location_id = ?
  ```
+ 有些指標代表每個摘要 SQL 陳述式*的每秒*統計資料。例如， `sql_tokenized.stats.count_star_per_sec`代表每秒呼叫數 （也就是 SQL 陳述式每秒執行多少次）。
+ Performance Insights 也包含提供 SQL 陳述式*每個呼叫*統計資料的指標。例如， `sql_tokenized.stats.sum_timer_wait_per_call` 顯示每次呼叫 SQL 陳述式的平均延遲，以毫秒為單位。

SQL 統計資料可在績效詳情儀表板的**頂部** SQL 索引標籤的**頂部維度**資料表中取得。

![\[SQL Statistics\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/sql-stats.png)


# 資料庫執行個體的 CloudWatch 指標
<a name="db-instance-cloudwatch-metrics"></a>

Amazon CloudWatch 也包含 Amazon RDS 自動發佈的指標。命名`AWS/RDS`空間中的指標是*執行個體層級指標*，是指 Amazon RDS （服務） 執行個體 （即在雲端中執行的隔離資料庫環境），而不是嚴格感知 [mysqld](https://dev.mysql.com/doc/refman/8.0/en/mysqld.html) 程序的資料庫執行個體。因此，這些[預設指標](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-metrics.html)大部分都屬於作業系統指標的類別，在 術語的嚴格定義中。範例包括：`CPUUtilization`、`SwapUsage`、 `WriteIOPS`和其他。不過，有些資料庫執行個體指標適用於 MariaDB 和 MySQL：
+ `BinLogDiskUsage` – 二進位日誌佔用的磁碟空間量。
+ `DatabaseConnections` – 資料庫執行個體的用戶端網路連線數目。
+ `ReplicaLag` – 僅供讀取複本資料庫執行個體落後於來源資料庫執行個體的時間。

# 將績效詳情指標發佈至 CloudWatch
<a name="publishing-performance-insights-to-cloudwatch"></a>

Amazon RDS Performance Insights 會監控大多數資料庫執行個體指標和維度，並透過 AWS 管理主控台上的[績效詳情儀表板](https://console.aws.amazon.com/rds/home#performance-insights-v20206:)提供這些指標和維度。此儀表板非常適合資料庫故障診斷和根本原因分析。不過，無法在績效詳情中為效能相關指標建立警示。如果您想要根據績效詳情指標建立警示，這些指標必須在 CloudWatch 中。

Performance Insights [會自動將指標發佈至 CloudWatch](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Cloudwatch.html)。您可以從績效詳情中查詢相同的資料，但 CloudWatch 中的指標可讓您輕鬆地新增 CloudWatch 警示，並將指標新增至現有的 CloudWatch 儀表板。[計數器](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights_Counters.html)是作業系統和資料庫效能指標，例如 `os.memory.free`或 `db.Locks.Innodb_row_lock_time`。作業系統指標集合取決於增強型監控設定。如果已關閉增強型監控，則會每分鐘收集一次作業系統指標。如果開啟增強型監控，則會在所選期間內收集作業系統指標。如需詳細資訊，請參閱 Amazon RDS 文件中的[開啟和關閉增強型監控](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.Enabling.html#USER_Monitoring.OS.Enabling.Procedure)。

Performance Insights 可讓您[將資料庫執行個體的預先設定或自訂指標儀表板匯出](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PI_metrics_export_CW.html)至 CloudWatch。您可以將此指標儀表板匯出為新的儀表板，或將其新增至現有的 CloudWatch 儀表板。將績效詳情指標儀表板匯出至 CloudWatch 儀表板可讓您全面檢視系統的運作狀態，提供與系統中各種資源相關聯的指標概觀，例如 EC2 執行個體、Amazon Elastic File System (Amazon EFS) 資源和 Elastic Load Balancing (ELB) 資源，以及資料庫執行個體指標。

您可以使用 CloudWatch `DB_PERF_INSIGHTS` 指標數學函數，根據 CloudWatch 的績效詳情指標來查詢和建立警示和圖形。若要在績效詳情指標上建立警示，請遵循 [CloudWatch 文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_alarm_database_performance_insights.html)中的指示。例如，如果您想要在資料庫執行個體中的作用中交易總數達到特定閾值時觸發警示，請遵循該頁面上的指示，使用下列`DB_PERF_INSIGHTS`數學表達式，然後選擇**套用**：

```
DB_PERF_INSIGHTS('RDS', 'db-BQ2TPYY7HG2GDFC7APMB3BVB3M', 'db.Transactions.active_transactions.avg')
```

其中 `db-BQ2TPYY7HG2GDFC7APMB3BVB3M`是資料庫執行個體的資源 ID。指定期間 （例如 1 分鐘） 和條件 （例如大於 1000)。若要完成警示的建立、設定警示動作、新增名稱和描述，以及預覽和建立警示。