我在 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 中检测和释放锁定?
相关信息
分析工作负载性能
查询计划和执行工作流程