

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

# Amazon Aurora MySQL 的最佳實務
<a name="AuroraMySQL.BestPractices"></a><a name="best_practices"></a>

此主題包含有關使用資料或將資料遷移至 Amazon Aurora MySQL 資料庫叢集的最佳實務和選項的資訊。本主題中的資訊摘要說明並重申您可以在 [管理 Amazon Aurora 資料庫叢集](CHAP_Aurora.md) 中找到的部分指導方針和程序。

**Contents**
+ [判斷您連接的資料庫執行個體](#AuroraMySQL.BestPractices.DeterminePrimaryInstanceConnection)
+ [Aurora MySQL 效能和擴展的最佳實務](AuroraMySQL.BestPractices.Performance.md)
  + [使用 T 執行個體類別進行開發和測試](AuroraMySQL.BestPractices.Performance.md#AuroraMySQL.BestPractices.T2Medium)
  + [使用非同步索引鍵預先提取，將 Amazon Aurora MySQL 索引聯結查詢最佳化](AuroraMySQL.BestPractices.Performance.md#Aurora.BestPractices.AKP)
    + [啟用非同步索引鍵預先提取](AuroraMySQL.BestPractices.Performance.md#Aurora.BestPractices.AKP.Enabling)
    + [非同步索引鍵預先提取的最佳化查詢](AuroraMySQL.BestPractices.Performance.md#Aurora.BestPractices.AKP.Optimizing)
  + [使用雜湊聯結，將大型 Aurora MySQL 聯結查詢最佳化](AuroraMySQL.BestPractices.Performance.md#Aurora.BestPractices.HashJoin)
    + [啟用雜湊聯結](AuroraMySQL.BestPractices.Performance.md#Aurora.BestPractices.HashJoin.Enabling)
    + [最佳化雜湊聯結的查詢](AuroraMySQL.BestPractices.Performance.md#Aurora.BestPractices.HashJoin.Optimizing)
  + [使用 Amazon Aurora 為 MySQL 資料庫擴展讀取](AuroraMySQL.BestPractices.Performance.md#AuroraMySQL.BestPractices.ReadScaling)
  + [最佳化時間戳記操作](AuroraMySQL.BestPractices.Performance.md#AuroraMySQL.BestPractices.Performance.TimeZone)
  + [虛擬索引 ID 溢出錯誤](AuroraMySQL.BestPractices.Performance.md#AuroraMySQL.BestPractices.Performance.VirtualIndexIDOverflow)
+ [Aurora MySQL 高可用性的最佳實務](AuroraMySQL.BestPractices.HA.md)
  + [使用 Amazon Aurora 搭配 MySQL 資料庫進行災難復原](AuroraMySQL.BestPractices.HA.md#AuroraMySQL.BestPractices.DisasterRecovery)
  + [從 MySQL 遷移至 Amazon Aurora MySQL 時減少停機時間](AuroraMySQL.BestPractices.HA.md#AuroraMySQL.BestPractices.Migrating)
  + [避免 Aurora MySQL 資料庫執行個體效能變慢、自動重新啟動和容錯移轉](AuroraMySQL.BestPractices.HA.md#AuroraMySQL.BestPractices.Avoiding)
+ [Aurora MySQL 中 MySQL 功能的建議](AuroraMySQL.BestPractices.FeatureRecommendations.md)
  + [在 Aurora MySQL 中使用多執行緒複寫](AuroraMySQL.BestPractices.FeatureRecommendations.md#AuroraMySQL.BestPractices.MTReplica)
  + [使用原生 MySQL AWS Lambda 函數叫用函數](AuroraMySQL.BestPractices.FeatureRecommendations.md#AuroraMySQL.BestPractices.Lambda)
  + [避免搭配 Amazon Aurora MySQL 使用 XA 交易](AuroraMySQL.BestPractices.FeatureRecommendations.md#AuroraMySQL.BestPractices.XA)
  + [DML 陳述式期間保持外部索引鍵的開啟狀態](AuroraMySQL.BestPractices.FeatureRecommendations.md#Aurora.BestPractices.ForeignKeys)
  + [設定日誌緩衝區的排清頻率](AuroraMySQL.BestPractices.FeatureRecommendations.md#AuroraMySQL.BestPractices.Flush)
  + [減少和疑難排解 Aurora MySQL 的死結情況](AuroraMySQL.BestPractices.FeatureRecommendations.md#AuroraMySQL.BestPractices.deadlocks)
    + [減少 InnoDB 死結情況](AuroraMySQL.BestPractices.FeatureRecommendations.md#AuroraMySQL.BestPractices.deadlocks-minimize)
    + [監控 InnoDB 死結情況](AuroraMySQL.BestPractices.FeatureRecommendations.md#AuroraMySQL.BestPractices.deadlocks-monitor)
+ [使用 Amazon CloudWatch 指標評估 Aurora MySQL 的資料庫執行個體用量](AuroraMySQL.BestPractices.CW.md)

## 判斷您連接的資料庫執行個體
<a name="AuroraMySQL.BestPractices.DeterminePrimaryInstanceConnection"></a>

若要判斷連線所連接的是 Aurora MySQL 資料庫叢集中的哪個資料庫執行個體，請檢查 `innodb_read_only` 全域變數，如以下範例所示。

```
SHOW GLOBAL VARIABLES LIKE 'innodb_read_only'; 
```

如果您連線到讀取器資料庫執行個體，則 `innodb_read_only` 變數設定為 `ON`。如果您連線至寫入器資料庫執行個體 (例如已佈建叢集中的主要執行個體)，則此設定為 `OFF`。

如果要將邏輯新增至您的應用程式碼，以平衡工作負載或確保寫入操作使用的是正確的連接，則此方法很實用。