查詢耗費太長時間 - Amazon Redshift

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

查詢耗費太長時間

由於下列原因,您的查詢可能需要太長的時間。我們建議使用以下疑難排解方法。

資料表未進行優化

設定資料表的排序索引鍵、配送樣式和壓縮編碼,以善加利用平行處理。如需詳細資訊,請參閱 自動資料表最佳化

查詢正在寫入磁碟

您的查詢可能會在查詢執行的至少一部分寫入至磁碟。如需詳細資訊,請參閱查詢效能改善

查詢必須等候其他查詢完成

您可以透過建立查詢佇列和指派不同類型的查詢至適當的佇列,來改善整體系統效能。如需詳細資訊,請參閱工作負載管理

查詢未進行優化

分析解釋計畫以尋找重新寫入查詢或最佳化資料庫的機會。如需詳細資訊,請參閱建立和解譯查詢計劃

查詢需要更多記憶體來執行

如果特定查詢需要更多記憶體,您可以透過增加wlm_query_slot_count來增加可用記憶體。

資料庫需要執行VACUUM命令

每當您新增、刪除或修改大量資料列時,請執行 VACUUM命令,除非您以排序索引鍵順序載入資料。此VACUUM命令會重新組織您的資料,以維護排序順序並還原效能。如需詳細資訊,請參閱清空資料表

疑難排解長期執行查詢的其他資源

以下是有助於調整查詢的系統檢視主題和其他文件章節:

  • STV_INFLIGHT 系統檢視會顯示叢集上執行的查詢。將它與 STV_RECENTS 一起使用,以確定當前正在執行或最近完成的查詢會很有幫助。

  • SYS_QUERY_HISTORY對於疑難排解很有用。它會顯示具有相關屬性的DDLDML查詢,例如其目前狀態,例如 runningfailed、執行每個屬性所花費的時間,以及查詢是否在並行擴展叢集上執行。

  • STL_QUERYTEXT 會擷取SQL命令的查詢文字。此外,將 STL_QUERYTEXT 聯結至 STV_ SVV_QUERY_INFLIGHT的 INFLIGHT會顯示更多查詢中繼資料。

  • 交易鎖定衝突可能是查詢效能問題的可能來源。如需目前在資料表上保留鎖定之交易的相關資訊,請參閱SVV_TRANSACTIONS

  • 識別最適合調整的查詢會提供疑難排解查詢,協助您判斷最近執行的查詢最耗時。這可以幫助您將精力集中在需要改進的查詢上。

  • 如果您想要進一步探索查詢管理並瞭解如何管理查詢佇列,工作負載管理顯示如何執行此操作。工作負載管理是一項進階功能,我們建議您在大多數情況下自動化工作負載