我想知道为什么 Amazon Redshift Serverless 已取消或停止我的查询,但我收到了一条错误消息。
简短描述
以下是在 Amazon Redshift 中取消或停止查询的原因:
- 您已达到查询配额。
- 您已达到 Redshift 处理器 (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%';
要解决此问题,请增加您的工作组查询配额。
查看 RPU 的 Amazon Redshift Serverless 工作组使用配额
当您达到 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 中被取消?