

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

# 針對目標延時問題進行疑難排解
<a name="CHAP_Troubleshooting_Latency_Target"></a>

本節包含可能導致目標延時的案例。

**Topics**
+ [索引問題](#CHAP_Troubleshooting_Latency_Target_Indexing)
+ [任務日誌中的 SORTER 訊息](#CHAP_Troubleshooting_Latency_Target_Sorter)
+ [資料庫鎖定](#CHAP_Troubleshooting_Latency_Target_Locking)
+ [緩慢 LOB 查詢](#CHAP_Troubleshooting_Latency_Target_LOB)
+ [異地同步備份、稽核記錄和備份](#CHAP_Troubleshooting_Latency_Target_MultiAZ)

## 索引問題
<a name="CHAP_Troubleshooting_Latency_Target_Indexing"></a>

在 CDC 階段期間， 會透過在目標上執行 DML 陳述式 （插入、更新和刪除） 來 AWS DMS 複寫來源的變更。對於使用 DMS 的異質遷移，來源和目標上索引最佳化的差異可能會導致寫入目標所需的時間延長。這會導致目標延時和效能問題。

若要針對索引問題進行疑難排解，請執行下列動作。這些步驟的程序會因資料庫引擎不同而有所不同。
+ 監控目標資料庫的查詢時間。比較目標和來源上的查詢執行時間，可以指出哪些索引需要最佳化。
+ 啟用緩慢執行查詢的記錄功能。

若要修正長時間執行複寫的索引問題，請執行下列動作：
+ 調整來源和目標資料庫上的索引，使得來源和目標的查詢執行時間是相似的。
+ 比較來源和目標的 DML 查詢中使用的次要索引。請確定目標上的 DML 效能與來源 DML 效能是相近的或是前者優於後者。

請注意，最佳化索引的程序是您資料庫引擎特有的。沒有用於調整來源和目標索引的 DMS 功能。

## 任務日誌中的 SORTER 訊息
<a name="CHAP_Troubleshooting_Latency_Target_Sorter"></a>

如果目標端點無法跟上 AWS DMS 寫入目標的變更量，任務會快取複寫執行個體上的變更。如果快取的成長量較內部閾值大，則任務就會停止從來源讀取進一步變更。DMS 這樣做是為了防止複寫執行個體用盡儲存空間，或任務在讀取大量待處理事件時卡住。

若要針對此問題進行疑難排解，請檢查 CloudWatch 日誌中是否有類似下列任一項目的訊息：

```
[SORTER ]I: Reading from source is paused. Total disk usage exceeded the limit 90% (sorter_transaction.c:110)
[SORTER ]I: Reading from source is paused. Total storage used by swap files exceeded the limit 1048576000 bytes  (sorter_transaction.c:110)
```

如果日誌包含與第一則訊息類似的訊息，請停用任務的任何追蹤記錄，並增加複寫執行個體的儲存空間。如需增加複寫執行個體儲存空間的相關資訊，請參閱[修改複寫執行個體](CHAP_ReplicationInstance.Modifying.md)。

如果日誌包含的訊息與第二則訊息類似，請執行下列動作：
+ 如果資料表與任務中的其他資料表沒有任何相依性，則將含有大量交易或長時間執行 DML 操作的資料表移至個別的任務。
+ 增加 `MemoryLimitTotal` 和 `MemoryKeepTime` 設定，以延長將交易保留在記憶體中的持續時間。如果延時持續，這將無濟於事，但其有助於在短暫的交易量爆增期間降低延時。如需這些任務設定的相關資訊，請參閱[變更處理調校設定](CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.md)。
+ 將 `BatchApplyEnabled` 設為 `true`，評估您是否可以對交易使用批次套用。如需 `BatchApplyEnabled` 設定的詳細資訊，請參閱[目標中繼資料任務設定](CHAP_Tasks.CustomizingTasks.TaskSettings.TargetMetadata.md)。

## 資料庫鎖定
<a name="CHAP_Troubleshooting_Latency_Target_Locking"></a>

如果應用程式存取 AWS DMS 使用 做為複寫目標的資料庫，應用程式可能會鎖定 DMS 嘗試存取的資料表。這會建立鎖定爭用。由於 DMS 會依照在來源上發生的順序將變更寫入目標資料庫，因此由於鎖定爭用而延遲寫入一個資料表，會造成所有資料表的寫入延遲。

若要針對此問題進行疑難排解，請查詢目標資料庫以檢查鎖定爭用是否封鎖 DMS 寫入交易。如果目標資料庫正在封鎖 DMS 寫入交易，請執行以下其中一或多個動作：
+ 重新建構查詢以更頻繁地遞交變更。
+ 修改鎖定逾時設定。
+ 對資料表進行分區以盡可能減少鎖定爭用。

請注意，最佳化鎖定爭用是資料庫引擎特有的程序。沒有用於調整鎖定爭用的 DMS 功能。

## 緩慢 LOB 查詢
<a name="CHAP_Troubleshooting_Latency_Target_LOB"></a>

當 AWS DMS 複寫大型物件 (LOB) 資料欄時，它會在將變更寫入目標之前對來源執行查詢。此查詢通常不會對目標造成任何延時，但是如果來源資料庫因鎖定而延遲查詢，則目標延時可能會遽增。

這個問題的診斷難度很高。若要針對此問題進行疑難排解，請啟用任務日誌的詳細偵錯，並比較 DMS LOB 查詢呼叫的時間戳記。如需啟用詳細偵錯的相關資訊，請參閱[檢視和管理 DMS AWS 任務日誌](CHAP_Monitoring.md#CHAP_Monitoring.ManagingLogs)。

若要解決此問題，請嘗試下列步驟：
+ 改善來源資料庫上的 SELECT 查詢效能。
+ 調整 DMS LOB 設定。如需調整 LOB 設定的相關資訊，請參閱[遷移大型二進位物件 (LOB)](CHAP_BestPractices.md#CHAP_BestPractices.LOBS)。

## 異地同步備份、稽核記錄和備份
<a name="CHAP_Troubleshooting_Latency_Target_MultiAZ"></a>

對於 Amazon RDS 目標，在下列情況下，目標延時可能會增加：
+ 備份
+ 在啟用多個可用區域 (異地同步備份) 之後
+ 啟用資料庫記錄 (例如稽核或慢速查詢記錄) 之後。

這些問題的診斷難度通常很高。若要針對這些問題進行疑難排解，請在 Amazon RDS 維護時段或資料庫負載繁重期間監控週期峰值的延時。

若要修正這些問題，請嘗試下列方法：
+ 如果可能，請在短期遷移期間，停用異地同步備份、備份或記錄。
+ 重新安排活動較不頻繁期間的維護期間。