为什么我在 Amazon Redshift 中的查询计划时间如此高?

上次更新时间:2020 年 4 月 16 日

我在 Amazon Redshift 中的查询计划时间远远长于实际执行时间。为什么会发生这种情况?

简短描述

如果生产负载上存在具有独占锁定的查询,则锁定的等待时间可能会增加。这会导致您在 Amazon Redshift 中的查询计划时间远远长于实际执行时间。请检查 Workload Execution Breakdown 指标以确认查询计划时间是否突然增加。此时间的增加很可能是因某个等待锁定的事务处理导致的。

解决方法

要检测等待锁定的事务处理,请执行以下步骤:

1.    为第一个锁定打开一个新的会话:

begin; lock table1;

2.    打开另一个并行运行的会话:

select * from table1 limit 1000;

在此第二个会话中的查询将提交一个 AccessSharedLock 请求。但查询必须等待 AccessExclusiveLock,因为第一个会话已经申请了该锁定。然后 ExclusiveLock 将阻止 table1 上的所有其他操作。

3.    检查您的 Workload Execution Breakdown 指标。如果查询计划时间突然暴增,则说明有某个事务处理在等待锁定。

4.    (可选)如果某个事务处理在等待锁定,请手动终止该会话以释放锁定:

select pg_terminate_backend(PID);

有关释放锁定的更多信息,请参阅如何在 Amazon Redshift 中检测和释放锁定?


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?