為什麼系統取消或停止我的 Amazon Redshift Serverless 查詢?

2 分的閱讀內容
0

我想知道為什麼 Amazon Redshift Serverless 取消或停止了我的查詢,並且我收到了錯誤訊息。

簡短說明

以下是 Amazon Redshift 中取消或停止查詢的原因:

  • 您已達到查詢配額上限。
  • 您已達到 RRedshift 處理單元 (RPU) 的工作群組使用量配額上限。
  • 您的查詢超出了 statement_timeout 值。
  • 另一個使用者停止或取消了查詢。
  • 網路連線有問題。

解決方法

檢查 Amazon Redshift Serverless 工作群組查詢配額

當達到工作群組查詢配額上限時,查詢將傳回下列錯誤訊息:

「錯誤: 使用者請求的查詢 (6800381) 取消。」

若要確認 Amazon Redshift 是否因為您達到配額上限而取消了查詢,請從 Amazon Redshift 查詢編輯器執行下列 SQL 陳述式:

SELECT query_id, query_text, error_message from SYS_QUERY_HISTORY WHERE error_message ILIKE '%cancelled on user%';

若要解決此問題,請增加工作群組查詢配額

檢查 Amazon Redshift Serverless 工作群組的 RPU 使用配額

當達到 RPU 的工作群組使用配額上限時,查詢將傳回下列錯誤訊息:

「錯誤: 查詢已達到使用量限制。」

若要確認 Amazon Redshift 是否因為您達到使用配額上限而取消了查詢,請從 Amazon Redshift 查詢編輯器執行下列 SQL 陳述式:

SELECT query_id, query_text, usage_limit, error_message FROM SYS_QUERY_HISTORY WHERE error_message ILIKE '%reached usage limit%';

若要解決此問題,請增加工作群組使用配額

檢查您的查詢是否超出了 statement_timeout 值

當查詢超過 statement_timeout 值時,Amazon Redshift 會取消您在工作階段期間提交的查詢。查詢傳回以下錯誤訊息:

「錯誤: 使用者請求的查詢 (150) 取消。」

若要檢查叢集的陳述式逾時,請從 Amazon Redshift 查詢編輯器執行下列 SQL 陳述式:

SHOW statement_timeout;

此陳述式會顯示叢集等級陳述式逾時 (以毫秒為單位)。若要改變輸出,請修改工作負載管理組態中的參數。

若要確認 Amazon Redshift 是否因陳述式逾時而取消了查詢,請從 Amazon Redshift 查詢編輯器執行下列 SQL 陳述式:

SELECT * FROM SYS_QUERY_HISTORY WHERE query_text ILIKE '%set%statement_timeout%to%';

如果 Amazon Redshift 取消了您的查詢,請執行以下命令以增加您的 statement_timeout 值:

SET statement_timeout = (value)

注意:(value) (值) 替換為比先前 statement_timeout 值更大的值。

檢查其他使用者是否停止或取消了查詢

若要檢查其他使用者是否停止或取消了查詢,請執行以下命令並查看error_message 欄:

SELECT * FROM sys_query_history WHERE session_id = process_id;

注意:process_id 替換為您的程序 ID。

若要查看已停止的查詢,請從 Amazon Redshift 查詢編輯器執行下列 SQL 陳述式:

SELECT * FROM sys_query_history WHERE error_message ILIKE '%terminate%';

若要查看已取消的查詢,請從 Amazon Redshift 查詢編輯器執行下列 SQL 陳述式:

SELECT * FROM sys_query_history WHERE error_message ILIKE '%canceled by user%';

如果查詢出現在輸出中,則表示使用者停止或取消了該查詢。

注意: 使用者只能停止自己的工作階段。超級使用者可以停止所有工作階段。

網路問題

網路問題也可能導致查詢取消。

若要檢查網路連線是否有問題,請執行下列指令檢查 SYS_CONNECTION_LOG 監控檢視:

SELECT * FROM SYS_CONNECTION_LOG WHERE session_id = process_id;

注意:process_id 替換為您的程序 ID。

相關資訊

為什麼我的查詢在 Amazon Redshift 中取消?

AWS 官方
AWS 官方已更新 2 個月前